diff --git a/checklists-ext/appservicewebapps_sg_checklist.en.json b/checklists-ext/appservicewebapps_sg_checklist.en.json
index ef1fe5593..4c957bc5f 100644
--- a/checklists-ext/appservicewebapps_sg_checklist.en.json
+++ b/checklists-ext/appservicewebapps_sg_checklist.en.json
@@ -188,35 +188,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -253,6 +253,6 @@
"name": "App Service Web Apps Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/appservicewebapps_sg_checklist.es.json b/checklists-ext/appservicewebapps_sg_checklist.es.json
new file mode 100644
index 000000000..4757a59c7
--- /dev/null
+++ b/checklists-ext/appservicewebapps_sg_checklist.es.json
@@ -0,0 +1,258 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Un plan premium de App Service ofrece características de escalado avanzadas y garantiza la redundancia si se producen errores.",
+ "guid": "ad95f4ca-bd35-4ac7-a993-733c320fa4c4",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Elija el nivel Premium de un plan de App Service para cargas de trabajo de producción. Establezca el número máximo y mínimo de trabajadores de acuerdo con su planificación de capacidad. Para obtener más información, consulte Introducción al plan de App Service.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La aplicación puede soportar errores en una sola zona cuando hay varias instancias distribuidas entre zonas. El tráfico cambia automáticamente a instancias en buen estado en otras zonas y mantiene la confiabilidad de la aplicación si una zona no está disponible.",
+ "guid": "8a18771a-8a59-47de-905e-6e6b72f36990",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite la redundancia de zona. Considere la posibilidad de aprovisionar más de tres instancias para mejorar la tolerancia a errores. Compruebe la compatibilidad regional con la redundancia de zona, ya que no todas las regiones ofrecen esta función.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las solicitudes entrantes se distribuyen uniformemente entre todos los nodos disponibles cuando se deshabilita la afinidad de ARR. Las solicitudes distribuidas uniformemente evitan que el tráfico abrume a un solo nodo. Las solicitudes se pueden redirigir sin problemas a otros nodos en buen estado si un nodo no está disponible. Evite la afinidad de sesión para asegurarse de que la instancia de App Service permanezca sin estado. Un Servicio de aplicaciones sin estado reduce la complejidad y garantiza un comportamiento coherente en todos los nodos. Quite las sesiones permanentes para que App Service pueda agregar o quitar instancias para escalar horizontalmente.",
+ "guid": "5a05980f-0f3f-42c2-af59-563b037aa64c",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Considere la posibilidad de deshabilitar la característica de afinidad de enrutamiento de solicitudes de aplicación (ARR). La afinidad de ARR crea sesiones permanentes que redirigen a los usuarios al nodo que manejó sus solicitudes anteriores.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las reglas de recuperación automática ayudan a la aplicación a recuperarse automáticamente de problemas inesperados. Las reglas configuradas desencadenan acciones de reparación cuando se superan los umbrales. La reparación automática permite un mantenimiento proactivo automático.",
+ "guid": "a92ea6eb-79b0-49f8-be2f-9ecbd56ca794",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Defina reglas de recuperación automática en función del recuento de solicitudes, las solicitudes lentas, los límites de memoria y otros indicadores que forman parte de la línea base de rendimiento. Considere esta configuración como parte de su estrategia de escalado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las comprobaciones de estado pueden detectar problemas de forma temprana. A continuación, el sistema puede tomar automáticamente medidas correctivas cuando se produce un error en una solicitud de comprobación de estado. El equilibrador de carga aleja el tráfico de las instancias en mal estado, lo que dirige a los usuarios a los nodos en buen estado.",
+ "guid": "8804a347-b18e-4dce-88b6-9beee13dc12b",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Habilite la característica de comprobación de estado y proporcione una ruta que responda a las solicitudes de comprobación de estado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La aplicación recupera secretos de Key Vault para autenticar la comunicación externa de la aplicación. Azure administra la identidad y no requiere que aprovisione ni rote ningún secreto. Tiene identidades distintas para la granularidad del control. Las identidades distintas facilitan la revocación si una identidad se ve comprometida.",
+ "guid": "ffcc54ba-464e-4ad4-b96c-de8a6959ba61",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Asigne identidades administradas a la aplicación web. Para mantener los límites de aislamiento, no comparta ni reutilice identidades entre aplicaciones. Asegúrese de conectarse de forma segura a su registro de contenedor si usa contenedores para su implementación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los dominios personalizados permiten una comunicación segura a través de HTTPS mediante el protocolo de seguridad de la capa de transporte (TLS), que garantiza la protección de los datos confidenciales y genera confianza en los usuarios.",
+ "guid": "d0450dd8-5e4e-45a2-ae67-83de17e9932c",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Configurar dominios personalizados para aplicaciones. Deshabilite HTTP y acepte solo solicitudes HTTPS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al usar esta característica, no tiene que usar bibliotecas de autenticación en el código de la aplicación, lo que reduce la complejidad. El usuario ya está autenticado cuando una solicitud llega a la aplicación.",
+ "guid": "b2b6b6df-7bd0-4394-a6df-86c3a15bcaf7",
+ "service": "App Service Web Apps",
+ "text": "(App Service) evalúe si la autenticación integrada de App Service es el mecanismo adecuado para autenticar a los usuarios que acceden a la aplicación. La autenticación integrada de App Service se integra con el identificador de Microsoft Entra. Esta característica controla la validación de tokens y la administración de identidades de usuario en varios proveedores de inicio de sesión y es compatible con OpenID Connect. Con esta característica, no tiene autorización a nivel granular y no tiene un mecanismo para probar la autenticación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Obtenga las ventajas de seguridad de usar una red virtual de Azure. Por ejemplo, la aplicación puede acceder de forma segura a los recursos dentro de la red. Agregue un punto de conexión privado para ayudar a proteger la aplicación. Los puntos de conexión privados limitan la exposición directa a la red pública y permiten el acceso controlado a través del proxy inverso.",
+ "guid": "bc1fd50b-a78a-44e6-bbd6-db1c75fa8fdd",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Configure la aplicación para la integración de red virtual. Use puntos de conexión privados para aplicaciones de App Service. Bloquea todo el tráfico público. Enrute la extracción de la imagen de contenedor a través de la integración de red virtual. Todo el tráfico saliente de la aplicación pasa a través de la red virtual.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "No se recomienda la autenticación básica como método de implementación seguro. Microsoft Entra ID emplea la autenticación basada en tokens de OAuth 2.0, que ofrece numerosas ventajas y mejoras que abordan las limitaciones asociadas a la autenticación básica. Las políticas restringen el acceso a los recursos de la aplicación, solo permiten solicitudes de dominios específicos y protegen las solicitudes entre regiones.",
+ "guid": "aed08f98-d32e-43c4-8879-e2a3640ec82a",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Para implementar la protección: - Deshabilite la autenticación básica que usa un nombre de usuario y una contraseña en favor de la autenticación basada en el identificador de Microsoft Entra. - Desactiva la depuración remota para que no se abran los puertos de entrada. - Habilite las políticas de CORS para ajustar las solicitudes entrantes. - Deshabilite protocolos, como FTP.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los secretos se mantienen independientes de la configuración de la aplicación. La configuración de la aplicación se cifra en reposo. App Service también administra las rotaciones secretas.",
+ "guid": "ed800519-baa0-449d-8c29-c5fae194116a",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Use siempre referencias de Key Vault como configuración de la aplicación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Obtenga protección en tiempo real para los recursos que se ejecutan en un plan de App Service. Protéjase contra las amenazas y mejore su postura de seguridad general.",
+ "guid": "4c020315-db82-4fd8-a3da-8f2b80bd5b4f",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite Microsoft Defender for Cloud para App Service.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El registro captura patrones de acceso. Registra eventos relevantes que proporcionan información valiosa sobre cómo los usuarios interactúan con una aplicación o plataforma. Esta información es crucial para fines de responsabilidad, cumplimiento y seguridad.",
+ "guid": "a1278dd3-3ed5-43b3-9544-69ccd3694db1",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite el registro de diagnóstico y agregue instrumentación a la aplicación. Los registros se envían a cuentas de Azure Storage, Azure Event Hubs y Log Analytics. Para obtener más información sobre los tipos de registro de auditoría, consulte Tipos de registro admitidos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los niveles Gratis y Básico son económicos en comparación con los niveles superiores. Proporcionan una solución rentable para entornos que no son de producción y que no necesitan todas las funciones y el rendimiento de los planes premium.",
+ "guid": "73ebf138-84db-4fcf-9829-c3196790bb4b",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Elija los niveles Gratis o Básico para entornos inferiores. Recomendamos estos niveles para uso experimental. Elimine los niveles cuando ya no los necesite.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los planes de desarrollo y pruebas proporcionan tarifas reducidas para los servicios de Azure, lo que los hace rentables para entornos que no son de producción. Utilice instancias reservadas para pagar por adelantado los recursos informáticos y obtener importantes descuentos.",
+ "guid": "e4b9b5ec-6d62-4457-8225-98070a48f1f0",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Aproveche los descuentos y explore los precios preferidos para: - Entornos inferiores con planes de desarrollo y pruebas. - Reservas de Azure y planes de ahorro de Azure para el proceso dedicado que se aprovisiona en el nivel Premium V3 y App Service Environment. Utilice instancias reservadas para cargas de trabajo estables que tengan patrones de uso predecibles.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede identificar picos de costos, ineficiencias o gastos inesperados desde el principio. Este enfoque proactivo le ayuda a proporcionar controles presupuestarios para evitar gastos excesivos.",
+ "guid": "c3c919e3-e1ef-4566-8789-edada78d7095",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Supervise los costos en los que incurren los recursos de App Service. Ejecute la herramienta de análisis de costos en Azure Portal. Cree presupuestos y alertas para notificar a las partes interesadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Evite el desperdicio y reduzca los gastos innecesarios.",
+ "guid": "a5257a31-c39f-4c09-85d0-d34edbfc0bbd",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Amplíe cuando la demanda disminuya. Para reducir horizontalmente, defina reglas de escalado para reducir el número de instancias en Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede detectar problemas rápidamente y tomar las medidas necesarias para mantener la disponibilidad y el rendimiento.",
+ "guid": "29f5cff9-45d7-4ade-8e27-94ca0ba3b1d3",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Supervise el estado de las instancias y active los sondeos de estado de las instancias. Configure una ruta de acceso específica para controlar las solicitudes de sondeo de estado.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico proporcionan información valiosa sobre el comportamiento de la aplicación. Supervise los patrones de tráfico e identifique anomalías.",
+ "guid": "9540f299-ca72-4849-a58a-78153436fc26",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Habilite los registros de diagnóstico para la aplicación y la instancia. El registro frecuente puede ralentizar el rendimiento del sistema, aumentar los costos de almacenamiento e introducir riesgos si tiene acceso no seguro a los registros. Siga estas prácticas recomendadas: - Registre el nivel correcto de información. - Establecer políticas de retención. - Mantenga un registro de auditoría de los accesos autorizados y los intentos no autorizados. - Tratar los registros como datos y aplicar controles de protección de datos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "App Service controla automáticamente procesos como la adquisición de certificados, la verificación de certificados, la renovación de certificados y la importación de certificados de Key Vault. Como alternativa, cargue el certificado en Key Vault y autorice al proveedor de recursos de App Service a acceder a él.",
+ "guid": "4a17086d-c18e-4f8e-95ec-2f2b2ec65d17",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Aproveche los certificados administrados de App Service para descargar la administración de certificaciones en Azure.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Evite el tiempo de inactividad y los errores. Vuelva rápidamente al último estado bueno conocido si detecta un problema después de un intercambio.",
+ "guid": "0f0b02b2-941d-45a9-973a-74a01899a16d",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Valide los cambios de la aplicación en la ranura de ensayo antes de intercambiarla por la ranura de producción.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La aplicación nunca se descarga con Always On habilitado.",
+ "guid": "24d94b35-de37-4c04-9aea-dec880bf216c",
+ "service": "App Service Web Apps",
+ "text": "Habilite la opción Siempre activo cuando las aplicaciones compartan un único plan de App Service. Las aplicaciones de App Service se descargan automáticamente cuando están inactivas para ahorrar recursos. La siguiente solicitud desencadena un inicio en frío, lo que puede provocar tiempos de espera de solicitud.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Elija HTTP/2 en lugar de HTTP/1.1 porque HTTP/2 multiplexa completamente las conexiones, reutiliza las conexiones para reducir la sobrecarga y comprime los encabezados para minimizar la transferencia de datos.",
+ "guid": "f5d46d58-7c3f-4917-a4f1-b97aa98a00c4",
+ "service": "App Service Web Apps",
+ "text": "Considere la posibilidad de usar HTTP/2 para que las aplicaciones mejoren la eficiencia del protocolo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "App Service Web Apps Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/appservicewebapps_sg_checklist.ja.json b/checklists-ext/appservicewebapps_sg_checklist.ja.json
new file mode 100644
index 000000000..08983c483
--- /dev/null
+++ b/checklists-ext/appservicewebapps_sg_checklist.ja.json
@@ -0,0 +1,258 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "プレミアム App Service プランでは、高度なスケーリング機能が提供され、障害が発生した場合の冗長性が確保されます。",
+ "guid": "ad95f4ca-bd35-4ac7-a993-733c320fa4c4",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)運用ワークロード用の App Service プランの Premium レベルを選択します。 キャパシティプランニングに従って、ワーカーの最大数と最小数を設定します。詳細については、「App Service プランの概要」を参照してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションは、複数のインスタンスがゾーンに分散している場合に、1 つのゾーンでの障害に耐えることができます。トラフィックは、他のゾーンの正常なインスタンスに自動的に移行し、1 つのゾーンが使用できない場合はアプリケーションの信頼性を維持します。",
+ "guid": "8a18771a-8a59-47de-905e-6e6b72f36990",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)ゾーン冗長を有効にします。フォールトトレランスを強化するために、3つ以上のインスタンスをプロビジョニングすることを検討してください。 ゾーン冗長のリージョン サポートを確認してください (すべてのリージョンでこの機能が提供されているわけではありません)。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "受信要求は、ARR アフィニティを無効にすると、使用可能なすべてのノードに均等に分散されます。リクエストを均等に分散することで、トラフィックが 1 つのノードを圧倒するのを防ぎます。ノードが使用できない場合、要求は他の正常なノードにシームレスにリダイレクトできます。 セッション アフィニティを回避して、App Service インスタンスがステートレスのままになるようにします。ステートレスな App Service は、複雑さを軽減し、ノード間で一貫した動作を保証します。 固定セッションを削除して、App Service がインスタンスを追加または削除して水平方向にスケーリングできるようにします。",
+ "guid": "5a05980f-0f3f-42c2-af59-563b037aa64c",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーション要求ルーティング (ARR) アフィニティ機能を無効にすることを検討してください。ARR アフィニティは、以前の要求を処理したノードにユーザーをリダイレクトするスティッキー セッションを作成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "自動修復ルールは、予期しない問題からアプリケーションを自動的に回復するのに役立ちます。設定されたルールは、しきい値を超えたときに修復アクションをトリガーします。 自動修復により、自動プロアクティブなメンテナンスが可能になります。",
+ "guid": "a92ea6eb-79b0-49f8-be2f-9ecbd56ca794",
+ "service": "App Service Web Apps",
+ "text": "(App Service)要求数、低速要求、メモリ制限、およびパフォーマンス ベースラインの一部であるその他の指標に基づいて、自動修復ルールを定義します。この設定は、スケーリング戦略の一部と考えてください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ヘルスチェックにより、問題を早期に検出できます。その後、ヘルスチェック要求が失敗したときに、システムは自動的に修正アクションを実行できます。 ロードバランサーは、異常なインスタンスからトラフィックをルーティングし、ユーザーを正常なノードに誘導します。",
+ "guid": "8804a347-b18e-4dce-88b6-9beee13dc12b",
+ "service": "App Service Web Apps",
+ "text": "(App Service)ヘルスチェック機能を有効にし、ヘルスチェック要求に応答するパスを指定します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションは、Key Vault からシークレットを取得して、アプリケーションからの外部通信を認証します。Azure によって ID が管理され、シークレットをプロビジョニングまたはローテーションする必要はありません。 制御の粒度について、明確な ID があります。明確な ID により、ID が侵害された場合の失効が容易になります。",
+ "guid": "ffcc54ba-464e-4ad4-b96c-de8a6959ba61",
+ "service": "App Service Web Apps",
+ "text": "(App Service)マネージド ID を Web アプリに割り当てます。分離境界を維持するには、アプリケーション間で ID を共有または再利用しないでください。 デプロイにコンテナを使用する場合は、コンテナレジストリに安全に接続していることを確認してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタムドメインは、Transport Layer Security(TLS)プロトコルを使用したHTTPSによる安全な通信を可能にし、機密データの保護を確保し、ユーザーの信頼を築きます。",
+ "guid": "d0450dd8-5e4e-45a2-ae67-83de17e9932c",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーションのカスタムドメインを設定します。 HTTP を無効にし、HTTPS 要求のみを受け入れます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この機能を使用すると、アプリケーション コードで認証ライブラリを使用する必要がなくなるため、複雑さが軽減されます。要求がアプリケーションに到達したときに、ユーザーはすでに認証されています。",
+ "guid": "b2b6b6df-7bd0-4394-a6df-86c3a15bcaf7",
+ "service": "App Service Web Apps",
+ "text": "(App Service) は、App Service の組み込み認証が、アプリケーションにアクセスするユーザーを認証するための適切なメカニズムであるかどうかを評価します。App Service の組み込み認証は、Microsoft Entra ID と統合されます。この機能は、複数のサインイン プロバイダー間でトークンの検証とユーザー ID 管理を処理し、OpenID Connect をサポートします。この機能を使用すると、詳細なレベルでの承認はなく、認証をテストするメカニズムもありません。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 仮想ネットワークを使用するセキュリティ上の利点を享受します。たとえば、アプリケーションはネットワーク内のリソースに安全にアクセスできます。 プライベートエンドポイントを追加して、アプリケーションを保護します。プライベートエンドポイントは、パブリックネットワークへの直接の露出を制限し、リバースプロキシを介した制御されたアクセスを許可します。",
+ "guid": "bc1fd50b-a78a-44e6-bbd6-db1c75fa8fdd",
+ "service": "App Service Web Apps",
+ "text": "(App Service)仮想ネットワーク統合用にアプリケーションを構成します。 App Service アプリのプライベート エンドポイントを使用します。すべてのパブリックトラフィックをブロックします。 仮想ネットワーク統合を通じてコンテナー イメージ pull をルーティングします。アプリケーションからの送信トラフィックはすべて、仮想ネットワークを通過します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "安全なデプロイ方法として基本認証はお勧めしません。Microsoft Entra ID は OAuth 2.0 トークンベースの認証を採用しており、基本認証に関連する制限に対処する多くの利点と拡張機能を提供します。 ポリシーは、アプリケーションリソースへのアクセスを制限し、特定のドメインからの要求のみを許可し、クロスリージョン要求を保護します。",
+ "guid": "aed08f98-d32e-43c4-8879-e2a3640ec82a",
+ "service": "App Service Web Apps",
+ "text": "(App Service)セキュリティ強化を実装するには: - ユーザー名とパスワードを使用する基本認証を無効にし、Microsoft Entra ID ベースの認証を優先します。 - 受信ポートが開かないように、リモート デバッグをオフにします。- CORS ポリシーを有効にして、受信要求を強化します。 - FTP などのプロトコルを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "シークレットは、アプリの構成とは別に保持されます。アプリの設定は保存時に暗号化されます。App Service はシークレットのローテーションも管理します。",
+ "guid": "ed800519-baa0-449d-8c29-c5fae194116a",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリの設定として、常に Key Vault 参照を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "App Service プランで実行されるリソースをリアルタイムで保護します。脅威から保護し、全体的なセキュリティ体制を強化します。",
+ "guid": "4c020315-db82-4fd8-a3da-8f2b80bd5b4f",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)Microsoft Defender for Cloud for App Service を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ロギングはアクセスパターンをキャプチャします。関連するイベントを記録し、ユーザーがアプリケーションやプラットフォームとどのようにやり取りするかについて貴重な洞察を提供します。この情報は、説明責任、コンプライアンス、およびセキュリティの目的で重要です。",
+ "guid": "a1278dd3-3ed5-43b3-9544-69ccd3694db1",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)診断ログを有効にし、アプリにインストルメンテーションを追加します。ログは、Azure Storage アカウント、Azure Event Hubs、Log Analytics に送信されます。監査ログの種類の詳細については、「サポートされているログの種類」を参照してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Free レベルと Basic レベルは、上位レベルに比べて予算にやさしいです。これらは、プレミアムプランのすべての機能とパフォーマンスを必要としない非本番環境向けに、コスト効率の高いソリューションを提供します。",
+ "guid": "73ebf138-84db-4fcf-9829-c3196790bb4b",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)下位の環境では、Free または Basic レベルを選択します。これらのレベルは、実験的な使用にお勧めします。不要になった層は削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "開発/テスト プランでは、Azure サービスの料金が割引されるため、非運用環境ではコスト効率が高くなります。 リザーブド インスタンスを使用してコンピューティング リソースの料金を前払いし、大幅な割引を受けます。",
+ "guid": "e4b9b5ec-6d62-4457-8225-98070a48f1f0",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)割引を利用して、次の優先価格を調べてください: - 開発/テスト プランで環境を下げます。 - Premium V3 レベルと App Service Environment でプロビジョニングする専用コンピューティングの Azure 予約と Azure 節約プラン。 リザーブドインスタンスは、予測可能な使用パターンを持つ安定したワークロードに使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コストの急増、非効率性、または予期しない出費を早期に特定できます。このプロアクティブなアプローチは、支出の過剰を防ぐための予算管理を提供するのに役立ちます。",
+ "guid": "c3c919e3-e1ef-4566-8789-edada78d7095",
+ "service": "App Service Web Apps",
+ "text": "(App Service)App Service リソースで発生するコストを監視します。Azure portal でコスト分析ツールを実行します。 予算とアラートを作成して、関係者に通知します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "無駄を防ぎ、不要な出費を削減します。",
+ "guid": "a5257a31-c39f-4c09-85d0-d34edbfc0bbd",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)需要が減少したときにスケールインします。スケールインするには、Azure Monitor のインスタンス数を減らすスケール ルールを定義します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "問題を迅速に検出し、可用性とパフォーマンスを維持するために必要なアクションを実行できます。",
+ "guid": "29f5cff9-45d7-4ade-8e27-94ca0ba3b1d3",
+ "service": "App Service Web Apps",
+ "text": "(App Service)インスタンスのヘルスをモニタリングし、インスタンスヘルスプローブをアクティブ化します。正常性プローブ要求を処理するための特定のパスを設定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログは、アプリの動作に関する貴重な分析情報を提供します。トラフィックパターンを監視し、異常を特定します。",
+ "guid": "9540f299-ca72-4849-a58a-78153436fc26",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーションとインスタンスの診断ログを有効にします。 ログを頻繁に記録すると、システムのパフォーマンスが低下し、ストレージコストが増加し、ログへの安全でないアクセスがある場合にリスクが発生する可能性があります。次のベストプラクティスに従ってください: - 適切なレベルの情報を記録します。 - 保持ポリシーを設定します。 - 許可されたアクセスと許可されていない試みの監査証跡を保持します。- ログをデータとして扱い、データ保護制御を適用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "App Service は、証明書の調達、証明書の検証、証明書の更新、Key Vault からの証明書のインポートなどのプロセスを自動的に処理します。または、証明書を Key Vault にアップロードし、App Service リソース プロバイダーがそれにアクセスすることを承認します。",
+ "guid": "4a17086d-c18e-4f8e-95ec-2f2b2ec65d17",
+ "service": "App Service Web Apps",
+ "text": "(App Service)App Service で管理されている証明書を利用して、証明書管理を Azure にオフロードします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ダウンタイムとエラーを回避します。 スワップ後に問題を検出した場合は、最後に確認された良好な状態にすばやく戻します。",
+ "guid": "0f0b02b2-941d-45a9-973a-74a01899a16d",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)ステージング スロットでアプリの変更を検証してから、運用スロットと交換します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Always On が有効になっている状態でアプリケーションがアンロードされることはありません。",
+ "guid": "24d94b35-de37-4c04-9aea-dec880bf216c",
+ "service": "App Service Web Apps",
+ "text": "アプリケーションが 1 つの App Service プランを共有する場合は、Always On 設定を有効にします。App Service アプリは、リソースを節約するために、アイドル状態になると自動的にアンロードされます。次の要求によってコールド スタートがトリガーされ、要求のタイムアウトが発生する可能性があります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "HTTP/2 は接続を完全に多重化し、接続を再利用してオーバーヘッドを削減し、ヘッダーを圧縮してデータ転送を最小限に抑えるため、HTTP/1.1 よりも HTTP/2 を選択します。",
+ "guid": "f5d46d58-7c3f-4917-a4f1-b97aa98a00c4",
+ "service": "App Service Web Apps",
+ "text": "プロトコルの効率を向上させるために、アプリケーションにHTTP/2を使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "App Service Web Apps Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/appservicewebapps_sg_checklist.ko.json b/checklists-ext/appservicewebapps_sg_checklist.ko.json
new file mode 100644
index 000000000..b9efaee0c
--- /dev/null
+++ b/checklists-ext/appservicewebapps_sg_checklist.ko.json
@@ -0,0 +1,258 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "프리미엄 App Service 플랜은 고급 크기 조정 기능을 제공하고 오류가 발생할 경우 중복성을 보장합니다.",
+ "guid": "ad95f4ca-bd35-4ac7-a993-733c320fa4c4",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 프로덕션 워크로드에 대한 App Service 계획의 프리미엄 계층을 선택합니다. 용량 계획에 따라 최대 및 최소 작업자 수를 설정합니다. 자세한 내용은 App Service 계획 개요를 참조하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "응용 프로그램은 여러 인스턴스가 여러 영역에 분산되어 있는 경우 단일 영역에서 오류를 견딜 수 있습니다. 트래픽은 자동으로 다른 영역의 정상 인스턴스로 이동하고 한 영역을 사용할 수 없는 경우 애플리케이션 안정성을 유지합니다.",
+ "guid": "8a18771a-8a59-47de-905e-6e6b72f36990",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 영역 중복을 사용하도록 설정합니다. 내결함성을 향상시키기 위해 세 개 이상의 인스턴스를 프로비전하는 것이 좋습니다. 모든 지역에서 이 기능을 제공하는 것은 아니므로 영역 중복에 대한 지역 지원을 확인합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "들어오는 요청은 ARR 선호도를 사용하지 않도록 설정할 때 사용 가능한 모든 노드에 균등하게 분산됩니다. 균등하게 분산된 요청은 트래픽이 단일 노드를 압도하는 것을 방지합니다. 노드를 사용할 수 없는 경우 요청을 다른 정상 노드로 원활하게 리디렉션할 수 있습니다. App Service 인스턴스가 상태 비저장 상태로 유지되도록 세션 선호도를 피합니다. 상태 비저장 App Service는 복잡성을 줄이고 노드 간에 일관된 동작을 보장합니다. App Service가 인스턴스를 추가하거나 제거하여 수평으로 확장할 수 있도록 고정 세션을 제거합니다.",
+ "guid": "5a05980f-0f3f-42c2-af59-563b037aa64c",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) ARR(애플리케이션 요청 라우팅) 선호도 기능을 사용하지 않도록 설정하는 것이 좋습니다. ARR 선호도는 사용자를 이전 요청을 처리한 노드로 리디렉션하는 고정 세션을 만듭니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "자동 복구 규칙은 응용 프로그램이 예기치 않은 문제로부터 자동으로 복구되는 데 도움이 됩니다. 구성된 규칙은 임계값이 위반될 때 복구 작업을 트리거합니다. 자동 복구는 자동 사전 예방적 유지 관리를 가능하게 합니다.",
+ "guid": "a92ea6eb-79b0-49f8-be2f-9ecbd56ca794",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 요청 수, 느린 요청, 메모리 제한 및 성능 기준의 일부인 기타 지표를 기반으로 자동 복구 규칙을 정의합니다. 이 구성을 크기 조정 전략의 일부로 간주합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "상태 확인은 문제를 조기에 감지할 수 있습니다. 그런 다음 시스템은 상태 확인 요청이 실패할 때 자동으로 수정 작업을 수행할 수 있습니다. 로드 밸런서는 비정상 인스턴스에서 트래픽을 라우팅하여 사용자를 정상 노드로 안내합니다.",
+ "guid": "8804a347-b18e-4dce-88b6-9beee13dc12b",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 상태 확인 기능을 활성화하고 상태 확인 요청에 응답하는 경로를 제공합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "애플리케이션은 Key Vault에서 비밀을 검색하여 애플리케이션의 외부 통신을 인증합니다. Azure는 ID를 관리하며 비밀을 프로비전하거나 회전할 필요가 없습니다. 제어의 세분성에 대한 고유한 ID가 있습니다. 고유한 ID를 사용하면 ID가 손상된 경우 쉽게 해지할 수 있습니다.",
+ "guid": "ffcc54ba-464e-4ad4-b96c-de8a6959ba61",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 웹앱에 관리 ID를 할당합니다. 격리 경계를 유지하려면 애플리케이션 간에 ID를 공유하거나 다시 사용하지 마세요. 배포에 컨테이너를 사용하는 경우 컨테이너 레지스트리에 안전하게 연결해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "사용자 지정 도메인은 TLS(전송 계층 보안) 프로토콜을 사용하여 HTTPS를 통해 보안 통신을 가능하게 하여 중요한 데이터를 보호하고 사용자 신뢰를 구축합니다.",
+ "guid": "d0450dd8-5e4e-45a2-ae67-83de17e9932c",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 응용 프로그램에 대한 사용자 지정 도메인을 구성합니다. HTTP를 비활성화하고 HTTPS 요청만 수락합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 기능을 사용하면 애플리케이션 코드에서 인증 라이브러리를 사용할 필요가 없으므로 복잡성이 줄어듭니다. 요청이 애플리케이션에 도달할 때 사용자는 이미 인증된 상태입니다.",
+ "guid": "b2b6b6df-7bd0-4394-a6df-86c3a15bcaf7",
+ "service": "App Service Web Apps",
+ "text": "(App Service) App Service 기본 제공 인증이 애플리케이션에 액세스하는 사용자를 인증하는 데 적합한 메커니즘인지 여부를 평가합니다. App Service 기본 제공 인증은 Microsoft Entra ID와 통합됩니다. 이 기능은 여러 로그인 공급자에서 토큰 유효성 검사 및 사용자 ID 관리를 처리하고 OpenID Connect를 지원합니다. 이 기능을 사용하면 세분화된 수준의 권한 부여가 없으며 인증을 테스트할 메커니즘이 없습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure 가상 네트워크 사용의 보안 이점을 누리세요. 예를 들어, 애플리케이션은 네트워크 내의 리소스에 안전하게 액세스할 수 있습니다. 애플리케이션을 보호하는 데 도움이 되는 프라이빗 엔드포인트를 추가합니다. 프라이빗 엔드포인트는 공용 네트워크에 대한 직접 노출을 제한하고 역방향 프록시를 통해 제어된 액세스를 허용합니다.",
+ "guid": "bc1fd50b-a78a-44e6-bbd6-db1c75fa8fdd",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 가상 네트워크 통합을 위해 응용 프로그램을 구성합니다. App Service 앱에 프라이빗 엔드포인트를 사용합니다. 모든 공용 트래픽을 차단합니다. 가상 네트워크 통합을 통해 컨테이너 이미지 풀을 라우팅합니다. 애플리케이션에서 나가는 모든 트래픽은 가상 네트워크를 통과합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기본 인증은 보안 배포 방법으로 권장되지 않습니다. Microsoft Entra ID는 기본 인증과 관련된 제한 사항을 해결하는 많은 이점과 향상된 기능을 제공하는 OAuth 2.0 토큰 기반 인증을 사용합니다. 정책은 애플리케이션 리소스에 대한 액세스를 제한하고, 특정 도메인의 요청만 허용하며, 리전 간 요청을 보호합니다.",
+ "guid": "aed08f98-d32e-43c4-8879-e2a3640ec82a",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 강화를 구현하려면 다음을 수행합니다. - Microsoft Entra ID 기반 인증을 위해 사용자 이름과 암호를 사용하는 기본 인증을 사용하지 않도록 설정합니다. - 인바운드 포트가 열리지 않도록 원격 디버깅을 끕니다. - CORS 정책을 활성화하여 들어오는 요청을 강화합니다. - FTP와 같은 프로토콜을 비활성화합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "비밀은 앱의 구성과 별도로 보관됩니다. 앱 설정은 미사용 시 암호화됩니다. App Service는 비밀 회전도 관리합니다.",
+ "guid": "ed800519-baa0-449d-8c29-c5fae194116a",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 항상 Key Vault 참조를 앱 설정으로 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "App Service 계획에서 실행되는 리소스에 대한 실시간 보호를 받으세요. 위협으로부터 보호하고 전반적인 보안 태세를 강화합니다.",
+ "guid": "4c020315-db82-4fd8-a3da-8f2b80bd5b4f",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) App Service에 대해 클라우드용 Microsoft Defender를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "로깅은 액세스 패턴을 캡처합니다. 사용자가 애플리케이션 또는 플랫폼과 상호 작용하는 방식에 대한 귀중한 통찰력을 제공하는 관련 이벤트를 기록합니다. 이 정보는 책임, 규정 준수 및 보안 목적에 매우 중요합니다.",
+ "guid": "a1278dd3-3ed5-43b3-9544-69ccd3694db1",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 진단 로깅을 사용하도록 설정하고 앱에 계측을 추가합니다. 로그는 Azure Storage 계정, Azure Event Hubs 및 Log Analytics로 전송됩니다. 감사 로그 유형에 대한 자세한 내용은 지원되는 로그 유형을 참조하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "무료 및 기본 계층은 상위 계층에 비해 예산 친화적입니다. 프리미엄 플랜의 전체 기능과 성능이 필요하지 않은 비프로덕션 환경을 위한 비용 효율적인 솔루션을 제공합니다.",
+ "guid": "73ebf138-84db-4fcf-9829-c3196790bb4b",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 더 낮은 환경에 대해 무료 또는 기본 계층을 선택합니다. 이러한 계층은 실험적으로 사용하는 것이 좋습니다. 더 이상 필요하지 않은 계층을 제거합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "개발/테스트 계획은 Azure 서비스에 대해 할인된 요금을 제공하므로 비프로덕션 환경에서 비용 효율적입니다. 예약 인스턴스를 사용하여 컴퓨팅 리소스에 대한 비용을 선불로 지불하고 상당한 할인을 받으세요.",
+ "guid": "e4b9b5ec-6d62-4457-8225-98070a48f1f0",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 할인 혜택을 누리고 선호하는 가격을 살펴보세요. - 개발/테스트 계획으로 환경을 줄입니다. - 프리미엄 V3 계층 및 App Service Environment에서 프로비전하는 전용 컴퓨팅에 대한 Azure 예약 및 Azure 절약 플랜. 사용 패턴을 예측할 수 있는 안정적인 워크로드를 위해 예약 인스턴스를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 급증, 비효율성 또는 예상치 못한 비용을 조기에 식별할 수 있습니다. 이러한 사전 예방적 접근 방식은 초과 지출을 방지하기 위한 예산 제어를 제공하는 데 도움이 됩니다.",
+ "guid": "c3c919e3-e1ef-4566-8789-edada78d7095",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) App Service 리소스에서 발생하는 비용을 모니터링합니다. Azure Portal에서 비용 분석 도구를 실행합니다. 예산과 경고를 만들어 이해 관계자에게 알립니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "낭비를 방지하고 불필요한 비용을 줄입니다.",
+ "guid": "a5257a31-c39f-4c09-85d0-d34edbfc0bbd",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 수요가 감소할 때 축소합니다. 규모를 축소하려면 크기 조정 규칙을 정의하여 Azure Monitor의 인스턴스 수를 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "문제를 즉시 감지하고 가용성과 성능을 유지하기 위해 필요한 조치를 취할 수 있습니다.",
+ "guid": "29f5cff9-45d7-4ade-8e27-94ca0ba3b1d3",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 인스턴스의 상태를 모니터링하고 인스턴스 상태 프로브를 활성화합니다. 상태 프로브 요청을 처리하기 위한 특정 경로를 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그는 앱의 동작에 대한 중요한 인사이트를 제공합니다. 트래픽 패턴을 모니터링하고 이상 징후를 식별합니다.",
+ "guid": "9540f299-ca72-4849-a58a-78153436fc26",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 응용 프로그램 및 인스턴스에 대한 진단 로그를 사용하도록 설정합니다. 잦은 로깅은 시스템 성능을 저하시키고, 스토리지 비용을 증가시키며, 로그에 안전하지 않은 액세스 권한이 있는 경우 위험을 초래할 수 있습니다. 다음 모범 사례를 따르십시오. - 적절한 수준의 정보를 기록합니다. - 보존 정책을 설정합니다. - 승인된 액세스 및 무단 시도에 대한 감사 추적을 유지합니다. - 로그를 데이터로 처리하고 데이터 보호 제어를 적용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "App Service는 인증서 조달, 인증서 확인, 인증서 갱신 및 Key Vault에서 인증서 가져오기와 같은 프로세스를 자동으로 처리합니다. 또는 Key Vault에 인증서를 업로드하고 App Service 리소스 공급자에게 액세스할 수 있는 권한을 부여합니다.",
+ "guid": "4a17086d-c18e-4f8e-95ec-2f2b2ec65d17",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) App Service 관리형 인증서를 활용하여 인증 관리를 Azure로 오프로드합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "다운타임과 오류를 방지합니다. 스왑 후 문제를 감지하면 마지막으로 알려진 양호한 상태로 빠르게 되돌립니다.",
+ "guid": "0f0b02b2-941d-45a9-973a-74a01899a16d",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 프로덕션 슬롯으로 교체하기 전에 스테이징 슬롯에서 앱 변경 사항의 유효성을 검사합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "응용 프로그램은 Always On을 사용하도록 설정된 상태로 언로드되지 않습니다.",
+ "guid": "24d94b35-de37-4c04-9aea-dec880bf216c",
+ "service": "App Service Web Apps",
+ "text": "애플리케이션이 단일 App Service 계획을 공유하는 경우 Always On 설정을 사용하도록 설정합니다. App Service 앱은 리소스를 절약하기 위해 유휴 상태일 때 자동으로 언로드됩니다. 다음 요청은 콜드 스타트를 트리거하여 요청 시간 초과를 유발할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "HTTP/2는 연결을 완전히 다중화하고, 오버헤드를 줄이기 위해 연결을 재사용하며, 데이터 전송을 최소화하기 위해 헤더를 압축하기 때문에 HTTP/1.1보다 HTTP/2를 선택합니다.",
+ "guid": "f5d46d58-7c3f-4917-a4f1-b97aa98a00c4",
+ "service": "App Service Web Apps",
+ "text": "프로토콜 효율성을 개선하기 위해 애플리케이션에 HTTP/2를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "App Service Web Apps Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/appservicewebapps_sg_checklist.pt.json b/checklists-ext/appservicewebapps_sg_checklist.pt.json
new file mode 100644
index 000000000..9a748f04d
--- /dev/null
+++ b/checklists-ext/appservicewebapps_sg_checklist.pt.json
@@ -0,0 +1,258 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Um plano premium do Serviço de Aplicativo oferece recursos avançados de dimensionamento e garante redundância se ocorrerem falhas.",
+ "guid": "ad95f4ca-bd35-4ac7-a993-733c320fa4c4",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Escolha a camada Premium de um plano do Serviço de Aplicativo para cargas de trabalho de produção. Defina o número máximo e mínimo de trabalhadores de acordo com seu planejamento de capacidade. Para obter mais informações, consulte Visão geral do plano do Serviço de Aplicativo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Seu aplicativo pode suportar falhas em uma única zona quando várias instâncias são distribuídas entre zonas. O tráfego muda automaticamente para instâncias íntegras em outras zonas e mantém a confiabilidade do aplicativo se uma zona não estiver disponível.",
+ "guid": "8a18771a-8a59-47de-905e-6e6b72f36990",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite a redundância de zona. Considere provisionar mais de três instâncias para aumentar a tolerância a falhas. Verifique o suporte regional para redundância de zona porque nem todas as regiões oferecem esse recurso.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As solicitações de entrada são distribuídas uniformemente em todos os nós disponíveis quando você desabilita a afinidade do ARR. As solicitações distribuídas uniformemente impedem que o tráfego sobrecarregue qualquer nó único. As solicitações podem ser redirecionadas diretamente para outros nós íntegros se um nó não estiver disponível. Evite a afinidade de sessão para garantir que sua instância do Serviço de Aplicativo permaneça sem estado. Um Serviço de Aplicativo sem estado reduz a complexidade e garante um comportamento consistente entre nós. Remova as sessões fixas para que o Serviço de Aplicativo possa adicionar ou remover instâncias para dimensionar horizontalmente.",
+ "guid": "5a05980f-0f3f-42c2-af59-563b037aa64c",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Considere desabilitar o recurso de afinidade ARR (roteamento de solicitação de aplicativo). A afinidade ARR cria sessões fixas que redirecionam os usuários para o nó que lidou com suas solicitações anteriores.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As regras de recuperação automática ajudam seu aplicativo a se recuperar automaticamente de problemas inesperados. As regras configuradas acionam ações de recuperação quando os limites são violados. A recuperação automática permite a manutenção proativa automática.",
+ "guid": "a92ea6eb-79b0-49f8-be2f-9ecbd56ca794",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Defina regras de recuperação automática com base na contagem de solicitações, solicitações lentas, limites de memória e outros indicadores que fazem parte de sua linha de base de desempenho. Considere essa configuração como parte de sua estratégia de escalabilidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As verificações de integridade podem detectar problemas antecipadamente. Em seguida, o sistema pode executar ações corretivas automaticamente quando uma solicitação de verificação de integridade falhar. O balanceador de carga roteia o tráfego para longe de instâncias não íntegras, o que direciona os usuários para nós íntegros.",
+ "guid": "8804a347-b18e-4dce-88b6-9beee13dc12b",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Habilite o recurso de verificação de integridade e forneça um caminho que responda às solicitações de verificação de integridade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O aplicativo recupera segredos do Key Vault para autenticar a comunicação externa do aplicativo. O Azure gerencia a identidade e não exige que você provisione ou gire nenhum segredo. Você tem identidades distintas para granularidade de controle. Identidades distintas facilitam a revogação se uma identidade for comprometida.",
+ "guid": "ffcc54ba-464e-4ad4-b96c-de8a6959ba61",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Atribua identidades gerenciadas ao aplicativo Web. Para manter os limites de isolamento, não compartilhe ou reutilize identidades entre aplicativos. Certifique-se de se conectar com segurança ao registro de contêiner se usar contêineres para sua implantação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os domínios personalizados permitem a comunicação segura por meio de HTTPS usando o protocolo Transport Layer Security (TLS), que garante a proteção de dados confidenciais e aumenta a confiança do usuário.",
+ "guid": "d0450dd8-5e4e-45a2-ae67-83de17e9932c",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Configure domínios personalizados para aplicativos. Desative o HTTP e aceite apenas solicitações HTTPS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao usar esse recurso, você não precisa usar bibliotecas de autenticação no código do aplicativo, o que reduz a complexidade. O usuário já está autenticado quando uma solicitação chega ao aplicativo.",
+ "guid": "b2b6b6df-7bd0-4394-a6df-86c3a15bcaf7",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) avaliar se a autenticação interna do Serviço de Aplicativo é o mecanismo correto para autenticar usuários que acessam seu aplicativo. A autenticação interna do Serviço de Aplicativo se integra à ID do Microsoft Entra. Esse recurso lida com a validação de token e o gerenciamento de identidade do usuário em vários provedores de entrada e dá suporte ao OpenID Connect. Com esse recurso, você não tem autorização em um nível granular e não tem um mecanismo para testar a autenticação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Obtenha os benefícios de segurança de usar uma rede virtual do Azure. Por exemplo, o aplicativo pode acessar recursos com segurança na rede. Adicione um ponto de extremidade privado para ajudar a proteger seu aplicativo. Os pontos de extremidade privados limitam a exposição direta à rede pública e permitem o acesso controlado por meio do proxy reverso.",
+ "guid": "bc1fd50b-a78a-44e6-bbd6-db1c75fa8fdd",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Configure o aplicativo para integração de rede virtual. Use pontos de extremidade privados para aplicativos do Serviço de Aplicativo. Bloqueie todo o tráfego público. Roteie a imagem de contêiner por meio da integração de rede virtual. Todo o tráfego de saída do aplicativo passa pela rede virtual.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Não recomendamos a autenticação básica como um método de implantação seguro. O Microsoft Entra ID emprega a autenticação baseada em token OAuth 2.0, que oferece inúmeras vantagens e aprimoramentos que abordam as limitações associadas à autenticação básica. As políticas restringem o acesso aos recursos do aplicativo, permitem apenas solicitações de domínios específicos e protegem solicitações entre regiões.",
+ "guid": "aed08f98-d32e-43c4-8879-e2a3640ec82a",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Para implementar a proteção: - Desabilite a autenticação básica que usa um nome de usuário e senha em favor da autenticação baseada em ID do Microsoft Entra. - Desative a depuração remota para que as portas de entrada não sejam abertas. - Ative as políticas de CORS para restringir as solicitações recebidas. - Desative protocolos, como FTP.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os segredos são mantidos separados da configuração do seu aplicativo. As configurações do aplicativo são criptografadas em repouso. O Serviço de Aplicativo também gerencia rotações secretas.",
+ "guid": "ed800519-baa0-449d-8c29-c5fae194116a",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Sempre use referências do Key Vault como configurações do aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Obtenha proteção em tempo real para recursos executados em um plano do Serviço de Aplicativo. Proteja-se contra ameaças e aprimore sua postura geral de segurança.",
+ "guid": "4c020315-db82-4fd8-a3da-8f2b80bd5b4f",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite Microsoft Defender para Nuvem para Serviço de Aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O registro em log captura padrões de acesso. Ele registra eventos relevantes que fornecem informações valiosas sobre como os usuários interagem com um aplicativo ou plataforma. Essas informações são cruciais para fins de responsabilidade, conformidade e segurança.",
+ "guid": "a1278dd3-3ed5-43b3-9544-69ccd3694db1",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite o log de diagnóstico e adicione instrumentação ao seu aplicativo. Os logs são enviados para contas de Armazenamento do Azure, Hubs de Eventos do Azure e Log Analytics. Para obter mais informações sobre tipos de log de auditoria, consulte Tipos de log com suporte.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os níveis Gratuito e Básico são econômicos em comparação com os níveis mais altos. Eles fornecem uma solução econômica para ambientes de não produção que não precisam de todos os recursos e desempenho dos planos premium.",
+ "guid": "73ebf138-84db-4fcf-9829-c3196790bb4b",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Escolha os níveis Gratuito ou Básico para ambientes inferiores. Recomendamos essas camadas para uso experimental. Remova as camadas quando não precisar mais delas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os planos de desenvolvimento/teste fornecem taxas reduzidas para os serviços do Azure, o que os torna econômicos para ambientes de não produção. Use instâncias reservadas para pagar antecipadamente por recursos computacionais e obter descontos significativos.",
+ "guid": "e4b9b5ec-6d62-4457-8225-98070a48f1f0",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Aproveite os descontos e explore os preços preferenciais para: - Ambientes inferiores com planos de desenvolvimento/teste. - Reservas do Azure e planos de economia do Azure para computação dedicada que você provisiona na camada Premium V3 e no Ambiente do Serviço de Aplicativo. Use instâncias reservadas para cargas de trabalho estáveis que tenham padrões de uso previsíveis.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode identificar picos de custos, ineficiências ou despesas inesperadas desde o início. Essa abordagem proativa ajuda você a fornecer controles orçamentários para evitar gastos excessivos.",
+ "guid": "c3c919e3-e1ef-4566-8789-edada78d7095",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Monitore os custos incorridos pelos recursos do Serviço de Aplicativo. Execute a ferramenta de análise de custo no portal do Azure. Crie orçamentos e alertas para notificar as partes interessadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Evite desperdícios e reduza despesas desnecessárias.",
+ "guid": "a5257a31-c39f-4c09-85d0-d34edbfc0bbd",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Aumente a escala quando a demanda diminuir. Para reduzir horizontalmente, defina regras de escala para reduzir o número de instâncias no Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode detectar problemas imediatamente e tomar as medidas necessárias para manter a disponibilidade e o desempenho.",
+ "guid": "29f5cff9-45d7-4ade-8e27-94ca0ba3b1d3",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Monitore a integridade de suas instâncias e ative as investigações de integridade da instância. Configure um caminho específico para lidar com solicitações de investigação de integridade.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de diagnóstico fornecem informações valiosas sobre o comportamento do seu aplicativo. Monitore padrões de tráfego e identifique anomalias.",
+ "guid": "9540f299-ca72-4849-a58a-78153436fc26",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Habilite os logs de diagnóstico para o aplicativo e a instância. O registro frequente pode diminuir o desempenho do sistema, aumentar os custos de armazenamento e introduzir riscos se você tiver acesso não seguro aos registros. Siga estas práticas recomendadas: - Registre o nível certo de informações. - Defina políticas de retenção. - Mantenha uma trilha de auditoria de acesso autorizado e tentativas não autorizadas. - Trate os logs como dados e aplique controles de proteção de dados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Serviço de Aplicativo lida automaticamente com processos como aquisição de certificados, verificação de certificados, renovação de certificados e importação de certificados do Key Vault. Como alternativa, carregue seu certificado no Key Vault e autorize o provedor de recursos do Serviço de Aplicativo a acessá-lo.",
+ "guid": "4a17086d-c18e-4f8e-95ec-2f2b2ec65d17",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Aproveite os certificados gerenciados do Serviço de Aplicativo para descarregar o gerenciamento de certificação para o Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Evite tempo de inatividade e erros. Reverta rapidamente para o último estado válido conhecido se detectar um problema após uma troca.",
+ "guid": "0f0b02b2-941d-45a9-973a-74a01899a16d",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Valide as alterações do aplicativo no slot de preparo antes de trocá-lo pelo slot de produção.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O aplicativo nunca é descarregado com o Always On habilitado.",
+ "guid": "24d94b35-de37-4c04-9aea-dec880bf216c",
+ "service": "App Service Web Apps",
+ "text": "Habilite a configuração Always On quando os aplicativos compartilharem um único plano do Serviço de Aplicativo. Os aplicativos do Serviço de Aplicativo são descarregados automaticamente quando ociosos para economizar recursos. A próxima solicitação aciona uma inicialização a frio, o que pode causar tempos limite de solicitação.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Escolha HTTP/2 em vez de HTTP/1.1 porque o HTTP/2 multiplexa totalmente as conexões, reutiliza conexões para reduzir a sobrecarga e compacta cabeçalhos para minimizar a transferência de dados.",
+ "guid": "f5d46d58-7c3f-4917-a4f1-b97aa98a00c4",
+ "service": "App Service Web Apps",
+ "text": "Considere o uso de HTTP/2 para aplicativos para melhorar a eficiência do protocolo.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "App Service Web Apps Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/appservicewebapps_sg_checklist.zh-Hant.json b/checklists-ext/appservicewebapps_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..1f87739b4
--- /dev/null
+++ b/checklists-ext/appservicewebapps_sg_checklist.zh-Hant.json
@@ -0,0 +1,258 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "高級應用服務計劃提供高級縮放功能,並確保在發生故障時提供冗餘。",
+ "guid": "ad95f4ca-bd35-4ac7-a993-733c320fa4c4",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)為生產工作負載選擇應用服務計劃的高級層。 根據您的容量規劃設置最大和最小工作線程數。有關詳細資訊,請參閱應用服務計劃概述。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當多個實例分佈在各個區域時,您的應用程式可以承受單個區域中的故障。流量會自動轉移到其他區域中的正常運行的實例,並在一個區域不可用時保持應用程式的可靠性。",
+ "guid": "8a18771a-8a59-47de-905e-6e6b72f36990",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)啟用區域冗餘。請考慮預置三個以上的實例以增強容錯能力。 檢查區域對區域冗餘的支持,因為並非所有區域都提供此功能。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "禁用 ARR 關聯時,傳入請求將均勻分佈在所有可用節點上。均勻分佈的請求可防止流量使任何單個節點不堪重負。如果節點不可用,則可以將請求無縫重定向到其他正常運行的節點。 避免會話相關性,以確保應用服務實例保持無狀態。無狀態應用服務可降低複雜性,並確保節點之間的行為一致。 刪除粘性會話,以便應用服務可以添加或刪除實例以水平縮放。",
+ "guid": "5a05980f-0f3f-42c2-af59-563b037aa64c",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)請考慮禁用應用程式請求路由 (ARR) 關聯功能。ARR 關聯會創建粘性會話,將使用者重定向到處理其先前請求的節點。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "自動修復規則可説明您的應用程式自動從意外問題中恢復。當超出閾值時,配置的規則會觸發修復操作。 自動修復可實現自動主動維護。",
+ "guid": "a92ea6eb-79b0-49f8-be2f-9ecbd56ca794",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)根據請求計數、慢速請求、記憶體限制以及性能基線中的其他指標定義自動修復規則。將此配置視為擴展策略的一部分。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "運行狀況檢查可以及早發現問題。然後,當運行狀況檢查請求失敗時,系統可以自動採取糾正措施。 負載均衡器將流量從不正常的實例路由出去,從而將使用者定向到正常運行的節點。",
+ "guid": "8804a347-b18e-4dce-88b6-9beee13dc12b",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)開啟健康檢查功能,並提供回應健康檢查請求的路徑。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "應用程式從 Key Vault 檢索機密,以驗證來自應用程式的外部通信。Azure 管理標識,不需要預配或輪換任何機密。 對於控制的粒度,您具有不同的身份。如果身份遭到洩露,不同的身份使吊銷變得容易。",
+ "guid": "ffcc54ba-464e-4ad4-b96c-de8a6959ba61",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)將託管標識分配給 Web 應用。若要保持隔離邊界,請不要在應用程式之間共用或重複使用標識。 如果使用容器進行部署,請確保安全地連接到容器註冊表。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "自定義域使用傳輸層安全性 (TLS) 協定通過 HTTPS 實現安全通信,從而確保對敏感數據的保護並建立使用者信任。",
+ "guid": "d0450dd8-5e4e-45a2-ae67-83de17e9932c",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為應用程式配置自定義域。 禁用 HTTP 並僅接受 HTTPS 請求。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用此功能時,您不必在應用程式代碼中使用身份驗證庫,從而降低了複雜性。當請求到達應用程式時,用戶已經過身份驗證。",
+ "guid": "b2b6b6df-7bd0-4394-a6df-86c3a15bcaf7",
+ "service": "App Service Web Apps",
+ "text": "(應用服務) 評估應用服務內置身份驗證是否是對存取應用程式的使用者進行身份驗證的正確機制。應用服務內置身份驗證與 Microsoft Entra ID 集成。此功能處理跨多個登錄供應商的令牌驗證和使用者身份管理,並支援 OpenID Connect。使用此功能時,您沒有細粒度級別的授權,並且沒有測試身份驗證的機制。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "獲得使用 Azure 虛擬網路的安全優勢。例如,應用程式可以安全地訪問網路內的資源。 添加專用終結點以幫助保護應用程式。專用終結點限制了對公共網路的直接暴露,並允許通過反向代理進行受控訪問。",
+ "guid": "bc1fd50b-a78a-44e6-bbd6-db1c75fa8fdd",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為虛擬網路整合配置應用程式。 對應用服務應用使用專用終結點。阻止所有公共交通。 通過虛擬網路集成路由容器映射拉取。來自應用程式的所有傳出流量都通過虛擬網路。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "我們不建議將基本身份驗證作為安全部署方法。Microsoft Entra ID 採用基於 OAuth 2.0 令牌的身份驗證,該身份驗證提供了許多優勢和增強功能,可解決與基本身份驗證關聯的限制。 策略限制對應用程式資源的訪問,僅允許來自特定域的請求,並保護跨區域請求。",
+ "guid": "aed08f98-d32e-43c4-8879-e2a3640ec82a",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)要實施強化,請執行以下操作: - 禁用使用使用者名和密碼的基本身份驗證,以支持基於 Microsoft Entra ID 的身份驗證。 - 關閉遠端調試,以便不打開入站埠。- 啟用 CORS 策略以收緊傳入請求。 - 禁用 FTP 等協定。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "機密與應用的配置分開保存。應用設置在靜態時進行加密。 應用服務還管理機密輪換。",
+ "guid": "ed800519-baa0-449d-8c29-c5fae194116a",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)始終使用 Key Vault 引用作為應用設置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "為在應用服務計劃中運行的資源獲取實時保護。防範威脅並增強整體安全態勢。",
+ "guid": "4c020315-db82-4fd8-a3da-8f2b80bd5b4f",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)為應用服務啟用 Microsoft Defender for Cloud。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "日誌記錄捕獲訪問模式。它記錄相關事件,這些事件提供有關使用者如何與應用程式或平臺交互的寶貴見解。這些資訊對於問責制、合規性和安全性目的至關重要。",
+ "guid": "a1278dd3-3ed5-43b3-9544-69ccd3694db1",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)啟用診斷日誌記錄並向應用添加檢測。日誌將發送到 Azure 儲存帳戶、Azure 事件中心和 Log Analytics。有關審核日誌類型的更多資訊,請參閱支援的日誌類型。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "與較高級別相比,「免費」和“基本”級別對預算友好。它們為不需要高級計劃的全部功能和性能的非生產環境提供了經濟高效的解決方案。",
+ "guid": "73ebf138-84db-4fcf-9829-c3196790bb4b",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)對於較低的環境,請選擇「免費」或“基本”層。我們建議將這些層用於實驗性用途。當您不再需要這些層時,請將其刪除。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "開發/測試計劃為 Azure 服務提供更低的費率,這使得它們在非生產環境中具有成本效益。 使用預留實例預付計算資源費用並獲得大幅折扣。",
+ "guid": "e4b9b5ec-6d62-4457-8225-98070a48f1f0",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)利用折扣並探索以下優惠定價: - 使用開發/測試計劃降低環境。 - 在高級 V3 層和應用服務環境中預配的專用計算的 Azure 預留和 Azure 節省計畫。 將預留實例用於具有可預測使用模式的穩定工作負載。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以及早發現成本飆升、效率低下或意外費用。這種積極主動的方法可説明您提供預算控制,以防止超支。",
+ "guid": "c3c919e3-e1ef-4566-8789-edada78d7095",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)監視應用服務資源產生的成本。在 Azure 門戶中運行成本分析工具。 創建預算和警報以通知利益相關者。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "防止浪費,減少不必要的開支。",
+ "guid": "a5257a31-c39f-4c09-85d0-d34edbfc0bbd",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)當需求減少時進行縮減。若要縮減,請定義縮放規則以減少 Azure Monitor 中的實例數。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以及時發現問題並採取必要的措施來保持可用性和性能。",
+ "guid": "29f5cff9-45d7-4ade-8e27-94ca0ba3b1d3",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)監控實例的運行狀況並啟動實例運行狀況探測。設置用於處理運行狀況探測請求的特定路徑。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌提供有關應用行為的寶貴見解。監控流量模式並識別異常情況。",
+ "guid": "9540f299-ca72-4849-a58a-78153436fc26",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為應用程式和實例啟用診斷日誌。 頻繁的日誌記錄可能會降低系統的性能,增加存儲成本,並且如果您無法安全地訪問日誌,還會帶來風險。請遵循以下最佳實踐: - 記錄正確級別的資訊。 - 設置保留策略。 - 保留對授權訪問和未經授權的嘗試的審計跟蹤。- 將日誌視為數據,並應用數據保護控制。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應用服務會自動處理證書獲取、證書驗證、證書續訂和從 Key Vault 導入證書等過程。或者,將證書上傳到 Key Vault,並授權應用服務資源供應商訪問它。",
+ "guid": "4a17086d-c18e-4f8e-95ec-2f2b2ec65d17",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)利用應用服務託管證書將證書管理卸載到 Azure。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "避免停機和錯誤。 如果在交換后檢測到問題,請快速恢復到上次已知的良好狀態。",
+ "guid": "0f0b02b2-941d-45a9-973a-74a01899a16d",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)在將暫存槽與生產槽交換應用之前,請驗證該應用在過渡槽中的更改。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "在啟用 Always On 的情況下,應用程式永遠不會卸載。",
+ "guid": "24d94b35-de37-4c04-9aea-dec880bf216c",
+ "service": "App Service Web Apps",
+ "text": "當應用程式共用單個應用服務計劃時,啟用 Always On 設置。應用服務應用在空閒時自動卸載以節省資源。下一個請求會觸發冷啟動,這可能會導致請求超時。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "選擇 HTTP/2 而不是 HTTP/1.1,因為 HTTP/2 完全多路複用連接,重用連接以減少開銷,並壓縮標頭以最大程度地減少數據傳輸。",
+ "guid": "f5d46d58-7c3f-4917-a4f1-b97aa98a00c4",
+ "service": "App Service Web Apps",
+ "text": "考慮將 HTTP/2 用於應用程式以提高協定效率。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "App Service Web Apps Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.en.json b/checklists-ext/azureapplicationgateway_sg_checklist.en.json
index aea375e93..26bda617e 100644
--- a/checklists-ext/azureapplicationgateway_sg_checklist.en.json
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.en.json
@@ -236,35 +236,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -301,6 +301,6 @@
"name": "Azure Application Gateway Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.es.json b/checklists-ext/azureapplicationgateway_sg_checklist.es.json
new file mode 100644
index 000000000..41eda183b
--- /dev/null
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.es.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Planee el tiempo suficiente para las actualizaciones antes de acceder a Application Gateway o realizar más cambios. Por ejemplo, la eliminación de servidores del grupo de back-end puede llevar algún tiempo porque tienen que purgar las conexiones existentes.",
+ "guid": "9a17eb2b-c5e3-428b-9e45-73dead45c4f9",
+ "service": "Azure Application Gateway",
+ "text": "Planear las actualizaciones de las reglas",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Si Application Gateway se usa para equilibrar la carga del tráfico entrante en varias instancias de back-end, se recomienda el uso de sondeos de estado. Esto garantizará que el tráfico no se enrute a backends que no puedan manejar el tráfico.",
+ "guid": "5bfa95df-20d8-4452-a6c1-79c88b07d4cc",
+ "service": "Azure Application Gateway",
+ "text": "Uso de sondeos de estado para detectar la falta de disponibilidad del back-end",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El sondeo de estado envía solicitudes al punto de conexión configurado en un intervalo establecido. Además, hay un umbral de solicitudes fallidas que se tolerarán antes de que el back-end se marque como incorrecto. Estos números presentan una compensación.- Establecer un intervalo más alto pone una mayor carga en su servicio. Cada instancia de Application Gateway envía sus propios sondeos de estado, por lo que 100 instancias cada 30 segundos significa 100 solicitudes cada 30 segundos.- Establecer un intervalo inferior deja más tiempo antes de que se detecte una interrupción.- Establecer un umbral incorrecto bajo podría significar que errores breves y transitorios podrían derribar un back-end. - Al establecer un umbral alto, puede llevar más tiempo sacar un backend de la rotación.",
+ "guid": "ec5bc6c4-6176-44a2-860e-8654f588effd",
+ "service": "Azure Application Gateway",
+ "text": "Revisión del impacto de la configuración de intervalo y umbral en los sondeos de estado",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Supongamos que cada backend tiene sus propias dependencias para garantizar que se aíslen los errores. Por ejemplo, una aplicación hospedada detrás de Application Gateway puede tener varios back-ends, cada uno conectado a una base de datos diferente (réplica). Cuando se produce un error en una dependencia de este tipo, es posible que la aplicación esté funcionando, pero no devolverá resultados válidos. Por ese motivo, lo ideal es que el punto de conexión de mantenimiento valide todas las dependencias. Tenga en cuenta que si cada llamada al punto de conexión de mantenimiento tiene una llamada de dependencia directa, esa base de datos recibiría 100 consultas cada 30 segundos en lugar de 1. Para evitar esto, el punto de conexión de mantenimiento debe almacenar en caché el estado de las dependencias durante un breve período de tiempo.",
+ "guid": "78bc5274-ca88-4e2a-8d3a-7b6a5ed1ccd6",
+ "service": "Azure Application Gateway",
+ "text": "Comprobación de las dependencias de nivel inferior a través de los puntos de conexión de estado",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Determinados escenarios pueden obligarle a implementar reglas específicamente en Application Gateway. Por ejemplo, si se requieren reglas ModSec CRS 2.2.9, CRS 3.0 o CRS 3.1, estas reglas solo se pueden implementar en Application Gateway. Por el contrario, la limitación de velocidad y el filtrado geográfico solo están disponibles en Azure Front Door, no en AppGateway.",
+ "guid": "da7234f3-70a7-47d2-b685-3e47843003e9",
+ "service": "Azure Application Gateway",
+ "text": "Al usar Azure Front Door y Application Gateway para proteger aplicaciones \"HTTP/S\", use directivas de WAF en Front Door y bloquee Application Gateway para recibir tráfico solo de Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Configure una política TLS para mayor seguridad. Asegúrese de usar siempre la última versión de la política TLS disponible. Esto aplica TLS 1.2 y cifrados más seguros.",
+ "guid": "9e5ba3b9-3512-425b-95e3-d5009e7630f3",
+ "service": "Azure Application Gateway",
+ "text": "Configuración de una política TLS para mejorar la seguridad",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Hay ventajas de usar Application Gateway para la terminación de TLS:- El rendimiento mejora porque las solicitudes que van a diferentes backends tienen que volver a autenticarse en cada backend.- Mejor utilización de los servidores de back-end porque no tienen que realizar el procesamiento de TLS- Enrutamiento inteligente mediante el acceso al contenido de la solicitud.- Administración de certificados más fácil porque el certificado solo necesita instalarse en Application Gateway.",
+ "guid": "5cbd84eb-56a7-4d18-9f50-de47d3b29a8f",
+ "service": "Azure Application Gateway",
+ "text": "Uso de AppGateway para la terminación de TLS",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Application Gateway se puede integrar con Key Vault. Esto proporciona una mayor seguridad, una separación más sencilla de roles y responsabilidades, compatibilidad con certificados administrados y un proceso de renovación y rotación de certificados más sencillo.",
+ "guid": "c1e7b351-a459-49d1-b473-a1f663310205",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Key Vault para almacenar certificados TLS",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Un certificado TLS del servidor backend debe ser emitido por una CA conocida. Si el certificado no fue emitido por una entidad de certificación de confianza, Application Gateway comprueba si el certificado fue emitido por una entidad de certificación de confianza, y así sucesivamente, hasta que se encuentre un certificado de entidad de certificación de confianza. Solo entonces se establece una conexión segura. De lo contrario, Application Gateway marca el back-end como incorrecto.",
+ "guid": "1f53df88-090e-4f67-8a41-866ea4938cb1",
+ "service": "Azure Application Gateway",
+ "text": "Al volver a cifrar el tráfico de backend, asegúrese de que el certificado del servidor de backend contenga las autoridades de certificación (CA) raíz e intermedias",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Cuando el grupo de back-end contiene un FQDN que se puede resolver, la resolución DNS se basa en una zona DNS privada o en un servidor DNS personalizado (si está configurado en la red virtual), o usa el DNS predeterminado proporcionado por Azure.",
+ "guid": "0e1af02a-017b-4a41-a7e5-98b47d7b1fd7",
+ "service": "Azure Application Gateway",
+ "text": "Usar un servidor DNS adecuado para los recursos del grupo de back-end",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los grupos de seguridad de red se admiten en la subred de Application Gateway, pero existen algunas restricciones. Por ejemplo, se prohíbe cierta comunicación con ciertos rangos de puertos. Asegúrese de comprender las implicaciones de esas restricciones. Para obtener más información, consulte Grupos de seguridad de red.",
+ "guid": "75da1adb-f8a2-4ad5-879a-a8552d1c836a",
+ "service": "Azure Application Gateway",
+ "text": "Cumplimiento de todas las restricciones de NSG para Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de rutas definidas por el usuario (UDR) en la subred de Application Gateway puede causar algunos problemas. Es posible que se desconozca el estado de mantenimiento en el back-end. Es posible que no se generen los registros y las métricas de Application Gateway. Se recomienda no usar UDR en la subred de Application Gateway para poder ver el estado, los registros y las métricas del back-end. Si las organizaciones necesitan usar UDR en la subred de Application Gateway, asegúrese de revisar los escenarios admitidos. Para obtener más información, consulte Rutas definidas por el usuario admitidas.",
+ "guid": "7776e1c9-a0a7-4fd5-8fe9-1b2b9c56cf31",
+ "service": "Azure Application Gateway",
+ "text": "Abstenerse de usar UDR en la subred de Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Cuando WAF está habilitado, Application Gateway debe almacenar en búfer cada solicitud hasta que llegue por completo, comprueba si la solicitud coincide con alguna infracción de regla en su conjunto de reglas principal y, a continuación, reenvía el paquete a las instancias de back-end. Cuando hay cargas de archivos grandes (30 MB+ de tamaño), puede resultar en una latencia significativa. Dado que los requisitos de capacidad de Application Gateway son diferentes con WAF, no se recomienda habilitar WAF en Application Gateway sin las pruebas y validaciones adecuadas.",
+ "guid": "7c173790-6fac-43bc-b1b4-e787fdbb904f",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta los cambios de capacidad de Application Gateway al habilitar WAF",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Para obtener información sobre los precios de Application Gateway, consulte Descripción de los precios de Azure Application Gateway y Web Application Firewall. También puede aprovechar la calculadora de precios. Asegúrese de que las opciones tengan el tamaño adecuado para satisfacer la demanda de capacidad y ofrecer el rendimiento esperado sin desperdiciar recursos.",
+ "guid": "13adc786-048a-4720-9aad-610419507199",
+ "service": "Azure Application Gateway",
+ "text": "Familiarícese con los precios de Application Gateway",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Identifique y elimine instancias de Application Gateway con grupos de back-end vacíos para evitar costos innecesarios.",
+ "guid": "8d3979f9-bd25-4455-9e2f-2cc7e0deaf5e",
+ "service": "Azure Application Gateway",
+ "text": "Revisar los recursos infrautilizados",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "No se le facturará cuando Application Gateway esté en estado detenido. Las instancias de Application Gateway que se ejecutan de forma continua pueden incurrir en costos superfluos. Evalúe los patrones de uso y detenga las instancias cuando no las necesite. Por ejemplo, se espera que el uso después del horario comercial en entornos de desarrollo y pruebas sea bajo. Consulte estos artículos para obtener información sobre cómo detener e iniciar instancias.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "fc01794b-1808-4152-a82c-95b43b2a4c45",
+ "service": "Azure Application Gateway",
+ "text": "Detener instancias de Application Gateway cuando no están en uso",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Una política de escalado horizontal garantiza que habrá suficientes instancias para controlar el tráfico entrante y los picos. Además, tenga una política de reducción horizontal que garantice que el número de instancias se reduzca cuando disminuya la demanda. Tenga en cuenta la elección del tamaño de la instancia. El tamaño puede afectar significativamente el costo. Algunas consideraciones se describen en Estimación del recuento de instancias de Application Gateway. Para más información, consulte ¿Qué es Azure Application Gateway v2?",
+ "guid": "4e5743d9-44ec-4a09-9c80-d77056109fc6",
+ "service": "Azure Application Gateway",
+ "text": "Tener una política de escalado vertical y horizontal",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Se le facturará en función de las instancias medidas de Application Gateway en función de las métricas rastreadas por Azure. Evalúe las distintas métricas y unidades de capacidad y determine los factores de coste. Para obtener más información, consulte Administración de costos y facturación de Microsoft. Las siguientes métricas son clave para Application Gateway. Esta información se puede usar para validar que el recuento de instancias aprovisionadas coincida con la cantidad de tráfico entrante.- Unidades de capacidad facturadas estimadas- Unidades de capacidad facturables fijas- Unidades de capacidad actualesPara obtener más información, consulte Métricas de Application Gateway. Asegúrese de tener en cuenta los costos de ancho de banda.",
+ "guid": "30129a61-cd84-4085-9533-5d42f89372d9",
+ "service": "Azure Application Gateway",
+ "text": "Revisar las métricas de consumo en diferentes parámetros",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Utilice estas métricas como indicadores de uso de la capacidad aprovisionada de Application Gateway. Le recomendamos encarecidamente que configure alertas sobre la capacidad. Para obtener más información, consulte Compatibilidad con el tráfico elevado de Application Gateway.",
+ "guid": "57cc0c49-939f-46d9-864e-d7ce31733771",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de las métricas de capacidad",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Hay otras métricas que pueden indicar problemas en Application Gateway o en el back-end. Se recomienda evaluar las siguientes alertas:- Recuento de hosts incorrectos- Estado de respuesta (dimensión 4xx y 5xx)- Estado de respuesta del back-end (dimensión 4xx y 5xx)- Tiempo de respuesta del último byte del back-end- Tiempo total de Application GatewayPara obtener más información, consulte Métricas para Application Gateway.",
+ "guid": "071e5241-c008-41a2-9e62-c056081158d2",
+ "service": "Azure Application Gateway",
+ "text": "Solución de problemas mediante métricas",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico le permiten ver los registros de firewall, los registros de rendimiento y los registros de acceso. Use estos registros para administrar y solucionar problemas con las instancias de Application Gateway. Para obtener más información, consulte Registros de diagnóstico y estado de back-end para Application Gateway.",
+ "guid": "7e160588-dc1c-48d5-9a56-4ddc6aeb8fc2",
+ "service": "Azure Application Gateway",
+ "text": "Habilitación de diagnósticos en Application Gateway y Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Monitor Network Insights proporciona una vista completa del estado y las métricas de los recursos de red, incluida Application Gateway. Para obtener más información y funcionalidades compatibles con Application Gateway, consulte Información de red de Azure Monitor.",
+ "guid": "260dc49f-05b9-4c43-9cda-afc5b1923c89",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Monitor Network Insights",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Asegúrese de que ha configurado la configuración de IdleTimeout para que coincida con las características del agente de escucha y el tráfico de la aplicación back-end. El valor predeterminado se establece en cuatro minutos y se puede configurar hasta un máximo de 30. Para obtener más información, consulte Restablecimiento de TCP del equilibrador de carga y tiempo de espera de inactividad.Para obtener consideraciones sobre la carga de trabajo, consulte Supervisión del estado de la aplicación para la confiabilidad.",
+ "guid": "8c5e5e8f-44d7-4494-8819-c1d765838fec",
+ "service": "Azure Application Gateway",
+ "text": "Hacer coincidir la configuración de tiempo de espera con la aplicación back-end",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Application Gateway comprueba la versión de certificado renovada en la instancia de Key Vault vinculada cada intervalo de 4 horas. Si no se puede acceder a él debido a una configuración incorrecta de Key Vault, registra ese error y envía una recomendación de Advisor correspondiente. Debe configurar las alertas de Advisor para mantenerse actualizado y solucionar estos problemas de inmediato para evitar problemas relacionados con el plano de control o de datos. Para obtener más información, consulte Investigación y resolución de errores de Key Vault. Para establecer una alerta para este caso específico, use el tipo de recomendación como Resolver problema de Azure Key Vault para Application Gateway.",
+ "guid": "4123369e-cbd7-472d-9879-e155476c2595",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de problemas de configuración de Key Vault mediante Azure Advisor",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las limitaciones del puerto SNAT son importantes para las conexiones de back-end en Application Gateway. Hay factores independientes que afectan a la forma en que Application Gateway alcanza el límite de puertos SNAT. Por ejemplo, si el backend es una dirección IP pública, requerirá su propio puerto SNAT. Para evitar las limitaciones del puerto SNAT, puede aumentar el número de instancias por Application Gateway, escalar horizontalmente los back-end para que tengan más direcciones IP o mover los back-end a la misma red virtual y usar direcciones IP privadas para los back-ends. Las solicitudes por segundo (RPS) en Application Gateway se verán afectadas si se alcanza el límite de puertos SNAT. Por ejemplo, si Application Gateway alcanza el límite de puertos SNAT, no podrá abrir una nueva conexión al back-end y se producirá un error en la solicitud.",
+ "guid": "d2713c48-1e6f-4ee8-b91c-8499e7146945",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta las limitaciones de los puertos SNAT en su diseño",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "En el caso de la SKU de Application Gateway v2, el escalado automático tarda algún tiempo (aproximadamente de seis a siete minutos) antes de que el conjunto adicional de instancias esté listo para atender el tráfico. Durante ese tiempo, si hay picos cortos en el tráfico, espere latencia transitoria o pérdida de tráfico. Le recomendamos que establezca el número mínimo de instancias en un nivel óptimo. Después de calcular el número medio de instancias y determinar las tendencias de escalado automático de Application Gateway, defina el recuento mínimo de instancias en función de los patrones de la aplicación. Para obtener información, consulte Compatibilidad con alto tráfico de Application Gateway. Compruebe las unidades de cálculo actuales del último mes. Esta métrica representa la utilización de la CPU de la puerta de enlace. Para definir el número mínimo de instancias, divida el uso máximo por 10. Por ejemplo, si el promedio de unidades de proceso actuales en el último mes es de 50, establezca el recuento mínimo de instancias en cinco.",
+ "guid": "8bba115b-e086-458e-beca-ae9d8144a1f6",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número mínimo de instancias",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Se recomienda 125 como número máximo de instancias de escalado automático. Asegúrese de que la subred que tiene Application Gateway tiene suficientes direcciones IP disponibles para admitir el conjunto de instancias de escalado vertical. Establecer el número máximo de instancias en 125 no tiene implicaciones de costo, ya que solo se le factura por la capacidad consumida.",
+ "guid": "1250aa80-2761-4138-9565-57735472779b",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número máximo de instancias",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Application Gateway necesita una subred dedicada dentro de una red virtual. La subred puede tener varias instancias del recurso de Application Gateway implementado. También puede implementar otros recursos de Application Gateway en esa SKU de subred, v1 o v2. Estas son algunas consideraciones para definir el tamaño de la subred:- Application Gateway usa una dirección IP privada por instancia y otra dirección IP privada si se configura una IP de front-end privada.- Azure reserva cinco direcciones IP en cada subred para uso interno.- Application Gateway (SKU estándar o WAF) puede admitir hasta 32 instancias. Tomando 32 direcciones IP de instancia + 1 IP de front-end privada + 5 reservadas de Azure, se recomienda un tamaño de subred mínimo de /26. Dado que la SKU de Standard_v2 o WAF_v2 puede admitir hasta 125 instancias, con el mismo cálculo, se recomienda un tamaño de subred de /24.- Si desea implementar recursos adicionales de Application Gateway en la misma subred, tenga en cuenta las direcciones IP adicionales que se requerirán para su recuento máximo de instancias tanto para Estándar como para Estándar v2.",
+ "guid": "dbf3ca82-d3a8-431e-a86e-65df49c72032",
+ "service": "Azure Application Gateway",
+ "text": "Definir el tamaño de la subred de Application Gateway",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La SKU v2 ofrece escalado automático para garantizar que Application Gateway pueda escalar verticalmente a medida que aumenta el tráfico. En comparación con la SKU v1, v2 tiene capacidades que mejoran el rendimiento de la carga de trabajo. Por ejemplo, un mejor rendimiento de descarga de TLS, tiempos de implementación y actualización más rápidos, redundancia de zona y más. Para obtener más información sobre las características de escalado automático, consulte Escalado de Application Gateway v2 y WAF v2. Si ejecuta la SKU v1 Application Gateway, considere la posibilidad de migrar a la SKU Application Gateway v2. Para más información, consulte Migración de Azure Application Gateway y Web Application Firewall de v1 a v2.",
+ "guid": "dffdc8e9-9139-46c1-93df-638e00cb3657",
+ "service": "Azure Application Gateway",
+ "text": "Aproveche las características de escalado automático y las ventajas de rendimiento",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Application Gateway Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.ja.json b/checklists-ext/azureapplicationgateway_sg_checklist.ja.json
new file mode 100644
index 000000000..8bf9f5925
--- /dev/null
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.ja.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Application Gateway にアクセスしたり、さらに変更を加えたりする前に、更新のための十分な時間を計画してください。たとえば、バックエンド プールからサーバーを削除すると、既存の接続をドレインする必要があるため、時間がかかる場合があります。",
+ "guid": "9a17eb2b-c5e3-428b-9e45-73dead45c4f9",
+ "service": "Azure Application Gateway",
+ "text": "ルールの更新を計画する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Application Gateway を使用して複数のバックエンド インスタンスで受信トラフィックの負荷を分散する場合は、正常性プローブを使用することをお勧めします。これにより、トラフィックを処理できないバックエンドにトラフィックがルーティングされなくなります。",
+ "guid": "5bfa95df-20d8-4452-a6c1-79c88b07d4cc",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブを使用してバックエンドの可用性の低さを検出する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "正常性プローブは、設定された間隔で構成されたエンドポイントに要求を送信します。また、バックエンドが異常とマークされる前に許容される失敗した要求のしきい値があります。これらの数値はトレードオフを示しています。- 間隔を長く設定すると、サービスに高い負荷がかかります。各 Application Gateway インスタンスは独自の正常性プローブを送信するため、30 秒ごとに 100 インスタンスは 30 秒あたり 100 要求を意味します。- 間隔を短く設定すると、停止が検出されるまでの時間が長くなります。- 異常なしきい値を低く設定すると、短時間の一時的な障害によってバックエンドがダウンする可能性があります。- しきい値を高く設定すると、バックエンドをローテーションから外すのに時間がかかる場合があります。",
+ "guid": "ec5bc6c4-6176-44a2-860e-8654f588effd",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブに対する間隔としきい値の設定の影響を確認します",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "各バックエンドに独自の依存関係があり、障害が分離されているとします。たとえば、Application Gateway の背後でホストされているアプリケーションには、複数のバックエンドがあり、それぞれが異なるデータベース (レプリカ) に接続されている場合があります。このような依存関係が失敗すると、アプリケーションは動作している可能性がありますが、有効な結果は返されません。そのため、正常性エンドポイントは、理想的にはすべての依存関係を検証する必要があります。正常性エンドポイントへの各呼び出しに直接依存関係の呼び出しがある場合、そのデータベースは 1 回ではなく 30 秒ごとに 100 回のクエリを受け取ることに注意してください。これを回避するには、正常性エンドポイントで依存関係の状態を短時間キャッシュする必要があります。",
+ "guid": "78bc5274-ca88-4e2a-8d3a-7b6a5ed1ccd6",
+ "service": "Azure Application Gateway",
+ "text": "正常性エンドポイントによるダウンストリームの依存関係の確認",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "特定のシナリオでは、Application Gateway にルールを実装することを余儀なくされる場合があります。たとえば、ModSec CRS 2.2.9、CRS 3.0、または CRS 3.1 のルールが必要な場合、これらのルールは Application Gateway にのみ実装できます。逆に、レート制限と geo フィルタリングは Azure Front Door でのみ使用でき、AppGateway では使用できません。",
+ "guid": "da7234f3-70a7-47d2-b685-3e47843003e9",
+ "service": "Azure Application Gateway",
+ "text": "Azure Front Door と Application Gateway を使用して \"HTTP/S\" アプリケーションを保護する場合は、Front Door で WAF ポリシーを使用し、Azure Front Door からのトラフィックのみを受信するように Application Gateway をロックダウンします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セキュリティを強化するために TLS ポリシーを設定します。常に利用可能な最新の TLS ポリシーバージョンを使用していることを確認してください。これにより、TLS 1.2 以上の暗号が適用されます。",
+ "guid": "9e5ba3b9-3512-425b-95e3-d5009e7630f3",
+ "service": "Azure Application Gateway",
+ "text": "セキュリティを強化するための TLS ポリシーの設定",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 終了に Application Gateway を使用することには、次のような利点があります。- 異なるバックエンドに送信される要求が各バックエンドに対して再認証を必要とするため、パフォーマンスが向上します。- TLS 処理を実行する必要がないため、バックエンド サーバーの使用率が向上します。- 要求コンテンツへのアクセスによるインテリジェントなルーティング - 証明書を Application Gateway にインストールするだけで済むため、証明書の管理が容易になります。",
+ "guid": "5cbd84eb-56a7-4d18-9f50-de47d3b29a8f",
+ "service": "Azure Application Gateway",
+ "text": "AppGateway を TLS ターミネーションに使用する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Application Gateway は Key Vault と統合できます。これにより、セキュリティが強化され、役割と責任の分離が容易になり、管理された証明書のサポート、証明書の更新とローテーションのプロセスが容易になります。",
+ "guid": "c1e7b351-a459-49d1-b473-a1f663310205",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault を使用して TLS 証明書を格納する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "バックエンド サーバーの TLS 証明書は、既知の CA によって発行される必要があります。証明書が信頼された CA によって発行されていない場合、Application Gateway は、信頼された CA 証明書が見つかるまで、証明書が信頼された CA によって発行されたかどうかなどを確認します。その後、安全な接続が確立されます。それ以外の場合、Application Gateway はバックエンドを異常としてマークします。",
+ "guid": "1f53df88-090e-4f67-8a41-866ea4938cb1",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド トラフィックを再暗号化する場合は、バックエンド サーバー証明書にルート認証局 (CA) と中間認証局 (CA) の両方が含まれていることを確認します",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "バックエンド プールに解決可能な FQDN が含まれている場合、DNS 解決はプライベート DNS ゾーンまたはカスタム DNS サーバー (VNet で構成されている場合) に基づいているか、Azure が提供する既定の DNS を使用します。",
+ "guid": "0e1af02a-017b-4a41-a7e5-98b47d7b1fd7",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド プール リソースに適切な DNS サーバーを使用する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "NSG は Application Gateway サブネットでサポートされていますが、いくつかの制限があります。たとえば、特定のポート範囲との一部の通信は禁止されています。これらの制限の影響を理解していることを確認してください。詳細については、「ネットワーク セキュリティ グループ」を参照してください。",
+ "guid": "75da1adb-f8a2-4ad5-879a-a8552d1c836a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway のすべての NSG 制限に準拠する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Application Gateway サブネットでユーザー定義ルート (UDR) を使用すると、いくつかの問題が発生する可能性があります。バックエンドの正常性状態が不明な場合があります。Application Gateway のログとメトリックが生成されない場合があります。バックエンドの正常性、ログ、メトリックを表示できるように、Application Gateway サブネットで UDR を使用しないことをお勧めします。組織で Application Gateway サブネットで UDR を使用する必要がある場合は、サポートされているシナリオを確認してください。詳細については、「サポートされているユーザー定義ルート」を参照してください。",
+ "guid": "7776e1c9-a0a7-4fd5-8fe9-1b2b9c56cf31",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネットで UDR を使用しないようにする",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "WAF が有効になっている場合、すべての要求は、完全に到着するまで Application Gateway によってバッファーに格納され、要求がコア ルール セットのルール違反と一致するかどうかを確認してから、パケットをバックエンド インスタンスに転送する必要があります。大きなファイル(サイズが30MB+)のアップロードがある場合、大幅な遅延が発生する可能性があります。Application Gateway の容量要件は WAF によって異なるため、適切なテストと検証を行わずに Application Gateway で WAF を有効にすることはお勧めしません。",
+ "guid": "7c173790-6fac-43bc-b1b4-e787fdbb904f",
+ "service": "Azure Application Gateway",
+ "text": "WAF を有効にするときは、Application Gateway の容量の変更に注意してください",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Application Gateway の価格については、「Azure Application Gateway と Web Application Firewall の価格について」を参照してください。また、料金計算ツールを活用することもできます。オプションが容量の需要を満たすために適切なサイズに設定され、リソースを無駄にすることなく期待されるパフォーマンスを提供することを確認します。",
+ "guid": "13adc786-048a-4720-9aad-610419507199",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway の価格について理解する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "不要なコストを回避するために、空のバックエンド プールを持つ Application Gateway インスタンスを特定して削除します。",
+ "guid": "8d3979f9-bd25-4455-9e2f-2cc7e0deaf5e",
+ "service": "Azure Application Gateway",
+ "text": "十分に活用されていないリソースを確認する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Application Gateway が停止状態の場合、課金されません。Application Gateway インスタンスを継続的に実行すると、余分なコストが発生する可能性があります。使用パターンを評価し、不要なインスタンスを停止します。たとえば、Dev/Test 環境での営業時間後の使用量は低いと予想されます。インスタンスを停止および開始する方法については、次の記事を参照してください。",
+ "guid": "fc01794b-1808-4152-a82c-95b43b2a4c45",
+ "service": "Azure Application Gateway",
+ "text": "使用していないときに Application Gateway インスタンスを停止する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スケールアウトポリシーにより、受信トラフィックとスパイクを処理するのに十分なインスタンスが確保されます。また、需要が減少したときにインスタンスの数が減るようにするスケールインポリシーがあります。インスタンスサイズの選択を検討してください。サイズはコストに大きな影響を与える可能性があります。いくつかの考慮事項については、「Application Gateway インスタンス数の見積もり」で説明されています。詳細については、「Azure Application Gateway v2 とは」を参照してください。",
+ "guid": "4e5743d9-44ec-4a09-9c80-d77056109fc6",
+ "service": "Azure Application Gateway",
+ "text": "スケールインとスケールアウトのポリシーがある",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure によって追跡されるメトリックに基づく Application Gateway の従量制課金インスタンスに基づいて課金されます。さまざまなメトリクスとキャパシティーユニットを評価し、コストドライバーを決定します。詳細については、「Microsoft Cost Management and Billing」を参照してください。次のメトリックは、Application Gateway のキーです。この情報は、プロビジョニングされたインスタンス数が受信トラフィックの量と一致することを検証するために使用できます。- 推定請求キャパシティ ユニット- 固定請求可能キャパシティ ユニット- 現在のキャパシティ ユニット詳細については、「Application Gateway メトリック」を参照してください。帯域幅のコストを考慮してください。",
+ "guid": "30129a61-cd84-4085-9533-5d42f89372d9",
+ "service": "Azure Application Gateway",
+ "text": "さまざまなパラメーターにわたる消費メトリックを確認する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "これらのメトリックは、プロビジョニングされた Application Gateway 容量の使用率の指標として使用します。容量に関するアラートを設定することを強くお勧めします。詳細については、「Application Gateway の高トラフィックのサポート」を参照してください。",
+ "guid": "57cc0c49-939f-46d9-864e-d7ce31733771",
+ "service": "Azure Application Gateway",
+ "text": "容量メトリックの監視",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Application Gateway またはバックエンドの問題を示す可能性のあるメトリックは他にもあります。次のアラートを評価することをお勧めします:- 異常なホスト数- 応答状態 (ディメンション 4xx と 5xx)- バックエンド応答状態 (ディメンション 4xx と 5xx)- バックエンドの最終バイト応答時間 - Application Gateway 合計時間詳細については、「Application Gateway のメトリック」を参照してください。",
+ "guid": "071e5241-c008-41a2-9e62-c056081158d2",
+ "service": "Azure Application Gateway",
+ "text": "メトリクスを使用したトラブルシューティング",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログを使用すると、ファイアウォール ログ、パフォーマンス ログ、およびアクセス ログを表示できます。これらのログを使用して、Application Gateway インスタンスの問題を管理およびトラブルシューティングします。詳細については、「Application Gateway のバックエンドの正常性ログと診断ログ」を参照してください。",
+ "guid": "7e160588-dc1c-48d5-9a56-4ddc6aeb8fc2",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway と Web アプリケーション ファイアウォール (WAF) で診断を有効にする",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Monitor Network Insights は、Application Gateway を含むネットワーク リソースの正常性とメトリックの包括的なビューを提供します。Application Gateway の詳細とサポートされている機能については、「Azure Monitor ネットワーク分析情報」を参照してください。",
+ "guid": "260dc49f-05b9-4c43-9cda-afc5b1923c89",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights を使用する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "バックエンド・アプリケーションのリスナーおよびトラフィック特性と一致するようにIdleTimeout設定が構成されていることを確認します。デフォルト値は 4 分に設定され、最大 30 に設定できます。詳細については、Load Balancer の TCP リセットとアイドル・タイムアウトを参照してください。ワークロードに関する考慮事項については、信頼性のためのアプリケーション・ヘルスのモニタリングを参照してください。",
+ "guid": "8c5e5e8f-44d7-4494-8819-c1d765838fec",
+ "service": "Azure Application Gateway",
+ "text": "タイムアウト設定をバックエンドアプリケーションと一致させる",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Application Gateway は、リンクされた Key Vault で更新された証明書のバージョンを 4 時間間隔で確認します。Key Vault の構成が正しくないためにアクセスできない場合は、そのエラーをログに記録し、対応する Advisor の推奨事項をプッシュします。Advisor アラートは、常に最新の状態を維持し、このような問題をすぐに修正するように構成して、コントロールプレーンまたはデータプレーン関連の問題を回避する必要があります。詳細については、「キー コンテナーのエラーの調査と解決」を参照してください。この特定のケースのアラートを設定するには、Application Gateway の [推奨事項の種類] を [Azure Key Vault の問題を解決する] として使用します。",
+ "guid": "4123369e-cbd7-472d-9879-e155476c2595",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor を使用して Key Vault の構成の問題を監視する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "SNAT ポートの制限は、Application Gateway でのバックエンド接続にとって重要です。Application Gateway が SNAT ポートの制限に達する方法に影響を与える要因は別々です。たとえば、バックエンドがパブリック IP アドレスの場合、独自の SNAT ポートが必要になります。SNAT ポートの制限を回避するために、Application Gateway あたりのインスタンス数を増やすか、バックエンドをスケールアウトしてより多くの IP アドレスを持つようにするか、バックエンドを同じ仮想ネットワークに移動してバックエンドにプライベート IP アドレスを使用できます。Application Gateway の 1 秒あたりの要求数 (RPS) は、SNAT ポートの制限に達した場合に影響を受けます。たとえば、Application Gateway が SNAT ポートの制限に達した場合、バックエンドへの新しい接続を開くことができず、要求は失敗します。",
+ "guid": "d2713c48-1e6f-4ee8-b91c-8499e7146945",
+ "service": "Azure Application Gateway",
+ "text": "設計では SNAT ポートの制限を考慮してください",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Application Gateway v2 SKU の場合、自動スケールは、追加のインスタンス セットがトラフィックを処理する準備が整うまでに、ある程度の時間 (約 6 分から 7 分) かかります。その間、トラフィックが急増する場合は、一時的な遅延またはトラフィックの損失が予想されます。最小インスタンス数を最適なレベルに設定することをお勧めします。平均インスタンス数を見積もり、Application Gateway の自動スケールの傾向を決定したら、アプリケーション パターンに基づいて最小インスタンス数を定義します。詳細については、「Application Gateway の高トラフィックのサポート」を参照してください。過去 1 か月の現在のコンピューティング ユニットを確認します。このメトリクスは、ゲートウェイの CPU 使用率を表します。最小インスタンス数を定義するには、ピーク使用量を 10 で割ります。たとえば、過去 1 か月の平均 Current Compute Units が 50 の場合は、最小インスタンス数を 5 に設定します。",
+ "guid": "8bba115b-e086-458e-beca-ae9d8144a1f6",
+ "service": "Azure Application Gateway",
+ "text": "最小インスタンス数の定義",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "自動スケーリング インスタンスの最大数として 125 をお勧めします。Application Gateway を持つサブネットに、インスタンスのスケールアップ セットをサポートするのに十分な使用可能な IP アドレスがあることを確認します。最大インスタンス数を 125 に設定しても、消費された容量に対してのみ請求されるため、コストへの影響はありません。",
+ "guid": "1250aa80-2761-4138-9565-57735472779b",
+ "service": "Azure Application Gateway",
+ "text": "最大インスタンス数の定義",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Application Gateway には、仮想ネットワーク内に専用のサブネットが必要です。サブネットには、デプロイされた Application Gateway リソースの複数のインスタンスを含めることができます。また、そのサブネット (v1 または v2 SKU) に他の Application Gateway リソースをデプロイすることもできます。サブネット サイズの定義に関する考慮事項を次に示します。- Application Gateway は、インスタンスごとに 1 つのプライベート IP アドレスを使用し、プライベート フロントエンド IP が構成されている場合は別のプライベート IP アドレスを使用します。- Azure では、各サブネットに 5 つの IP アドレスが内部使用のために予約されています。- Application Gateway (Standard または WAF SKU) は、最大 32 個のインスタンスをサポートできます。32 個のインスタンス IP アドレス + 1 個のプライベート フロントエンド IP + 5 個の Azure 予約済みの場合、最小サブネット サイズは /26 にすることをお勧めします。Standard_v2 SKU または WAF_v2 SKU は最大 125 個のインスタンスをサポートできるため、同じ計算を使用して、サブネット サイズ /24 をお勧めします。- 同じサブネットに追加の Application Gateway リソースをデプロイする場合は、Standard と Standard v2 の両方の最大インスタンス数に必要な追加の IP アドレスを検討してください。",
+ "guid": "dbf3ca82-d3a8-431e-a86e-65df49c72032",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネット サイズを定義する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "v2 SKU には、トラフィックの増加に合わせて Application Gateway をスケールアップできるように、自動スケーリングが用意されています。v1 SKU と比較すると、v2 にはワークロードのパフォーマンスを向上させる機能があります。たとえば、TLS オフロード パフォーマンスの向上、デプロイと更新時間の短縮、ゾーン冗長性などです。自動スケール機能の詳細については、「Application Gateway v2 と WAF v2 のスケーリング」を参照してください。v1 SKU Application gateway を実行している場合は、Application gateway v2 SKU への移行を検討してください。詳細については、「Azure Application Gateway と Web アプリケーション ファイアウォールを v1 から v2 に移行する」を参照してください。",
+ "guid": "dffdc8e9-9139-46c1-93df-638e00cb3657",
+ "service": "Azure Application Gateway",
+ "text": "自動スケーリングとパフォーマンス上の利点のための機能を活用する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Application Gateway Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.ko.json b/checklists-ext/azureapplicationgateway_sg_checklist.ko.json
new file mode 100644
index 000000000..ba08f2d12
--- /dev/null
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.ko.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Application Gateway에 액세스하거나 추가로 변경하기 전에 업데이트를 위한 충분한 시간을 계획합니다. 예를 들어 백 엔드 풀에서 서버를 제거하려면 기존 연결을 드레이닝해야 하기 때문에 시간이 걸릴 수 있습니다.",
+ "guid": "9a17eb2b-c5e3-428b-9e45-73dead45c4f9",
+ "service": "Azure Application Gateway",
+ "text": "규칙 업데이트 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Application Gateway를 사용하여 여러 백 엔드 인스턴스를 통해 들어오는 트래픽의 부하를 분산하는 경우 상태 프로브를 사용하는 것이 좋습니다. 이렇게 하면 트래픽을 처리할 수 없는 백엔드로 트래픽이 라우팅되지 않습니다.",
+ "guid": "5bfa95df-20d8-4452-a6c1-79c88b07d4cc",
+ "service": "Azure Application Gateway",
+ "text": "상태 프로브를 사용하여 백 엔드 사용 불가 감지Use health probes to detect backend unavailability",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "상태 프로브는 설정된 간격으로 구성된 엔드포인트로 요청을 보냅니다. 또한 백 엔드가 비정상으로 표시되기 전에 허용되는 실패한 요청의 임계값이 있습니다. 이 숫자는 절충안을 제시합니다.- 더 높은 간격을 설정하면 서비스에 더 많은 부하가 걸립니다. 각 Application Gateway 인스턴스는 자체 상태 프로브를 보내므로 30초마다 100개의 인스턴스는 30초당 100개의 요청을 의미합니다.- 간격을 낮게 설정하면 중단이 감지되기 전에 더 많은 시간이 남습니다.- 비정상 임계값을 낮게 설정하면 짧은 일시적인 오류로 인해 백 엔드가 중단될 수 있습니다. - 임계값을 높게 설정하면 백엔드를 회전에서 제외하는 데 시간이 더 오래 걸릴 수 있습니다.",
+ "guid": "ec5bc6c4-6176-44a2-860e-8654f588effd",
+ "service": "Azure Application Gateway",
+ "text": "간격 및 임계값 설정이 상태 프로브에 미치는 영향 검토Review the impact of the interval and threshold settings on health probes",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "각 백엔드에 실패를 격리하기 위해 자체 종속성이 있다고 가정합니다. 예를 들어 Application Gateway 뒤에서 호스트되는 애플리케이션에는 각각 다른 데이터베이스(복제본)에 연결된 여러 백 엔드가 있을 수 있습니다. 이러한 종속성이 실패하면 애플리케이션이 작동할 수 있지만 유효한 결과를 반환하지 않을 수 있습니다. 이러한 이유로 상태 엔드포인트는 이상적으로 모든 종속성의 유효성을 검사해야 합니다. 상태 엔드포인트에 대한 각 호출에 직접 종속성 호출이 있는 경우 해당 데이터베이스는 30초마다 1개가 아닌 100개의 쿼리를 수신합니다. 이를 방지하기 위해 상태 엔드포인트는 짧은 기간 동안 종속성의 상태를 캐시해야 합니다.",
+ "guid": "78bc5274-ca88-4e2a-8d3a-7b6a5ed1ccd6",
+ "service": "Azure Application Gateway",
+ "text": "상태 엔드포인트를 통해 다운스트림 종속성 확인Verify downstream dependencies through health endpoints",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "특정 시나리오에서는 Application Gateway에서 특별히 규칙을 구현해야 할 수 있습니다. 예를 들어 ModSec CRS 2.2.9, CRS 3.0 또는 CRS 3.1 규칙이 필요한 경우 이러한 규칙은 Application Gateway에서만 구현할 수 있습니다. 반대로, 속도 제한 및 지역 필터링은 AppGateway가 아닌 Azure Front Door에서만 사용할 수 있습니다.",
+ "guid": "da7234f3-70a7-47d2-b685-3e47843003e9",
+ "service": "Azure Application Gateway",
+ "text": "Azure Front Door 및 Application Gateway를 사용하여 'HTTP/S' 애플리케이션을 보호하는 경우 Front Door에서 WAF 정책을 사용하고 Azure Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "추가 보안을 위해 TLS 정책을 설정합니다. 항상 사용 가능한 최신 TLS 정책 버전을 사용하고 있는지 확인합니다. 이렇게 하면 TLS 1.2 및 더 강력한 암호가 적용됩니다.",
+ "guid": "9e5ba3b9-3512-425b-95e3-d5009e7630f3",
+ "service": "Azure Application Gateway",
+ "text": "보안 강화를 위한 TLS 정책 설정",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 종료에 Application Gateway를 사용하면 다음과 같은 이점이 있습니다.- 다른 백 엔드로 이동하는 요청이 각 백 엔드에 다시 인증해야 하기 때문에 성능이 향상됩니다.- TLS 처리를 수행할 필요가 없으므로 백 엔드 서버의 활용도가 향상됩니다.- 요청 콘텐츠에 액세스하여 지능형 라우팅.- 인증서를 Application Gateway에만 설치하면 되므로 인증서 관리가 더 쉽습니다.",
+ "guid": "5cbd84eb-56a7-4d18-9f50-de47d3b29a8f",
+ "service": "Azure Application Gateway",
+ "text": "TLS 종료에 AppGateway 사용",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Application Gateway는 Key Vault와 통합할 수 있습니다. 이를 통해 보안이 강화되고, 역할과 책임이 더 쉽게 분리되고, 관리형 인증서가 지원되고, 인증서 갱신 및 순환 프로세스가 더 쉬워집니다.",
+ "guid": "c1e7b351-a459-49d1-b473-a1f663310205",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault를 사용하여 TLS 인증서 저장",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "백엔드 서버의 TLS 인증서는 잘 알려진 CA에서 발급해야 합니다. 인증서가 신뢰할 수 있는 CA에서 발급되지 않은 경우 Application Gateway는 신뢰할 수 있는 CA 인증서를 찾을 때까지 인증서가 신뢰할 수 있는 CA에서 발급되었는지 확인합니다. 그런 다음에만 보안 연결이 설정됩니다. 그렇지 않으면 Application Gateway는 백 엔드를 비정상으로 표시합니다.",
+ "guid": "1f53df88-090e-4f67-8a41-866ea4938cb1",
+ "service": "Azure Application Gateway",
+ "text": "백엔드 트래픽을 다시 암호화할 때 백엔드 서버 인증서에 루트 및 중간 CA(인증 기관)가 모두 포함되어 있는지 확인합니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "백 엔드 풀에 확인 가능한 FQDN이 포함된 경우 DNS 확인은 프라이빗 DNS 영역 또는 사용자 지정 DNS 서버(VNet에 구성된 경우)를 기반으로 하거나 기본 Azure 제공 DNS를 사용합니다.",
+ "guid": "0e1af02a-017b-4a41-a7e5-98b47d7b1fd7",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 풀 리소스에 적절한 DNS 서버를 사용합니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "NSG는 Application Gateway 서브넷에서 지원되지만 몇 가지 제한 사항이 있습니다. 예를 들어, 특정 포트 범위와의 일부 통신은 금지됩니다. 이러한 제한 사항의 의미를 이해해야 합니다. 자세한 내용은 네트워크 보안 그룹을 참조하세요.",
+ "guid": "75da1adb-f8a2-4ad5-879a-a8552d1c836a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway에 대한 모든 NSG 제한 사항 준수",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Application Gateway 서브넷에서 UDR(사용자 정의 경로)을 사용하면 몇 가지 문제가 발생할 수 있습니다. 백 엔드의 상태는 알 수 없음일 수 있습니다. Application Gateway 로그 및 메트릭이 생성되지 않을 수 있습니다. 백 엔드 상태, 로그 및 메트릭을 볼 수 있도록 Application Gateway 서브넷에서 UDR을 사용하지 않는 것이 좋습니다. 조직에서 Application Gateway 서브넷에서 UDR을 사용해야 하는 경우 지원되는 시나리오를 검토해야 합니다. 자세한 내용은 지원되는 사용자 정의 경로를 참조하세요.",
+ "guid": "7776e1c9-a0a7-4fd5-8fe9-1b2b9c56cf31",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷에서 UDR을 사용하지 마세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "WAF를 사용하도록 설정하면 완전히 도착할 때까지 Application Gateway에서 모든 요청을 버퍼링하고, 요청이 핵심 규칙 집합의 규칙 위반과 일치하는지 확인한 다음, 패킷을 백 엔드 인스턴스로 전달해야 합니다. 대용량 파일(30MB+ 크기)이 있는 경우 상당한 대기 시간이 발생할 수 있습니다. Application Gateway 용량 요구 사항은 WAF와 다르기 때문에 적절한 테스트 및 유효성 검사 없이 Application Gateway에서 WAF를 사용하도록 설정하지 않는 것이 좋습니다.",
+ "guid": "7c173790-6fac-43bc-b1b4-e787fdbb904f",
+ "service": "Azure Application Gateway",
+ "text": "WAF를 사용하도록 설정할 때 Application Gateway 용량 변경에 유의하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Application Gateway 가격 책정에 대한 자세한 내용은 Azure Application Gateway 및 Web Application Firewall의 가격 책정 이해를 참조하세요. 가격 계산기를 활용할 수도 있습니다. 용량 수요를 충족하고 리소스 낭비 없이 예상 성능을 제공할 수 있도록 옵션의 크기가 적절하게 조정되었는지 확인합니다.",
+ "guid": "13adc786-048a-4720-9aad-610419507199",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 가격 책정을 숙지합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "빈 백 엔드 풀이 있는 Application Gateway 인스턴스를 식별하고 삭제하여 불필요한 비용을 방지합니다.",
+ "guid": "8d3979f9-bd25-4455-9e2f-2cc7e0deaf5e",
+ "service": "Azure Application Gateway",
+ "text": "활용도가 낮은 리소스 검토",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Application Gateway가 중지된 상태일 때는 요금이 청구되지 않습니다. Application Gateway 인스턴스를 지속적으로 실행하면 불필요한 비용이 발생할 수 있습니다. 사용 패턴을 평가하고 필요하지 않을 때 인스턴스를 중지합니다. 예를 들어 개발/테스트 환경에서 업무 시간 이후의 사용량은 낮을 것으로 예상됩니다. 인스턴스를 중지하고 시작하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "fc01794b-1808-4152-a82c-95b43b2a4c45",
+ "service": "Azure Application Gateway",
+ "text": "사용하지 않을 때 Application Gateway 인스턴스 중지Stop Application Gateway instances when not in use",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스케일 아웃 정책은 들어오는 트래픽과 급증을 처리할 수 있는 충분한 인스턴스가 있는지 확인합니다. 또한 수요가 감소할 때 인스턴스 수를 줄이는 축소 정책이 있어야 합니다. 인스턴스 크기 선택을 고려합니다. 크기는 비용에 큰 영향을 미칠 수 있습니다. 몇 가지 고려 사항은 Application Gateway 인스턴스 수 예측에 설명되어 있습니다. 자세한 내용은 Azure Application Gateway v2란?을 참조하세요.",
+ "guid": "4e5743d9-44ec-4a09-9c80-d77056109fc6",
+ "service": "Azure Application Gateway",
+ "text": "규모 감축 및 규모 확장 정책 수립",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure에서 추적한 메트릭을 기반으로 Application Gateway의 계량된 인스턴스를 기준으로 요금이 청구됩니다. 다양한 메트릭과 용량 단위를 평가하고 비용 동인을 결정합니다. 자세한 내용은 Microsoft Cost Management 및 청구를 참조하세요. 다음 메트릭은 Application Gateway의 핵심입니다. 이 정보는 프로비저닝된 인스턴스 수가 들어오는 트래픽의 양과 일치하는지 확인하는 데 사용할 수 있습니다.- 예상 청구 용량 단위 - 고정 청구 가능 용량 단위 - 현재 용량 단위자세한 내용은 Application Gateway 메트릭을 참조하세요. 대역폭 비용을 고려해야 합니다.",
+ "guid": "30129a61-cd84-4085-9533-5d42f89372d9",
+ "service": "Azure Application Gateway",
+ "text": "다양한 매개 변수에 대한 소비 메트릭 검토",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "이러한 메트릭을 프로비전된 Application Gateway 용량의 사용률 지표로 사용합니다. 용량에 대한 경고를 설정하는 것이 좋습니다. 자세한 내용은 Application Gateway 높은 트래픽 지원을 참조하세요.",
+ "guid": "57cc0c49-939f-46d9-864e-d7ce31733771",
+ "service": "Azure Application Gateway",
+ "text": "용량 메트릭 모니터링",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Application Gateway 또는 백 엔드에서 문제를 나타낼 수 있는 다른 메트릭이 있습니다. - 비정상 호스트 수- 응답 상태(차원 4xx 및 5xx)- 백 엔드 응답 상태(차원 4xx 및 5xx)- 백 엔드 마지막 바이트 응답 시간- Application Gateway 총 시간자세한 내용은 Application Gateway에 대한 메트릭을 참조하세요.",
+ "guid": "071e5241-c008-41a2-9e62-c056081158d2",
+ "service": "Azure Application Gateway",
+ "text": "메트릭 사용 문제 해결",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그를 사용하면 방화벽 로그, 성능 로그 및 액세스 로그를 볼 수 있습니다. 이러한 로그를 사용하여 Application Gateway 인스턴스와 관련된 문제를 관리하고 해결합니다. 자세한 내용은 Application Gateway에 대한 백 엔드 상태 및 진단 로그를 참조하세요.",
+ "guid": "7e160588-dc1c-48d5-9a56-4ddc6aeb8fc2",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 및 WAF(Web Application Firewall)에서 진단 사용Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Monitor Network Insights는 Application Gateway를 포함한 네트워크 리소스의 상태 및 메트릭에 대한 포괄적인 보기를 제공합니다. Application Gateway에 대한 자세한 내용 및 지원되는 기능은 Azure Monitor 네트워크 인사이트를 참조하세요.",
+ "guid": "260dc49f-05b9-4c43-9cda-afc5b1923c89",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights 사용",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "백 엔드 애플리케이션의 리스너 및 트래픽 특성과 일치하도록 IdleTimeout 설정을 구성했는지 확인합니다. 기본값은 4분으로 설정되며 최대 30분으로 구성할 수 있습니다. 자세한 내용은 Load Balancer TCP 재설정 및 유휴 시간 제한을 참조하세요.워크로드 고려 사항은 안정성을 위한 애플리케이션 상태 모니터링을 참조하세요.",
+ "guid": "8c5e5e8f-44d7-4494-8819-c1d765838fec",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 애플리케이션과 시간 제한 설정 일치Match timeout settings with the backend application",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Application Gateway는 4시간 간격으로 연결된 Key Vault에서 갱신된 인증서 버전을 확인합니다. 잘못된 Key Vault 구성으로 인해 액세스할 수 없는 경우 해당 오류를 기록하고 해당 Advisor 권장 사항을 푸시합니다. 제어 또는 데이터 플레인 관련 문제를 방지하기 위해 최신 상태를 유지하고 이러한 문제를 즉시 수정하도록 Advisor 경고를 구성해야 합니다. 자세한 내용은 키 자격 증명 모음 오류 조사 및 해결을 참조하세요. 이 특정 사례에 대한 경고를 설정하려면 권장 사항 유형을 Application Gateway에 대한 Azure Key Vault 문제 해결로 사용합니다.",
+ "guid": "4123369e-cbd7-472d-9879-e155476c2595",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor를 사용하여 Key Vault 구성 문제 모니터링",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "SNAT 포트 제한은 Application Gateway의 백 엔드 연결에 중요합니다. Application Gateway가 SNAT 포트 제한에 도달하는 방식에 영향을 주는 별도의 요인이 있습니다. 예를 들어 백 엔드가 공용 IP 주소인 경우 자체 SNAT 포트가 필요합니다. SNAT 포트 제한을 방지하기 위해 Application Gateway당 인스턴스 수를 늘리거나, 백 엔드를 스케일 아웃하여 더 많은 IP 주소를 갖도록 하거나, 백 엔드를 동일한 가상 네트워크로 이동하고 백 엔드에 개인 IP 주소를 사용할 수 있습니다. SNAT 포트 제한에 도달하면 Application Gateway의 RPS(초당 요청 수)가 영향을 받습니다. 예를 들어 Application Gateway가 SNAT 포트 제한에 도달하면 백 엔드에 대한 새 연결을 열 수 없으며 요청이 실패합니다.",
+ "guid": "d2713c48-1e6f-4ee8-b91c-8499e7146945",
+ "service": "Azure Application Gateway",
+ "text": "디자인에서 SNAT 포트 제한 사항 고려",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Application Gateway v2 SKU의 경우 추가 인스턴스 집합이 트래픽을 처리할 준비가 되기까지 자동 크기 조정에 약간의 시간(약 6-7분)이 걸립니다. 이 시간 동안 트래픽이 잠시 급증하는 경우 일시적인 대기 시간 또는 트래픽 손실이 예상됩니다. 최소 인스턴스 수를 최적의 수준으로 설정하는 것이 좋습니다. 평균 인스턴스 수를 예측하고 Application Gateway 자동 크기 조정 추세를 확인한 후에는 애플리케이션 패턴에 따라 최소 인스턴스 수를 정의합니다. 자세한 내용은 Application Gateway 높은 트래픽 지원을 참조하세요. 지난 1개월 동안의 현재 컴퓨팅 단위를 확인합니다. 이 메트릭은 게이트웨이의 CPU 사용률을 나타냅니다. 최소 인스턴스 수를 정의하려면 최대 사용량을 10으로 나눕니다. 예를 들어 지난 달의 평균 Current Compute 단위가 50인 경우 최소 인스턴스 수를 5로 설정합니다.",
+ "guid": "8bba115b-e086-458e-beca-ae9d8144a1f6",
+ "service": "Azure Application Gateway",
+ "text": "최소 인스턴스 수를 정의합니다",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "최대 자동 크기 조정 인스턴스 수로 125를 사용하는 것이 좋습니다. Application Gateway가 있는 서브넷에 스케일 업 인스턴스 집합을 지원할 수 있는 충분한 IP 주소가 있는지 확인합니다. 최대 인스턴스 수를 125로 설정하면 사용된 용량에 대해서만 요금이 청구되므로 비용에는 영향을 주지 않습니다.",
+ "guid": "1250aa80-2761-4138-9565-57735472779b",
+ "service": "Azure Application Gateway",
+ "text": "최대 인스턴스 수를 정의합니다",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Application Gateway에는 가상 네트워크 내의 전용 서브넷이 필요합니다. 서브넷에는 배포된 Application Gateway 리소스의 여러 인스턴스가 있을 수 있습니다. 해당 서브넷, v1 또는 v2 SKU에 다른 Application Gateway 리소스를 배포할 수도 있습니다. 서브넷 크기를 정의하기 위한 몇 가지 고려 사항은 다음과 같습니다.- Application Gateway는 인스턴스당 하나의 개인 IP 주소를 사용하고, 개인 프런트 엔드 IP가 구성된 경우 다른 개인 IP 주소를 사용합니다.- Azure는 내부 사용을 위해 각 서브넷에서 5개의 IP 주소를 예약합니다.- Application Gateway(표준 또는 WAF SKU)는 최대 32개의 인스턴스를 지원할 수 있습니다. 인스턴스 IP 주소 32개 + 프라이빗 프런트 엔드 IP 1개 + Azure 예약 5개를 사용하는 경우 최소 서브넷 크기는 /26이 권장됩니다. Standard_v2 또는 WAF_v2 SKU는 최대 125개의 인스턴스를 지원할 수 있으므로 동일한 계산을 사용하여 서브넷 크기 /24를 사용하는 것이 좋습니다.- 동일한 서브넷에 추가 Application Gateway 리소스를 배포하려는 경우 표준 및 표준 v2 모두에 대한 최대 인스턴스 수에 필요한 추가 IP 주소를 고려합니다.",
+ "guid": "dbf3ca82-d3a8-431e-a86e-65df49c72032",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷 크기 정의",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "v2 SKU는 트래픽이 증가함에 따라 Application Gateway를 확장할 수 있도록 자동 크기 조정을 제공합니다. v1 SKU와 비교할 때 v2에는 워크로드의 성능을 향상시키는 기능이 있습니다. 예를 들어 TLS 오프로드 성능 향상, 배포 및 업데이트 시간 단축, 영역 중복성 등이 있습니다. 자동 크기 조정 기능에 대한 자세한 내용은 Application Gateway v2 및 WAF v2 크기 조정을 참조하세요. v1 SKU Application gateway를 실행하는 경우 Application gateway v2 SKU로 마이그레이션하는 것이 좋습니다. 자세한 내용은 Azure Application Gateway 및 Web Application Firewall v1에서 v2로 마이그레이션을 참조하세요.",
+ "guid": "dffdc8e9-9139-46c1-93df-638e00cb3657",
+ "service": "Azure Application Gateway",
+ "text": "자동 크기 조정 및 성능 이점을 위한 기능 활용",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Application Gateway Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.pt.json b/checklists-ext/azureapplicationgateway_sg_checklist.pt.json
new file mode 100644
index 000000000..feb9f20d6
--- /dev/null
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.pt.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Planeje tempo suficiente para atualizações antes de acessar o Gateway de Aplicativo ou fazer mais alterações. Por exemplo, a remoção de servidores do pool de back-end pode levar algum tempo porque eles precisam drenar as conexões existentes.",
+ "guid": "9a17eb2b-c5e3-428b-9e45-73dead45c4f9",
+ "service": "Azure Application Gateway",
+ "text": "Planejar atualizações de regras",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Se o Gateway de Aplicativo for usado para balancear a carga do tráfego de entrada em várias instâncias de back-end, recomendamos o uso de investigações de integridade. Isso garantirá que o tráfego não seja roteado para back-ends que não conseguem lidar com o tráfego.",
+ "guid": "5bfa95df-20d8-4452-a6c1-79c88b07d4cc",
+ "service": "Azure Application Gateway",
+ "text": "Usar investigações de integridade para detectar indisponibilidade de back-end",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A investigação de integridade envia solicitações para o ponto de extremidade configurado em um intervalo definido. Além disso, há um limite de solicitações com falha que serão toleradas antes que o back-end seja marcado como não íntegro. Esses números apresentam uma compensação.- Definir um intervalo maior coloca uma carga maior em seu serviço. Cada instância do Gateway de Aplicativo envia suas próprias investigações de integridade, portanto, 100 instâncias a cada 30 segundos significam 100 solicitações a cada 30 segundos.- Definir um intervalo menor deixa mais tempo antes que uma interrupção seja detectada.- Definir um limite baixo e não íntegro pode significar que falhas curtas e transitórias podem derrubar um back-end. - Definir um limite alto, pode levar mais tempo para tirar um back-end da rotação.",
+ "guid": "ec5bc6c4-6176-44a2-860e-8654f588effd",
+ "service": "Azure Application Gateway",
+ "text": "Examinar o impacto das configurações de intervalo e limite nas investigações de integridade",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Suponha que cada back-end tenha suas próprias dependências para garantir que as falhas sejam isoladas. Por exemplo, um aplicativo hospedado por trás do Gateway de Aplicativo pode ter vários back-ends, cada um conectado a um banco de dados diferente (réplica). Quando essa dependência falha, o aplicativo pode estar funcionando, mas não retornará resultados válidos. Por esse motivo, o ponto de extremidade de integridade deve validar idealmente todas as dependências. Lembre-se de que, se cada chamada para o ponto de extremidade de integridade tiver uma chamada de dependência direta, esse banco de dados receberá 100 consultas a cada 30 segundos em vez de 1. Para evitar isso, o ponto de extremidade de integridade deve armazenar em cache o estado das dependências por um curto período de tempo.",
+ "guid": "78bc5274-ca88-4e2a-8d3a-7b6a5ed1ccd6",
+ "service": "Azure Application Gateway",
+ "text": "Verificar dependências downstream por meio de pontos de extremidade de integridade",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Determinados cenários podem forçá-lo a implementar regras especificamente no Gateway de Aplicativo. Por exemplo, se as regras ModSec CRS 2.2.9, CRS 3.0 ou CRS 3.1 forem necessárias, essas regras só poderão ser implementadas no Gateway de Aplicativo. Por outro lado, a limitação de taxa e a filtragem geográfica estão disponíveis apenas no Azure Front Door, não no AppGateway.",
+ "guid": "da7234f3-70a7-47d2-b685-3e47843003e9",
+ "service": "Azure Application Gateway",
+ "text": "Ao usar o Azure Front Door e o Gateway de Aplicativo para proteger aplicativos 'HTTP/S', use políticas de WAF no Front Door e bloqueie o Gateway de Aplicativo para receber tráfego somente do Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Configure uma política TLS para segurança extra. Verifique se você está sempre usando a versão mais recente da política TLS disponível. Isso impõe o TLS 1.2 e cifras mais fortes.",
+ "guid": "9e5ba3b9-3512-425b-95e3-d5009e7630f3",
+ "service": "Azure Application Gateway",
+ "text": "Configurar uma política TLS para segurança aprimorada",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Há vantagens de usar o Gateway de Aplicativo para terminação TLS:- O desempenho melhora porque as solicitações que vão para back-ends diferentes precisam ser autenticadas novamente em cada back-end.- Melhor utilização dos servidores de back-end porque eles não precisam executar o processamento TLS- Roteamento inteligente acessando o conteúdo da solicitação.- Gerenciamento de certificados mais fácil porque o certificado só precisa ser instalado no Gateway de Aplicativo.",
+ "guid": "5cbd84eb-56a7-4d18-9f50-de47d3b29a8f",
+ "service": "Azure Application Gateway",
+ "text": "Usar o AppGateway para terminação TLS",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Gateway de Aplicativo pode ser integrado ao Key Vault. Isso fornece segurança mais forte, separação mais fácil de funções e responsabilidades, suporte para certificados gerenciados e um processo de renovação e rotação de certificados mais fácil.",
+ "guid": "c1e7b351-a459-49d1-b473-a1f663310205",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Key Vault para armazenar certificados TLS",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Um certificado TLS do servidor back-end deve ser emitido por uma autoridade de certificação conhecida. Se o certificado não tiver sido emitido por uma autoridade de certificação confiável, o Gateway de Aplicativo verificará se o certificado foi emitido por uma autoridade de certificação confiável e assim por diante, até que um certificado de autoridade de certificação confiável seja encontrado. Só então uma conexão segura é estabelecida. Caso contrário, o Gateway de Aplicativo marcará o back-end como não íntegro.",
+ "guid": "1f53df88-090e-4f67-8a41-866ea4938cb1",
+ "service": "Azure Application Gateway",
+ "text": "Ao criptografar novamente o tráfego de back-end, verifique se o certificado do servidor de back-end contém as CAs (Autoridades de Certificação) raiz e intermediária",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Quando o pool de back-end contém um FQDN resolvível, a resolução DNS é baseada em uma zona DNS privada ou servidor DNS personalizado (se configurado na VNet) ou usa o DNS padrão fornecido pelo Azure.",
+ "guid": "0e1af02a-017b-4a41-a7e5-98b47d7b1fd7",
+ "service": "Azure Application Gateway",
+ "text": "Usar um servidor DNS apropriado para recursos do pool de back-end",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os NSGs têm suporte na sub-rede do Gateway de Aplicativo, mas há algumas restrições. Por exemplo, alguma comunicação com determinados intervalos de portas é proibida. Certifique-se de entender as implicações dessas restrições. Para obter detalhes, consulte Grupos de segurança de rede.",
+ "guid": "75da1adb-f8a2-4ad5-879a-a8552d1c836a",
+ "service": "Azure Application Gateway",
+ "text": "Cumprir todas as restrições de NSG para Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso de UDR (Rotas Definidas pelo Usuário) na sub-rede do Gateway de Aplicativo pode causar alguns problemas. O estado de integridade no back-end pode ser desconhecido. Os logs e métricas do Gateway de Aplicativo podem não ser gerados. Recomendamos que você não use UDRs na sub-rede do Gateway de Aplicativo para que possa exibir a integridade, os logs e as métricas de back-end. Se suas organizações precisarem usar a UDR na sub-rede do Gateway de Aplicativo, examine os cenários com suporte. Para obter mais informações, consulte Rotas definidas pelo usuário com suporte.",
+ "guid": "7776e1c9-a0a7-4fd5-8fe9-1b2b9c56cf31",
+ "service": "Azure Application Gateway",
+ "text": "Abster-se de usar UDRs na sub-rede do gateway de aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Quando o WAF está habilitado, cada solicitação deve ser armazenada em buffer pelo Gateway de Aplicativo até que chegue totalmente, verifica se a solicitação corresponde a qualquer violação de regra em seu conjunto de regras principal e, em seguida, encaminha o pacote para as instâncias de back-end. Quando há uploads de arquivos grandes (30 MB+ de tamanho), isso pode resultar em uma latência significativa. Como os requisitos de capacidade do Gateway de Aplicativo são diferentes com o WAF, não recomendamos habilitar o WAF no Gateway de Aplicativo sem teste e validação adequados.",
+ "guid": "7c173790-6fac-43bc-b1b4-e787fdbb904f",
+ "service": "Azure Application Gateway",
+ "text": "Esteja ciente das alterações de capacidade do Gateway de Aplicativo ao habilitar o WAF",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Para obter informações sobre os preços do Gateway de Aplicativo, consulte Noções básicas sobre preços do Gateway de Aplicativo do Azure e do Firewall de Aplicativo Web. Você também pode aproveitar a calculadora de preços. Certifique-se de que as opções sejam dimensionadas adequadamente para atender à demanda de capacidade e fornecer o desempenho esperado sem desperdiçar recursos.",
+ "guid": "13adc786-048a-4720-9aad-610419507199",
+ "service": "Azure Application Gateway",
+ "text": "Familiarize-se com os preços do Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Identifique e exclua instâncias do Gateway de Aplicativo com pools de back-end vazios para evitar custos desnecessários.",
+ "guid": "8d3979f9-bd25-4455-9e2f-2cc7e0deaf5e",
+ "service": "Azure Application Gateway",
+ "text": "Revise recursos subutilizados",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você não é cobrado quando o Gateway de Aplicativo está no estado parado. A execução contínua de instâncias do Gateway de Aplicativo pode incorrer em custos irrelevantes. Avalie os padrões de uso e interrompa instâncias quando você não precisar deles. Por exemplo, espera-se que o uso após o horário comercial em ambientes de desenvolvimento/teste seja baixo. Consulte estes artigos para obter informações sobre como interromper e iniciar instâncias.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "fc01794b-1808-4152-a82c-95b43b2a4c45",
+ "service": "Azure Application Gateway",
+ "text": "Interromper instâncias do Gateway de Aplicativo quando não estiverem em uso",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Uma política de expansão garante que haverá instâncias suficientes para lidar com o tráfego de entrada e picos. Além disso, tenha uma política de redução de escala que garanta que o número de instâncias seja reduzido quando a demanda cair. Considere a escolha do tamanho da instância. O tamanho pode afetar significativamente o custo. Algumas considerações são descritas em Estimar a contagem de instâncias do Gateway de Aplicativo. Para obter mais informações, consulte O que é o Gateway de Aplicativo do Azure v2?",
+ "guid": "4e5743d9-44ec-4a09-9c80-d77056109fc6",
+ "service": "Azure Application Gateway",
+ "text": "Ter uma política de redução e expansão",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você é cobrado com base em instâncias limitadas do Gateway de Aplicativo com base nas métricas rastreadas pelo Azure. Avalie as várias métricas e unidades de capacidade e determine os direcionadores de custo. Para obter mais informações, consulte Gerenciamento de Custos e Cobrança da Microsoft. As métricas a seguir são fundamentais para o Gateway de Aplicativo. Essas informações podem ser usadas para validar se a contagem de instâncias provisionadas corresponde à quantidade de tráfego de entrada.- Unidades de Capacidade Faturada Estimada- Unidades de Capacidade Faturáveis Fixas- Unidades de Capacidade AtuaisPara obter mais informações, consulte Métricas do Gateway de Aplicativo. Certifique-se de contabilizar os custos de largura de banda.",
+ "guid": "30129a61-cd84-4085-9533-5d42f89372d9",
+ "service": "Azure Application Gateway",
+ "text": "Analise as métricas de consumo em diferentes parâmetros",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Use essas métricas como indicadores de utilização da capacidade provisionada do Gateway de Aplicativo. É altamente recomendável configurar alertas sobre a capacidade. Para obter detalhes, consulte Suporte de alto tráfego do Gateway de Aplicativo.",
+ "guid": "57cc0c49-939f-46d9-864e-d7ce31733771",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar métricas de capacidade",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Há outras métricas que podem indicar problemas no Gateway de Aplicativo ou no back-end. Recomendamos avaliar os seguintes alertas:- Contagem de Hosts Não Íntegros- Status da Resposta (dimensão 4xx e 5xx)- Status da Resposta de Back-end (dimensão 4xx e 5xx)- Tempo de Resposta do Último Byte de Back-end- Tempo Total do Gateway de AplicativoPara obter mais informações, consulte Métricas do Gateway de Aplicativo.",
+ "guid": "071e5241-c008-41a2-9e62-c056081158d2",
+ "service": "Azure Application Gateway",
+ "text": "Solucionar problemas usando métricas",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de diagnóstico permitem que você exiba logs de firewall, logs de desempenho e logs de acesso. Use esses logs para gerenciar e solucionar problemas com instâncias do Gateway de Aplicativo. Para obter mais informações, consulte Logs de diagnóstico e integridade de back-end para o Gateway de Aplicativo.",
+ "guid": "7e160588-dc1c-48d5-9a56-4ddc6aeb8fc2",
+ "service": "Azure Application Gateway",
+ "text": "Habilitar o diagnóstico no Gateway de Aplicativo e no WAF (Firewall de Aplicativo Web)",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Monitor Network Insights fornece uma visão abrangente da integridade e das métricas para recursos de rede, incluindo o Gateway de Aplicativo. Para obter detalhes adicionais e recursos com suporte para o Gateway de Aplicativo, consulte Insights de rede do Azure Monitor.",
+ "guid": "260dc49f-05b9-4c43-9cda-afc5b1923c89",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Monitor Network Insights",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Verifique se você configurou as configurações de IdleTimeout para corresponder às características do ouvinte e do tráfego do aplicativo de back-end. O valor padrão é definido como quatro minutos e pode ser configurado para um máximo de 30. Para obter mais informações, consulte Redefinição de TCP do Balanceador de Carga e Tempo Limite Ocioso.Para considerações sobre carga de trabalho, consulte Monitorando a integridade do aplicativo para confiabilidade.",
+ "guid": "8c5e5e8f-44d7-4494-8819-c1d765838fec",
+ "service": "Azure Application Gateway",
+ "text": "Corresponder as configurações de tempo limite com o aplicativo de back-end",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Gateway de Aplicativo verifica a versão renovada do certificado no Key Vault vinculado a cada intervalo de 4 horas. Se ele estiver inacessível devido a qualquer configuração incorreta do Key Vault, ele registrará esse erro e enviará uma recomendação do Assistente correspondente. Você deve configurar os alertas do Advisor para se manter atualizado e corrigir esses problemas imediatamente para evitar problemas relacionados ao plano de controle ou de dados. Para obter mais informações, consulte Investigando e resolvendo erros do cofre de chaves. Para definir um alerta para esse caso específico, use o Tipo de Recomendação como Resolver problema do Azure Key Vault para o Gateway de Aplicativo.",
+ "guid": "4123369e-cbd7-472d-9879-e155476c2595",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar problemas de configuração do Key Vault usando o Assistente do Azure",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As limitações de porta SNAT são importantes para conexões de back-end no Gateway de Aplicativo. Há fatores separados que afetam como o Gateway de Aplicativo atinge o limite de porta SNAT. Por exemplo, se o back-end for um endereço IP público, ele exigirá sua própria porta SNAT. Para evitar limitações de porta SNAT, você pode aumentar o número de instâncias por Gateway de Aplicativo, escalar horizontalmente os back-ends para ter mais endereços IP ou mover seus back-ends para a mesma rede virtual e usar endereços IP privados para os back-ends. As solicitações por segundo (RPS) no Gateway de Aplicativo serão afetadas se o limite de porta SNAT for atingido. Por exemplo, se um Gateway de Aplicativo atingir o limite de porta SNAT, ele não poderá abrir uma nova conexão com o back-end e a solicitação falhará.",
+ "guid": "d2713c48-1e6f-4ee8-b91c-8499e7146945",
+ "service": "Azure Application Gateway",
+ "text": "Considere as limitações da porta SNAT em seu design",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Para o SKU do Gateway de Aplicativo v2, o dimensionamento automático leva algum tempo (aproximadamente seis a sete minutos) antes que o conjunto adicional de instâncias esteja pronto para atender ao tráfego. Durante esse tempo, se houver picos curtos no tráfego, espere latência transitória ou perda de tráfego. Recomendamos que você defina sua contagem mínima de instâncias para um nível ideal. Depois de estimar a contagem média de instâncias e determinar as tendências de dimensionamento automático do Gateway de Aplicativo, defina a contagem mínima de instâncias com base nos padrões de aplicativo. Para obter informações, consulte Suporte de alto tráfego do Gateway de Aplicativo. Verifique as Unidades de Computação Atuais do último mês. Essa métrica representa a utilização da CPU do gateway. Para definir a contagem mínima de instâncias, divida o pico de uso por 10. Por exemplo, se a média de Unidades de Computação Atuais no mês passado for 50, defina a contagem mínima de instâncias como cinco.",
+ "guid": "8bba115b-e086-458e-beca-ae9d8144a1f6",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem mínima de instâncias",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Recomendamos 125 como a contagem máxima de instâncias de dimensionamento automático. Verifique se a sub-rede que tem o Gateway de Aplicativo tem endereços IP disponíveis suficientes para dar suporte ao conjunto de instâncias de expansão. Definir a contagem máxima de instâncias como 125 não tem implicações de custo porque você é cobrado apenas pela capacidade consumida.",
+ "guid": "1250aa80-2761-4138-9565-57735472779b",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem máxima de instâncias",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Gateway de Aplicativo precisa de uma sub-rede dedicada em uma rede virtual. A sub-rede pode ter várias instâncias do recurso de Gateway de Aplicativo implantado. Você também pode implantar outros recursos do Gateway de Aplicativo nessa sub-rede, SKU v1 ou v2. Aqui estão algumas considerações para definir o tamanho da sub-rede:- O Gateway de Aplicativo usa um endereço IP privado por instância e outro endereço IP privado se um IP de front-end privado estiver configurado.- O Azure reserva cinco endereços IP em cada sub-rede para uso interno.- O Gateway de Aplicativo (SKU Standard ou WAF) pode dar suporte a até 32 instâncias. Usando 32 endereços IP de instância + 1 IP de front-end privado + 5 Azure reservados, é recomendável um tamanho mínimo de sub-rede de /26. Como o SKU Standard_v2 ou WAF_v2 pode dar suporte a até 125 instâncias, usando o mesmo cálculo, é recomendável um tamanho de sub-rede de /24.- Se você quiser implantar recursos adicionais do Gateway de Aplicativo na mesma sub-rede, considere os endereços IP adicionais que serão necessários para a contagem máxima de instâncias para Standard e Standard v2.",
+ "guid": "dbf3ca82-d3a8-431e-a86e-65df49c72032",
+ "service": "Azure Application Gateway",
+ "text": "Definir o tamanho da sub-rede do Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O SKU v2 oferece dimensionamento automático para garantir que o Gateway de Aplicativo possa escalar verticalmente à medida que o tráfego aumenta. Quando comparada ao SKU v1, a v2 tem recursos que aprimoram o desempenho da carga de trabalho. Por exemplo, melhor desempenho de descarregamento de TLS, tempos de implantação e atualização mais rápidos, redundância de zona e muito mais. Para obter mais informações sobre recursos de dimensionamento automático, consulte Dimensionando o Gateway de Aplicativo v2 e o WAF v2. Se você estiver executando o SKU v1 Gateway de aplicativo, considere migrar para o SKU do gateway de aplicativo v2. Para obter mais informações, consulte Migrar o Gateway de Aplicativo do Azure e o Firewall de Aplicativo Web da v1 para a v2.",
+ "guid": "dffdc8e9-9139-46c1-93df-638e00cb3657",
+ "service": "Azure Application Gateway",
+ "text": "Aproveite os recursos para dimensionamento automático e benefícios de desempenho",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Application Gateway Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureapplicationgateway_sg_checklist.zh-Hant.json b/checklists-ext/azureapplicationgateway_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..d9ee124aa
--- /dev/null
+++ b/checklists-ext/azureapplicationgateway_sg_checklist.zh-Hant.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "在存取應用程式閘道或進行進一步更改之前,請規劃足夠的更新時間進行更新。例如,從後端池中刪除伺服器可能需要一些時間,因為它們必須耗盡現有連接。",
+ "guid": "9a17eb2b-c5e3-428b-9e45-73dead45c4f9",
+ "service": "Azure Application Gateway",
+ "text": "規劃規則更新",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "如果使用應用程式閘道對多個後端實例上的傳入流量進行負載均衡,建議使用運行狀況探測。這些將確保流量不會路由到無法處理流量的後端。",
+ "guid": "5bfa95df-20d8-4452-a6c1-79c88b07d4cc",
+ "service": "Azure Application Gateway",
+ "text": "使用運行狀況探測檢測後端不可用",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "運行狀況探測按設定的時間間隔向配置的終結點發送請求。此外,在後端被標記為不正常之前,還可以容忍失敗請求的閾值。這些數位需要權衡取捨。- 設置更高的間隔會給您的服務帶來更高的負載。每個應用程式閘道實例都會發送自己的運行狀況探測,因此每30秒100個實例意味著每30秒有100個請求。- 設置較低的間隔會在檢測到中斷之前留出更多時間。- 設置較低的不正常閾值可能意味著短暫的暫時性故障可能會使後端癱瘓。- 設置高閾值可能需要更長的時間才能將後端從輪換中移除。",
+ "guid": "ec5bc6c4-6176-44a2-860e-8654f588effd",
+ "service": "Azure Application Gateway",
+ "text": "查看間隔和閾值設置對運行狀況探測的影響",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "假設每個後端都有自己的依賴項,以確保故障被隔離。例如,託管在應用程式閘道後面的應用程式可能有多個後端,每個後端都連接到不同的資料庫(副本)。當此類依賴項失敗時,應用程式可能正在運行,但不會返回有效結果。因此,理想情況下,運行狀況終結點應驗證所有依賴項。請記住,如果對運行狀況終結點的每次調用都有一個直接依賴項調用,則該資料庫每 30 秒將接收 100 個查詢,而不是 1 個。為避免這種情況,運行狀況終結點應在短時間內緩存依賴項的狀態。",
+ "guid": "78bc5274-ca88-4e2a-8d3a-7b6a5ed1ccd6",
+ "service": "Azure Application Gateway",
+ "text": "通過運行狀況終結點驗證下游依賴項",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "某些方案可能會強制你專門在應用程式閘道上實施規則。例如,如果需要ModSec CRS 2.2.9、CRS 3.0或 CRS 3.1 規則,則這些規則只能在應用程式閘道上實現。相反,速率限制和地理篩選僅在 Azure Front Door 上可用,在 AppGateway 上不可用。",
+ "guid": "da7234f3-70a7-47d2-b685-3e47843003e9",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Front Door 和應用程式閘道保護 HTTP/S“應用程式時,請在 Front Door 中使用 WAF 策略並鎖定應用程式閘道以僅接收來自 Azure Front Door 的流量。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "設置 TLS 策略以提高安全性。確保您始終使用可用的最新 TLS 策略版本。這將強制執行 TLS 1.2 和更強的密碼。",
+ "guid": "9e5ba3b9-3512-425b-95e3-d5009e7630f3",
+ "service": "Azure Application Gateway",
+ "text": "設置 TLS 策略以增強安全性",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用應用程式閘道進行 TLS 終止具有以下優點:- 性能提高,因為發送到不同後端的請求必須重新向每個後端進行身份驗證。- 更好地利用後端伺服器,因為它們不必執行 TLS 處理- 通過訪問請求內容實現智慧路由。- 更易於證書管理,因為證書只需安裝在應用程式網關上。",
+ "guid": "5cbd84eb-56a7-4d18-9f50-de47d3b29a8f",
+ "service": "Azure Application Gateway",
+ "text": "使用 AppGateway 進行 TLS 終止",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "應用程式閘道可以與 Key Vault 整合。這提供了更強大的安全性、更輕鬆的角色和職責分離、對託管證書的支援以及更輕鬆的證書續訂和輪換過程。",
+ "guid": "c1e7b351-a459-49d1-b473-a1f663310205",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Key Vault 儲存 TLS 證書",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "後端伺服器的TLS證書必須由知名的CA頒發。如果證書不是由受信任的 CA 頒發的,則應用程式閘道會檢查證書是否由受信任的 CA 頒發,依此類推,直到找到受信任的 CA 證書。只有這樣才能建立安全連接。否則,應用程式閘道會將後端標記為不正常。",
+ "guid": "1f53df88-090e-4f67-8a41-866ea4938cb1",
+ "service": "Azure Application Gateway",
+ "text": "重新加密後端流量時,請確保後端伺服器證書包含根證書頒發機構 (CA) 和中間證書頒發機構 (CA)",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "當後端池包含可解析的 FQDN 時,DNS 解析基於專用 DNS 區域或自定義 DNS 伺服器(如果在 VNet 上配置),或者使用 Azure 提供的預設 DNS。",
+ "guid": "0e1af02a-017b-4a41-a7e5-98b47d7b1fd7",
+ "service": "Azure Application Gateway",
+ "text": "對後端池資源使用適當的 DNS 伺服器",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "應用程式閘道子網支援 NSG,但存在一些限制。例如,禁止與某些埠範圍進行某些通信。確保您了解這些限制的含義。有關詳細資訊,請參閱網路安全組。",
+ "guid": "75da1adb-f8a2-4ad5-879a-a8552d1c836a",
+ "service": "Azure Application Gateway",
+ "text": "遵守應用程式閘道的所有 NSG 限制",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在應用程式閘道子網上使用使用者定義的路由 (UDR) 可能會導致一些問題。後端的運行狀況可能是未知的。可能無法生成應用程式閘道日誌和指標。建議不要在應用程式閘道子網上使用UDR,以便可以查看後端運行狀況、日誌和指標。如果組織需要在應用程式閘道子網中使用 UDR,請確保查看支援的方案。有關詳細資訊,請參閱支援的使用者自定義路由。",
+ "guid": "7776e1c9-a0a7-4fd5-8fe9-1b2b9c56cf31",
+ "service": "Azure Application Gateway",
+ "text": "避免在應用程式閘道子網上使用UDR",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "啟用WAF后,應用程式閘道必須緩衝每個請求,直到它完全到達,檢查請求是否與其核心規則集中的任何規則衝突匹配,然後將數據包轉發到後端實例。當有大檔上傳(大小為 30MB+)時,可能會導致嚴重的延遲。由於應用程式閘道的容量要求與 WAF 不同,因此建議在未進行適當測試和驗證的情況下在應用程式閘道上啟用 WAF。",
+ "guid": "7c173790-6fac-43bc-b1b4-e787fdbb904f",
+ "service": "Azure Application Gateway",
+ "text": "啟用 WAF 時,請注意應用程式閘道容量更改",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "有關應用程式閘道定價的資訊,請參閱瞭解 Azure 應用程式閘道和 Web 應用程式防火牆的定價。您還可以利用定價計算機。確保選項的大小足夠大,以滿足容量需求,並在不浪費資源的情況下提供預期的性能。",
+ "guid": "13adc786-048a-4720-9aad-610419507199",
+ "service": "Azure Application Gateway",
+ "text": "熟悉應用程式閘道定價",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "識別並刪除後端池為空的應用程式閘道實例,以避免不必要的成本。",
+ "guid": "8d3979f9-bd25-4455-9e2f-2cc7e0deaf5e",
+ "service": "Azure Application Gateway",
+ "text": "審查未充分利用的資源",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "當應用程式閘道處於停止狀態時,不會向你收費。持續運行的應用程式閘道實例可能會產生額外的成本。評估使用模式,並在不需要實例時停止實例。例如,在開發/測試環境中,下班后的使用率預計會很低。有關如何停止和啟動實例的資訊,請參閱以下文章。",
+ "guid": "fc01794b-1808-4152-a82c-95b43b2a4c45",
+ "service": "Azure Application Gateway",
+ "text": "在不使用時停止應用程式閘道實例",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "橫向擴展策略可確保有足夠的實例來處理傳入流量和峰值。此外,制定縮減策略,確保在需求下降時減少實例數量。考慮實例大小的選擇。大小會對成本產生重大影響。估計應用程式閘道實例計數中介紹了一些注意事項。有關詳細資訊,請參閱什麼是 Azure 應用程式閘道 v2?",
+ "guid": "4e5743d9-44ec-4a09-9c80-d77056109fc6",
+ "service": "Azure Application Gateway",
+ "text": "具有縮減和橫向擴展策略",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據 Azure 跟蹤的指標,根據應用程式閘道的計量實例進行計費。評估各種指標和容量單位,並確定成本驅動因素。有關詳細資訊,請參閱 Microsoft 成本管理和計費。以下指標是應用程式閘道的關鍵。此資訊可用於驗證預配的實例計數是否與傳入流量匹配。 估計的計費容量單位- 固定計費容量單位- 當前容量單位有關詳細資訊,請參閱應用程式網關指標。請確保將頻寬成本考慮在內。",
+ "guid": "30129a61-cd84-4085-9533-5d42f89372d9",
+ "service": "Azure Application Gateway",
+ "text": "查看不同參數的消耗指標",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "使用這些指標作為預配的應用程式閘道容量利用率的指標。我們強烈建議設置有關容量的警報。有關詳細資訊,請參閱應用程式網關高流量支援。",
+ "guid": "57cc0c49-939f-46d9-864e-d7ce31733771",
+ "service": "Azure Application Gateway",
+ "text": "監控容量指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "還有其他指標可以指示應用程式閘道或後端的問題。建議評估以下警報:- 不正常主機計數 - 響應狀態 (維度 4xx 和 5xx) - 後端回應狀態 (維度 4xx 和 5xx) - 後端最後一個字節回應時間 - 應用程式網關總時間有關詳細資訊,請參閱應用程式網關的指標。",
+ "guid": "071e5241-c008-41a2-9e62-c056081158d2",
+ "service": "Azure Application Gateway",
+ "text": "使用指標進行故障排除",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌允許您查看防火牆日誌、性能日誌和訪問日誌。使用這些日誌來管理和排查應用程式閘道實例的問題。有關詳細資訊,請參閱應用程式網關的後端運行狀況和診斷日誌。",
+ "guid": "7e160588-dc1c-48d5-9a56-4ddc6aeb8fc2",
+ "service": "Azure Application Gateway",
+ "text": "在應用程式閘道和 Web 應用程式防火牆 (WAF) 上啟用診斷Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Monitor 網路見解提供網路資源(包括應用程式閘道)的運行狀況和指標的全面檢視。有關應用程式閘道的其他詳細資訊和支援的功能,請參閱 Azure Monitor 網路見解。",
+ "guid": "260dc49f-05b9-4c43-9cda-afc5b1923c89",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Monitor 網路見解",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "確保您已配置 IdleTimeout 設定以符合後端應用程式的偵聽器和流量特徵。默認值設置為 4 分鐘,最大值為 30 分鐘。有關詳細資訊,請參閱Load Balancer TCP Reset and Idle Timeout。有關工作負載注意事項,請參閱Monitoring application health for reliability。",
+ "guid": "8c5e5e8f-44d7-4494-8819-c1d765838fec",
+ "service": "Azure Application Gateway",
+ "text": "將超時設置與後端應用程式匹配",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應用程式閘道每 4 小時檢查一次連結的 Key Vault 中是否存在續訂的證書版本。如果由於任何不正確的 Key Vault 配置而無法訪問它,它會記錄該錯誤並推送相應的顧問建議。您必須配置 Advisor 警報以保持更新並立即修復此類問題,以避免任何與控制或數據平面相關的問題。有關詳細資訊,請參閱調查和解決密鑰保管庫錯誤。若要為此特定情況設置警報,請使用“建議類型”作為應用程式網關的“解決 Azure Key Vault 問題”。",
+ "guid": "4123369e-cbd7-472d-9879-e155476c2595",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure 顧問監視 Key Vault 配置問題",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "SNAT 埠限制對於應用程式閘道上的後端連接非常重要。有一些單獨的因素會影響應用程式閘道達到 SNAT 埠限制的方式。例如,如果後端是公共IP位址,則需要自己的SNAT埠。為了避免 SNAT 埠限制,可以增加每個應用程式閘道的實例數,橫向擴展後端以具有更多 IP 位址,或者將後端移動到同一虛擬網路中併為後端使用專用 IP 位址。如果達到 SNAT 埠限制,應用程式閘道上的每秒請求數 (RPS) 將受到影響。例如,如果應用程式閘道達到 SNAT 埠限制,則它將無法打開與後端的新連接,並且請求將失敗。",
+ "guid": "d2713c48-1e6f-4ee8-b91c-8499e7146945",
+ "service": "Azure Application Gateway",
+ "text": "在設計中考慮 SNAT 埠限制",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "對於應用程式閘道 v2 SKU,自動縮放需要一些時間(大約 6 到 7 分鐘),然後額外的實例集才能準備好為流量提供服務。在此期間,如果流量出現短暫的高峰,則會出現暫時性延遲或流量丟失。我們建議您將最小實例計數設置為最佳水準。在估計平均實例計數並確定應用程式閘道自動縮放趨勢後,請根據應用程式模式定義最小實例計數。有關資訊,請參閱應用程式閘道高流量支援。檢查過去一個月的當前計算單元。此指標表示閘道的CPU利用率。要定義最小實例計數,請將峰值使用量除以 10。例如,如果過去一個月的平均當前計算單位數為50,則將最小實例計數設置為5。",
+ "guid": "8bba115b-e086-458e-beca-ae9d8144a1f6",
+ "service": "Azure Application Gateway",
+ "text": "定義最小實例計數",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "建議將 125 作為最大自動縮放實例計數。請確保具有應用程式閘道的子網具有足夠的可用IP位址來支援縱向擴展實例集。將最大實例計數設置為125不會產生任何成本影響,因為您只需為已使用的容量付費。",
+ "guid": "1250aa80-2761-4138-9565-57735472779b",
+ "service": "Azure Application Gateway",
+ "text": "定義最大實例計數",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "應用程式閘道需要虛擬網路中的專用子網。子網可以包含已部署的應用程式閘道資源的多個實例。還可以在該子網 v1 或 v2 SKU 中部署其他應用程式閘道資源。以下是定義子網大小的一些注意事項:- 應用程式閘道為每個實例使用一個專用IP位址,如果配置了專用前端IP,則使用另一個專用IP位址。- Azure 在每個子網中保留5個IP位址供內部使用。- 應用程式閘道(標準或 WAF SKU)最多可支援 32 個實例。以 32 個實例 IP 位址 + 1 個專用前端 IP + 5 個 Azure 預留為例,建議最小子網大小為 /26。由於 Standard_v2 或 WAF_v2 SKU 最多可以支援 125 個實例,因此使用相同的計算,建議使用子網大小為 /24。- 如果要在同一子網中部署其他應用程式網關資源,請考慮標準和標準 v2 的最大實例計數所需的其他 IP 位址。",
+ "guid": "dbf3ca82-d3a8-431e-a86e-65df49c72032",
+ "service": "Azure Application Gateway",
+ "text": "定義應用程式閘道子網大小",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "v2 SKU 提供自動縮放功能,以確保應用程式閘道可以隨著流量的增加而縱向擴展。與 v1 SKU 相比,v2 具有增強工作負載性能的功能。例如,更好的 TLS 卸載性能、更快的部署和更新時間、區域冗餘等。有關自動縮放功能的詳細資訊,請參閱縮放應用程式網關 v2 和 WAF v2。如果運行的是 v1 SKU 應用程式閘道,請考慮遷移到應用程式閘道 v2 SKU。有關詳細資訊,請參閱將 Azure 應用程式閘道和 Web 應用程式防火牆從 v1 遷移到 v2。",
+ "guid": "dffdc8e9-9139-46c1-93df-638e00cb3657",
+ "service": "Azure Application Gateway",
+ "text": "利用自動縮放和性能優勢的功能",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Application Gateway Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.en.json b/checklists-ext/azureblobstorage_sg_checklist.en.json
index f1ded7674..2f698da13 100644
--- a/checklists-ext/azureblobstorage_sg_checklist.en.json
+++ b/checklists-ext/azureblobstorage_sg_checklist.en.json
@@ -212,35 +212,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -277,6 +277,6 @@
"name": "Azure Blob Storage Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.es.json b/checklists-ext/azureblobstorage_sg_checklist.es.json
new file mode 100644
index 000000000..eb2973899
--- /dev/null
+++ b/checklists-ext/azureblobstorage_sg_checklist.es.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "La redundancia protege sus datos contra fallos inesperados. Las opciones de configuración de ZRS y GZRS se replican en diferentes zonas de disponibilidad y permiten que las aplicaciones continúen leyendo datos durante una interrupción. Para obtener más información, consulte Durabilidad y disponibilidad por escenario de interrupción y Parámetros de durabilidad y disponibilidad.",
+ "guid": "561e09d2-403f-42d4-9d64-dcf0c8845a7b",
+ "service": "Azure Blob Storage",
+ "text": "Configure su cuenta para la redundancia. Para obtener la máxima disponibilidad y durabilidad, configure su cuenta mediante el almacenamiento con redundancia de zona (ZRS) o GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta propiedad le ayuda a calcular la cantidad de datos que podría perder al iniciar una conmutación por error de la cuenta. Todos los datos y metadatos escritos antes de la última hora de sincronización están disponibles en la región secundaria, pero es posible que los datos y metadatos escritos después de la última hora de sincronización se pierdan porque no se escriben en la región secundaria.",
+ "guid": "1cb9a83e-5e1f-4fa2-9fd6-b2e26a5462db",
+ "service": "Azure Blob Storage",
+ "text": "Antes de iniciar una conmutación por error o conmutación por recuperación, evalúe la posibilidad de pérdida de datos comprobando el valor de la última propiedad de tiempo de sincronización. Esta recomendación sólo se aplica a las configuraciones GRS y GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La opción de eliminación temporal permite que una cuenta de almacenamiento recupere contenedores y blobs eliminados. La opción de control de versiones realiza automáticamente un seguimiento de los cambios realizados en los blobs. Esta opción permite restaurar un blob a un estado anterior. La opción de restauración a un momento dado protege contra la eliminación accidental o los daños de blobs y permite restaurar los datos de blobs en bloques a un estado anterior. Para obtener más información, consulte Información general sobre la protección de datos.",
+ "guid": "d095b8f1-86f8-4345-a730-c079330d8a19",
+ "service": "Azure Blob Storage",
+ "text": "Como parte de la estrategia de copia de seguridad y recuperación, habilite las opciones de eliminación temporal de contenedor, eliminación temporal de blobs, control de versiones y restauración a un momento dado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Cuando se permite el acceso anónimo a una cuenta de almacenamiento, un usuario que tenga los permisos adecuados puede modificar la configuración de acceso anónimo de un contenedor para habilitar el acceso anónimo a los datos de ese contenedor.",
+ "guid": "0906a42b-c081-4ba8-bef8-04633017558c",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite el acceso de lectura anónimo a los contenedores y blobs.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Bloquear una cuenta evita que se elimine y provoque la pérdida de datos.",
+ "guid": "ed64645f-1d29-48f6-ac60-d072f840a0b9",
+ "service": "Azure Blob Storage",
+ "text": "Aplique un bloqueo de Azure Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Comience con acceso cero y, a continuación, autorice gradualmente los niveles más bajos de acceso necesarios para los clientes y los servicios a fin de minimizar el riesgo de crear aperturas innecesarias para los atacantes.",
+ "guid": "c8c2f2d2-3aca-4483-9092-c5e078bd7488",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite el tráfico a los puntos de conexión públicos de la cuenta de almacenamiento. Cree puntos de conexión privados para los clientes que se ejecutan en Azure. Habilite el punto de conexión público solo si los clientes y servicios externos a Azure requieren acceso directo a la cuenta de almacenamiento. Habilite reglas de firewall que limiten el acceso a redes virtuales específicas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con RBAC, no hay contraseñas ni claves que puedan verse comprometidas. La entidad de seguridad (usuario, grupo, identidad administrada o entidad de servicio) se autentica mediante el identificador de Microsoft Entra para devolver un token de OAuth 2.0. El token se usa para autorizar una solicitud en el servicio Blob Storage.",
+ "guid": "4784f5c3-bc75-45a7-b309-e39a328d352b",
+ "service": "Azure Blob Storage",
+ "text": "Autorice el acceso mediante el control de acceso basado en rol (RBAC) de Azure.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Solo se permiten las solicitudes protegidas que estén autorizadas con el identificador de Microsoft Entra.",
+ "guid": "9b699609-816c-4658-af6d-dc939f1edd51",
+ "service": "Azure Blob Storage",
+ "text": "No permitir la autorización de clave compartida. Esto deshabilita no solo el acceso a la clave de cuenta, sino también los tokens de firma de acceso compartido de cuenta y servicio, ya que se basan en claves de cuenta.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Key Vault permite recuperar claves en tiempo de ejecución, en lugar de guardarlas mediante la aplicación. Key Vault también facilita la rotación de las claves sin interrumpir las aplicaciones. La rotación periódica de las claves de cuenta reduce el riesgo de exponer los datos a ataques malintencionados.",
+ "guid": "edf07227-fd13-41c0-8e4e-dbba1e9e5240",
+ "service": "Azure Blob Storage",
+ "text": "Te recomendamos que no utilices una clave de cuenta. Si debe usar claves de cuenta, almacénelas en Key Vault y asegúrese de volver a generarlas periódicamente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las prácticas recomendadas pueden ayudarle a evitar que se filtre un token de firma de acceso compartido y a recuperarse rápidamente si se produce una fuga.",
+ "guid": "1432d7ef-8818-4563-86fe-eead1fc727b9",
+ "service": "Azure Blob Storage",
+ "text": "Se recomienda no usar tokens de firma de acceso compartido. Evalúe si necesita tokens de firma de acceso compartido para proteger el acceso a los recursos de Blob Storage. Si debe crear una, revise esta lista de prácticas recomendadas para la firma de acceso compartido antes de crearla y distribuirla.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS 1.2 es más seguro y rápido que TLS 1.0 y 1.1, que no son compatibles con los algoritmos criptográficos modernos ni los conjuntos de cifrado.",
+ "guid": "d2308a89-4f5c-4997-b38f-d4fa5585fbda",
+ "service": "Azure Blob Storage",
+ "text": "Configure la cuenta de almacenamiento para que los clientes puedan enviar y recibir datos mediante la versión mínima de TLS 1.2.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las claves administradas por el cliente proporcionan una mayor flexibilidad y control. Por ejemplo, puede almacenar claves de cifrado en Key Vault y rotarlas automáticamente.",
+ "guid": "82c9cd68-5f8f-496a-a84f-abbf6ce339c3",
+ "service": "Azure Blob Storage",
+ "text": "Considere la posibilidad de usar su propia clave de cifrado para proteger los datos de la cuenta de almacenamiento. Para más información, consulte Claves administradas por el cliente para el cifrado de Azure Storage.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los niveles de esporádico tienen costos de transferencia de datos más altos. Al tener menos archivos grandes, puede reducir el número de operaciones necesarias para transferir datos.",
+ "guid": "d7f07d9a-eff1-48c0-85c1-31c641051313",
+ "service": "Azure Blob Storage",
+ "text": "Empaquete archivos pequeños en archivos más grandes antes de moverlos a niveles más esporádicos. Puede utilizar formatos de archivo como TAR o ZIP.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La rehidratación de alta prioridad desde el nivel de archivo puede dar lugar a facturas más altas de lo normal.",
+ "guid": "c122df96-d477-4595-acf5-501023d8f002",
+ "service": "Azure Blob Storage",
+ "text": "Use la rehidratación de prioridad estándar al rehidratar blobs desde el almacenamiento de archivos. Utilice la rehidratación de alta prioridad solo para situaciones de restauración de datos de emergencia. Para obtener más información, consulte Rehidratación de un blob archivado en un nivel en línea",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Almacenar registros de recursos en una cuenta de almacenamiento para su posterior análisis puede ser una opción más económica. El uso de políticas de administración del ciclo de vida para administrar la retención de registros en una cuenta de almacenamiento evita que se acumule un gran número de archivos de registros con el tiempo, lo que puede provocar cargos de capacidad innecesarios.",
+ "guid": "0393ace4-ae00-4510-a626-24fd6c331e91",
+ "service": "Azure Blob Storage",
+ "text": "Reduzca el costo de usar registros de recursos eligiendo la ubicación de almacenamiento de registros adecuada y administrando los períodos de retención de registros. Si solo planea consultar registros ocasionalmente (por ejemplo, consultar registros para auditoría de cumplimiento), considere la posibilidad de enviar registros de recursos a una cuenta de almacenamiento en lugar de enviarlos a un área de trabajo de registros de Azure Monitor. Puede usar una solución de consulta sin servidor, como Azure Synapse Analytics, para analizar los registros. Para obtener más información, consulte Optimización del costo para consultas poco frecuentes. Utilice políticas de administración del ciclo de vida para eliminar o archivar registros.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada operación de escritura en un blob crea una nueva versión. Esto aumenta los costos de capacidad. Puede mantener los costos bajo control eliminando las versiones que ya no necesita.",
+ "guid": "514fae4b-0f5c-4107-9b2e-cf9d20192634",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita el control de versiones, use una política de administración del ciclo de vida para eliminar automáticamente las versiones antiguas de los blobs.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada vez que se sobrescribe un blob, se agrega una nueva versión, lo que aumenta los cargos por capacidad de almacenamiento. Para reducir los cargos de capacidad, almacene los datos que se sobrescriben con frecuencia en una cuenta de almacenamiento independiente con el control de versiones deshabilitado.",
+ "guid": "c33bbf5b-3635-4aed-acb1-0a0b697cff0a",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita el control de versiones, coloque los blobs que se sobrescriben con frecuencia en una cuenta que no tenga habilitado el control de versiones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada vez que se sobrescribe un blob, se crea una nueva instantánea. La causa del aumento de los cargos por capacidad puede ser difícil de acceder porque la creación de estas instantáneas no aparece en los registros. Para reducir los cargos de capacidad, almacene los datos sobrescritos con frecuencia en una cuenta de almacenamiento independiente con la eliminación temporal deshabilitada. Un período de retención evita que los blobs eliminados temporalmente se acumulen y aumenten el costo de la capacidad.",
+ "guid": "0d4d5fa0-eff6-4fff-88b1-17b542978ea1",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita la eliminación temporal, coloque los blobs que se sobrescriben con frecuencia en una cuenta que no tenga habilitada la eliminación temporal. Establecer períodos de retención. Considere comenzar con un período de retención corto para comprender mejor cómo afecta la función a su factura. El período de retención mínimo recomendado es de siete días.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La habilitación del punto de conexión SFTP incurre en un costo por hora. Al deshabilitar cuidadosamente la compatibilidad con SFTP y luego habilitarla según sea necesario, puede evitar que se acumulen cargos pasivos en su cuenta.",
+ "guid": "35ebda6d-7534-4808-84f7-70bd3adb0f35",
+ "service": "Azure Blob Storage",
+ "text": "Habilite la compatibilidad con SFTP solo cuando se use para transferir datos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los ámbitos de cifrado incurren en un cargo mensual.",
+ "guid": "9ca25392-5ed4-43e6-af70-33fea033e859",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite los ámbitos de cifrado que no sean necesarios para evitar cargos innecesarios.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede usar los procesos de DevOps existentes para implementar nuevas cuentas de almacenamiento y usar Azure Policy para aplicar su configuración.",
+ "guid": "ce1d3a00-f0c5-47c1-b230-5a199e462b52",
+ "service": "Azure Blob Storage",
+ "text": "Use la infraestructura como código (IaC) para definir los detalles de las cuentas de almacenamiento en plantillas de Azure Resource Manager (plantillas de ARM), Bicep o Terraform.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede realizar un seguimiento del estado y el funcionamiento de cada una de sus cuentas. Cree fácilmente paneles e informes que las partes interesadas pueden usar para realizar un seguimiento del estado de sus cuentas de almacenamiento.",
+ "guid": "a06df82c-98fb-4219-9708-6cb27a3b9c71",
+ "service": "Azure Blob Storage",
+ "text": "Use la información de almacenamiento para realizar un seguimiento del estado y el rendimiento de las cuentas de almacenamiento. Storage Insights proporciona una vista unificada de los errores, el rendimiento, la disponibilidad y la capacidad de todas las cuentas de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La reducción de la distancia física entre la cuenta de almacenamiento y las máquinas virtuales, los servicios y los clientes locales puede mejorar el rendimiento y reducir la latencia de la red. La reducción de la distancia física también reduce el costo de las aplicaciones hospedadas en Azure, ya que el uso del ancho de banda dentro de una sola región es gratuito.",
+ "guid": "5e724a0a-d268-47ae-9dcf-7ef18d870d1d",
+ "service": "Azure Blob Storage",
+ "text": "Aprovisione cuentas de almacenamiento en la misma región donde se colocan los recursos dependientes. En el caso de las aplicaciones que no están hospedadas en Azure, como aplicaciones de dispositivos móviles o servicios empresariales locales, ubique la cuenta de almacenamiento en una región más cercana a esos clientes. Para obtener más información, consulte Geografías de Azure. Si los clientes de una región diferente no requieren los mismos datos, cree una cuenta independiente en cada región. Si los clientes de una región diferente solo requieren algunos datos, considere la posibilidad de usar una directiva de replicación de objetos para copiar de forma asincrónica los objetos relevantes en una cuenta de almacenamiento de la otra región.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El contenido se entrega a los clientes más rápido porque usa la red perimetral global de Microsoft con cientos de puntos de presencia globales y locales en todo el mundo.",
+ "guid": "4dea9363-c277-4793-b9e2-e8737aeb619f",
+ "service": "Azure Blob Storage",
+ "text": "Para un consumo amplio por parte de los clientes web (streaming de vídeo, audio o contenido estático de sitios web), considere la posibilidad de usar una red de entrega de contenido a través de Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El uso de un código hash o un valor de segundos más cercano al principio de una clave de partición reduce el tiempo necesario para enumerar los blobs de consulta y lectura.",
+ "guid": "cc147319-67cb-4737-ba01-285f3ebddcea",
+ "service": "Azure Blob Storage",
+ "text": "Agregue una secuencia de caracteres hash (por ejemplo, tres dígitos) lo antes posible en la clave de partición de un blob. La clave de partición es el nombre de la cuenta, el nombre del contenedor, el nombre del directorio virtual y el nombre del blob. Si planea usar marcas de tiempo en los nombres, considere agregar un valor de segundos al principio de esa marca. Para obtener más información, consulte Creación de particiones.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Los tamaños de blob o bloque superiores a 256 KiB aprovechan las mejoras de rendimiento de la plataforma creadas específicamente para blobs y tamaños de bloque más grandes.",
+ "guid": "a0addee3-cb0e-4235-b93c-8d5a8ddfbab2",
+ "service": "Azure Blob Storage",
+ "text": "Al cargar blobs o bloques, use un tamaño de blob o bloque superior a 256 KiB.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Blob Storage Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.ja.json b/checklists-ext/azureblobstorage_sg_checklist.ja.json
new file mode 100644
index 000000000..bfea3c58b
--- /dev/null
+++ b/checklists-ext/azureblobstorage_sg_checklist.ja.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "冗長性は、予期しない障害からデータを保護します。ZRS と GZRS の構成オプションは、異なる可用性ゾーン間でレプリケートされ、停止中もアプリケーションがデータの読み取りを続行できるようにします。詳細については、「停止シナリオ別の持続性と可用性」および「持続性と可用性のパラメーター」を参照してください。",
+ "guid": "561e09d2-403f-42d4-9d64-dcf0c8845a7b",
+ "service": "Azure Blob Storage",
+ "text": "冗長性のためにアカウントを構成します。可用性と持続性を最大限に高めるには、ゾーン冗長ストレージ (ZRS) または GZRS を使用してアカウントを構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このプロパティは、アカウントのフェイルオーバーを開始することで失われる可能性のあるデータ量を見積もるのに役立ちます。最終同期時刻より前に書き込まれたすべてのデータとメタデータはセカンダリリージョンで使用できますが、最終同期時刻より後に書き込まれたデータとメタデータは、セカンダリリージョンに書き込まれていないため、失われる可能性があります。",
+ "guid": "1cb9a83e-5e1f-4fa2-9fd6-b2e26a5462db",
+ "service": "Azure Blob Storage",
+ "text": "フェイルオーバーまたはフェイルバックを開始する前に、最終同期時間プロパティの値を確認して、データ損失の可能性を評価します。この推奨事項は、GRS および GZRS 構成にのみ適用されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "論理的な削除オプションを使用すると、ストレージ アカウントは削除されたコンテナーと BLOB を回復できます。バージョン管理オプションは、BLOB に加えられた変更を自動的に追跡します。このオプションを使用すると、BLOB を以前の状態に復元できます。ポイントインタイム リストア オプションは、BLOB の偶発的な削除や破損から保護し、ブロック BLOB データを以前の状態に復元できます。詳細については、「データ保護の概要」を参照してください。",
+ "guid": "d095b8f1-86f8-4345-a730-c079330d8a19",
+ "service": "Azure Blob Storage",
+ "text": "バックアップと復旧の戦略の一環として、コンテナーの論理的な削除、BLOB の論理的な削除、バージョン管理、およびポイントインタイム リストアのオプションを有効にします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ストレージ アカウントに対して匿名アクセスが許可されている場合、適切なアクセス許可を持つユーザーは、コンテナーの匿名アクセス設定を変更して、そのコンテナー内のデータへの匿名アクセスを有効にすることができます。",
+ "guid": "0906a42b-c081-4ba8-bef8-04633017558c",
+ "service": "Azure Blob Storage",
+ "text": "コンテナーと BLOB への匿名読み取りアクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "アカウントをロックすると、アカウントが削除されてデータが失われるのを防ぐことができます。",
+ "guid": "ed64645f-1d29-48f6-ac60-d072f840a0b9",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントに Azure Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ゼロアクセスから始めて、クライアントとサービスに必要な最低レベルのアクセスを段階的に承認して、攻撃者に不必要な隙を与えるリスクを最小限に抑えます。",
+ "guid": "c8c2f2d2-3aca-4483-9092-c5e078bd7488",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントのパブリック エンドポイントへのトラフィックを無効にします。Azure で実行されるクライアントのプライベート エンドポイントを作成します。パブリック エンドポイントは、Azure の外部のクライアントとサービスがストレージ アカウントに直接アクセスする必要がある場合にのみ有効にします。特定の仮想ネットワークへのアクセスを制限するファイアウォール規則を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "RBAC を使用すると、パスワードやキーが侵害されることはありません。セキュリティ プリンシパル (ユーザー、グループ、マネージド ID、またはサービス プリンシパル) は、OAuth 2.0 トークンを返すために Microsoft Entra ID によって認証されます。トークンは、Blob Storage サービスに対する要求を承認するために使用されます。",
+ "guid": "4784f5c3-bc75-45a7-b309-e39a328d352b",
+ "service": "Azure Blob Storage",
+ "text": "Azure ロールベースのアクセス制御 (RBAC) を使用してアクセスを承認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Microsoft Entra ID で承認されたセキュリティで保護された要求のみが許可されます。",
+ "guid": "9b699609-816c-4658-af6d-dc939f1edd51",
+ "service": "Azure Blob Storage",
+ "text": "共有キーの認証を禁止します。これにより、アカウント キーへのアクセスだけでなく、アカウント キーに基づいているため、サービスとアカウントの共有アクセス署名トークンも無効になります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault を使用すると、アプリケーションを使用してキーを保存する代わりに、実行時にキーを取得できます。また、Key Vault を使用すると、アプリケーションを中断することなくキーを簡単にローテーションできます。アカウント キーを定期的にローテーションすると、データが悪意のある攻撃にさらされるリスクが軽減されます。",
+ "guid": "edf07227-fd13-41c0-8e4e-dbba1e9e5240",
+ "service": "Azure Blob Storage",
+ "text": "アカウントキーは使用しないことをお勧めします。アカウント キーを使用する必要がある場合は、Key Vault に格納し、定期的に再生成するようにしてください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ベスト プラクティスは、Shared Access Signature トークンの漏洩を防ぎ、漏洩が発生した場合に迅速に回復するのに役立ちます。",
+ "guid": "1432d7ef-8818-4563-86fe-eead1fc727b9",
+ "service": "Azure Blob Storage",
+ "text": "Shared Access Signature トークンは使用しないことをお勧めします。Blob Storage リソースへのアクセスをセキュリティで保護するために Shared Access Signature トークンが必要かどうかを評価します。作成する必要がある場合は、作成して配布する前に、この共有アクセス署名のベスト プラクティスの一覧を確認してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 は、最新の暗号化アルゴリズムと暗号スイートをサポートしていない TLS 1.0 および 1.1 よりも安全で高速です。",
+ "guid": "d2308a89-4f5c-4997-b38f-d4fa5585fbda",
+ "service": "Azure Blob Storage",
+ "text": "クライアントが TLS 1.2 の最小バージョンを使用してデータを送受信できるように、ストレージ アカウントを構成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタマー マネージド キーは、柔軟性と制御性に優れています。たとえば、暗号化キーを Key Vault に格納し、自動的にローテーションできます。",
+ "guid": "82c9cd68-5f8f-496a-a84f-abbf6ce339c3",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウント内のデータを保護するために、独自の暗号化キーを使用することを検討してください。詳細については、「Azure Storage 暗号化のカスタマー マネージド キー」を参照してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クーラー層は、データ転送コストが高くなります。大きなファイルの数を減らすことで、データの転送に必要な操作の数を減らすことができます。",
+ "guid": "d7f07d9a-eff1-48c0-85c1-31c641051313",
+ "service": "Azure Blob Storage",
+ "text": "小さなファイルを大きなファイルにパックしてから、クーラー層に移動します。TAR や ZIP などのファイル形式を使用できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "アーカイブ層からの優先度の高いリハイドレートは、通常よりも高額な請求につながる可能性があります。",
+ "guid": "c122df96-d477-4595-acf5-501023d8f002",
+ "service": "Azure Blob Storage",
+ "text": "アーカイブ ストレージから BLOB をリハイドレートする場合は、標準優先度のリハイドレートを使用します。優先度の高いリハイドレートは、緊急時のデータ復元状況でのみ使用してください。詳細については、「アーカイブされた BLOB をオンライン層にリハイドレートする」を参照してください",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "後で分析するためにリソース ログをストレージ アカウントに格納することは、より安価なオプションになる可能性があります。ライフサイクル管理ポリシーを使用してストレージ アカウントのログ保有期間を管理すると、時間の経過と共に大量のログ ファイルが蓄積され、不要な容量料金が発生するのを防ぐことができます。",
+ "guid": "0393ace4-ae00-4510-a626-24fd6c331e91",
+ "service": "Azure Blob Storage",
+ "text": "リソース・ログの使用コストを削減するには、適切なログ・ストレージ・ロケーションを選択し、ログ保持期間を管理します。ログのクエリをたまにしか行わない場合 (たとえば、コンプライアンス監査のためにログのクエリを実行する場合) は、リソース ログを Azure Monitor ログ ワークスペースに送信するのではなく、ストレージ アカウントに送信することを検討してください。Azure Synapse Analytics などのサーバーレス クエリ ソリューションを使用して、ログを分析できます。詳細については、「頻度の低いクエリのコストを最適化する」を参照してください。ライフサイクル管理ポリシーを使用して、ログを削除またはアーカイブします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB への書き込み操作ごとに、新しいバージョンが作成されます。これにより、容量コストが増加します。不要になったバージョンを削除することで、コストを抑えることができます。",
+ "guid": "514fae4b-0f5c-4107-9b2e-cf9d20192634",
+ "service": "Azure Blob Storage",
+ "text": "バージョン管理を有効にする場合は、ライフサイクル管理ポリシーを使用して、古い BLOB バージョンを自動的に削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB が上書きされるたびに新しいバージョンが追加され、ストレージ容量の料金が増加します。容量の料金を削減するには、頻繁に上書きされるデータを、バージョン管理を無効にした別のストレージ アカウントに格納します。",
+ "guid": "c33bbf5b-3635-4aed-acb1-0a0b697cff0a",
+ "service": "Azure Blob Storage",
+ "text": "バージョニングを有効にする場合は、頻繁に上書きされる BLOB を、バージョニングが有効になっていないアカウントに配置します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB が上書きされるたびに、新しいスナップショットが作成されます。容量料金の増加の原因は、これらのスナップショットの作成がログに表示されないため、アクセスが困難になる場合があります。容量の料金を削減するには、頻繁に上書きされるデータを、論理的な削除を無効にして別のストレージ アカウントに格納します。保持期間により、論理的に削除された BLOB が積み重なって容量のコストが増えるのを防ぐことができます。",
+ "guid": "0d4d5fa0-eff6-4fff-88b1-17b542978ea1",
+ "service": "Azure Blob Storage",
+ "text": "論理的な削除を有効にする場合は、頻繁に上書きされる BLOB を、論理的な削除が有効になっていないアカウントに配置します。保持期間を設定します。この機能が請求にどのように影響するかをよりよく理解するために、短い保持期間から始めることを検討してください。推奨される最小保持期間は 7 日間です。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "SFTP エンドポイントを有効にすると、時間単位のコストが発生します。SFTPサポートを慎重に無効にし、必要に応じて有効にすることで、アカウントに受動的料金が発生するのを防ぐことができます。",
+ "guid": "35ebda6d-7534-4808-84f7-70bd3adb0f35",
+ "service": "Azure Blob Storage",
+ "text": "SFTP サポートは、データの転送に使用する場合にのみ有効にします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "暗号化スコープには、月額料金が発生します。",
+ "guid": "9ca25392-5ed4-43e6-af70-33fea033e859",
+ "service": "Azure Blob Storage",
+ "text": "不要な料金を回避するために、不要な暗号化スコープを無効にします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "既存の DevOps プロセスを使用して新しいストレージ アカウントをデプロイし、Azure Policy を使用してその構成を適用できます。",
+ "guid": "ce1d3a00-f0c5-47c1-b230-5a199e462b52",
+ "service": "Azure Blob Storage",
+ "text": "コードとしてのインフラストラクチャ (IaC) を使用して、Azure Resource Manager テンプレート (ARM テンプレート)、Bicep、または Terraform でストレージ アカウントの詳細を定義します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各アカウントの健康状態と操作を追跡できます。ダッシュボードとレポートを簡単に作成して、関係者がストレージ アカウントの正常性を追跡できます。",
+ "guid": "a06df82c-98fb-4219-9708-6cb27a3b9c71",
+ "service": "Azure Blob Storage",
+ "text": "Storage insights を使用して、ストレージ アカウントの正常性とパフォーマンスを追跡します。Storage insights は、すべてのストレージ アカウントの障害、パフォーマンス、可用性、容量の統合ビューを提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ストレージ アカウントと VM、サービス、およびオンプレミス クライアントとの間の物理的な距離を短くすると、パフォーマンスが向上し、ネットワーク待機時間が短縮されます。物理的な距離を短くすると、1 つのリージョン内での帯域幅の使用が無料になるため、Azure でホストされているアプリケーションのコストも削減されます。",
+ "guid": "5e724a0a-d268-47ae-9dcf-7ef18d870d1d",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントは、依存リソースが配置されているのと同じリージョンにプロビジョニングします。Azure でホストされていないアプリケーション (モバイル デバイス アプリやオンプレミスのエンタープライズ サービスなど) の場合は、それらのクライアントに近いリージョンにストレージ アカウントを配置します。詳細については、「Azure の地域」を参照してください。異なる地域のクライアントが同じデータを必要としない場合は、各地域に個別のアカウントを作成します。別のリージョンのクライアントが一部のデータのみを必要とする場合は、オブジェクト レプリケーション ポリシーを使用して、関連するオブジェクトを他のリージョンのストレージ アカウントに非同期的にコピーすることを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "コンテンツは、世界中に数百のグローバルおよびローカルのプレゼンスポイントを持つMicrosoftグローバルエッジネットワークを使用しているため、クライアントにより迅速に配信されます。",
+ "guid": "4dea9363-c277-4793-b9e2-e8737aeb619f",
+ "service": "Azure Blob Storage",
+ "text": "Web クライアント (ストリーミング ビデオ、オーディオ、または静的 Web サイト コンテンツ) による広範な消費については、Azure Front Door を介したコンテンツ配信ネットワークの使用を検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "パーティション キーの先頭に最も近いハッシュ コードまたは秒値を使用すると、BLOB の一覧表示、クエリ、読み取りに必要な時間が短縮されます。",
+ "guid": "cc147319-67cb-4737-ba01-285f3ebddcea",
+ "service": "Azure Blob Storage",
+ "text": "ハッシュ文字シーケンス (3 桁など) を BLOB のパーティション キーにできるだけ早く追加します。パーティション キーは、アカウント名、コンテナー名、仮想ディレクトリ名、BLOB 名です。名前にタイムスタンプを使用する予定の場合は、そのスタンプの先頭に秒の値を追加することを検討してください。詳細については、「パーティション分割」を参照してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "256 KiB を超える BLOB またはブロック サイズは、より大きな BLOB とブロック サイズ専用に作成されたプラットフォームのパフォーマンス強化を利用します。",
+ "guid": "a0addee3-cb0e-4235-b93c-8d5a8ddfbab2",
+ "service": "Azure Blob Storage",
+ "text": "BLOB またはブロックをアップロードするときは、256 KiB を超える BLOB またはブロック サイズを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Blob Storage Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.ko.json b/checklists-ext/azureblobstorage_sg_checklist.ko.json
new file mode 100644
index 000000000..b61de6eaf
--- /dev/null
+++ b/checklists-ext/azureblobstorage_sg_checklist.ko.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "중복성은 예기치 않은 오류로부터 데이터를 보호합니다. ZRS 및 GZRS 구성 옵션은 서로 다른 가용성 영역에 복제되며 애플리케이션이 중단 중에도 데이터를 계속 읽을 수 있도록 합니다. 자세한 내용은 Durability and availability by outage scenario 및 Durability and availability parameters를 참조하세요.",
+ "guid": "561e09d2-403f-42d4-9d64-dcf0c8845a7b",
+ "service": "Azure Blob Storage",
+ "text": "중복을 위해 계정을 구성합니다. 가용성과 내구성을 최대화하려면 ZRS(영역 중복 스토리지) 또는 GZRS를 사용하여 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 속성은 계정 장애 조치(failover)를 시작하여 손실될 수 있는 데이터의 양을 예측하는 데 도움이 됩니다. 마지막 동기화 시간 이전에 작성된 모든 데이터 및 메타데이터는 보조 지역에서 사용할 수 있지만 마지막 동기화 시간 이후에 기록된 데이터 및 메타데이터는 보조 지역에 기록되지 않기 때문에 손실될 수 있습니다.",
+ "guid": "1cb9a83e-5e1f-4fa2-9fd6-b2e26a5462db",
+ "service": "Azure Blob Storage",
+ "text": "장애 조치(failover) 또는 장애 복구(failback)를 시작하기 전에 마지막 동기화 시간 속성의 값을 확인하여 데이터 손실 가능성을 평가합니다. 이 권장 사항은 GRS 및 GZRS 구성에만 적용됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "일시 삭제 옵션을 사용하면 스토리지 계정에서 삭제된 컨테이너 및 Blob을 복구할 수 있습니다. 버전 관리 옵션은 Blob에 대한 변경 내용을 자동으로 추적합니다. 이 옵션을 사용하면 Blob을 이전 상태로 복원할 수 있습니다. 특정 시점 복원 옵션을 사용하면 실수로 인한 Blob 삭제 또는 손상을 방지하고 블록 Blob 데이터를 이전 상태로 복원할 수 있습니다. 자세한 내용은 데이터 보호 개요를 참조하세요.",
+ "guid": "d095b8f1-86f8-4345-a730-c079330d8a19",
+ "service": "Azure Blob Storage",
+ "text": "백업 및 복구 전략의 일부로 컨테이너 일시 삭제, Blob 일시 삭제, 버전 관리 및 특정 시점 복원 옵션을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "스토리지 계정에 대해 익명 액세스가 허용되는 경우 적절한 권한이 있는 사용자는 컨테이너의 익명 액세스 설정을 수정하여 해당 컨테이너의 데이터에 대한 익명 액세스를 사용하도록 설정할 수 있습니다.",
+ "guid": "0906a42b-c081-4ba8-bef8-04633017558c",
+ "service": "Azure Blob Storage",
+ "text": "컨테이너 및 blob에 대한 익명 읽기 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "계정을 잠그면 계정이 삭제되어 데이터가 손실되는 것을 방지할 수 있습니다.",
+ "guid": "ed64645f-1d29-48f6-ac60-d072f840a0b9",
+ "service": "Azure Blob Storage",
+ "text": "스토리지 계정에 Azure Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "제로 액세스부터 시작한 다음 클라이언트 및 서비스에 필요한 가장 낮은 수준의 액세스 권한을 증분 방식으로 부여하여 공격자에게 불필요한 틈을 만드는 위험을 최소화합니다.",
+ "guid": "c8c2f2d2-3aca-4483-9092-c5e078bd7488",
+ "service": "Azure Blob Storage",
+ "text": "스토리지 계정의 퍼블릭 엔드포인트에 대한 트래픽을 사용하지 않도록 설정합니다. Azure에서 실행되는 클라이언트에 대한 프라이빗 엔드포인트를 만듭니다. Azure 외부의 클라이언트 및 서비스에 스토리지 계정에 대한 직접 액세스가 필요한 경우에만 퍼블릭 엔드포인트를 사용하도록 설정합니다. 특정 가상 네트워크에 대한 액세스를 제한하는 방화벽 규칙을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "RBAC를 사용하면 손상될 수 있는 암호나 키가 없습니다. 보안 주체(사용자, 그룹, 관리 ID 또는 서비스 주체)는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID로 인증됩니다. 토큰은 Blob Storage 서비스에 대한 요청을 승인하는 데 사용됩니다.",
+ "guid": "4784f5c3-bc75-45a7-b309-e39a328d352b",
+ "service": "Azure Blob Storage",
+ "text": "Azure RBAC(역할 기반 액세스 제어)를 사용하여 액세스 권한을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Microsoft Entra ID로 권한이 부여된 보안 요청만 허용됩니다.",
+ "guid": "9b699609-816c-4658-af6d-dc939f1edd51",
+ "service": "Azure Blob Storage",
+ "text": "공유 키 권한 부여를 허용하지 않습니다. 이렇게 하면 계정 키 액세스뿐만 아니라 서비스 및 계정 공유 액세스 서명 토큰도 계정 키를 기반으로 하기 때문에 비활성화됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Key Vault를 사용하면 애플리케이션을 사용하여 키를 저장하는 대신 런타임에 키를 검색할 수 있습니다. 또한 Key Vault를 사용하면 애플리케이션을 중단하지 않고 키를 쉽게 회전할 수 있습니다. 계정 키를 주기적으로 교체하면 데이터가 악의적인 공격에 노출될 위험을 줄일 수 있습니다.",
+ "guid": "edf07227-fd13-41c0-8e4e-dbba1e9e5240",
+ "service": "Azure Blob Storage",
+ "text": "계정 키는 사용하지 않는 것이 좋습니다. 계정 키를 사용해야 하는 경우 Key Vault에 저장하고 주기적으로 다시 생성해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "모범 사례는 공유 액세스 서명 토큰이 유출되는 것을 방지하고 유출이 발생할 경우 신속하게 복구하는 데 도움이 될 수 있습니다.",
+ "guid": "1432d7ef-8818-4563-86fe-eead1fc727b9",
+ "service": "Azure Blob Storage",
+ "text": "공유 액세스 서명 토큰을 사용하지 않는 것이 좋습니다. Blob Storage 리소스에 대한 액세스를 보호하기 위해 공유 액세스 서명 토큰이 필요한지 여부를 평가합니다. 공유 액세스 서명을 만들어야 하는 경우 공유 액세스 서명을 만들고 배포하기 전에 이 공유 액세스 서명 모범 사례 목록을 검토하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 1.2는 최신 암호화 알고리즘 및 암호 그룹을 지원하지 않는 TLS 1.0 및 1.1보다 안전하고 빠릅니다.",
+ "guid": "d2308a89-4f5c-4997-b38f-d4fa5585fbda",
+ "service": "Azure Blob Storage",
+ "text": "클라이언트가 최소 버전의 TLS 1.2를 사용하여 데이터를 보내고 받을 수 있도록 스토리지 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "고객 관리형 키는 더 큰 유연성과 제어를 제공합니다. 예를 들어 Key Vault에 암호화 키를 저장하고 자동으로 회전할 수 있습니다.",
+ "guid": "82c9cd68-5f8f-496a-a84f-abbf6ce339c3",
+ "service": "Azure Blob Storage",
+ "text": "사용자 고유의 암호화 키를 사용하여 스토리지 계정의 데이터를 보호하는 것이 좋습니다. 자세한 내용은 Azure Storage 암호화에 대한 고객 관리형 키를 참조하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "쿨 계층은 데이터 전송 비용이 더 높습니다. 더 적은 수의 큰 파일을 보유하면 데이터를 전송하는 데 필요한 작업 수를 줄일 수 있습니다.",
+ "guid": "d7f07d9a-eff1-48c0-85c1-31c641051313",
+ "service": "Azure Blob Storage",
+ "text": "쿨 계층으로 이동하기 전에 작은 파일을 더 큰 파일로 압축합니다. TAR 또는 ZIP과 같은 파일 형식을 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "보관 계층의 우선 순위가 높은 리하이드레이션은 정상보다 높은 청구로 이어질 수 있습니다.",
+ "guid": "c122df96-d477-4595-acf5-501023d8f002",
+ "service": "Azure Blob Storage",
+ "text": "보관 스토리지에서 Blob을 리하이드레이션할 때 표준 우선 순위 리하이드레이션을 사용합니다. 우선 순위가 높은 리하이드레이션은 응급 데이터 복원 상황에만 사용합니다. 자세한 내용은 보관된 Blob을 온라인 계층으로 리하이드레이션을 참조하세요.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "나중에 분석하기 위해 스토리지 계정에 리소스 로그를 저장하는 것이 더 저렴한 옵션일 수 있습니다. 수명 주기 관리 정책을 사용하여 스토리지 계정의 로그 보존을 관리하면 시간이 지남에 따라 많은 수의 로그 파일이 쌓이는 것을 방지할 수 있으며, 이로 인해 불필요한 용량 요금이 발생할 수 있습니다.",
+ "guid": "0393ace4-ae00-4510-a626-24fd6c331e91",
+ "service": "Azure Blob Storage",
+ "text": "적절한 로그 저장 위치를 선택하고 로그 보존 기간을 관리하여 리소스 로그 사용 비용을 줄입니다. 가끔씩만 로그를 쿼리하려는 경우(예: 규정 준수 감사를 위해 로그를 쿼리하는 경우) 리소스 로그를 Azure Monitor 로그 작업 영역으로 보내는 대신 스토리지 계정으로 보내는 것이 좋습니다. Azure Synapse Analytics와 같은 서버리스 쿼리 솔루션을 사용하여 로그를 분석할 수 있습니다. 자세한 내용은 자주 발생하지 않는 쿼리에 대한 비용 최적화를 참조하세요. 수명 주기 관리 정책을 사용하여 로그를 삭제하거나 보관합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob에 대한 모든 쓰기 작업은 새 버전을 만듭니다. 이로 인해 용량 비용이 증가합니다. 더 이상 필요하지 않은 버전을 제거하여 비용을 확인할 수 있습니다.",
+ "guid": "514fae4b-0f5c-4107-9b2e-cf9d20192634",
+ "service": "Azure Blob Storage",
+ "text": "버전 관리를 사용하도록 설정하는 경우 수명 주기 관리 정책을 사용하여 이전 Blob 버전을 자동으로 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob을 덮어쓸 때마다 새 버전이 추가되어 스토리지 용량 요금이 증가합니다. 용량 요금을 줄이려면 버전 관리를 사용하지 않도록 설정된 별도의 스토리지 계정에 자주 덮어쓰는 데이터를 저장합니다.",
+ "guid": "c33bbf5b-3635-4aed-acb1-0a0b697cff0a",
+ "service": "Azure Blob Storage",
+ "text": "버전 관리를 사용하도록 설정하는 경우 버전 관리를 사용하도록 설정하지 않은 계정에 자주 덮어쓰는 Blob을 배치합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob을 덮어쓸 때마다 새 스냅샷이 만들어집니다. 용량 요금 증가의 원인은 이러한 스냅샷의 생성이 로그에 표시되지 않기 때문에 액세스하기 어려울 수 있습니다. 용량 요금을 줄이려면 자주 덮어쓰는 데이터를 일시 삭제가 비활성화된 별도의 스토리지 계정에 저장합니다. 보존 기간은 일시 삭제된 Blob이 쌓여 용량 비용에 추가되는 것을 방지합니다.",
+ "guid": "0d4d5fa0-eff6-4fff-88b1-17b542978ea1",
+ "service": "Azure Blob Storage",
+ "text": "일시 삭제를 사용하도록 설정하는 경우 자주 덮어쓰는 Blob을 일시 삭제를 사용하도록 설정하지 않은 계정에 배치합니다. 보존 기간을 설정합니다. 기능이 청구서에 어떤 영향을 미치는지 더 잘 이해하기 위해 짧은 보존 기간부터 시작하는 것이 좋습니다. 최소 권장 보존 기간은 7일입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "SFTP 엔드포인트를 활성화하면 시간당 비용이 발생합니다. SFTP 지원을 신중하게 비활성화한 다음 필요에 따라 활성화하면 계정에 수동 요금이 발생하는 것을 방지할 수 있습니다.",
+ "guid": "35ebda6d-7534-4808-84f7-70bd3adb0f35",
+ "service": "Azure Blob Storage",
+ "text": "데이터 전송에 사용되는 경우에만 SFTP 지원을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "암호화 범위에는 월별 요금이 부과됩니다.",
+ "guid": "9ca25392-5ed4-43e6-af70-33fea033e859",
+ "service": "Azure Blob Storage",
+ "text": "불필요한 요금을 방지하기 위해 필요하지 않은 암호화 범위를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "기존 DevOps 프로세스를 사용하여 새 스토리지 계정을 배포하고 Azure Policy를 사용하여 구성을 적용할 수 있습니다.",
+ "guid": "ce1d3a00-f0c5-47c1-b230-5a199e462b52",
+ "service": "Azure Blob Storage",
+ "text": "IaC(Infrastructure as Code)를 사용하여 ARM 템플릿(Azure Resource Manager 템플릿), Bicep 또는 Terraform에서 스토리지 계정의 세부 정보를 정의합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 계정의 상태와 운영을 추적할 수 있습니다. 이해 관계자가 스토리지 계정의 상태를 추적하는 데 사용할 수 있는 대시보드 및 보고서를 쉽게 만들 수 있습니다.",
+ "guid": "a06df82c-98fb-4219-9708-6cb27a3b9c71",
+ "service": "Azure Blob Storage",
+ "text": "Storage 인사이트를 사용하여 스토리지 계정의 상태와 성능을 추적합니다. Storage 인사이트는 모든 스토리지 계정에 대한 오류, 성능, 가용성 및 용량에 대한 통합 보기를 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "스토리지 계정과 VM, 서비스 및 온-프레미스 클라이언트 간의 물리적 거리를 줄이면 성능이 향상되고 네트워크 대기 시간이 줄어들 수 있습니다. 물리적 거리를 줄이면 단일 지역 내의 대역폭 사용량이 무료이기 때문에 Azure에서 호스팅되는 애플리케이션의 비용도 절감됩니다.",
+ "guid": "5e724a0a-d268-47ae-9dcf-7ef18d870d1d",
+ "service": "Azure Blob Storage",
+ "text": "종속 리소스가 배치된 동일한 지역에 저장소 계정을 프로비전합니다. 모바일 디바이스 앱 또는 온-프레미스 엔터프라이즈 서비스와 같이 Azure에서 호스트되지 않는 애플리케이션의 경우 해당 클라이언트에 더 가까운 지역에서 스토리지 계정을 찾습니다. 자세한 내용은 Azure 지역을 참조하세요. 다른 지역의 클라이언트에 동일한 데이터가 필요하지 않은 경우 각 지역에서 별도의 계정을 만듭니다. 다른 지역의 클라이언트에 일부 데이터만 필요한 경우 개체 복제 정책을 사용하여 관련 개체를 다른 지역의 스토리지 계정에 비동기적으로 복사하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "콘텐츠는 전 세계 수백 개의 글로벌 및 로컬 접속 지점이 있는 Microsoft 글로벌 에지 네트워크를 사용하기 때문에 클라이언트에게 더 빠르게 제공됩니다.",
+ "guid": "4dea9363-c277-4793-b9e2-e8737aeb619f",
+ "service": "Azure Blob Storage",
+ "text": "웹 클라이언트(스트리밍 비디오, 오디오 또는 정적 웹 사이트 콘텐츠)에서 광범위하게 사용하려면 Azure Front Door를 통해 콘텐츠 배달 네트워크를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "파티션 키의 시작 부분에 가장 가까운 해시 코드 또는 초 값을 사용하면 Blob을 나열, 쿼리 및 읽는 데 필요한 시간이 줄어듭니다.",
+ "guid": "cc147319-67cb-4737-ba01-285f3ebddcea",
+ "service": "Azure Blob Storage",
+ "text": "Blob의 파티션 키에 가능한 한 빨리 해시 문자 시퀀스(예: 3자리 숫자)를 추가합니다. 파티션 키는 계정 이름, 컨테이너 이름, 가상 디렉터리 이름 및 Blob 이름입니다. 이름에 타임스탬프를 사용하려는 경우 해당 스탬프의 시작 부분에 초 값을 추가하는 것이 좋습니다. 자세한 내용은 Partitioning을 참조하십시오.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Blob 또는 256KiB 이상의 블록 크기는 더 큰 Blob 및 블록 크기를 위해 특별히 제작된 플랫폼의 성능 향상을 활용합니다.",
+ "guid": "a0addee3-cb0e-4235-b93c-8d5a8ddfbab2",
+ "service": "Azure Blob Storage",
+ "text": "Blob 또는 블록을 업로드할 때 256KiB보다 큰 Blob 또는 블록 크기를 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Blob Storage Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.pt.json b/checklists-ext/azureblobstorage_sg_checklist.pt.json
new file mode 100644
index 000000000..9e792e214
--- /dev/null
+++ b/checklists-ext/azureblobstorage_sg_checklist.pt.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "A redundância protege seus dados contra falhas inesperadas. As opções de configuração ZRS e GZRS são replicadas em diferentes zonas de disponibilidade e permitem que os aplicativos continuem lendo dados durante uma interrupção. Para obter mais informações, consulte Durabilidade e disponibilidade por cenário de interrupção e Parâmetros de durabilidade e disponibilidade.",
+ "guid": "561e09d2-403f-42d4-9d64-dcf0c8845a7b",
+ "service": "Azure Blob Storage",
+ "text": "Configure sua conta para redundância. Para obter disponibilidade e durabilidade máximas, configure sua conta usando ZRS (armazenamento com redundância de zona) ou GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa propriedade ajuda a estimar a quantidade de dados que você pode perder ao iniciar um failover de conta. Todos os dados e metadados gravados antes da última hora de sincronização estão disponíveis na região secundária, mas os dados e metadados gravados após a última hora de sincronização podem ser perdidos porque não são gravados na região secundária.",
+ "guid": "1cb9a83e-5e1f-4fa2-9fd6-b2e26a5462db",
+ "service": "Azure Blob Storage",
+ "text": "Antes de iniciar um failover ou failback, avalie o potencial de perda de dados verificando o valor da propriedade da hora da última sincronização. Essa recomendação se aplica somente às configurações GRS e GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A opção de exclusão reversível permite que uma conta de armazenamento recupere contêineres e blobs excluídos. A opção de controle de versão rastreia automaticamente as alterações feitas nos blobs. Essa opção permite restaurar um blob para um estado anterior. A opção de restauração pontual protege contra exclusão ou corrupção acidental de blob e permite restaurar dados de blob de blocos para um estado anterior. Para obter mais informações, consulte Visão geral da proteção de dados.",
+ "guid": "d095b8f1-86f8-4345-a730-c079330d8a19",
+ "service": "Azure Blob Storage",
+ "text": "Como parte de sua estratégia de backup e recuperação, habilite as opções de exclusão reversível de contêiner, exclusão reversível de blob, controle de versão e restauração pontual.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Quando o acesso anônimo é permitido para uma conta de armazenamento, um usuário que tenha as permissões apropriadas pode modificar a configuração de acesso anônimo de um contêiner para habilitar o acesso anônimo aos dados nesse contêiner.",
+ "guid": "0906a42b-c081-4ba8-bef8-04633017558c",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite o acesso de leitura anônimo a contêineres e blob.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Bloquear uma conta impede que ela seja excluída e cause perda de dados.",
+ "guid": "ed64645f-1d29-48f6-ac60-d072f840a0b9",
+ "service": "Azure Blob Storage",
+ "text": "Aplique um bloqueio do Azure Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Comece com acesso zero e, em seguida, autorize incrementalmente os níveis mais baixos de acesso necessários para clientes e serviços para minimizar o risco de criar aberturas desnecessárias para invasores.",
+ "guid": "c8c2f2d2-3aca-4483-9092-c5e078bd7488",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite o tráfego para os pontos de extremidade públicos da sua conta de armazenamento. Crie pontos de extremidade privados para clientes executados no Azure. Habilite o ponto de extremidade público somente se os clientes e serviços externos ao Azure exigirem acesso direto à sua conta de armazenamento. Habilite regras de firewall que limitam o acesso a redes virtuais específicas.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o RBAC, não há senhas ou chaves que possam ser comprometidas. A entidade de segurança (usuário, grupo, identidade gerenciada ou entidade de serviço) é autenticada pela ID do Microsoft Entra para retornar um token OAuth 2.0. O token é usado para autorizar uma solicitação no serviço de Armazenamento de Blobs.",
+ "guid": "4784f5c3-bc75-45a7-b309-e39a328d352b",
+ "service": "Azure Blob Storage",
+ "text": "Autorize o acesso usando o RBAC (controle de acesso baseado em função) do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Somente solicitações protegidas autorizadas com a ID do Microsoft Entra são permitidas.",
+ "guid": "9b699609-816c-4658-af6d-dc939f1edd51",
+ "service": "Azure Blob Storage",
+ "text": "Não permitir autorização de chave compartilhada. Isso desabilita não apenas o acesso à chave da conta, mas também os tokens de assinatura de acesso compartilhado do serviço e da conta, pois eles são baseados em chaves de conta.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Key Vault permite recuperar chaves em runtime, em vez de salvá-las usando seu aplicativo. O Key Vault também facilita a rotação de suas chaves sem interrupção de seus aplicativos. Girar as chaves da conta periodicamente reduz o risco de expor seus dados a ataques maliciosos.",
+ "guid": "edf07227-fd13-41c0-8e4e-dbba1e9e5240",
+ "service": "Azure Blob Storage",
+ "text": "Recomendamos que você não use uma chave de conta. Se você precisar usar chaves de conta, armazene-as no Key Vault e certifique-se de regenerá-las periodicamente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As práticas recomendadas podem ajudá-lo a evitar que um token de assinatura de acesso compartilhado seja vazado e se recuperar rapidamente se ocorrer um vazamento.",
+ "guid": "1432d7ef-8818-4563-86fe-eead1fc727b9",
+ "service": "Azure Blob Storage",
+ "text": "Recomendamos que você não use tokens de assinatura de acesso compartilhado. Avalie se você precisa de tokens de assinatura de acesso compartilhado para proteger o acesso aos recursos do Armazenamento de Blobs. Se você precisar criar uma, examine esta lista de práticas recomendadas de assinatura de acesso compartilhado antes de criá-la e distribuí-la.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS 1.2 é mais seguro e rápido do que o TLS 1.0 e 1.1, que não oferecem suporte a algoritmos criptográficos modernos e conjuntos de criptografia.",
+ "guid": "d2308a89-4f5c-4997-b38f-d4fa5585fbda",
+ "service": "Azure Blob Storage",
+ "text": "Configure sua conta de armazenamento para que os clientes possam enviar e receber dados usando a versão mínima do TLS 1.2.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As chaves gerenciadas pelo cliente fornecem maior flexibilidade e controle. Por exemplo, você pode armazenar chaves de criptografia no Key Vault e girá-las automaticamente.",
+ "guid": "82c9cd68-5f8f-496a-a84f-abbf6ce339c3",
+ "service": "Azure Blob Storage",
+ "text": "Considere usar sua própria chave de criptografia para proteger os dados em sua conta de armazenamento. Para obter mais informações, consulte Chaves gerenciadas pelo cliente para criptografia do Armazenamento do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As camadas mais frias têm custos de transferência de dados mais altos. Com menos arquivos grandes, você pode reduzir o número de operações necessárias para transferir dados.",
+ "guid": "d7f07d9a-eff1-48c0-85c1-31c641051313",
+ "service": "Azure Blob Storage",
+ "text": "Empacote arquivos pequenos em arquivos maiores antes de movê-los para camadas mais frias. Você pode usar formatos de arquivo como TAR ou ZIP.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A reidratação de alta prioridade da camada de arquivamento pode levar a contas mais altas do que o normal.",
+ "guid": "c122df96-d477-4595-acf5-501023d8f002",
+ "service": "Azure Blob Storage",
+ "text": "Use a reidratação de prioridade padrão ao reidratar blobs do armazenamento de arquivos. Use a reidratação de alta prioridade apenas para situações de restauração de dados de emergência. Para obter mais informações, consulte Reidratar um blob arquivado para uma camada online",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Armazenar logs de recursos em uma conta de armazenamento para análise posterior pode ser uma opção mais barata. O uso de políticas de gerenciamento de ciclo de vida para gerenciar a retenção de log em uma conta de armazenamento evita que um grande número de arquivos de log se acumule ao longo do tempo, o que pode levar a cobranças de capacidade desnecessárias.",
+ "guid": "0393ace4-ae00-4510-a626-24fd6c331e91",
+ "service": "Azure Blob Storage",
+ "text": "Reduza o custo do uso de logs de recursos escolhendo o local de armazenamento de log apropriado e gerenciando os períodos de retenção de log. Se você planeja consultar logs apenas ocasionalmente (por exemplo, consultar logs para auditoria de conformidade), considere enviar logs de recursos para uma conta de armazenamento em vez de enviá-los para um workspace de Logs do Azure Monitor. Você pode usar uma solução de consulta sem servidor, como o Azure Synapse Analytics, para analisar logs. Para obter mais informações, consulte Otimizar o custo para consultas pouco frequentes. Use políticas de gerenciamento de ciclo de vida para excluir ou arquivar logs.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Cada operação de gravação em um blob cria uma nova versão. Isso aumenta os custos de capacidade. Você pode manter os custos sob controle removendo versões que não são mais necessárias.",
+ "guid": "514fae4b-0f5c-4107-9b2e-cf9d20192634",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar o controle de versão, use uma política de gerenciamento de ciclo de vida para excluir automaticamente versões antigas de blob.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Sempre que um blob é substituído, uma nova versão é adicionada, o que leva a um aumento nos encargos de capacidade de armazenamento. Para reduzir os encargos de capacidade, armazene dados substituídos com frequência em uma conta de armazenamento separada com o controle de versão desabilitado.",
+ "guid": "c33bbf5b-3635-4aed-acb1-0a0b697cff0a",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar o controle de versão, coloque os blobs que são substituídos com frequência em uma conta que não tenha o controle de versão habilitado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Sempre que um blob é substituído, um novo instantâneo é criado. A causa do aumento das cobranças de capacidade pode ser difícil de acessar porque a criação desses snapshots não aparece nos logs. Para reduzir os encargos de capacidade, armazene dados substituídos com frequência em uma conta de armazenamento separada com a exclusão reversível desabilitada. Um período de retenção impede que os blobs excluídos temporariamente se acumulem e aumentem o custo da capacidade.",
+ "guid": "0d4d5fa0-eff6-4fff-88b1-17b542978ea1",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar a exclusão reversível, coloque os blobs que são substituídos com frequência em uma conta que não tenha a exclusão reversível habilitada. Defina períodos de retenção. Considere começar com um curto período de retenção para entender melhor como o recurso afeta sua fatura. O período mínimo de retenção recomendado é de sete dias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A ativação do ponto de extremidade do SFTP incorre em um custo por hora. Ao desabilitar cuidadosamente o suporte ao SFTP e, em seguida, ativá-lo conforme necessário, você pode evitar que cobranças passivas sejam acumuladas em sua conta.",
+ "guid": "35ebda6d-7534-4808-84f7-70bd3adb0f35",
+ "service": "Azure Blob Storage",
+ "text": "Habilite o suporte a SFTP somente quando ele for usado para transferir dados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os escopos de criptografia incorrem em uma cobrança por mês.",
+ "guid": "9ca25392-5ed4-43e6-af70-33fea033e859",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite todos os escopos de criptografia que não são necessários para evitar cobranças desnecessárias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode usar seus processos de DevOps existentes para implantar novas contas de armazenamento e usar o Azure Policy para impor sua configuração.",
+ "guid": "ce1d3a00-f0c5-47c1-b230-5a199e462b52",
+ "service": "Azure Blob Storage",
+ "text": "Use a IaC (infraestrutura como código) para definir os detalhes de suas contas de armazenamento em modelos do ARM (modelos do Azure Resource Manager), Bicep ou Terraform.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode acompanhar a integridade e a operação de cada uma de suas contas. Crie facilmente dashboards e relatórios que os stakeholders podem usar para acompanhar a integridade de suas contas de armazenamento.",
+ "guid": "a06df82c-98fb-4219-9708-6cb27a3b9c71",
+ "service": "Azure Blob Storage",
+ "text": "Use os insights de armazenamento para acompanhar a integridade e o desempenho de suas contas de armazenamento. Os insights de armazenamento fornecem uma visão unificada das falhas, desempenho, disponibilidade e capacidade de todas as suas contas de armazenamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Reduzir a distância física entre a conta de armazenamento e VMs, serviços e clientes locais pode melhorar o desempenho e reduzir a latência da rede. Reduzir a distância física também reduz o custo para aplicativos hospedados no Azure porque o uso da largura de banda em uma única região é gratuito.",
+ "guid": "5e724a0a-d268-47ae-9dcf-7ef18d870d1d",
+ "service": "Azure Blob Storage",
+ "text": "Provisione contas de armazenamento na mesma região em que os recursos dependentes são colocados. Para aplicativos que não estão hospedados no Azure, como aplicativos de dispositivo móvel ou serviços empresariais locais, localize a conta de armazenamento em uma região mais próxima desses clientes. Para obter mais informações, consulte Geografias do Azure. Se os clientes de uma região diferente não exigirem os mesmos dados, crie uma conta separada em cada região. Se os clientes de uma região diferente exigirem apenas alguns dados, considere usar uma política de replicação de objeto para copiar objetos relevantes de forma assíncrona para uma conta de armazenamento na outra região.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O conteúdo é entregue aos clientes mais rapidamente porque usa a rede de borda global da Microsoft com centenas de pontos de presença globais e locais em todo o mundo.",
+ "guid": "4dea9363-c277-4793-b9e2-e8737aeb619f",
+ "service": "Azure Blob Storage",
+ "text": "Para amplo consumo por clientes Web (streaming de vídeo, áudio ou conteúdo estático do site), considere usar uma rede de distribuição de conteúdo por meio do Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O uso de um código de hash ou um valor de segundos mais próximo do início de uma chave de partição reduz o tempo necessário para listar, consultar e ler blobs.",
+ "guid": "cc147319-67cb-4737-ba01-285f3ebddcea",
+ "service": "Azure Blob Storage",
+ "text": "Adicione uma sequência de caracteres de hash (como três dígitos) o mais cedo possível na chave de partição de um blob. A chave de partição é o nome da conta, o nome do contêiner, o nome do diretório virtual e o nome do blob. Se você planeja usar carimbos de data/hora em nomes, considere adicionar um valor de segundos ao início desse carimbo. Para obter mais informações, consulte Particionamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Tamanhos de blob ou bloco acima de 256 KiB aproveitam os aprimoramentos de desempenho na plataforma feitos especificamente para blobs e tamanhos de bloco maiores.",
+ "guid": "a0addee3-cb0e-4235-b93c-8d5a8ddfbab2",
+ "service": "Azure Blob Storage",
+ "text": "Ao carregar blobs ou blocos, use um tamanho de blob ou bloco maior que 256 KiB.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Blob Storage Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureblobstorage_sg_checklist.zh-Hant.json b/checklists-ext/azureblobstorage_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..3d91b936f
--- /dev/null
+++ b/checklists-ext/azureblobstorage_sg_checklist.zh-Hant.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "冗餘可保護您的數據免受意外故障的影響。ZRS 和 GZRS 設定選項可在不同的可用性區域之間複製,並使應用程式能夠在中斷期間繼續讀取數據。有關詳細資訊,請參閱按中斷方案劃分的持久性和可用性以及持久性和可用性參數。",
+ "guid": "561e09d2-403f-42d4-9d64-dcf0c8845a7b",
+ "service": "Azure Blob Storage",
+ "text": "配置您的帳戶以實現冗餘。為了獲得最大的可用性和持久性,請使用區域冗餘存儲 (ZRS) 或 GZRS 配置您的帳戶。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此屬性可幫助您估計啟動帳戶故障轉移時可能丟失的數據量。在上次同步時間之前寫入的所有數據和元數據在次要區域上都可用,但在上次同步時間之後寫入的數據和元數據可能會丟失,因為它不會寫入次要區域。",
+ "guid": "1cb9a83e-5e1f-4fa2-9fd6-b2e26a5462db",
+ "service": "Azure Blob Storage",
+ "text": "在啟動故障轉移或故障回復之前,請通過檢查上次同步時間屬性的值來評估數據丟失的可能性。此建議僅適用於 GRS 和 GZRS 配置。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "使用軟刪除選項,存儲帳戶可以恢復已刪除的容器和 Blob。版本控制選項會自動跟蹤對 blob 所做的更改。此選項使您可以將 blob 還原到以前的狀態。時間點還原選項可防止意外刪除或損壞 blob,並允許將塊 blob 數據還原到早期狀態。有關詳細資訊,請參閱數據保護概述。",
+ "guid": "d095b8f1-86f8-4345-a730-c079330d8a19",
+ "service": "Azure Blob Storage",
+ "text": "作為備份和恢復策略的一部分,請啟用容器軟刪除、blob 軟刪除、版本控制和時間點還原選項。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當允許對存儲帳戶進行匿名訪問時,具有適當許可權的使用者可以修改容器的匿名訪問設置,以啟用對該容器中數據的匿名訪問。",
+ "guid": "0906a42b-c081-4ba8-bef8-04633017558c",
+ "service": "Azure Blob Storage",
+ "text": "禁用對容器和 blob 的匿名讀取訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "鎖定帳戶可以防止其被刪除並導致數據丟失。",
+ "guid": "ed64645f-1d29-48f6-ac60-d072f840a0b9",
+ "service": "Azure Blob Storage",
+ "text": "在存儲帳戶上應用 Azure 資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "從零訪問開始,然後逐步授權客戶端和服務所需的最低訪問級別,以最大限度地降低為攻擊者創造不必要機會的風險。",
+ "guid": "c8c2f2d2-3aca-4483-9092-c5e078bd7488",
+ "service": "Azure Blob Storage",
+ "text": "禁用流向存儲帳戶的公共終結點的流量。為在 Azure 中運行的用戶端創建專用終結點。僅當 Azure 外部的用戶端和服務需要直接存取記憶體帳戶時,才啟用公共終結點。啟用防火牆規則,限制對特定虛擬網路的訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 RBAC,沒有可以洩露的密碼或金鑰。安全主體(使用者、組、託管標識或服務主體)由 Microsoft Entra ID 進行身份驗證,以返回 OAuth 2.0 令牌。令牌用於授權針對 Blob 儲存服務的請求。",
+ "guid": "4784f5c3-bc75-45a7-b309-e39a328d352b",
+ "service": "Azure Blob Storage",
+ "text": "使用 Azure 基於角色的存取控制 (RBAC) 授權存取權限。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "僅允許使用 Microsoft Entra ID 授權的安全請求。",
+ "guid": "9b699609-816c-4658-af6d-dc939f1edd51",
+ "service": "Azure Blob Storage",
+ "text": "禁止共用金鑰授權。這不僅會禁用帳戶密鑰訪問,還會禁用服務和帳戶共用訪問簽名令牌,因為它們基於帳戶密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault 允許在運行時檢索金鑰,而不是使用應用程式保存密鑰。Key Vault 還使輪換密鑰變得容易,而不會中斷應用程式。定期輪換帳戶密鑰可以降低將數據暴露給惡意攻擊的風險。",
+ "guid": "edf07227-fd13-41c0-8e4e-dbba1e9e5240",
+ "service": "Azure Blob Storage",
+ "text": "我們建議您不要使用帳戶密鑰。如果必須使用帳戶密鑰,請將其存儲在 Key Vault 中,並確保定期重新生成它們。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最佳做法可説明你防止共享訪問簽名令牌洩露,並在發生洩漏時快速恢復。",
+ "guid": "1432d7ef-8818-4563-86fe-eead1fc727b9",
+ "service": "Azure Blob Storage",
+ "text": "建議不要使用共用訪問簽名令牌。評估是否需要共用訪問簽名令牌來保護對 Blob 儲存資源的訪問。如果必須創建一個,請在創建和分發共用訪問簽名之前查看此共享訪問簽名最佳做法清單。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 比 TLS 1.0 和 1.1 更安全、更快,後者不支援現代加密演算法和密碼套件。",
+ "guid": "d2308a89-4f5c-4997-b38f-d4fa5585fbda",
+ "service": "Azure Blob Storage",
+ "text": "配置存儲帳戶,以便用戶端可以使用 TLS 1.2 的最低版本發送和接收數據。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "客戶管理的金鑰提供了更大的靈活性和控制力。例如,可以將加密密鑰存儲在 Key Vault 中,並自動輪換它們。",
+ "guid": "82c9cd68-5f8f-496a-a84f-abbf6ce339c3",
+ "service": "Azure Blob Storage",
+ "text": "請考慮使用自己的加密金鑰來保護記憶體中的資料。有關詳細資訊,請參閱用於 Azure 儲存加密的客戶管理的密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "較冷的層具有更高的數據傳輸成本。通過減少大文件的數量,可以減少傳輸數據所需的操作數量。",
+ "guid": "d7f07d9a-eff1-48c0-85c1-31c641051313",
+ "service": "Azure Blob Storage",
+ "text": "將小檔打包到較大檔中,然後再將它們移動到較冷的層。您可以使用 TAR 或 ZIP 等檔案格式。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "來自存檔層的高優先順序解除凍結可能會導致帳單高於正常水準。",
+ "guid": "c122df96-d477-4595-acf5-501023d8f002",
+ "service": "Azure Blob Storage",
+ "text": "從存檔存儲中解除凍結 blob 時,請使用標準優先順序解除凍結。僅在緊急數據恢復情況下使用高優先順序解除凍結。有關詳細資訊,請參閱將存檔的 blob 解除凍結到連線層",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "將資源日誌存儲在存儲帳戶中以供以後分析可能是一個更便宜的選項。使用生命週期管理策略來管理存儲帳戶中的日誌保留期可以防止大量日誌檔隨著時間的推移而積累,這可能會導致不必要的容量費用。",
+ "guid": "0393ace4-ae00-4510-a626-24fd6c331e91",
+ "service": "Azure Blob Storage",
+ "text": "通過選擇適當的日誌存儲位置並管理日誌保留期,降低使用資源日誌的成本。如果只計劃偶爾查詢日誌(例如,查詢日誌以進行合規性審核),請考慮將資源日誌發送到存儲帳戶,而不是將其發送到 Azure Monitor 日誌工作區。可以使用無伺服器查詢解決方案(例如 Azure Synapse Analytics)來分析日誌。有關詳細資訊,請參閱優化不頻繁查詢的成本。使用生命週期管理策略刪除或歸檔日誌。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "對 blob 的每個寫入操作都會創建一個新版本。這會增加容量成本。您可以通過刪除不再需要的版本來控制成本。",
+ "guid": "514fae4b-0f5c-4107-9b2e-cf9d20192634",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用版本控制,請使用生命週期管理策略自動刪除舊的 blob 版本。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "每次覆蓋 blob 時,都會添加一個新版本,這會導致存儲容量費用增加。若要降低容量費用,請將經常覆蓋的數據存儲在禁用了版本控制的單獨存儲帳戶中。",
+ "guid": "c33bbf5b-3635-4aed-acb1-0a0b697cff0a",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用版本控制,則將經常被覆蓋的 blob 放入未啟用版本控制的帳戶中。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "每次覆蓋 blob 時,都會創建一個新的快照。容量費用增加的原因可能難以訪問,因為這些快照的創建不會顯示在日誌中。若要降低容量費用,請將經常覆蓋的數據存儲在禁用軟刪除的單獨存儲帳戶中。保留期可防止軟刪除的 blob 堆積起來並增加容量成本。",
+ "guid": "0d4d5fa0-eff6-4fff-88b1-17b542978ea1",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用軟刪除,則將經常被覆蓋的 blob 放入未啟用軟刪除的帳戶中。設置保留期。請考慮從較短的保留期開始,以更好地瞭解該功能如何影響您的帳單。建議的最短保留期為 7 天。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "啟用SFTP終端節點會產生每小時費用。通過深思熟慮地禁用 SFTP 支援,然後根據需要啟用它,您可以避免在您的帳戶中產生被動費用。",
+ "guid": "35ebda6d-7534-4808-84f7-70bd3adb0f35",
+ "service": "Azure Blob Storage",
+ "text": "僅當 SFTP 支援用於傳輸數據時,才啟用 SFTP 支援。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "加密範圍每月產生費用。",
+ "guid": "9ca25392-5ed4-43e6-af70-33fea033e859",
+ "service": "Azure Blob Storage",
+ "text": "禁用任何不需要的加密範圍,以避免產生不必要的費用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "可以使用現有的 DevOps 流程來部署新的儲存帳戶,並使用 Azure Policy 強制實施其配置。",
+ "guid": "ce1d3a00-f0c5-47c1-b230-5a199e462b52",
+ "service": "Azure Blob Storage",
+ "text": "使用基礎結構即代碼 (IaC) 在 Azure 資源管理器範本(ARM 範本)、Bicep 或 Terraform 中定義記憶體帳戶的詳細資訊。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您可以追蹤每個帳戶的運行狀況和操作。輕鬆創建儀錶板和報告,利益幹系人可以使用這些儀錶板和報告來跟蹤存儲帳戶的運行狀況。",
+ "guid": "a06df82c-98fb-4219-9708-6cb27a3b9c71",
+ "service": "Azure Blob Storage",
+ "text": "使用存儲見解跟蹤存儲帳戶的運行狀況和性能。存儲見解提供所有存儲帳戶的故障、性能、可用性和容量的統一視圖。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "減少存儲帳戶與 VM、服務和本地用戶端之間的物理距離可以提高性能並減少網路延遲。減少物理距離還可以降低託管在 Azure 中的應用程式的成本,因為單個區域內的頻寬使用是免費的。",
+ "guid": "5e724a0a-d268-47ae-9dcf-7ef18d870d1d",
+ "service": "Azure Blob Storage",
+ "text": "在放置依賴資源的同一區域中預配存儲帳戶。對於未託管在 Azure 上的應用程式(例如行動裝置應用或本地企業服務),請將儲存帳戶放置在離這些用戶端更近的區域中。有關詳細資訊,請參閱 Azure 地理位置。如果來自不同區域的用戶端不需要相同的數據,則在每個區域創建一個單獨的帳戶。如果來自不同區域的用戶端只需要一些數據,請考慮使用物件複製策略將相關物件異步複製到另一個區域中的存儲帳戶。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "內容可以更快地交付給客戶端,因為它使用 Microsoft 全球邊緣網路,該網路在全球擁有數百個全球和本地存取點。",
+ "guid": "4dea9363-c277-4793-b9e2-e8737aeb619f",
+ "service": "Azure Blob Storage",
+ "text": "對於 Web 用戶端(流式傳輸視頻、音訊或靜態網站內容)的廣泛使用,請考慮通過 Azure Front Door 使用內容分發網路。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "使用最接近分區鍵開頭的哈希代碼或秒值可減少列出、查詢和讀取 blob 所需的時間。",
+ "guid": "cc147319-67cb-4737-ba01-285f3ebddcea",
+ "service": "Azure Blob Storage",
+ "text": "盡早在 blob 的分區鍵中添加哈希字元序列(例如三位數位)。分區鍵是帳戶名稱、容器名稱、虛擬目錄名稱和 blob 名稱。如果您計劃在名稱中使用時間戳,請考慮在該標記的開頭添加秒值。有關詳細資訊,請參閱分區。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "大於 256 KiB 的 blob 或塊大小可利用平臺中專門針對較大 blob 和塊大小的性能增強功能。",
+ "guid": "a0addee3-cb0e-4235-b93c-8d5a8ddfbab2",
+ "service": "Azure Blob Storage",
+ "text": "上傳 blob 或塊時,請使用大於 256 KiB 的 blob 或塊大小。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Blob Storage Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.en.json b/checklists-ext/azureexpressroute_sg_checklist.en.json
index 97918d9df..a85f93a38 100644
--- a/checklists-ext/azureexpressroute_sg_checklist.en.json
+++ b/checklists-ext/azureexpressroute_sg_checklist.en.json
@@ -212,35 +212,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -277,6 +277,6 @@
"name": "Azure Expressroute Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.es.json b/checklists-ext/azureexpressroute_sg_checklist.es.json
new file mode 100644
index 000000000..a2e7d822d
--- /dev/null
+++ b/checklists-ext/azureexpressroute_sg_checklist.es.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Durante la fase de planeación inicial, debe decidir si desea configurar un circuito ExpressRoute o una conexión ExpressRoute Direct. Un circuito ExpressRoute permite una conexión privada dedicada a Azure con la ayuda de un proveedor de conectividad. ExpressRoute Direct permite extender la red local directamente a la red de Microsoft en una ubicación de emparejamiento. También debe identificar el requisito de ancho de banda y el requisito de tipo de SKU para las necesidades de su empresa.",
+ "guid": "e89fb4a5-9cdd-4fd5-bb8b-388dee7bc217",
+ "service": "Azure Expressroute",
+ "text": "Planeación del circuito ExpressRoute o ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para mejorar la resistencia, planee tener varias rutas de acceso entre el perímetro local y las ubicaciones de emparejamiento (ubicaciones perimetrales del proveedor/Microsoft). Esta configuración se puede lograr a través de un proveedor de servicios diferente o a través de una ubicación diferente de la red local.",
+ "guid": "4f51aa2e-2a6a-4ea1-9c8a-f9ee668052af",
+ "service": "Azure Expressroute",
+ "text": "Diversidad de capas físicas",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para planear la recuperación ante desastres, configure circuitos ExpressRoute en más de una ubicación de emparejamiento. Puede crear circuitos en ubicaciones de emparejamiento en el mismo metro o en uno diferente y elegir trabajar con diferentes proveedores de servicios para diversas rutas a través de cada circuito. Para obtener más información, consulte Diseño para la recuperación ante desastres y Diseño para alta disponibilidad.",
+ "guid": "14b83764-dab1-4741-85ee-7b3cf55cde49",
+ "service": "Azure Expressroute",
+ "text": "Planeación de circuitos con redundancia geográfica",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los circuitos dedicados de ExpressRoute garantizan una disponibilidad del \"99,95 %\" cuando se configura una conectividad activo-activo entre el entorno local y Azure. Este modo proporciona una mayor disponibilidad de la conexión de Expressroute. También se recomienda configurar BFD para una conmutación por error más rápida si hay un error de vínculo en una conexión.",
+ "guid": "f28fea39-a9e2-45ef-a711-997456c3d42c",
+ "service": "Azure Expressroute",
+ "text": "Planeación de la conectividad Activo-Activo",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Cree una puerta de enlace de red virtual compatible con la zona de disponibilidad para una mayor resistencia y planifique puertas de enlace de red virtual en diferentes regiones para la recuperación ante desastres y la alta disponibilidad.",
+ "guid": "8e29e63c-2da5-4242-8a86-c7083b231b0f",
+ "service": "Azure Expressroute",
+ "text": "Planeación de puertas de enlace de red virtual",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Configure la supervisión y las alertas para los circuitos ExpressRoute y el estado de la puerta de enlace de red virtual en función de varias métricas disponibles.",
+ "guid": "0367cde8-2954-4b20-8be0-fb2b7e50eb91",
+ "service": "Azure Expressroute",
+ "text": "Supervise el estado de los circuitos y las puertas de enlace",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "ExpressRoute usa el estado del servicio para notificar sobre el mantenimiento planeado y no planeado. La configuración del estado del servicio le notificará sobre los cambios realizados en los circuitos ExpressRoute.",
+ "guid": "c7bf09c0-317f-4f7f-be8d-3d74444757c8",
+ "service": "Azure Expressroute",
+ "text": "Habilitar el estado del servicio",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los registros de actividad proporcionan información sobre las operaciones que se realizaron en el nivel de suscripción para los recursos de ExpressRoute. Con los registros de actividad, puede determinar quién y cuándo se realizó una operación en el plano de control. La retención de datos es de solo 90 días y debe almacenarse en Log Analytics, Event Hubs o una cuenta de almacenamiento para el archivo.",
+ "guid": "b1f76928-0fc3-407e-8658-f93f2812873f",
+ "service": "Azure Expressroute",
+ "text": "Configurar el registro de actividad para enviar registros al archivo",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use Azure RBAC para configurar roles para limitar las cuentas de usuario que pueden agregar, actualizar o eliminar la configuración de emparejamiento en un circuito ExpressRoute.",
+ "guid": "61fced7c-71af-4061-a73a-b880e8ee4f78",
+ "service": "Azure Expressroute",
+ "text": "Mantener el inventario de las cuentas administrativas",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Durante la configuración del emparejamiento privado o del emparejamiento de Microsoft, aplique un hash MD5 para proteger los mensajes entre la ruta local y los enrutadores MSEE.",
+ "guid": "7091a086-8128-45f8-81e6-c93548433b87",
+ "service": "Azure Expressroute",
+ "text": "Configuración del hash MD5 en el circuito ExpressRoute",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La seguridad del control de acceso a medios es una seguridad punto a punto en la capa de enlace de datos. ExpressRoute Direct admite la configuración de MACSec para evitar amenazas de seguridad a protocolos como ARP, DHCP, LACP que normalmente no están protegidos en el vínculo Ethernet. Para obtener más información sobre cómo configurar MACSec, consulte MACSec para puertos ExpressRoute Direct.",
+ "guid": "90d32454-fcb9-496d-a411-166a2fe50b6b",
+ "service": "Azure Expressroute",
+ "text": "Configuración de MACSec para recursos de ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Configure un túnel VPN de sitio a sitio a través del circuito ExpressRoute para cifrar la transferencia de datos entre la red local y la red virtual de Azure. Puede configurar un túnel mediante el emparejamiento privado o mediante el emparejamiento de Microsoft.",
+ "guid": "ef702434-e1ce-4c4b-a2a6-553c1d58f881",
+ "service": "Azure Expressroute",
+ "text": "Cifrar el tráfico mediante IPsec",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Para obtener información sobre los precios de ExpressRoute, consulte Descripción de los precios de Azure ExpressRoute. También puede utilizar la calculadora de precios. Asegúrese de que las opciones tengan el tamaño adecuado para satisfacer la demanda de capacidad y ofrecer el rendimiento esperado sin desperdiciar recursos.",
+ "guid": "8ae8772a-7131-42f9-9d2f-ce2aa5bcdd2b",
+ "service": "Azure Expressroute",
+ "text": "Familiarícese con los precios de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La forma en que se le cobra por el uso de ExpressRoute varía entre los tres tipos de SKU diferentes. Con el SKU local, se te cobra automáticamente un plan de datos ilimitados. Con los SKU Estándar y Premium, puedes seleccionar entre un plan de datos medido o ilimitado. Todos los datos de entrada son gratuitos, excepto cuando se utiliza el complemento Global Reach. Es importante comprender qué tipos de SKU y plan de datos funcionan mejor para su carga de trabajo para optimizar mejor el costo y el presupuesto. Para obtener más información sobre cómo cambiar el tamaño del circuito ExpressRoute, consulte Actualización del ancho de banda del circuito ExpressRoute.",
+ "guid": "18ef72cd-862c-43e8-b9ee-921fb5f079f0",
+ "service": "Azure Expressroute",
+ "text": "Determinar el SKU y el ancho de banda necesarios",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las puertas de enlace de red virtual de ExpressRoute se usan para pasar tráfico a una red virtual a través del emparejamiento privado. Revise las necesidades de rendimiento y escalado de la SKU de puerta de enlace de red virtual preferida. Seleccione la SKU de puerta de enlace adecuada en la carga de trabajo local a Azure.",
+ "guid": "3655e3bc-9d56-47f6-b7bc-c1a568aa3c8a",
+ "service": "Azure Expressroute",
+ "text": "Determinación del tamaño de la puerta de enlace de red virtual de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Supervise el costo del circuito ExpressRoute y cree alertas para anomalías de gasto y riesgos de gasto excesivo. Para obtener más información, consulte Supervisión de los costos de ExpressRoute.",
+ "guid": "3ade6188-d99d-47de-99e7-639136d3ac36",
+ "service": "Azure Expressroute",
+ "text": "Supervise los costos y cree alertas de presupuesto",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los circuitos ExpressRoute se cargan desde el momento en que se crean. Para reducir el costo innecesario, desaprovisione el circuito con el proveedor de servicios y elimine el circuito ExpressRoute de la suscripción. Para conocer los pasos sobre cómo quitar un circuito ExpressRoute, consulte Desaprovisionamiento de un circuito ExpressRoute.",
+ "guid": "ca8f1e36-5762-4510-b0af-5a073cc9185a",
+ "service": "Azure Expressroute",
+ "text": "Desaprovisionar y eliminar circuitos ExpressRoute que ya no estén en uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión de conexiones permite supervisar la conectividad entre los recursos locales y Azure a través del emparejamiento privado de ExpressRoute y la conexión de emparejamiento de Microsoft. El monitor de conexión puede detectar problemas de red identificando en qué parte de la ruta de red se encuentra el problema y ayudarlo a resolver rápidamente fallas de configuración o hardware.",
+ "guid": "c1dcf762-0191-4963-89d7-3cc1df34b653",
+ "service": "Azure Expressroute",
+ "text": "Configurar la supervisión de la conexión",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Configure las notificaciones de estado del servicio para avisar cuando se produzca un mantenimiento planeado y próximo en todos los circuitos ExpressRoute de la suscripción. El estado del servicio también muestra el mantenimiento anterior junto con el RCA si se produjera un mantenimiento no planificado.",
+ "guid": "60f840b9-1818-4967-a115-68e90f47daf3",
+ "service": "Azure Expressroute",
+ "text": "Configurar el estado del servicio",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "ExpressRoute Insights con Network Insights le permite revisar y analizar circuitos, puertas de enlace, métricas de conexiones y paneles de estado de ExpressRoute. ExpressRoute Insights también proporciona una vista de topología de las conexiones de ExpressRoute en la que puede ver los detalles de los componentes del emparejamiento en un solo lugar. Métricas disponibles:- Disponibilidad- Rendimiento- Métricas de puerta de enlace",
+ "guid": "c3c5fe66-1901-4786-99ea-845944bd6ca3",
+ "service": "Azure Expressroute",
+ "text": "Revise las métricas con Network Insights",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "ExpressRoute usa Azure Monitor para recopilar métricas y crear alertas en función de la configuración. Las métricas se recopilan para los circuitos ExpressRoute, las puertas de enlace de ExpressRoute, las conexiones de puerta de enlace de ExpressRoute y ExpressRoute Direct. Estas métricas son útiles para diagnosticar problemas de conectividad y comprender el rendimiento de la conexión de ExpressRoute.",
+ "guid": "03914313-6287-41c4-9e4a-4980c2ee3aa9",
+ "service": "Azure Expressroute",
+ "text": "Revisión de las métricas de recursos de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Use Azure Connectivity Toolkit para probar el rendimiento en el circuito ExpressRoute para comprender la capacidad de ancho de banda y la latencia de la conexión de red.",
+ "guid": "07fac8bb-13c5-44b8-a4e8-7e2ed1a84b48",
+ "service": "Azure Expressroute",
+ "text": "Pruebe el rendimiento de la puerta de enlace de ExpressRoute para cumplir los requisitos de carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Actualice a una SKU de puerta de enlace superior para mejorar el rendimiento entre el entorno local y el entorno de Azure.",
+ "guid": "7f788e1a-71dd-4a3e-b19f-6bd8ef8ad815",
+ "service": "Azure Expressroute",
+ "text": "Aumente el tamaño de la puerta de enlace de ExpressRoute.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Actualice el ancho de banda de su circuito para cumplir con sus requisitos de carga de trabajo. El ancho de banda del circuito se comparte entre todas las redes virtuales conectadas al circuito ExpressRoute. En función de la carga de trabajo, una o varias redes virtuales pueden utilizar todo el ancho de banda del circuito.",
+ "guid": "5cd4120c-3a0b-42d0-8114-2663988f43b8",
+ "service": "Azure Expressroute",
+ "text": "Actualización del ancho de banda del circuito ExpressRoute",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si usa una puerta de enlace de red virtual ErGW3AZ o de rendimiento Ultra, puede habilitar FastPath para mejorar el rendimiento de la ruta de acceso de datos entre la red local y la red virtual de Azure.",
+ "guid": "ef778b99-5006-4adf-bef1-d709456a4c51",
+ "service": "Azure Expressroute",
+ "text": "Habilitación de ExpressRoute FastPath para un mayor rendimiento",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Configure alertas basadas en métricas de ExpressRoute para que le notifiquen de forma proactiva cuando se alcance un umbral determinado. Estas métricas son útiles para comprender las anomalías que pueden producirse con la conexión de ExpressRoute, como las interrupciones y el mantenimiento que se producen en los circuitos de ExpressRoute.",
+ "guid": "4a0e8302-106d-48a3-abc4-9e4875a48309",
+ "service": "Azure Expressroute",
+ "text": "Supervisión de métricas de circuitos y puertas de enlace de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Expressroute Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.ja.json b/checklists-ext/azureexpressroute_sg_checklist.ja.json
new file mode 100644
index 000000000..f953ab3d1
--- /dev/null
+++ b/checklists-ext/azureexpressroute_sg_checklist.ja.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "最初の計画フェーズでは、ExpressRoute 回線と ExpressRoute Direct 接続のどちらを構成するかを決定します。ExpressRoute 回線を使用すると、接続プロバイダーの助けを借りて Azure へのプライベート専用接続が可能になります。ExpressRoute Direct を使用すると、オンプレミス ネットワークをピアリングの場所にある Microsoft ネットワークに直接拡張できます。また、ビジネス ニーズの帯域幅要件と SKU タイプ要件を特定する必要もあります。",
+ "guid": "e89fb4a5-9cdd-4fd5-bb8b-388dee7bc217",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線または ExpressRoute Direct の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "回復性を向上させるには、オンプレミスのエッジとピアリングの場所 (プロバイダー/Microsoft エッジの場所) の間に複数のパスを用意するように計画します。この構成は、別のサービス プロバイダーを経由するか、オンプレミス ネットワークとは異なる場所を経由することで実現できます。",
+ "guid": "4f51aa2e-2a6a-4ea1-9c8a-f9ee668052af",
+ "service": "Azure Expressroute",
+ "text": "物理層の多様性",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ディザスター リカバリーを計画するには、ExpressRoute 回線を複数のピアリング場所にセットアップします。同じ都市圏または異なる都市圏のピアリング ロケーションに回線を作成し、各回線を経由するさまざまなパスに対して異なるサービス プロバイダーと連携することを選択できます。詳細については、「障害復旧のための設計」および「高可用性のための設計」を参照してください。",
+ "guid": "14b83764-dab1-4741-85ee-7b3cf55cde49",
+ "service": "Azure Expressroute",
+ "text": "geo 冗長回線の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute 専用回線では、オンプレミスと Azure の間にアクティブ/アクティブ接続が構成されている場合、\"99.95%\" の可用性が保証されます。このモードでは、ExpressRoute 接続の可用性が向上します。また、接続でリンク障害が発生した場合にフェイルオーバーを高速化するために、BFD を構成することもお勧めします。",
+ "guid": "f28fea39-a9e2-45ef-a711-997456c3d42c",
+ "service": "Azure Expressroute",
+ "text": "アクティブ/アクティブ接続の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "可用性ゾーン対応の Virtual Network Gateway を作成して回復性を高め、ディザスター リカバリーと高可用性のためにさまざまなリージョンで Virtual Network Gateway を計画します。",
+ "guid": "8e29e63c-2da5-4242-8a86-c7083b231b0f",
+ "service": "Azure Expressroute",
+ "text": "仮想ネットワーク ゲートウェイの計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute 回線と Virtual Network Gateway の正常性の監視とアラートを、使用可能なさまざまなメトリックに基づいて設定します。",
+ "guid": "0367cde8-2954-4b20-8be0-fb2b7e50eb91",
+ "service": "Azure Expressroute",
+ "text": "回線とゲートウェイの正常性を監視する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute は、サービス正常性を使用して、計画メンテナンスと計画外メンテナンスについて通知します。サービス正常性を構成すると、ExpressRoute 回線に加えられた変更について通知されます。",
+ "guid": "c7bf09c0-317f-4f7f-be8d-3d74444757c8",
+ "service": "Azure Expressroute",
+ "text": "サービス正常性を有効にする",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アクティビティ ログは、ExpressRoute リソースのサブスクリプション レベルで実行された操作に関する分析情報を提供します。アクティビティ ログを使用すると、コントロール プレーンで操作が実行されたユーザーと日時を判断できます。データ保持期間はわずか 90 日間で、アーカイブのために Log Analytics、Event Hubs、またはストレージ アカウントに格納する必要があります。",
+ "guid": "b1f76928-0fc3-407e-8658-f93f2812873f",
+ "service": "Azure Expressroute",
+ "text": "アーカイブにログを送信するようにアクティビティログを構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure RBAC を使用して、ExpressRoute 回線でピアリング構成を追加、更新、または削除できるユーザー アカウントを制限するロールを構成します。",
+ "guid": "61fced7c-71af-4061-a73a-b880e8ee4f78",
+ "service": "Azure Expressroute",
+ "text": "管理アカウントのインベントリを維持する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "プライベート ピアリングまたは Microsoft ピアリングの構成中に、MD5 ハッシュを適用して、オンプレミス ルートと MSEE ルーター間のメッセージをセキュリティで保護します。",
+ "guid": "7091a086-8128-45f8-81e6-c93548433b87",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線で MD5 ハッシュを構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Media Access Control セキュリティは、データ リンク層でのポイント ツー ポイント セキュリティです。ExpressRoute Direct では、イーサネット リンクで通常は保護されていない ARP、DHCP、LACP などのプロトコルに対するセキュリティの脅威を防ぐための MACSec の構成がサポートされています。MACSec の構成方法の詳細については、「ExpressRoute Direct ポートの MACSec」を参照してください。",
+ "guid": "90d32454-fcb9-496d-a411-166a2fe50b6b",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct リソースの MACSec を構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ExpressRoute 回線経由でサイト間 VPN トンネルを構成して、オンプレミス ネットワークと Azure 仮想ネットワーク間のデータ転送を暗号化します。トンネルは、プライベート ピアリングまたは Microsoft ピアリングを使用して構成できます。",
+ "guid": "ef702434-e1ce-4c4b-a2a6-553c1d58f881",
+ "service": "Azure Expressroute",
+ "text": "IPsecを使用したトラフィックの暗号化",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ExpressRoute の価格については、「Azure ExpressRoute の価格について」を参照してください。料金計算ツールを使用することもできます。オプションが容量の需要を満たすために適切なサイズに設定され、リソースを無駄にすることなく期待されるパフォーマンスを提供することを確認します。",
+ "guid": "8ae8772a-7131-42f9-9d2f-ce2aa5bcdd2b",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute の価格について理解する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute の使用に対する課金方法は、3 つの異なる SKU の種類によって異なります。ローカル SKU では、無制限のデータ プランが自動的に課金されます。Standard SKU と Premium SKU では、従量制課金または無制限のデータ プランを選択できます。すべてのイングレス データは、Global Reach アドオンを使用する場合を除いて無料です。コストと予算を最適化するには、ワークロードに最適な SKU の種類とデータ プランを理解することが重要です。ExpressRoute 回線のサイズ変更の詳細については、「ExpressRoute 回線の帯域幅のアップグレード」を参照してください。",
+ "guid": "18ef72cd-862c-43e8-b9ee-921fb5f079f0",
+ "service": "Azure Expressroute",
+ "text": "必要な SKU と帯域幅を決定する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 仮想ネットワーク ゲートウェイは、プライベート ピアリング経由で仮想ネットワークにトラフィックを渡すために使用されます。優先する Virtual Network Gateway SKU のパフォーマンスとスケールのニーズを確認します。オンプレミスから Azure へのワークロードで適切なゲートウェイ SKU を選択します。",
+ "guid": "3655e3bc-9d56-47f6-b7bc-c1a568aa3c8a",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 仮想ネットワーク ゲートウェイのサイズを決定する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 回線のコストを監視し、支出の異常と過剰支出のリスクに関するアラートを作成します。詳細については、「ExpressRoute のコストの監視」を参照してください。",
+ "guid": "3ade6188-d99d-47de-99e7-639136d3ac36",
+ "service": "Azure Expressroute",
+ "text": "コストを監視し、予算アラートを作成する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 回線は、作成された瞬間から課金されます。不要なコストを削減するには、サービス プロバイダーで回線のプロビジョニングを解除し、サブスクリプションから ExpressRoute 回線を削除します。ExpressRoute 回線を削除する手順については、「ExpressRoute 回線のプロビジョニング解除」を参照してください。",
+ "guid": "ca8f1e36-5762-4510-b0af-5a073cc9185a",
+ "service": "Azure Expressroute",
+ "text": "使用されなくなった ExpressRoute 回線のプロビジョニングを解除して削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "接続監視を使用すると、ExpressRoute プライベート ピアリングと Microsoft ピアリング接続を介して、オンプレミスのリソースと Azure の間の接続を監視できます。接続モニタは、ネットワーク パス上のどこに問題があるかを特定することでネットワークの問題を検出し、構成やハードウェアの障害を迅速に解決するのに役立ちます。",
+ "guid": "c1dcf762-0191-4963-89d7-3cc1df34b653",
+ "service": "Azure Expressroute",
+ "text": "接続監視の構成",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "サービス正常性通知を設定して、サブスクリプション内のすべての ExpressRoute 回線に対して計画メンテナンスと今後のメンテナンスが発生したときにアラートを生成します。Service Health では、計画外のメンテナンスが発生した場合は、RCA と共に過去のメンテナンスも表示されます。",
+ "guid": "60f840b9-1818-4967-a115-68e90f47daf3",
+ "service": "Azure Expressroute",
+ "text": "サービス正常性の構成",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ExpressRoute Insights と Network Insights を使用すると、ExpressRoute 回線、ゲートウェイ、接続メトリック、および正常性ダッシュボードを確認および分析できます。ExpressRoute Insights では、ExpressRoute 接続のトポロジ ビューも提供され、ピアリング コンポーネントの詳細をすべて 1 か所で表示できます。利用可能なメトリック:- 可用性- スループット- ゲートウェイメトリック",
+ "guid": "c3c5fe66-1901-4786-99ea-845944bd6ca3",
+ "service": "Azure Expressroute",
+ "text": "Network Insights でメトリクスを確認する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ExpressRoute では、Azure Monitor を使用してメトリックを収集し、構成に基づいてアラートを作成します。メトリックは、ExpressRoute 回線、ExpressRoute ゲートウェイ、ExpressRoute ゲートウェイ接続、ExpressRoute Direct について収集されます。これらのメトリックは、接続の問題を診断し、ExpressRoute 接続のパフォーマンスを理解するのに役立ちます。",
+ "guid": "03914313-6287-41c4-9e4a-4980c2ee3aa9",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute リソースのメトリックを確認する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Connectivity Toolkit を使用して ExpressRoute 回線全体のパフォーマンスをテストし、ネットワーク接続の帯域幅容量と待機時間を把握します。",
+ "guid": "07fac8bb-13c5-44b8-a4e8-7e2ed1a84b48",
+ "service": "Azure Expressroute",
+ "text": "ワークロードの要件を満たすために ExpressRoute ゲートウェイのパフォーマンスをテストします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "より高いゲートウェイ SKU にアップグレードして、オンプレミス環境と Azure 環境間のスループット パフォーマンスを向上させます。",
+ "guid": "7f788e1a-71dd-4a3e-b19f-6bd8ef8ad815",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute ゲートウェイのサイズを大きくします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "作業負荷の要件を満たすために、回線帯域幅をアップグレードします。回線の帯域幅は、ExpressRoute 回線に接続されているすべての仮想ネットワーク間で共有されます。ワークロードによっては、1 つ以上の仮想ネットワークが回線上のすべての帯域幅を使い果たす可能性があります。",
+ "guid": "5cd4120c-3a0b-42d0-8114-2663988f43b8",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線の帯域幅をアップグレードする",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Ultra パフォーマンスまたは ErGW3AZ 仮想ネットワーク ゲートウェイを使用している場合は、FastPath を有効にして、オンプレミス ネットワークと Azure 仮想ネットワーク間のデータ パスのパフォーマンスを向上させることができます。",
+ "guid": "ef778b99-5006-4adf-bef1-d709456a4c51",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute FastPath を有効にしてスループットを向上させる",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ExpressRoute メトリックに基づいてアラートを設定し、特定のしきい値に達したときに事前に通知します。これらのメトリックは、ExpressRoute 回線で発生する停止やメンテナンスなど、ExpressRoute 接続で発生する可能性のある異常を理解するのに役立ちます。",
+ "guid": "4a0e8302-106d-48a3-abc4-9e4875a48309",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線とゲートウェイのメトリックを監視する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Expressroute Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.ko.json b/checklists-ext/azureexpressroute_sg_checklist.ko.json
new file mode 100644
index 000000000..3c33fe44b
--- /dev/null
+++ b/checklists-ext/azureexpressroute_sg_checklist.ko.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "초기 계획 단계에서 ExpressRoute 회로를 구성할지 또는 ExpressRoute Direct 연결을 구성할지 결정하려고 합니다. ExpressRoute 회로를 사용하면 연결 공급자의 도움을 받아 Azure에 대한 프라이빗 전용 연결을 사용할 수 있습니다. ExpressRoute Direct를 사용하면 피어링 위치에서 온-프레미스 네트워크를 Microsoft 네트워크로 직접 확장할 수 있습니다. 또한 비즈니스 요구 사항에 대한 대역폭 요구 사항 및 SKU 유형 요구 사항을 식별해야 합니다.",
+ "guid": "e89fb4a5-9cdd-4fd5-bb8b-388dee7bc217",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 또는 ExpressRoute Direct 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "복원력을 높이려면 온-프레미스 에지와 피어링 위치(공급자/Microsoft 에지 위치) 간에 여러 경로를 계획합니다. 이 구성은 다른 서비스 공급자를 통하거나 온-프레미스 네트워크의 다른 위치를 통해 수행할 수 있습니다.",
+ "guid": "4f51aa2e-2a6a-4ea1-9c8a-f9ee668052af",
+ "service": "Azure Expressroute",
+ "text": "물리적 계층 다양성",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "재해 복구를 계획하려면 둘 이상의 피어링 위치에서 ExpressRoute 회로를 설정합니다. 동일한 메트로 또는 다른 메트로의 피어링 위치에 회로를 만들고 각 회로를 통한 다양한 경로에 대해 다른 서비스 공급자와 협력하도록 선택할 수 있습니다. 자세한 내용은 재해 복구를 위한 설계 및 고가용성을 위한 설계를 참조하세요.",
+ "guid": "14b83764-dab1-4741-85ee-7b3cf55cde49",
+ "service": "Azure Expressroute",
+ "text": "지역 중복 회로 계획Plan for geo-redundant circuits",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "ExpressRoute 전용 회로는 온-프레미스와 Azure 간에 활성-활성 연결이 구성된 경우 '99.95%' 가용성을 보장합니다. 이 모드는 Expressroute 연결의 고가용성을 제공합니다. 또한 연결에 링크 오류가 있는 경우 더 빠른 장애 조치(failover)를 위해 BFD를 구성하는 것이 좋습니다.",
+ "guid": "f28fea39-a9e2-45ef-a711-997456c3d42c",
+ "service": "Azure Expressroute",
+ "text": "액티브-액티브 연결 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "더 높은 복원력을 위해 가용성 영역 인식 Virtual Network Gateway를 만들고 재해 복구 및 고가용성을 위해 다른 지역의 Virtual Network 게이트웨이를 계획합니다.",
+ "guid": "8e29e63c-2da5-4242-8a86-c7083b231b0f",
+ "service": "Azure Expressroute",
+ "text": "가상 네트워크 게이트웨이 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "사용 가능한 다양한 메트릭에 따라 ExpressRoute 회로 및 Virtual Network 게이트웨이 상태에 대한 모니터링 및 경고를 설정합니다.",
+ "guid": "0367cde8-2954-4b20-8be0-fb2b7e50eb91",
+ "service": "Azure Expressroute",
+ "text": "회로 및 게이트웨이 상태 모니터링Monitor circuits and gateway health",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "ExpressRoute는 서비스 상태를 사용하여 계획된 유지 관리 및 계획되지 않은 유지 관리에 대해 알립니다. 서비스 상태를 구성하면 ExpressRoute 회로에 대한 변경 내용에 대해 알려 줍니다.",
+ "guid": "c7bf09c0-317f-4f7f-be8d-3d74444757c8",
+ "service": "Azure Expressroute",
+ "text": "서비스 상태 사용",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "활동 로그는 ExpressRoute 리소스에 대한 구독 수준에서 수행된 작업에 대한 인사이트를 제공합니다. 활동 로그를 사용하면 컨트롤 플레인에서 작업이 수행된 사람과 시기를 확인할 수 있습니다. 데이터 보존 기간은 90일이며 Log Analytics, Event Hubs 또는 보관용 스토리지 계정에 저장해야 합니다.",
+ "guid": "b1f76928-0fc3-407e-8658-f93f2812873f",
+ "service": "Azure Expressroute",
+ "text": "로그를 보관하도록 활동 로그 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure RBAC를 사용하여 ExpressRoute 회로에서 피어링 구성을 추가, 업데이트 또는 삭제할 수 있는 사용자 계정을 제한하는 역할을 구성합니다.",
+ "guid": "61fced7c-71af-4061-a73a-b880e8ee4f78",
+ "service": "Azure Expressroute",
+ "text": "관리 계정의 인벤토리 유지 관리",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "개인 피어링 또는 Microsoft 피어링을 구성하는 동안 MD5 해시를 적용하여 온-프레미스 경로와 MSEE 라우터 간의 메시지를 보호합니다.",
+ "guid": "7091a086-8128-45f8-81e6-c93548433b87",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로에서 MD5 해시 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Media Access Control 보안은 데이터 링크 계층의 지점 간 보안입니다. ExpressRoute Direct는 이더넷 링크에서 일반적으로 보안되지 않는 ARP, DHCP, LACP와 같은 프로토콜에 대한 보안 위협을 방지하기 위해 MACSec 구성을 지원합니다. MACSec을 구성하는 방법에 대한 자세한 내용은 ExpressRoute Direct 포트에 대한 MACSec을 참조하세요.",
+ "guid": "90d32454-fcb9-496d-a411-166a2fe50b6b",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct 리소스에 대한 MACSec 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "ExpressRoute 회로를 통해 사이트 간 VPN 터널을 구성하여 온-프레미스 네트워크와 Azure 가상 네트워크 간의 데이터 전송을 암호화합니다. 개인 피어링 또는 Microsoft 피어링을 사용하여 터널을 구성할 수 있습니다.",
+ "guid": "ef702434-e1ce-4c4b-a2a6-553c1d58f881",
+ "service": "Azure Expressroute",
+ "text": "IPsec을 사용하여 트래픽 암호화",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "ExpressRoute 가격 책정에 대한 자세한 내용은 Azure ExpressRoute의 가격 책정 이해를 참조하세요. 가격 계산기를 사용할 수도 있습니다. 용량 수요를 충족하고 리소스 낭비 없이 예상 성능을 제공할 수 있도록 옵션의 크기가 적절하게 조정되었는지 확인합니다.",
+ "guid": "8ae8772a-7131-42f9-9d2f-ce2aa5bcdd2b",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 가격 책정 숙지",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 사용량에 대한 요금이 청구되는 방식은 세 가지 SKU 유형에 따라 다릅니다. 현지 SKU를 사용하면 무제한 데이터 요금제가 자동으로 청구됩니다. 표준 및 프리미엄 SKU를 사용하면 데이터 요금제 또는 무제한 요금제 중에서 선택할 수 있습니다. 모든 수신 데이터는 Global Reach 추가 기능을 사용하는 경우를 제외하고 무료입니다. 비용과 예산을 가장 잘 최적화하려면 워크로드에 가장 적합한 SKU 유형 및 데이터 요금제를 이해하는 것이 중요합니다. ExpressRoute 회로 크기 조정에 대한 자세한 내용은 ExpressRoute 회로 대역폭 업그레이드를 참조하세요.",
+ "guid": "18ef72cd-862c-43e8-b9ee-921fb5f079f0",
+ "service": "Azure Expressroute",
+ "text": "필요한 SKU 및 대역폭 확인",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 가상 네트워크 게이트웨이는 개인 피어링을 통해 가상 네트워크로 트래픽을 전달하는 데 사용됩니다. 선호하는 Virtual Network Gateway SKU의 성능 및 크기 조정 요구 사항을 검토합니다. 온-프레미스에서 Azure 워크로드에 대한 적절한 게이트웨이 SKU를 선택합니다.",
+ "guid": "3655e3bc-9d56-47f6-b7bc-c1a568aa3c8a",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 가상 네트워크 게이트웨이 크기 확인",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 회로의 비용을 모니터링하고 지출 변칙 및 초과 지출 위험에 대한 경고를 만듭니다. 자세한 내용은 ExpressRoute 비용 모니터링을 참조하세요.",
+ "guid": "3ade6188-d99d-47de-99e7-639136d3ac36",
+ "service": "Azure Expressroute",
+ "text": "비용 모니터링 및 예산 알림 생성",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 회로는 만들어지는 순간부터 요금이 청구됩니다. 불필요한 비용을 줄이려면 서비스 공급자를 통해 회로의 프로비전을 해제하고 구독에서 ExpressRoute 회로를 삭제합니다. ExpressRoute 회로를 제거하는 방법에 대한 단계는 ExpressRoute 회로 프로비전 해제를 참조하세요.",
+ "guid": "ca8f1e36-5762-4510-b0af-5a073cc9185a",
+ "service": "Azure Expressroute",
+ "text": "더 이상 사용되지 않는 ExpressRoute 회로의 프로비전을 해제하고 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "연결 모니터링을 사용하면 ExpressRoute 개인 피어링 및 Microsoft 피어링 연결을 통해 온-프레미스 리소스와 Azure 간의 연결을 모니터링할 수 있습니다. 연결 모니터는 네트워크 경로에서 문제가 발생한 위치를 식별하여 네트워킹 문제를 감지하고 구성 또는 하드웨어 오류를 신속하게 해결하는 데 도움이 될 수 있습니다.",
+ "guid": "c1dcf762-0191-4963-89d7-3cc1df34b653",
+ "service": "Azure Expressroute",
+ "text": "연결 모니터링 구성",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Service Health 알림을 설정하여 구독의 모든 ExpressRoute 회로에 계획된 유지 관리 및 예정된 유지 관리가 발생할 때 경고합니다. 또한 Service Health는 계획되지 않은 유지 관리가 발생하는 경우 RCA와 함께 과거 유지 관리를 표시합니다.",
+ "guid": "60f840b9-1818-4967-a115-68e90f47daf3",
+ "service": "Azure Expressroute",
+ "text": "서비스 상태 구성",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Network Insights를 사용하는 ExpressRoute Insights를 사용하면 ExpressRoute 회로, 게이트웨이, 연결 메트릭 및 상태 대시보드를 검토하고 분석할 수 있습니다. 또한 ExpressRoute Insights는 피어링 구성 요소의 세부 정보를 모두 한 곳에서 볼 수 있는 ExpressRoute 연결의 토폴로지 보기를 제공합니다. 사용 가능한 메트릭:- 가용성- 처리량- 게이트웨이 메트릭",
+ "guid": "c3c5fe66-1901-4786-99ea-845944bd6ca3",
+ "service": "Azure Expressroute",
+ "text": "Network Insights를 사용하여 메트릭 검토",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "ExpressRoute는 Azure Monitor를 사용하여 메트릭을 수집하고 구성에 따라 경고를 만듭니다. ExpressRoute 회로, ExpressRoute 게이트웨이, ExpressRoute 게이트웨이 연결 및 ExpressRoute Direct에 대한 메트릭이 수집됩니다. 이러한 메트릭은 연결 문제를 진단하고 ExpressRoute 연결의 성능을 이해하는 데 유용합니다.",
+ "guid": "03914313-6287-41c4-9e4a-4980c2ee3aa9",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 리소스 메트릭 검토Review ExpressRoute resource metrics",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Connectivity Toolkit를 사용하여 ExpressRoute 회로에서 성능을 테스트하여 네트워크 연결의 대역폭, 용량 및 대기 시간을 파악합니다.",
+ "guid": "07fac8bb-13c5-44b8-a4e8-7e2ed1a84b48",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이 성능을 테스트하여 작업 부하 요구 사항을 충족합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "온-프레미스와 Azure 환경 간의 처리량 성능 향상을 위해 더 높은 게이트웨이 SKU로 업그레이드합니다.",
+ "guid": "7f788e1a-71dd-4a3e-b19f-6bd8ef8ad815",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이의 크기를 늘립니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "작업 부하 요구 사항을 충족하도록 회로 대역폭을 업그레이드하십시오. 회로 대역폭은 ExpressRoute 회로에 연결된 모든 가상 네트워크 간에 공유됩니다. 작업 부하에 따라 하나 이상의 가상 네트워크가 회로의 모든 대역폭을 사용할 수 있습니다.",
+ "guid": "5cd4120c-3a0b-42d0-8114-2663988f43b8",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 대역폭 업그레이드",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "울트라 성능 또는 ErGW3AZ 가상 네트워크 게이트웨이를 사용하는 경우 FastPath를 사용하도록 설정하여 온-프레미스 네트워크와 Azure 가상 네트워크 간의 데이터 경로 성능을 향상시킬 수 있습니다.",
+ "guid": "ef778b99-5006-4adf-bef1-d709456a4c51",
+ "service": "Azure Expressroute",
+ "text": "처리량 증가를 위해 ExpressRoute FastPath 사용",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "ExpressRoute 메트릭을 기반으로 경고를 설정하여 특정 임계값이 충족될 때 사전에 알림을 제공합니다. 이러한 메트릭은 ExpressRoute 회로에서 발생하는 중단 및 유지 관리와 같이 ExpressRoute 연결에서 발생할 수 있는 변칙을 이해하는 데 유용합니다.",
+ "guid": "4a0e8302-106d-48a3-abc4-9e4875a48309",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 및 게이트웨이 메트릭 모니터링",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Expressroute Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.pt.json b/checklists-ext/azureexpressroute_sg_checklist.pt.json
new file mode 100644
index 000000000..3219a0f4e
--- /dev/null
+++ b/checklists-ext/azureexpressroute_sg_checklist.pt.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Durante a fase de planejamento inicial, você deseja decidir se deseja configurar um circuito do ExpressRoute ou uma conexão do ExpressRoute Direct. Um circuito do ExpressRoute permite uma conexão privada dedicada ao Azure com a ajuda de um provedor de conectividade. O ExpressRoute Direct permite que você estenda a rede local diretamente para a rede da Microsoft em um local de emparelhamento. Você também precisa identificar o requisito de largura de banda e o requisito de tipo de SKU para suas necessidades de negócios.",
+ "guid": "e89fb4a5-9cdd-4fd5-bb8b-388dee7bc217",
+ "service": "Azure Expressroute",
+ "text": "Planejar o circuito do ExpressRoute ou o ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para obter melhor resiliência, planeje ter vários caminhos entre a borda local e os locais de emparelhamento (locais de borda do provedor/Microsoft). Essa configuração pode ser obtida passando por um provedor de serviços diferente ou por um local diferente da rede local.",
+ "guid": "4f51aa2e-2a6a-4ea1-9c8a-f9ee668052af",
+ "service": "Azure Expressroute",
+ "text": "Diversidade de camadas físicas",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para planejar a recuperação de desastre, configure circuitos do ExpressRoute em mais de um local de emparelhamento. Você pode criar circuitos em locais de emparelhamento na mesma área metropolitana ou em uma área metropolitana diferente e optar por trabalhar com diferentes provedores de serviços para diversos caminhos em cada circuito. Para obter mais informações, consulte Projetando para recuperação de desastre e Projetando para alta disponibilidade.",
+ "guid": "14b83764-dab1-4741-85ee-7b3cf55cde49",
+ "service": "Azure Expressroute",
+ "text": "Planejar circuitos com redundância geográfica",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os circuitos dedicados do ExpressRoute garantem a disponibilidade de '99,95%' quando uma conectividade ativa-ativa é configurada entre o local e o Azure. Esse modo fornece maior disponibilidade da conexão do Expressroute. Também é recomendável configurar o BFD para failover mais rápido se houver uma falha de link em uma conexão.",
+ "guid": "f28fea39-a9e2-45ef-a711-997456c3d42c",
+ "service": "Azure Expressroute",
+ "text": "Planejar a conectividade Ativo-Ativo",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Crie um Gateway de Rede Virtual com reconhecimento de zona de disponibilidade para maior resiliência e planeje Gateways de Rede Virtual em diferentes regiões para recuperação de desastre e alta disponibilidade.",
+ "guid": "8e29e63c-2da5-4242-8a86-c7083b231b0f",
+ "service": "Azure Expressroute",
+ "text": "Planejando gateways de rede virtual",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Configure o monitoramento e os alertas para circuitos do ExpressRoute e a integridade do Gateway de Rede Virtual com base em várias métricas disponíveis.",
+ "guid": "0367cde8-2954-4b20-8be0-fb2b7e50eb91",
+ "service": "Azure Expressroute",
+ "text": "Monitorar circuitos e integridade do gateway",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O ExpressRoute usa a integridade do serviço para notificar sobre manutenção planejada e não planejada. A configuração da integridade do serviço notificará você sobre as alterações feitas nos circuitos do ExpressRoute.",
+ "guid": "c7bf09c0-317f-4f7f-be8d-3d74444757c8",
+ "service": "Azure Expressroute",
+ "text": "Habilitar a integridade do serviço",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os logs de atividades fornecem insights sobre as operações que foram executadas no nível da assinatura para recursos do ExpressRoute. Com os logs de atividades, você pode determinar quem e quando uma operação foi executada no plano de controle. A retenção de dados é de apenas 90 dias e precisa ser armazenada no Log Analytics, nos Hubs de Eventos ou em uma conta de armazenamento para arquivamento.",
+ "guid": "b1f76928-0fc3-407e-8658-f93f2812873f",
+ "service": "Azure Expressroute",
+ "text": "Configurar o log de atividades para enviar logs para o arquivo morto",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use o RBAC do Azure para configurar funções para limitar contas de usuário que podem adicionar, atualizar ou excluir a configuração de emparelhamento em um circuito do ExpressRoute.",
+ "guid": "61fced7c-71af-4061-a73a-b880e8ee4f78",
+ "service": "Azure Expressroute",
+ "text": "Manter inventário de contas administrativas",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Durante a configuração do emparelhamento privado ou do emparelhamento da Microsoft, aplique um hash MD5 para proteger mensagens entre a rota local e os roteadores MSEE.",
+ "guid": "7091a086-8128-45f8-81e6-c93548433b87",
+ "service": "Azure Expressroute",
+ "text": "Configurar hash MD5 no circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A segurança do Controle de Acesso à Mídia é uma segurança ponto a ponto na camada de enlace de dados. O ExpressRoute Direct dá suporte à configuração do MACSec para evitar ameaças de segurança a protocolos como ARP, DHCP, LACP normalmente não protegidos no link Ethernet. Para obter mais informações sobre como configurar o MACSec, consulte MACSec para portas do ExpressRoute Direct.",
+ "guid": "90d32454-fcb9-496d-a411-166a2fe50b6b",
+ "service": "Azure Expressroute",
+ "text": "Configurar o MACSec para recursos do ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Configure um túnel VPN site a site no circuito do ExpressRoute para criptografar a transferência de dados entre a rede local e a rede virtual do Azure. Você pode configurar um túnel usando o emparelhamento privado ou usando o emparelhamento da Microsoft.",
+ "guid": "ef702434-e1ce-4c4b-a2a6-553c1d58f881",
+ "service": "Azure Expressroute",
+ "text": "Criptografar o tráfego usando IPsec",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Para obter informações sobre os preços do ExpressRoute, consulte Entender os preços do Azure ExpressRoute. Você também pode usar a calculadora de preços. Certifique-se de que as opções sejam dimensionadas adequadamente para atender à demanda de capacidade e fornecer o desempenho esperado sem desperdiçar recursos.",
+ "guid": "8ae8772a-7131-42f9-9d2f-ce2aa5bcdd2b",
+ "service": "Azure Expressroute",
+ "text": "Familiarize-se com os preços do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A maneira como você é cobrado pelo uso do ExpressRoute varia entre os três tipos diferentes de SKU. Com o SKU Local, você é cobrado automaticamente com um plano de dados ilimitado. Com o SKU Standard e Premium, você pode selecionar entre um plano de dados medido ou ilimitado. Todos os dados de entrada são gratuitos, exceto ao usar o complemento Global Reach. É importante entender quais tipos de SKU e plano de dados funcionam melhor para sua carga de trabalho para otimizar melhor o custo e o orçamento. Para obter mais informações sobre como redimensionar o circuito do ExpressRoute, consulte atualizando a largura de banda do circuito do ExpressRoute.",
+ "guid": "18ef72cd-862c-43e8-b9ee-921fb5f079f0",
+ "service": "Azure Expressroute",
+ "text": "Determinar SKU e largura de banda necessárias",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os gateways de rede virtual do ExpressRoute são usados para passar o tráfego para uma rede virtual por meio de emparelhamento privado. Examine as necessidades de desempenho e escala do SKU do Gateway de Rede Virtual preferencial. Selecione o SKU de gateway apropriado em sua carga de trabalho local para o Azure.",
+ "guid": "3655e3bc-9d56-47f6-b7bc-c1a568aa3c8a",
+ "service": "Azure Expressroute",
+ "text": "Determinar o tamanho do gateway de rede virtual do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Monitore o custo do circuito do ExpressRoute e crie alertas para anomalias de gastos e riscos de gastos excessivos. Para obter mais informações, consulte Monitorando os custos do ExpressRoute.",
+ "guid": "3ade6188-d99d-47de-99e7-639136d3ac36",
+ "service": "Azure Expressroute",
+ "text": "Monitore o custo e crie alertas de orçamento",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os circuitos do ExpressRoute são cobrados a partir do momento em que são criados. Para reduzir custos desnecessários, desprovisione o circuito com o provedor de serviços e exclua o circuito do ExpressRoute de sua assinatura. Para obter etapas sobre como remover um circuito do ExpressRoute, consulte Desprovisionando um circuito do ExpressRoute.",
+ "guid": "ca8f1e36-5762-4510-b0af-5a073cc9185a",
+ "service": "Azure Expressroute",
+ "text": "Desprovisione e exclua circuitos do ExpressRoute que não estão mais em uso.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento de conexão permite que você monitore a conectividade entre seus recursos locais e o Azure por meio do emparelhamento privado do ExpressRoute e da conexão de emparelhamento da Microsoft. O Monitor de Conexão pode detectar problemas de rede identificando onde o problema está ao longo do caminho de rede e ajudá-lo a resolver rapidamente falhas de configuração ou hardware.",
+ "guid": "c1dcf762-0191-4963-89d7-3cc1df34b653",
+ "service": "Azure Expressroute",
+ "text": "Configurar o monitoramento de conexão",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Configure notificações de Integridade do Serviço para alertar quando a manutenção planejada e futura estiver acontecendo em todos os circuitos do ExpressRoute em sua assinatura. A integridade do serviço também exibe a manutenção anterior junto com a RCA se ocorrer uma manutenção não planejada.",
+ "guid": "60f840b9-1818-4967-a115-68e90f47daf3",
+ "service": "Azure Expressroute",
+ "text": "Configurar a integridade do serviço",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O ExpressRoute Insights com Network Insights permite que você examine e analise circuitos, gateways, métricas de conexões e painéis de integridade do ExpressRoute. O ExpressRoute Insights também fornece uma exibição de topologia de suas conexões do ExpressRoute, onde você pode exibir detalhes de seus componentes de emparelhamento em um único local. Métricas disponíveis:- Disponibilidade- Taxa de transferência- Métricas de gateway",
+ "guid": "c3c5fe66-1901-4786-99ea-845944bd6ca3",
+ "service": "Azure Expressroute",
+ "text": "Analisar métricas com o Network Insights",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O ExpressRoute usa o Azure Monitor para coletar métricas e criar alertas com base em sua configuração. As métricas são coletadas para circuitos do ExpressRoute, gateways do ExpressRoute, conexões de gateway do ExpressRoute e ExpressRoute Direct. Essas métricas são úteis para diagnosticar problemas de conectividade e entender o desempenho da conexão do ExpressRoute.",
+ "guid": "03914313-6287-41c4-9e4a-4980c2ee3aa9",
+ "service": "Azure Expressroute",
+ "text": "Examinar as métricas de recursos do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Use o Kit de Ferramentas de Conectividade do Azure para testar o desempenho em seu circuito do ExpressRoute para entender a capacidade de largura de banda e a latência de sua conexão de rede.",
+ "guid": "07fac8bb-13c5-44b8-a4e8-7e2ed1a84b48",
+ "service": "Azure Expressroute",
+ "text": "Teste o desempenho do gateway do ExpressRoute para atender aos requisitos de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualize para um SKU de gateway mais alto para melhorar o desempenho da taxa de transferência entre o ambiente local e o Azure.",
+ "guid": "7f788e1a-71dd-4a3e-b19f-6bd8ef8ad815",
+ "service": "Azure Expressroute",
+ "text": "Aumente o tamanho do gateway do ExpressRoute.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualize a largura de banda do circuito para atender aos requisitos de carga de trabalho. A largura de banda do circuito é compartilhada entre todas as redes virtuais conectadas ao circuito do ExpressRoute. Dependendo da carga de trabalho, uma ou mais redes virtuais podem usar toda a largura de banda no circuito.",
+ "guid": "5cd4120c-3a0b-42d0-8114-2663988f43b8",
+ "service": "Azure Expressroute",
+ "text": "Atualizar a largura de banda do circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se você estiver usando um desempenho Ultra ou um gateway de rede virtual ErGW3AZ, poderá habilitar o FastPath para melhorar o desempenho do caminho de dados entre sua rede local e a rede virtual do Azure.",
+ "guid": "ef778b99-5006-4adf-bef1-d709456a4c51",
+ "service": "Azure Expressroute",
+ "text": "Habilitar o ExpressRoute FastPath para maior taxa de transferência",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Configure alertas com base nas métricas do ExpressRoute para notificá-lo proativamente quando um determinado limite for atingido. Essas métricas são úteis para entender anomalias que podem ocorrer com sua conexão do ExpressRoute, como interrupções e manutenção que ocorrem em seus circuitos do ExpressRoute.",
+ "guid": "4a0e8302-106d-48a3-abc4-9e4875a48309",
+ "service": "Azure Expressroute",
+ "text": "Monitorar métricas de gateway e circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Expressroute Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureexpressroute_sg_checklist.zh-Hant.json b/checklists-ext/azureexpressroute_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..76f7a45fa
--- /dev/null
+++ b/checklists-ext/azureexpressroute_sg_checklist.zh-Hant.json
@@ -0,0 +1,282 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "在初始規劃階段,需要決定是要配置 ExpressRoute 線路還是 ExpressRoute Direct 連接。ExpressRoute 線路允許在連接供應商的説明下連接到 Azure。ExpressRoute Direct 允許將本地網路直接擴展到對等互連位置的 Microsoft 網路。您還需要確定頻寬要求和 SKU 類型要求,以滿足您的業務需求。",
+ "guid": "e89fb4a5-9cdd-4fd5-bb8b-388dee7bc217",
+ "service": "Azure Expressroute",
+ "text": "規劃 ExpressRoute 線路或 ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "為了提高復原能力,請計劃在本地邊緣和對等互連位置(供應商/Microsoft 邊緣位置)之間設置多個路徑。可以通過不同的服務提供者或與本地網路不同的位置來實現此配置。",
+ "guid": "4f51aa2e-2a6a-4ea1-9c8a-f9ee668052af",
+ "service": "Azure Expressroute",
+ "text": "物理層多樣性",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "若要規劃災難恢復,請在多個對等互連位置設置ExpressRoute線路。您可以在同一城域網或不同城域網的對等位置創建線路,並選擇與不同的服務提供者合作,以實現通過每個線路的不同路徑。有關詳細資訊,請參閱設計災難恢復和設計高可用性。",
+ "guid": "14b83764-dab1-4741-85ee-7b3cf55cde49",
+ "service": "Azure Expressroute",
+ "text": "規劃異地冗餘線路",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "在本地和 Azure 之間配置主動-主動連接時,ExpressRoute 專用線路可保證“99.95%”的可用性。此模式提供更高的 Expressroute 連接可用性。此外,還建議配置 BFD,以便在連接上出現鏈路故障時更快地進行故障轉移。",
+ "guid": "f28fea39-a9e2-45ef-a711-997456c3d42c",
+ "service": "Azure Expressroute",
+ "text": "規劃主動-主動連接",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "創建可用性區域感知虛擬網路閘道以提高復原能力,並規劃不同區域中的虛擬網路閘道以實現災難恢復和高可用性。",
+ "guid": "8e29e63c-2da5-4242-8a86-c7083b231b0f",
+ "service": "Azure Expressroute",
+ "text": "規劃虛擬網路閘道",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "根據各種可用指標為 ExpressRoute 線路和虛擬網路閘道運行狀況設置監視和警報。",
+ "guid": "0367cde8-2954-4b20-8be0-fb2b7e50eb91",
+ "service": "Azure Expressroute",
+ "text": "監控電路和網關運行狀況",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "ExpressRoute 使用服務運行狀況來通知計劃內和計劃外維護。配置服務運行狀況將通知你對 ExpressRoute 線路所做的更改。",
+ "guid": "c7bf09c0-317f-4f7f-be8d-3d74444757c8",
+ "service": "Azure Expressroute",
+ "text": "啟用服務運行狀況",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過活動日誌,可以深入瞭解在訂閱級別對 ExpressRoute 資源執行的操作。使用活動日誌,您可以確定在控制平面上執行操作的人員和時間。數據保留期僅為 90 天,需要存儲在 Log Analytics、事件中心或存儲帳戶中以進行存檔。",
+ "guid": "b1f76928-0fc3-407e-8658-f93f2812873f",
+ "service": "Azure Expressroute",
+ "text": "配置活動記錄以將日誌發送到存檔",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Azure RBAC 配置角色,以限制可以在 ExpressRoute 線路上添加、更新或刪除對等互連配置的用戶帳戶。",
+ "guid": "61fced7c-71af-4061-a73a-b880e8ee4f78",
+ "service": "Azure Expressroute",
+ "text": "維護管理帳戶的清單",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在配置專用對等互連或 Microsoft 對等互連期間,應用 MD5 哈希來保護本地路由和 MSEE 路由器之間的消息。",
+ "guid": "7091a086-8128-45f8-81e6-c93548433b87",
+ "service": "Azure Expressroute",
+ "text": "在 ExpressRoute 線路上配置 MD5 哈希",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "媒體訪問控制安全是數據鏈路層的點對點安全。ExpressRoute Direct 支援配置 MACSec,以防止對 ARP、DHCP、LACP 等協定的安全威脅,這些協定通常在乙太網路上不受保護。有關如何配置 MACSec 的詳細資訊,請參閱適用於 ExpressRoute Direct 埠的 MACSec。",
+ "guid": "90d32454-fcb9-496d-a411-166a2fe50b6b",
+ "service": "Azure Expressroute",
+ "text": "為 ExpressRoute Direct 資源配置 MACSecConfigure MACSec for ExpressRoute Direct resources",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在 ExpressRoute 線路上配置網站到網站 VPN 隧道,以加密本地網路和 Azure 虛擬網路之間的數據傳輸。您可以使用專用對等互連或使用 Microsoft 對等互連來配置隧道。",
+ "guid": "ef702434-e1ce-4c4b-a2a6-553c1d58f881",
+ "service": "Azure Expressroute",
+ "text": "使用 IPsec 加密流量",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "有關 ExpressRoute 定價的資訊,請參閱瞭解 Azure ExpressRoute 的定價。您也可以使用定價計算機。確保選項的大小足夠大,以滿足容量需求,並在不浪費資源的情況下提供預期的性能。",
+ "guid": "8ae8772a-7131-42f9-9d2f-ce2aa5bcdd2b",
+ "service": "Azure Expressroute",
+ "text": "熟悉 ExpressRoute 定價",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 使用費的收費方式在三種不同的 SKU 類型之間有所不同。使用本地 SKU 時,系統會自動向您收取無限數據計劃的費用。使用標準和高級 SKU,可以選擇按流量計費或無限制的數據計劃。所有入口數據都是免費的,除非使用 Global Reach 外掛程式。請務必瞭解哪些 SKU 類型和數據計劃最適合您的工作負載,以最好地優化成本和預算。有關調整 ExpressRoute 線路大小的詳細資訊,請參閱升級 ExpressRoute 線路頻寬。",
+ "guid": "18ef72cd-862c-43e8-b9ee-921fb5f079f0",
+ "service": "Azure Expressroute",
+ "text": "確定所需的 SKU 和頻寬",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 虛擬網路閘道用於通過專用對等互連將流量傳遞到虛擬網路。查看首選虛擬網路閘道 SKU 的性能和規模需求。在本地到 Azure 工作負載上選擇適當的閘道 SKU。",
+ "guid": "3655e3bc-9d56-47f6-b7bc-c1a568aa3c8a",
+ "service": "Azure Expressroute",
+ "text": "確定 ExpressRoute 虛擬網路閘道大小",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "監視 ExpressRoute 線路的成本,並創建針對支出異常和超支風險的警報。有關詳細資訊,請參閱監視ExpressRoute成本。",
+ "guid": "3ade6188-d99d-47de-99e7-639136d3ac36",
+ "service": "Azure Expressroute",
+ "text": "監控成本並創建預算警報",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 線路從創建的那一刻起就收費。為了減少不必要的成本,請與服務提供者取消預配線路,並從訂閱中刪除 ExpressRoute 線路。有關如何刪除 ExpressRoute 線路的步驟,請參閱取消預配 ExpressRoute 線路。",
+ "guid": "ca8f1e36-5762-4510-b0af-5a073cc9185a",
+ "service": "Azure Expressroute",
+ "text": "取消預配並刪除不再使用的 ExpressRoute 線路。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過連接監視,可以通過 ExpressRoute 專用對等互連和 Microsoft 對等互連連接監視本地資源與 Azure 之間的連接。連接監視器可以通過識別問題在網路路徑上的位置來檢測網路問題,並説明您快速解決配置或硬體故障。",
+ "guid": "c1dcf762-0191-4963-89d7-3cc1df34b653",
+ "service": "Azure Expressroute",
+ "text": "配置連接監視",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "設置服務運行狀況通知,以便在訂閱中的所有 ExpressRoute 線路發生計劃內和即將進行的維護時發出警報。如果發生計劃外維護,服務運行狀況還會顯示過去的維護以及 RCA。",
+ "guid": "60f840b9-1818-4967-a115-68e90f47daf3",
+ "service": "Azure Expressroute",
+ "text": "配置服務運行狀況",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "通過具有網路見解的 ExpressRoute 見解,可以查看和分析 ExpressRoute 線路、閘道、連接指標和運行狀況儀錶板。ExpressRoute 見解還提供 ExpressRoute 連接的拓撲視圖,可在其中在一個位置查看對等互連元件的詳細資訊。可用指標:- 可用性- 輸送量- 閘道指標",
+ "guid": "c3c5fe66-1901-4786-99ea-845944bd6ca3",
+ "service": "Azure Expressroute",
+ "text": "使用 Network Insights 查看指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "ExpressRoute 使用 Azure Monitor 收集指標,並根據配置創建警報。收集 ExpressRoute 線路、ExpressRoute 閘道、ExpressRoute 閘道連接和 ExpressRoute Direct 的指標。這些指標可用於診斷連接問題和瞭解 ExpressRoute 連接的性能。",
+ "guid": "03914313-6287-41c4-9e4a-4980c2ee3aa9",
+ "service": "Azure Expressroute",
+ "text": "查看 ExpressRoute 資源指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "使用 Azure 連接工具包測試 ExpressRoute 線路的性能,以瞭解網路連接的頻寬、容量和延遲。",
+ "guid": "07fac8bb-13c5-44b8-a4e8-7e2ed1a84b48",
+ "service": "Azure Expressroute",
+ "text": "測試 ExpressRoute 閘道性能以滿足工作負載要求。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "升級到更高的閘道 SKU,以提高本地環境和 Azure 環境之間的輸送量性能。",
+ "guid": "7f788e1a-71dd-4a3e-b19f-6bd8ef8ad815",
+ "service": "Azure Expressroute",
+ "text": "增加 ExpressRoute 閘道的大小。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "升級您的電路頻寬以滿足您的工作負載要求。線路頻寬在連接到 ExpressRoute 線路的所有虛擬網路之間共用。根據工作負載,一個或多個虛擬網路可能會耗盡線路上的所有頻寬。",
+ "guid": "5cd4120c-3a0b-42d0-8114-2663988f43b8",
+ "service": "Azure Expressroute",
+ "text": "升級 ExpressRoute 線路頻寬",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果使用的是超高性能或 ErGW3AZ 虛擬網路閘道,則可以啟用 FastPath 以提高本地網路和 Azure 虛擬網路之間的數據路徑性能。",
+ "guid": "ef778b99-5006-4adf-bef1-d709456a4c51",
+ "service": "Azure Expressroute",
+ "text": "啟用 ExpressRoute FastPath 以獲得更高的輸送量",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "根據 ExpressRoute 指標設置警報,以便在達到特定閾值時主動通知你。這些指標有助於瞭解 ExpressRoute 連接可能發生的異常情況,例如 ExpressRoute 線路發生的中斷和維護。",
+ "guid": "4a0e8302-106d-48a3-abc4-9e4875a48309",
+ "service": "Azure Expressroute",
+ "text": "監視 ExpressRoute 線路和閘道指標",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Expressroute Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.en.json b/checklists-ext/azurefiles_sg_checklist.en.json
index a57ccfa08..1370ce917 100644
--- a/checklists-ext/azurefiles_sg_checklist.en.json
+++ b/checklists-ext/azurefiles_sg_checklist.en.json
@@ -236,35 +236,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -301,6 +301,6 @@
"name": "Azure Files Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.es.json b/checklists-ext/azurefiles_sg_checklist.es.json
new file mode 100644
index 000000000..39002d4ce
--- /dev/null
+++ b/checklists-ext/azurefiles_sg_checklist.es.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "La redundancia protege sus datos contra fallos inesperados. Las opciones de configuración de ZRS y GZRS se replican en varias zonas de disponibilidad y permiten que las aplicaciones continúen leyendo datos durante una interrupción. Para obtener más información, consulte Durabilidad y disponibilidad por escenario de interrupción y Parámetros de durabilidad y disponibilidad.",
+ "guid": "7005fc93-af02-4183-af03-e363ccf31456",
+ "service": "Azure Files",
+ "text": "Configure la cuenta de almacenamiento para la redundancia. Para obtener la máxima disponibilidad y durabilidad, configure su cuenta con almacenamiento con redundancia de zona (ZRS), GRS o GZRS. Las regiones limitadas de Azure admiten ZRS para recursos compartidos de archivos estándar y premium. Solo las cuentas SMB estándar son compatibles con GRS y GZRS. Los recursos compartidos premium de SMB y NFS no son compatibles con GRS y GZRS. Azure Files no admite el almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS) ni el almacenamiento con redundancia de zona geográfica con acceso de lectura (RA-GZRS). Si configura una cuenta de almacenamiento para usar RA-GRS o RA-GZRS, los recursos compartidos de archivos se configuran y facturan como GRS o GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta propiedad le ayuda a calcular la cantidad de datos que podría perder si inicia una conmutación por error de la cuenta. Todos los datos y metadatos que se escriben antes de la última hora de sincronización están disponibles en la región secundaria, pero es posible que se pierdan los datos y metadatos que se escriben después de la última hora de sincronización porque no se escriben en la región secundaria.",
+ "guid": "f547bc73-43a1-4cd6-96c0-aee917f85daf",
+ "service": "Azure Files",
+ "text": "Antes de iniciar una conmutación por error o conmutación por recuperación, compruebe el valor de la propiedad de tiempo de la última sincronización para evaluar la posibilidad de pérdida de datos. Esta recomendación sólo se aplica a las configuraciones GRS y GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La eliminación temporal funciona en un nivel de recurso compartido de archivos para proteger los recursos compartidos de archivos de Azure frente a la eliminación accidental. La restauración a un momento dado protege contra la eliminación accidental o los daños porque puede restaurar los recursos compartidos de archivos a un estado anterior. Para obtener más información, consulte Información general sobre la protección de datos.",
+ "guid": "8f7b75e8-8b14-44ce-b4a5-3e994995479d",
+ "service": "Azure Files",
+ "text": "Como parte de su estrategia de copia de seguridad y recuperación, habilite la eliminación temporal y use instantáneas para la restauración a un momento dado. Puede usar Azure Backup para realizar copias de seguridad de los recursos compartidos de archivos SMB. También puede usar Azure File Sync para realizar copias de seguridad de recursos compartidos de archivos SMB locales en un recurso compartido de archivos de Azure. Azure Backup también le permite realizar una copia de seguridad almacenada (versión preliminar) de Azure Files para proteger sus datos de ataques de ransomware o pérdida de datos de origen debido a un actor malintencionado o un administrador no autorizado. Mediante el uso de la copia de seguridad almacenada, Azure Backup copia y almacena los datos en el almacén de Recovery Services. Esto crea una copia externa de los datos que puede conservar durante un máximo de 99 años. Azure Backup crea y administra los puntos de recuperación según la programación y la retención definidas en la directiva de copia de seguridad. Aprende más.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Bloquee la cuenta para evitar la eliminación accidental o malintencionada de la cuenta de almacenamiento, lo que puede provocar la pérdida de datos.",
+ "guid": "39e5cade-9e6a-4bde-bedd-5ec33dbf5634",
+ "service": "Azure Files",
+ "text": "Aplique un bloqueo de Azure Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 3.x es un protocolo seguro para Internet, pero es posible que no tenga la capacidad de cambiar las directivas de la organización o del ISP. Puede usar una puerta de enlace de VPN o una conexión de ExpressRoute como opción alternativa.",
+ "guid": "9f70f1de-9f49-4425-9fba-2bae24f81014",
+ "service": "Azure Files",
+ "text": "Abra el puerto TCP 445 de salida o configure una puerta de enlace de VPN o una conexión de Azure ExpressRoute para que los clientes fuera de Azure accedan al recurso compartido de archivos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 1 es un protocolo anticuado, ineficiente e inseguro. Desactívelo en los clientes para mejorar su posición de seguridad.",
+ "guid": "6ad18c63-4c63-45c3-b002-5b305235c439",
+ "service": "Azure Files",
+ "text": "Si abre el puerto 445, asegúrese de deshabilitar SMBv1 en clientes Windows y Linux. Azure Files no es compatible con SMB 1, pero debe deshabilitarlo en sus clientes.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El tráfico de red viaja a través de la red troncal de Microsoft en lugar de la red pública de Internet, lo que elimina la exposición al riesgo de la red pública de Internet.",
+ "guid": "0291451b-94f7-4f9c-a479-48c142e6c208",
+ "service": "Azure Files",
+ "text": "Considere la posibilidad de deshabilitar el acceso de red pública a la cuenta de almacenamiento. Habilite el acceso a la red pública solo si los clientes y servicios SMB externos a Azure requieren acceso a la cuenta de almacenamiento. Si deshabilita el acceso a la red pública, cree un punto de conexión privado para la cuenta de almacenamiento. Se aplican las tarifas estándar de procesamiento de datos para los puntos de conexión privados. Un punto de conexión privado no bloquea las conexiones con el punto de conexión público. De todos modos, debe deshabilitar el acceso a la red pública como se describió anteriormente. Si no necesita una dirección IP estática para el recurso compartido de archivos y desea evitar el costo de los puntos de conexión privados, puede restringir el acceso del punto de conexión público a redes virtuales y direcciones IP específicas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Minimice el riesgo de crear oportunidades para los atacantes.",
+ "guid": "28051b58-caf9-415f-ab61-daa7c3bf37c5",
+ "service": "Azure Files",
+ "text": "Habilite reglas de firewall que limiten el acceso a redes virtuales específicas. Comience con acceso cero y, a continuación, proporcione de forma metódica e incremental la menor cantidad de acceso necesaria para los clientes y los servicios.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use la autenticación basada en identidad para reducir la posibilidad de que un atacante use una clave de cuenta de almacenamiento para acceder a recursos compartidos de archivos.",
+ "guid": "fa742663-b3d8-4808-a5bb-213c9f4ae78b",
+ "service": "Azure Files",
+ "text": "Cuando sea posible, use la autenticación basada en identidad con el cifrado de vales Kerberos AES-256 para autorizar el acceso a los recursos compartidos de archivos de Azure SMB.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use Key Vault para recuperar claves en tiempo de ejecución en lugar de guardarlas con la aplicación. Key Vault también facilita la rotación de las claves sin interrumpir las aplicaciones. Rote periódicamente las claves de cuenta para reducir el riesgo de exponer sus datos a ataques maliciosos.",
+ "guid": "90b83f1c-670f-44e6-93b7-c22ac3bb73c3",
+ "service": "Azure Files",
+ "text": "Si usa claves de cuenta de almacenamiento, almacénelas en Key Vault y asegúrese de volver a generarlas periódicamente. Puede denegar por completo el acceso de la clave de la cuenta de almacenamiento al recurso compartido de archivos quitando NTLMv2 de la configuración de seguridad SMB del recurso compartido. Pero, por lo general, no debe quitar NTLMv2 de la configuración de seguridad de SMB del recurso compartido, ya que los administradores aún necesitan usar la clave de cuenta para algunas tareas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Esta configuración garantiza que todas las solicitudes que se realicen en la cuenta de almacenamiento se realicen a través de conexiones seguras (HTTPS). Se producirá un error en cualquier solicitud realizada a través de HTTP.",
+ "guid": "ad87891d-330d-4482-abd0-938ff9e700cc",
+ "service": "Azure Files",
+ "text": "En la mayoría de los casos, debe habilitar la opción Transferencia segura necesaria en todas las cuentas de almacenamiento para habilitar el cifrado en tránsito para los recursos compartidos de archivos SMB. No habilite esta opción si necesita permitir que clientes muy antiguos accedan al recurso compartido. Si deshabilita la transferencia segura, asegúrese de usar los controles de red para restringir el tráfico.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS 1.2 es más seguro y rápido que TLS 1.0 y 1.1, que no son compatibles con los algoritmos criptográficos modernos ni los conjuntos de cifrado.",
+ "guid": "8809e836-d9ae-41d8-b357-e0d4610892af",
+ "service": "Azure Files",
+ "text": "Configure la cuenta de almacenamiento para que TLS 1.2 sea la versión mínima para que los clientes envíen y reciban datos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 3.1.1, lanzado con Windows 10, contiene importantes actualizaciones de seguridad y rendimiento. AES-256-GCM ofrece un cifrado de canal más seguro.",
+ "guid": "7704ad4b-c605-458a-bca3-b9915288379d",
+ "service": "Azure Files",
+ "text": "Utilice solo la versión más reciente del protocolo SMB compatible (actualmente 3.1.1%) y use solo AES-256-GCM para el cifrado de canales SMB. Azure Files expone la configuración que puede usar para alternar el protocolo SMB y hacerlo más compatible o más seguro, en función de los requisitos de su organización. De forma predeterminada, se permiten todas las versiones SMB. Sin embargo, SMB 2.1 no está permitido si habilita Requerir transferencia segura porque SMB 2.1 no admite el cifrado de datos en tránsito. Si restringe esta configuración a un alto nivel de seguridad, es posible que algunos clientes no puedan conectarse al recurso compartido de archivos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Bloquee la cuenta para evitar la eliminación accidental o malintencionada de la cuenta de almacenamiento, lo que podría provocar la pérdida de datos.",
+ "guid": "8aba3a20-da7c-41fb-baf6-a954da9480fc",
+ "service": "Azure Files",
+ "text": "Aplique un bloqueo de Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Abra el puerto 2049 para permitir que los clientes se comuniquen con el recurso compartido de archivos de Azure NFS.",
+ "guid": "c0363075-4c11-41ae-bea9-c203481eb76e",
+ "service": "Azure Files",
+ "text": "Debe abrir el puerto 2049 en los clientes en los que desea montar el recurso compartido NFS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El tráfico de red viaja a través de la red troncal de Microsoft en lugar de la red pública de Internet, lo que elimina la exposición al riesgo de la red pública de Internet.",
+ "guid": "d3fffd01-afd2-4654-94cf-b971a379cb1e",
+ "service": "Azure Files",
+ "text": "Solo se puede acceder a los recursos compartidos de archivos de NFS Azure a través de redes restringidas. Por lo tanto, debe crear un punto de conexión privado para la cuenta de almacenamiento o restringir el acceso del punto de conexión público a las redes virtuales y direcciones IP seleccionadas. Se recomienda crear un punto de conexión privado. Debe configurar la seguridad de nivel de red para los recursos compartidos de NFS, ya que Azure Files no admite el cifrado en tránsito con el protocolo NFS. Debe deshabilitar la opción Requerir transferencia segura en la cuenta de almacenamiento para usar recursos compartidos de archivos de Azure NFS. Se aplican tarifas estándar de procesamiento de datos para los puntos de conexión privados. Si no necesita una dirección IP estática para el recurso compartido de archivos y desea evitar el costo de los puntos de conexión privados, puede restringir el acceso a los puntos de conexión públicos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "No permitir el uso de claves de cuenta de almacenamiento para que la cuenta de almacenamiento sea más segura.",
+ "guid": "e262e0ea-2a15-4870-a43e-77fae1ef4075",
+ "service": "Azure Files",
+ "text": "Considere la posibilidad de no permitir el acceso a la clave de la cuenta de almacenamiento en el nivel de la cuenta de almacenamiento. No necesita este acceso para montar recursos compartidos de archivos NFS. Pero tenga en cuenta que el control administrativo total de un recurso compartido de archivos, incluida la capacidad de tomar posesión de un archivo, requiere el uso de una clave de cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La migración a Azure Files es una carga de trabajo temporal que requiere muchas transacciones. Optimice el precio de las cargas de trabajo de transacciones elevadas para ayudar a reducir los costos de migración.",
+ "guid": "8ed27044-e89f-438c-a654-545697e9b951",
+ "service": "Azure Files",
+ "text": "Al migrar a recursos compartidos de archivos estándar de Azure, se recomienda comenzar en el nivel optimizado para transacciones durante la migración inicial. El uso de transacciones durante la migración no suele ser indicativo del uso normal de transacciones. Esta consideración no se aplica a los recursos compartidos de archivos premium porque el modelo de facturación aprovisionada no cobra por las transacciones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Seleccione el nivel de acceso adecuado para los recursos compartidos de archivos estándar a fin de reducir considerablemente los costos.",
+ "guid": "2b332ca7-f600-49c3-a072-ee3679cdcb3a",
+ "service": "Azure Files",
+ "text": "Después de migrar la carga de trabajo, si usa recursos compartidos de archivos estándar, elija cuidadosamente el nivel de acceso más rentable para el recurso compartido de archivos: frecuente, esporádico u optimizado para transacciones. Después de operar durante unos días o semanas con uso regular, puede insertar los recuentos de transacciones en la calculadora de precios para averiguar qué nivel se adapta mejor a su carga de trabajo. La mayoría de los clientes deben elegir cool incluso si usan activamente el recurso compartido. Pero debe examinar cada recurso compartido y comparar el saldo de la capacidad de almacenamiento con las transacciones para determinar su nivel. Si los costos de transacción representan un porcentaje significativo de su factura, los ahorros del uso del nivel de acceso esporádico a menudo compensan este costo y minimizan el costo total total. Se recomienda mover recursos compartidos de archivos estándar entre niveles de acceso solo cuando sea necesario para optimizar los cambios en el patrón de carga de trabajo. Cada movimiento incurre en transacciones. Para obtener más información, consulte Cambiar entre niveles estándar.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Aprovisione en exceso los recursos compartidos de archivos premium en una cantidad razonable para ayudar a mantener el rendimiento y tener en cuenta el crecimiento futuro y los requisitos de rendimiento.",
+ "guid": "9680a4b4-2878-45eb-bbc4-9954adf25eaa",
+ "service": "Azure Files",
+ "text": "Si usa recursos compartidos premium, asegúrese de aprovisionar capacidad y rendimiento más que suficientes para su carga de trabajo, pero no tanto como para incurrir en costos innecesarios. Se recomienda sobreaprovisionar dos o tres veces. Puede escalar dinámicamente los recursos compartidos de archivos premium hacia arriba o hacia abajo en función de las características de rendimiento de almacenamiento y entrada/salida (E/S).",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las reservas de tres años pueden proporcionar un descuento de hasta el 36% en el costo total del almacenamiento de archivos. Las reservas no afectan al rendimiento.",
+ "guid": "21d765dd-5a9c-44d7-908f-422102db61a1",
+ "service": "Azure Files",
+ "text": "Use las reservas de Azure Files, también conocidas como instancias reservadas, para confirmar previamente el uso de almacenamiento y obtener un descuento. Use reservas para cargas de trabajo de producción o cargas de trabajo de desarrollo y pruebas con huellas coherentes. Para obtener más información, consulte Optimización de costos con reservas de almacenamiento. Las reservas no incluyen cargos por transacción, ancho de banda, transferencia de datos y almacenamiento de metadatos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las instantáneas diferenciales garantizan que no se le facture varias veces por almacenar los mismos datos. Sin embargo, debe seguir supervisando el uso de instantáneas para ayudar a reducir la factura de Azure Files.",
+ "guid": "2600163f-0687-47c0-af5d-ebbc2e4f052b",
+ "service": "Azure Files",
+ "text": "Supervise el uso de instantáneas. Las instantáneas conllevan cargos, pero se facturan en función del uso de almacenamiento diferencial de cada instantánea. Solo pagas por la diferencia en cada instantánea. Para obtener más información, consulte Instantáneas. Azure File Sync toma instantáneas de nivel de recurso compartido y de nivel de archivo como parte del uso normal, lo que puede aumentar la factura total de Azure Files.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Establezca un período de retención para que los archivos eliminados temporalmente no se acumulen y aumenten el costo de la capacidad. Después del período de retención configurado, los datos eliminados permanentemente no incurren en ningún costo.",
+ "guid": "e2920277-545a-464d-83be-dd28b3e5c9db",
+ "service": "Azure Files",
+ "text": "Establezca períodos de retención para la función de eliminación temporal, especialmente cuando comience a usarla por primera vez. Considere comenzar con un período de retención corto para comprender mejor cómo afecta la función a su factura. El período de retención mínimo recomendado es de siete días. Al eliminar temporalmente recursos compartidos de archivos estándar y premium, se facturan como capacidad usada en lugar de capacidad aprovisionada. Y los recursos compartidos de archivos premium se facturan a la tarifa de instantánea mientras se encuentran en el estado de eliminación temporal. Los recursos compartidos de archivos estándar se facturan a la tarifa normal mientras se encuentran en el estado de eliminación temporal.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede usar los procesos de DevOps existentes para implementar nuevas cuentas de almacenamiento y usar Azure Policy para aplicar su configuración.",
+ "guid": "328229e7-0291-48e8-ad52-9c38e3b1dbd2",
+ "service": "Azure Files",
+ "text": "Use la infraestructura como código (IaC) para definir los detalles de las cuentas de almacenamiento en plantillas de Azure Resource Manager (plantillas de ARM), Bicep o Terraform.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede realizar un seguimiento del estado y el funcionamiento de cada una de sus cuentas. Cree fácilmente paneles e informes que las partes interesadas pueden usar para realizar un seguimiento del estado de sus cuentas de almacenamiento.",
+ "guid": "d2414f84-0b9f-44a6-ab13-bef6984774bc",
+ "service": "Azure Files",
+ "text": "Use la información de almacenamiento para realizar un seguimiento del estado y el rendimiento de las cuentas de almacenamiento. Storage Insights proporciona una vista unificada de los errores, el rendimiento, la disponibilidad y la capacidad de todas las cuentas de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Monitor proporciona una vista de la disponibilidad, el rendimiento y la resistencia de los recursos compartidos de archivos.",
+ "guid": "3a2cca3e-b3c7-46b2-b87e-7db328897503",
+ "service": "Azure Files",
+ "text": "Utilice Monitor para analizar métricas, como la disponibilidad, la latencia y el uso, y para crear alertas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Aumente el rendimiento y las IOPS a la vez que reduce el coste total de propiedad. Las ventajas de rendimiento aumentan con el número de archivos que distribuyen la carga.",
+ "guid": "7e271270-4f79-4418-b668-5c4a16627bbd",
+ "service": "Azure Files",
+ "text": "Habilite SMB Multicanal para recursos compartidos de archivos SMB premium. SMB Multichannel permite a un cliente SMB 3.1.1 establecer varias conexiones de red a un recurso compartido de archivos de Azure SMB. SMB multicanal solo funciona cuando la característica está habilitada tanto en el lado del cliente (su cliente) como en el lado del servicio (Azure). En los clientes de Windows, SMB Multicanal está habilitado de forma predeterminada, pero debe habilitarlo en su cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Aumente el rendimiento a escala y reduzca el costo total de propiedad de los recursos compartidos de archivos NFS.",
+ "guid": "9f9cb641-df29-440a-8f30-513367264e14",
+ "service": "Azure Files",
+ "text": "Use la opción de montaje del lado cliente nconnect con recursos compartidos de archivos de Azure NFS en clientes Linux. Nconnect permite usar más conexiones TCP entre el cliente y el servicio premium de Azure Files para NFSv4.1.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Evite la limitación para proporcionar la mejor experiencia posible al cliente.",
+ "guid": "e85fb837-f8a0-4b2f-b759-6ccdafa4f05c",
+ "service": "Azure Files",
+ "text": "Asegúrese de que el recurso compartido de archivos o la cuenta de almacenamiento no se estén limitando, lo que puede dar lugar a una alta latencia, un bajo rendimiento o un bajo número de IOPS. Las solicitudes se limitan cuando se alcanzan los límites de IOPS, entrada o salida. En el caso de las cuentas de almacenamiento estándar, la limitación se produce en el nivel de cuenta. En el caso de los recursos compartidos de archivos premium, la limitación suele producirse en el nivel de recurso compartido.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Files Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.ja.json b/checklists-ext/azurefiles_sg_checklist.ja.json
new file mode 100644
index 000000000..30868bb0e
--- /dev/null
+++ b/checklists-ext/azurefiles_sg_checklist.ja.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "冗長性は、予期しない障害からデータを保護します。ZRS と GZRS の構成オプションは、さまざまな可用性ゾーン間でレプリケートされ、障害発生時にアプリケーションがデータの読み取りを続行できるようにします。詳細については、「停止シナリオ別の持続性と可用性」および「持続性と可用性のパラメーター」を参照してください。",
+ "guid": "7005fc93-af02-4183-af03-e363ccf31456",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントを冗長性のために構成します。可用性と持続性を最大限に高めるには、ゾーン冗長ストレージ (ZRS)、GRS、または GZRS を使用してアカウントを構成します。限られた Azure リージョンでは、Standard ファイル共有と Premium ファイル共有の ZRS がサポートされています。標準の SMB アカウントのみが GRS と GZRS をサポートします。Premium SMB 共有と NFS 共有では、GRS と GZRS はサポートされていません。Azure Files では、読み取りアクセス geo 冗長ストレージ (RA-GRS) または読み取りアクセス geo ゾーン冗長ストレージ (RA-GZRS) はサポートされていません。RA-GRS または RA-GZRS を使用するようにストレージ アカウントを構成すると、ファイル共有は GRS または GZRS として構成され、課金されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このプロパティは、アカウントのフェールオーバーを開始した場合に失われる可能性のあるデータの量を見積もるのに役立ちます。最終同期時刻より前に書き込まれたすべてのデータとメタデータはセカンダリリージョンで使用できますが、最終同期時刻より後に書き込まれたデータとメタデータは、セカンダリリージョンに書き込まれていないため、失われる可能性があります。",
+ "guid": "f547bc73-43a1-4cd6-96c0-aee917f85daf",
+ "service": "Azure Files",
+ "text": "フェイルオーバーまたはフェイルバックを開始する前に、最終同期時刻プロパティの値を確認して、データ損失の可能性を評価してください。この推奨事項は、GRS および GZRS 構成にのみ適用されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "論理的な削除は、ファイル共有レベルで機能し、Azure ファイル共有を誤って削除しないように保護します。ポイントインタイム リストアでは、ファイル共有を以前の状態に復元できるため、誤って削除や破損が発生するのを防ぐことができます。詳細については、「データ保護の概要」を参照してください。",
+ "guid": "8f7b75e8-8b14-44ce-b4a5-3e994995479d",
+ "service": "Azure Files",
+ "text": "バックアップとリカバリの戦略の一環として、論理的な削除を有効にし、スナップショットを使用してポイントインタイム リストアを行います。Azure Backup を使用して、SMB ファイル共有をバックアップできます。また、Azure File Sync を使用して、オンプレミスの SMB ファイル共有を Azure ファイル共有にバックアップすることもできます。 Azure Backup では、Azure Files の保管型バックアップ (プレビュー) を実行して、ランサムウェア攻撃や、悪意のあるアクターや悪意のある管理者によるソース データの損失からデータを保護することもできます。コンテナー バックアップを使用すると、Azure Backup は Recovery Services コンテナーにデータをコピーして格納します。これにより、データのオフサイトコピーが作成され、最大99年間保持できます。Azure Backup は、バックアップ ポリシーで定義されているスケジュールとリテンション期間に従って復旧ポイントを作成および管理します。詳細情報。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アカウントをロックして、ストレージ・アカウントが誤ってまたは悪意を持って削除され、データが失われるのを防ぎます。",
+ "guid": "39e5cade-9e6a-4bde-bedd-5ec33dbf5634",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントに Azure Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.x はインターネットに安全なプロトコルですが、組織ポリシーや ISP ポリシーを変更できない場合があります。別のオプションとして、VPN ゲートウェイまたは ExpressRoute 接続を使用できます。",
+ "guid": "9f70f1de-9f49-4425-9fba-2bae24f81014",
+ "service": "Azure Files",
+ "text": "TCP ポート 445 を送信で開くか、Azure の外部のクライアントがファイル共有にアクセスするための VPN ゲートウェイまたは Azure ExpressRoute 接続を設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 1 は、古く、非効率的で、安全でないプロトコルです。クライアントで無効にして、セキュリティ体制を改善します。",
+ "guid": "6ad18c63-4c63-45c3-b002-5b305235c439",
+ "service": "Azure Files",
+ "text": "ポート 445 を開く場合は、Windows クライアントと Linux クライアントで SMBv1 を必ず無効にしてください。Azure Files では SMB 1 はサポートされていませんが、クライアントで無効にする必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワーク トラフィックは、パブリック インターネットではなく Microsoft バックボーン ネットワークを経由するため、パブリック インターネットからのリスクにさらされる必要がなくなります。",
+ "guid": "0291451b-94f7-4f9c-a479-48c142e6c208",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントへのパブリック ネットワーク アクセスを無効にすることを検討してください。パブリック ネットワーク アクセスは、Azure の外部にある SMB クライアントとサービスがストレージ アカウントへのアクセスを必要とする場合にのみ有効にします。パブリック ネットワーク アクセスを無効にする場合は、ストレージ アカウントのプライベート エンドポイントを作成します。プライベートエンドポイントの標準的なデータ処理料金が適用されます。プライベート エンドポイントは、パブリック エンドポイントへの接続をブロックしません。前述のように、パブリックネットワークアクセスを無効にする必要があります。ファイル共有に静的 IP アドレスを必要とせず、プライベート エンドポイントのコストを回避したい場合は、代わりにパブリック エンドポイントのアクセスを特定の仮想ネットワークと IP アドレスに制限できます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "攻撃者に隙を与えるリスクを最小限に抑えます。",
+ "guid": "28051b58-caf9-415f-ab61-daa7c3bf37c5",
+ "service": "Azure Files",
+ "text": "特定の仮想ネットワークへのアクセスを制限するファイアウォール規則を有効にします。ゼロアクセスから始めて、クライアントとサービスに必要な最小限のアクセスを系統的かつ段階的に提供します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ID ベースの認証を使用して、攻撃者がストレージ アカウント キーを使用してファイル共有にアクセスする可能性を減らします。",
+ "guid": "fa742663-b3d8-4808-a5bb-213c9f4ae78b",
+ "service": "Azure Files",
+ "text": "可能な場合は、AES-256 Kerberos チケット暗号化による ID ベースの認証を使用して、SMB Azure ファイル共有へのアクセスを承認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault を使用して、アプリケーションと共にキーを保存するのではなく、実行時にキーを取得します。また、Key Vault を使用すると、アプリケーションを中断することなくキーを簡単にローテーションできます。アカウント キーを定期的にローテーションして、データが悪意のある攻撃にさらされるリスクを軽減します。",
+ "guid": "90b83f1c-670f-44e6-93b7-c22ac3bb73c3",
+ "service": "Azure Files",
+ "text": "ストレージ アカウント キーを使用する場合は、Key Vault に格納し、定期的に再生成してください。共有の SMB セキュリティ設定から NTLMv2 を削除することで、ストレージ アカウント キーによるファイル共有へのアクセスを完全に禁止できます。ただし、管理者は一部のタスクでアカウント キーを使用する必要があるため、通常は共有の SMB セキュリティ設定から NTLMv2 を削除しないでください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この設定により、ストレージ アカウントに対して行われるすべての要求が、セキュリティで保護された接続 (HTTPS) 経由で行われるようになります。HTTP 経由で行われた要求はすべて失敗します。",
+ "guid": "ad87891d-330d-4482-abd0-938ff9e700cc",
+ "service": "Azure Files",
+ "text": "ほとんどの場合、すべてのストレージ アカウントで [安全な転送が必要] オプションを有効にして、SMB ファイル共有の転送中の暗号化を有効にする必要があります。非常に古いクライアントが共有にアクセスできるようにする必要がある場合は、このオプションを有効にしないでください。安全な転送を無効にする場合は、ネットワーク制御を使用してトラフィックを制限してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 は、最新の暗号化アルゴリズムと暗号スイートをサポートしていない TLS 1.0 および 1.1 よりも安全で高速です。",
+ "guid": "8809e836-d9ae-41d8-b357-e0d4610892af",
+ "service": "Azure Files",
+ "text": "TLS 1.2 がクライアントがデータを送受信するための最小バージョンになるように、ストレージ アカウントを構成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Windows 10 と共にリリースされた SMB 3.1.1 には、重要なセキュリティ更新プログラムとパフォーマンス更新プログラムが含まれています。AES-256-GCM は、より安全なチャネル暗号化を提供します。",
+ "guid": "7704ad4b-c605-458a-bca3-b9915288379d",
+ "service": "Azure Files",
+ "text": "サポートされている最新の SMB プロトコル バージョン (現在は 3.1.1.) のみを使用し、SMB チャネルの暗号化には AES-256-GCM のみを使用します。Azure Files では、組織の要件に応じて、SMB プロトコルを切り替え、互換性や安全性を高めるために使用できる設定が公開されています。デフォルトでは、すべての SMB バージョンが許可されます。ただし、SMB 2.1 は転送中のデータの暗号化をサポートしていないため、[安全な転送が必要] を有効にした場合、SMB 2.1 は許可されません。これらの設定を高レベルのセキュリティに制限すると、一部のクライアントがファイル共有に接続できなくなる可能性があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "アカウントをロックして、ストレージ アカウントが誤ってまたは悪意を持って削除され、データが失われる可能性があるのを防ぎます。",
+ "guid": "8aba3a20-da7c-41fb-baf6-a954da9480fc",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントに Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ポート 2049 を開いて、クライアントが NFS Azure ファイル共有と通信できるようにします。",
+ "guid": "c0363075-4c11-41ae-bea9-c203481eb76e",
+ "service": "Azure Files",
+ "text": "NFS 共有をマウントするクライアントでポート 2049 を開く必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワーク トラフィックは、パブリック インターネットではなく Microsoft バックボーン ネットワークを経由するため、パブリック インターネットからのリスクにさらされる必要がなくなります。",
+ "guid": "d3fffd01-afd2-4654-94cf-b971a379cb1e",
+ "service": "Azure Files",
+ "text": "NFS Azure ファイル共有には、制限されたネットワーク経由でのみアクセスできます。そのため、ストレージ アカウントのプライベート エンドポイントを作成するか、パブリック エンドポイントへのアクセスを選択した仮想ネットワークと IP アドレスに制限する必要があります。プライベートエンドポイントを作成することをお勧めします。Azure Files では NFS プロトコルを使用した転送中の暗号化がサポートされていないため、NFS 共有のネットワーク レベルのセキュリティを構成する必要があります。NFS Azure ファイル共有を使用するには、ストレージ アカウントの [セキュリティで保護された転送が必要] 設定を無効にする必要があります。プライベートエンドポイントには、標準のデータ処理料金が適用されます。ファイル共有に静的 IP アドレスを必要とせず、プライベート エンドポイントのコストを回避したい場合は、代わりにパブリック エンドポイントのアクセスを制限できます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ストレージ アカウント キーの使用を禁止して、ストレージ アカウントのセキュリティを強化します。",
+ "guid": "e262e0ea-2a15-4870-a43e-77fae1ef4075",
+ "service": "Azure Files",
+ "text": "ストレージ アカウント キーへのアクセスをストレージ アカウント レベルで禁止することを検討してください。NFS ファイル共有をマウントするために、このアクセス権は必要ありません。ただし、ファイル共有の完全な管理制御 (ファイルの所有権を取得する機能を含む) には、ストレージ アカウント キーの使用が必要であることに注意してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Files への移行は、トランザクション負荷の高い一時的なワークロードです。トランザクションの多いワークロードの価格を最適化して、移行コストを削減します。",
+ "guid": "8ed27044-e89f-438c-a654-545697e9b951",
+ "service": "Azure Files",
+ "text": "標準の Azure ファイル共有に移行する場合は、初期移行時にトランザクション最適化レベルで開始することをお勧めします。移行中のトランザクション使用量は、通常、通常のトランザクション使用量を示すものではありません。この考慮事項は、プロビジョニングされた課金モデルではトランザクションに対して課金されないため、Premium ファイル共有には適用されません。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Standard ファイル共有に適切なアクセス層を選択して、コストを大幅に削減します。",
+ "guid": "2b332ca7-f600-49c3-a072-ee3679cdcb3a",
+ "service": "Azure Files",
+ "text": "ワークロードを移行した後、Standard ファイル共有を使用する場合は、ファイル共有に最もコスト効率の高いアクセス階層 (ホット、クール、またはトランザクション最適化) を慎重に選択します。数日または数週間定期的に使用した後、料金計算ツールにトランザクション数を挿入して、ワークロードに最適な階層を特定できます。ほとんどのお客様は、シェアを積極的に使用している場合でも、クールを選択する必要があります。ただし、各共有を調べ、ストレージ容量とトランザクションのバランスを比較して、階層を決定する必要があります。トランザクション コストが請求額のかなりの割合を占める場合、クール アクセス層の使用による節約により、多くの場合、このコストが相殺され、全体的なコスト全体が最小限に抑えられます。Standard ファイル共有をアクセス階層間で移動するのは、ワークロード パターンの変更を最適化するために必要な場合にのみ行うことをお勧めします。各移動にはトランザクションが発生します。詳細については、「Standard レベル間の切り替え」を参照してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "プレミアム ファイル共有を妥当な量だけオーバープロビジョニングして、パフォーマンスを維持し、将来の成長とパフォーマンス要件を考慮に入れます。",
+ "guid": "9680a4b4-2878-45eb-bbc4-9954adf25eaa",
+ "service": "Azure Files",
+ "text": "Premium 共有を使用する場合は、ワークロードに対して十分な容量とパフォーマンスをプロビジョニングし、不要なコストが発生するほど多くはプロビジョニングしないようにします。2 倍から 3 倍のオーバープロビジョニングをお勧めします。Premium ファイル共有は、ストレージと入出力 (IO) のパフォーマンス特性に応じて動的にスケールアップまたはスケールダウンできます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "3年間の予約では、ファイルストレージの総コストから最大36%の割引を受けることができます。予約はパフォーマンスに影響しません。",
+ "guid": "21d765dd-5a9c-44d7-908f-422102db61a1",
+ "service": "Azure Files",
+ "text": "Azure Files の予約 (予約インスタンスとも呼ばれます) を使用して、ストレージの使用を事前にコミットし、割引を受けます。運用ワークロードまたは一貫したフットプリントの開発/テスト ワークロードに予約を使用します。詳細については、「ストレージ予約によるコストの最適化」を参照してください。予約には、トランザクション、帯域幅、データ転送、メタデータ ストレージの料金は含まれません。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "差分スナップショットを使用すると、同じデータを格納しても複数回課金されることはありません。ただし、Azure Files の請求額を削減するために、スナップショットの使用状況を監視する必要があります。",
+ "guid": "2600163f-0687-47c0-af5d-ebbc2e4f052b",
+ "service": "Azure Files",
+ "text": "スナップショットの使用状況を監視します。スナップショットには料金が発生しますが、各スナップショットのストレージ使用量の差分に基づいて課金されます。各スナップショットの差額に対してのみ支払います。詳細については、「スナップショット」を参照してください。Azure File Sync では、通常の使用の一部として共有レベルとファイルレベルのスナップショットが取得されるため、Azure Files の請求額が増加する可能性があります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "論理的に削除されたファイルが積み重なって容量のコストが増加しないように、保持期間を設定します。構成された保持期間が経過すると、完全に削除されたデータにはコストはかかりません。",
+ "guid": "e2920277-545a-464d-83be-dd28b3e5c9db",
+ "service": "Azure Files",
+ "text": "論理的な削除機能の保持期間を設定します (特に、最初に使用を開始するとき)。この機能が請求にどのように影響するかをよりよく理解するために、短い保持期間から始めることを検討してください。推奨される最小保持期間は 7 日間です。Standard ファイル共有と Premium ファイル共有を論理的な削除を行うと、プロビジョニングされた容量ではなく、使用済み容量として課金されます。また、Premium ファイル共有は、論理的な削除状態の間はスナップショット レートで課金されます。Standard ファイル共有は、論理的な削除状態の間、通常のレートで課金されます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "既存の DevOps プロセスを使用して新しいストレージ アカウントをデプロイし、Azure Policy を使用してその構成を適用できます。",
+ "guid": "328229e7-0291-48e8-ad52-9c38e3b1dbd2",
+ "service": "Azure Files",
+ "text": "コードとしてのインフラストラクチャ (IaC) を使用して、Azure Resource Manager テンプレート (ARM テンプレート)、Bicep、または Terraform でストレージ アカウントの詳細を定義します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各アカウントの健康状態と操作を追跡できます。ダッシュボードとレポートを簡単に作成して、関係者がストレージ アカウントの正常性を追跡できます。",
+ "guid": "d2414f84-0b9f-44a6-ab13-bef6984774bc",
+ "service": "Azure Files",
+ "text": "Storage insights を使用して、ストレージ アカウントの正常性とパフォーマンスを追跡します。Storage insights は、すべてのストレージ アカウントの障害、パフォーマンス、可用性、容量の統合ビューを提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Monitor は、ファイル共有の可用性、パフォーマンス、回復性を表示します。",
+ "guid": "3a2cca3e-b3c7-46b2-b87e-7db328897503",
+ "service": "Azure Files",
+ "text": "Monitor を使用して、可用性、待機時間、使用状況などのメトリックを分析し、アラートを作成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "スループットとIOPSを向上させながら、総所有コストを削減します。パフォーマンス上の利点は、負荷を分散するファイルの数とともに増加します。",
+ "guid": "7e271270-4f79-4418-b668-5c4a16627bbd",
+ "service": "Azure Files",
+ "text": "Premium SMB ファイル共有の SMB マルチチャネルを有効にします。SMB マルチチャネルを使用すると、SMB 3.1.1 クライアントは SMB Azure ファイル共有への複数のネットワーク接続を確立できます。SMB マルチチャネルは、クライアント側 (クライアント) とサービス側 (Azure) の両方で機能が有効になっている場合にのみ機能します。Windows クライアントでは、SMB マルチチャネルは既定で有効になっていますが、ストレージ アカウントで有効にする必要があります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "大規模なパフォーマンスを向上させ、NFS ファイル共有の総保有コストを削減します。",
+ "guid": "9f9cb641-df29-440a-8f30-513367264e14",
+ "service": "Azure Files",
+ "text": "Linux クライアント上の NFS Azure ファイル共有で nconnect クライアント側マウント オプションを使用します。Nconnect を使用すると、クライアントと NFSv4.1 の Azure Files Premium サービスとの間で、より多くの TCP 接続を使用できます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "可能な限り最高のクライアント エクスペリエンスを提供するために、調整を回避します。",
+ "guid": "e85fb837-f8a0-4b2f-b759-6ccdafa4f05c",
+ "service": "Azure Files",
+ "text": "ファイル共有またはストレージ アカウントが調整されていないことを確認します。これにより、待機時間が長くなったり、スループットが低くなったり、IOPS が低くなったりする可能性があります。要求は、IOPS、イングレス、またはエグレスの制限に達すると調整されます。Standard ストレージ アカウントの場合、調整はアカウント レベルで行われます。Premium ファイル共有の場合、通常、調整は共有レベルで行われます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Files Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.ko.json b/checklists-ext/azurefiles_sg_checklist.ko.json
new file mode 100644
index 000000000..35f9e078f
--- /dev/null
+++ b/checklists-ext/azurefiles_sg_checklist.ko.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "중복성은 예기치 않은 오류로부터 데이터를 보호합니다. ZRS 및 GZRS 구성 옵션은 다양한 가용성 영역에서 복제되며 애플리케이션이 중단 중에도 데이터를 계속 읽을 수 있도록 합니다. 자세한 내용은 Durability and availability by outage scenario 및 Durability and availability parameters를 참조하세요.",
+ "guid": "7005fc93-af02-4183-af03-e363ccf31456",
+ "service": "Azure Files",
+ "text": "중복성을 위해 저장소 계정을 구성합니다. 가용성과 내구성을 최대화하려면 ZRS(영역 중복 스토리지), GRS 또는 GZRS를 사용하여 계정을 구성합니다. 제한된 Azure 지역은 표준 및 프리미엄 파일 공유에 대해 ZRS를 지원합니다. 표준 SMB 계정만 GRS 및 GZRS를 지원합니다. 프리미엄 SMB 공유 및 NFS 공유는 GRS 및 GZRS를 지원하지 않습니다. Azure Files는 RA-GRS(읽기 액세스 지역 중복 스토리지) 또는 RA-GZRS(읽기 액세스 지역 영역 중복 스토리지)를 지원하지 않습니다. RA-GRS 또는 RA-GZRS를 사용하도록 스토리지 계정을 구성하는 경우 파일 공유가 GRS 또는 GZRS로 구성되고 청구됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 속성은 계정 장애 조치(failover)를 시작할 경우 손실될 수 있는 데이터의 양을 예측하는 데 도움이 됩니다. 마지막 동기화 시간 이전에 기록된 모든 데이터 및 메타데이터는 보조 지역에서 사용할 수 있지만 마지막 동기화 시간 이후에 기록된 데이터 및 메타데이터는 보조 지역에 기록되지 않기 때문에 손실될 수 있습니다.",
+ "guid": "f547bc73-43a1-4cd6-96c0-aee917f85daf",
+ "service": "Azure Files",
+ "text": "장애 조치(failover) 또는 장애 복구(failback)를 시작하기 전에 마지막 동기화 시간 속성의 값을 확인하여 데이터 손실 가능성을 평가합니다. 이 권장 사항은 GRS 및 GZRS 구성에만 적용됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "일시 삭제는 파일 공유 수준에서 작동하여 실수로 삭제되지 않도록 Azure 파일 공유를 보호합니다. 특정 시점 복원은 파일 공유를 이전 상태로 복원할 수 있으므로 실수로 인한 삭제 또는 손상을 방지합니다. 자세한 내용은 데이터 보호 개요를 참조하세요.",
+ "guid": "8f7b75e8-8b14-44ce-b4a5-3e994995479d",
+ "service": "Azure Files",
+ "text": "백업 및 복구 전략의 일환으로 일시 삭제를 활성화하고 특정 시점 복원을 위해 스냅샷을 사용합니다. Azure Backup을 사용하여 SMB 파일 공유를 백업할 수 있습니다. Azure 파일 동기화를 사용하여 온-프레미스 SMB 파일 공유를 Azure 파일 공유에 백업할 수도 있습니다. 또한 Azure Backup을 사용하면 Azure Files의 자격 증명 모음 백업(미리 보기)을 수행하여 악의적인 행위자 또는 악의적인 관리자로 인한 랜섬웨어 공격 또는 원본 데이터 손실로부터 데이터를 보호할 수 있습니다. Azure Backup은 자격 증명 모음 백업을 사용하여 Recovery Services 자격 증명 모음에 데이터를 복사하고 저장합니다. 이렇게 하면 최대 99년 동안 보존할 수 있는 데이터의 오프사이트 복사본이 만들어집니다. Azure Backup은 백업 정책에 정의된 일정 및 보존에 따라 복구 지점을 만들고 관리합니다. 더 알아보세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "데이터 손실이 발생할 수 있는 스토리지 계정의 우발적 또는 악의적 삭제를 방지하기 위해 계정을 잠급니다.",
+ "guid": "39e5cade-9e6a-4bde-bedd-5ec33dbf5634",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 Azure Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SMB 3.x는 인터넷 안전 프로토콜이지만 조직 또는 ISP 정책을 변경할 수 없는 경우가 있습니다. VPN 게이트웨이 또는 ExpressRoute 연결을 대체 옵션으로 사용할 수 있습니다.",
+ "guid": "9f70f1de-9f49-4425-9fba-2bae24f81014",
+ "service": "Azure Files",
+ "text": "TCP 포트 445 아웃바운드를 열거나 Azure 외부의 클라이언트가 파일 공유에 액세스할 수 있도록 VPN 게이트웨이 또는 Azure ExpressRoute 연결을 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SMB 1은 오래되고 비효율적이며 안전하지 않은 프로토콜입니다. 보안 태세를 강화하기 위해 클라이언트에서 비활성화합니다.",
+ "guid": "6ad18c63-4c63-45c3-b002-5b305235c439",
+ "service": "Azure Files",
+ "text": "포트 445를 여는 경우 Windows 및 Linux 클라이언트에서 SMBv1을 비활성화해야 합니다. Azure Files는 SMB 1을 지원하지 않지만 클라이언트에서 사용하지 않도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 트래픽은 공용 인터넷 대신 Microsoft 백본 네트워크를 통해 이동하므로 공용 인터넷에서 위험에 노출되지 않습니다.",
+ "guid": "0291451b-94f7-4f9c-a479-48c142e6c208",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 대한 공용 네트워크 액세스를 사용하지 않도록 설정하는 것이 좋습니다. Azure 외부에 있는 SMB 클라이언트 및 서비스에 스토리지 계정에 액세스해야 하는 경우에만 공용 네트워크 액세스를 사용하도록 설정합니다. 공용 네트워크 액세스를 사용하지 않도록 설정하는 경우 스토리지 계정에 대한 프라이빗 엔드포인트를 만듭니다. 프라이빗 엔드포인트에 대한 표준 데이터 처리 요금이 적용됩니다. 프라이빗 엔드포인트는 퍼블릭 엔드포인트에 대한 연결을 차단하지 않습니다. 앞에서 설명한 대로 공용 네트워크 액세스를 사용하지 않도록 설정해야 합니다. 파일 공유에 고정 IP 주소가 필요하지 않고 프라이빗 엔드포인트 비용을 방지하려는 경우 대신 특정 가상 네트워크 및 IP 주소에 대한 퍼블릭 엔드포인트 액세스를 제한할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공격자에게 틈을 만들 위험을 최소화합니다.",
+ "guid": "28051b58-caf9-415f-ab61-daa7c3bf37c5",
+ "service": "Azure Files",
+ "text": "특정 가상 네트워크에 대한 액세스를 제한하는 방화벽 규칙을 사용하도록 설정합니다. 제로 액세스부터 시작한 다음, 클라이언트 및 서비스에 필요한 최소한의 액세스 권한을 체계적이고 점진적으로 제공합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "ID 기반 인증을 사용하여 공격자가 스토리지 계정 키를 사용하여 파일 공유에 액세스할 가능성을 줄입니다.",
+ "guid": "fa742663-b3d8-4808-a5bb-213c9f4ae78b",
+ "service": "Azure Files",
+ "text": "가능한 경우 AES-256 Kerberos 티켓 암호화와 함께 ID 기반 인증을 사용하여 SMB Azure 파일 공유에 대한 액세스 권한을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Key Vault를 사용하여 애플리케이션과 함께 키를 저장하는 대신 런타임에 키를 검색합니다. 또한 Key Vault를 사용하면 애플리케이션을 중단하지 않고 키를 쉽게 회전할 수 있습니다. 계정 키를 주기적으로 교체하여 데이터가 악의적인 공격에 노출될 위험을 줄입니다.",
+ "guid": "90b83f1c-670f-44e6-93b7-c22ac3bb73c3",
+ "service": "Azure Files",
+ "text": "스토리지 계정 키를 사용하는 경우 Key Vault에 저장하고 주기적으로 다시 생성해야 합니다. 공유의 SMB 보안 설정에서 NTLMv2를 제거하여 파일 공유에 대한 스토리지 계정 키 액세스를 완전히 허용하지 않을 수 있습니다. 그러나 관리자는 여전히 일부 작업에 계정 키를 사용해야 하므로 일반적으로 공유의 SMB 보안 설정에서 NTLMv2를 제거해서는 안 됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 설정은 스토리지 계정에 대한 모든 요청이 보안 연결(HTTPS)을 통해 수행되도록 합니다. HTTP를 통한 모든 요청은 실패합니다.",
+ "guid": "ad87891d-330d-4482-abd0-938ff9e700cc",
+ "service": "Azure Files",
+ "text": "대부분의 경우 모든 스토리지 계정에서 보안 전송 필요 옵션을 사용하도록 설정하여 SMB 파일 공유에 대해 전송 중 암호화를 사용하도록 설정해야 합니다. 매우 오래된 클라이언트가 공유에 액세스할 수 있도록 허용해야 하는 경우 이 옵션을 활성화하지 마세요. 보안 전송을 비활성화하는 경우 네트워크 제어를 사용하여 트래픽을 제한해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 1.2는 최신 암호화 알고리즘 및 암호 그룹을 지원하지 않는 TLS 1.0 및 1.1보다 안전하고 빠릅니다.",
+ "guid": "8809e836-d9ae-41d8-b357-e0d4610892af",
+ "service": "Azure Files",
+ "text": "TLS 1.2가 클라이언트가 데이터를 보내고 받을 수 있는 최소 버전이 되도록 스토리지 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Windows 10과 함께 릴리스된 SMB 3.1.1에는 중요한 보안 및 성능 업데이트가 포함되어 있습니다. AES-256-GCM은 보다 안전한 채널 암호화를 제공합니다.",
+ "guid": "7704ad4b-c605-458a-bca3-b9915288379d",
+ "service": "Azure Files",
+ "text": "지원되는 가장 최근의 SMB 프로토콜 버전(현재 3.1.1)만 사용하고 SMB 채널 암호화에는 AES-256-GCM만 사용합니다. Azure Files는 SMB 프로토콜을 전환하고 조직의 요구 사항에 따라 호환성을 높이거나 보안을 강화하는 데 사용할 수 있는 설정을 노출합니다. 기본적으로 모든 SMB 버전이 허용됩니다. 그러나 SMB 2.1은 전송 중인 데이터의 암호화를 지원하지 않으므로 보안 전송 필요를 사용하도록 설정하면 SMB 2.1이 허용되지 않습니다. 이러한 설정을 높은 수준의 보안으로 제한하면 일부 클라이언트가 파일 공유에 연결하지 못할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "데이터 손실이 발생할 수 있는 스토리지 계정의 우발적 또는 악의적 삭제를 방지하기 위해 계정을 잠급니다.",
+ "guid": "8aba3a20-da7c-41fb-baf6-a954da9480fc",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "포트 2049를 열어 클라이언트가 NFS Azure 파일 공유와 통신할 수 있도록 합니다.",
+ "guid": "c0363075-4c11-41ae-bea9-c203481eb76e",
+ "service": "Azure Files",
+ "text": "NFS 공유를 탑재하려는 클라이언트에서 포트 2049를 열어야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 트래픽은 공용 인터넷 대신 Microsoft 백본 네트워크를 통해 이동하므로 공용 인터넷에서 위험에 노출되지 않습니다.",
+ "guid": "d3fffd01-afd2-4654-94cf-b971a379cb1e",
+ "service": "Azure Files",
+ "text": "NFS Azure 파일 공유는 제한된 네트워크를 통해서만 액세스할 수 있습니다. 따라서 스토리지 계정에 대한 프라이빗 엔드포인트를 만들거나 선택한 가상 네트워크 및 IP 주소에 대한 퍼블릭 엔드포인트 액세스를 제한해야 합니다. 프라이빗 엔드포인트를 만드는 것이 좋습니다. Azure Files는 NFS 프로토콜을 사용한 전송 중 암호화를 지원하지 않으므로 NFS 공유에 대한 네트워크 수준 보안을 구성해야 합니다. NFS Azure 파일 공유를 사용하려면 스토리지 계정에서 보안 전송 필요 설정을 사용하지 않도록 설정해야 합니다. 프라이빗 엔드포인트에는 표준 데이터 처리 요금이 적용됩니다. 파일 공유에 고정 IP 주소가 필요하지 않고 프라이빗 엔드포인트 비용을 피하려면 대신 퍼블릭 엔드포인트 액세스를 제한할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "스토리지 계정을 더 안전하게 만들기 위해 스토리지 계정 키 사용을 허용하지 않습니다.",
+ "guid": "e262e0ea-2a15-4870-a43e-77fae1ef4075",
+ "service": "Azure Files",
+ "text": "스토리지 계정 수준에서 스토리지 계정 키 액세스를 허용하지 않는 것이 좋습니다. NFS 파일 공유를 탑재하는 데 이 액세스 권한이 필요하지 않습니다. 그러나 파일 소유권을 가져오는 기능을 포함하여 파일 공유에 대한 모든 관리 제어를 하려면 스토리지 계정 키를 사용해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Files로 마이그레이션하는 것은 일시적이고 트랜잭션이 많은 워크로드입니다. 트랜잭션이 많은 워크로드에 대한 가격을 최적화하여 마이그레이션 비용을 줄일 수 있습니다.",
+ "guid": "8ed27044-e89f-438c-a654-545697e9b951",
+ "service": "Azure Files",
+ "text": "표준 Azure 파일 공유로 마이그레이션하는 경우 초기 마이그레이션 중에 트랜잭션 최적화 계층에서 시작하는 것이 좋습니다. 마이그레이션 중 트랜잭션 사용량은 일반적으로 정상적인 트랜잭션 사용량을 나타내지 않습니다. 프로비저닝된 청구 모델은 트랜잭션에 대한 요금을 청구하지 않으므로 프리미엄 파일 공유에는 이 고려 사항이 적용되지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "표준 파일 공유에 적합한 액세스 계층을 선택하면 비용을 크게 줄일 수 있습니다.",
+ "guid": "2b332ca7-f600-49c3-a072-ee3679cdcb3a",
+ "service": "Azure Files",
+ "text": "워크로드를 마이그레이션한 후 표준 파일 공유를 사용하는 경우 파일 공유에 대해 가장 비용 효율적인 액세스 계층(핫, 쿨 또는 트랜잭션 최적화)을 신중하게 선택합니다. 며칠 또는 몇 주 동안 정기적으로 사용한 후 가격 계산기에 트랜잭션 수를 삽입하여 워크로드에 가장 적합한 계층을 파악할 수 있습니다. 대부분의 고객은 쉐어를 적극적으로 사용하더라도 쿨한 선택을 해야 합니다. 그러나 각 공유를 검사하고 스토리지 용량의 균형을 트랜잭션과 비교하여 계층을 결정해야 합니다. 트랜잭션 비용이 청구서의 상당 부분을 차지하는 경우 쿨 액세스 계층을 사용하여 절감된 금액이 이 비용을 상쇄하고 총 전체 비용을 최소화하는 경우가 많습니다. 워크로드 패턴의 변경을 최적화하기 위해 필요한 경우에만 액세스 계층 간에 표준 파일 공유를 이동하는 것이 좋습니다. 이동할 때마다 트랜잭션이 발생합니다. 자세한 내용은 표준 계층 간 전환을 참조하세요.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "성능을 유지하고 향후 성장 및 성능 요구 사항을 고려하는 데 도움이 되도록 프리미엄 파일 공유를 합리적인 금액만큼 과도하게 프로비저닝합니다.",
+ "guid": "9680a4b4-2878-45eb-bbc4-9954adf25eaa",
+ "service": "Azure Files",
+ "text": "프리미엄 공유를 사용하는 경우 워크로드에 충분한 용량과 성능을 프로비전해야 하지만 불필요한 비용이 발생할 정도는 아니어야 합니다. 2-3회 오버프로비저닝하는 것이 좋습니다. 프리미엄 파일 공유는 스토리지 및 IO(입력/출력) 성능 특성에 따라 동적으로 확장하거나 축소할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "3년 예약은 총 파일 스토리지 비용의 최대 36%를 할인받을 수 있습니다. 예약은 성능에 영향을 주지 않습니다.",
+ "guid": "21d765dd-5a9c-44d7-908f-422102db61a1",
+ "service": "Azure Files",
+ "text": "예약 인스턴스라고도 하는 Azure Files 예약을 사용하여 스토리지 사용량을 미리 커밋하고 할인을 받으세요. 프로덕션 워크로드 또는 개발/테스트 워크로드에 대한 예약을 일관된 공간으로 사용합니다. 자세한 내용은 스토리지 예약을 사용하여 비용 최적화를 참조하세요. 예약에는 트랜잭션, 대역폭, 데이터 전송 및 메타데이터 스토리지 요금이 포함되지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "차등 스냅샷은 동일한 데이터를 저장하는 데 여러 번 요금이 청구되지 않도록 합니다. 그러나 Azure Files 청구액을 줄이기 위해 스냅샷 사용량을 계속 모니터링해야 합니다.",
+ "guid": "2600163f-0687-47c0-af5d-ebbc2e4f052b",
+ "service": "Azure Files",
+ "text": "스냅샷 사용량을 모니터링합니다. 스냅샷에는 요금이 발생하지만 각 스냅샷의 차등 스토리지 사용량에 따라 요금이 청구됩니다. 각 스냅샷의 차이에 대해서만 비용을 지불하면 됩니다. 자세한 내용은 스냅샷을 참조하십시오. Azure 파일 동기화는 일반 사용의 일부로 공유 수준 및 파일 수준 스냅샷을 사용하므로 총 Azure Files 청구액이 증가할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "일시 삭제된 파일이 쌓이지 않고 용량 비용이 증가하지 않도록 보존 기간을 설정합니다. 구성된 보존 기간이 지나면 영구적으로 삭제된 데이터에 비용이 발생하지 않습니다.",
+ "guid": "e2920277-545a-464d-83be-dd28b3e5c9db",
+ "service": "Azure Files",
+ "text": "일시 삭제 기능에 대한 보존 기간을 설정합니다(특히 처음 사용하기 시작할 때). 기능이 청구서에 어떤 영향을 미치는지 더 잘 이해하기 위해 짧은 보존 기간부터 시작하는 것이 좋습니다. 최소 권장 보존 기간은 7일입니다. 표준 및 프리미엄 파일 공유를 일시 삭제하면 프로비저닝된 용량이 아닌 사용된 용량으로 청구됩니다. 또한 프리미엄 파일 공유는 일시 삭제 상태에 있는 동안 스냅샷 요금으로 청구됩니다. 표준 파일 공유는 일시 삭제 상태에 있는 동안 일반 요금으로 청구됩니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "기존 DevOps 프로세스를 사용하여 새 스토리지 계정을 배포하고 Azure Policy를 사용하여 구성을 적용할 수 있습니다.",
+ "guid": "328229e7-0291-48e8-ad52-9c38e3b1dbd2",
+ "service": "Azure Files",
+ "text": "IaC(Infrastructure as Code)를 사용하여 ARM 템플릿(Azure Resource Manager 템플릿), Bicep 또는 Terraform에서 스토리지 계정의 세부 정보를 정의합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 계정의 상태와 운영을 추적할 수 있습니다. 이해 관계자가 스토리지 계정의 상태를 추적하는 데 사용할 수 있는 대시보드 및 보고서를 쉽게 만들 수 있습니다.",
+ "guid": "d2414f84-0b9f-44a6-ab13-bef6984774bc",
+ "service": "Azure Files",
+ "text": "Storage 인사이트를 사용하여 스토리지 계정의 상태와 성능을 추적합니다. Storage 인사이트는 모든 스토리지 계정에 대한 오류, 성능, 가용성 및 용량에 대한 통합 보기를 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Monitor는 파일 공유에 대한 가용성, 성능 및 복원력에 대한 보기를 제공합니다.",
+ "guid": "3a2cca3e-b3c7-46b2-b87e-7db328897503",
+ "service": "Azure Files",
+ "text": "Monitor를 사용하여 가용성, 대기 시간 및 사용량과 같은 메트릭을 분석하고 경고를 만듭니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "처리량과 IOPS를 늘리는 동시에 총 소유 비용을 절감합니다. 성능 이점은 부하를 분산하는 파일 수에 따라 증가합니다.",
+ "guid": "7e271270-4f79-4418-b668-5c4a16627bbd",
+ "service": "Azure Files",
+ "text": "프리미엄 SMB 파일 공유에 대해 SMB 다중 채널을 사용하도록 설정합니다. SMB 다중 채널을 사용하면 SMB 3.1.1 클라이언트가 SMB Azure 파일 공유에 대한 여러 네트워크 연결을 설정할 수 있습니다. SMB 다중 채널은 클라이언트 쪽(클라이언트)과 서비스 쪽(Azure) 모두에서 기능을 사용하도록 설정한 경우에만 작동합니다. Windows 클라이언트에서는 SMB 다중 채널이 기본적으로 사용하도록 설정되지만 스토리지 계정에서 사용하도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "규모에 맞게 성능을 높이고 NFS 파일 공유의 총 소유 비용을 줄입니다.",
+ "guid": "9f9cb641-df29-440a-8f30-513367264e14",
+ "service": "Azure Files",
+ "text": "Linux 클라이언트에서 NFS Azure 파일 공유와 함께 nconnect 클라이언트 쪽 탑재 옵션을 사용합니다. Nconnect를 사용하면 클라이언트와 NFSv4.1용 Azure Files 프리미엄 서비스 간에 더 많은 TCP 연결을 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "최상의 클라이언트 환경을 제공하기 위해 제한을 피합니다.",
+ "guid": "e85fb837-f8a0-4b2f-b759-6ccdafa4f05c",
+ "service": "Azure Files",
+ "text": "파일 공유 또는 스토리지 계정이 제한되어 대기 시간이 길거나 처리량이 낮거나 IOPS가 낮을 수 있는 상황이 아닌지 확인합니다. IOPS, 수신 또는 송신 제한에 도달하면 요청이 제한됩니다. 표준 스토리지 계정의 경우 계정 수준에서 제한이 발생합니다. 프리미엄 파일 공유의 경우 제한은 일반적으로 공유 수준에서 발생합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Files Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.pt.json b/checklists-ext/azurefiles_sg_checklist.pt.json
new file mode 100644
index 000000000..8962144f1
--- /dev/null
+++ b/checklists-ext/azurefiles_sg_checklist.pt.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "A redundância protege seus dados contra falhas inesperadas. As opções de configuração ZRS e GZRS são replicadas em várias zonas de disponibilidade e permitem que os aplicativos continuem lendo dados durante uma interrupção. Para obter mais informações, consulte Durabilidade e disponibilidade por cenário de interrupção e Parâmetros de durabilidade e disponibilidade.",
+ "guid": "7005fc93-af02-4183-af03-e363ccf31456",
+ "service": "Azure Files",
+ "text": "Configure sua conta de armazenamento para redundância. Para obter o máximo de disponibilidade e durabilidade, configure sua conta com ZRS (armazenamento com redundância de zona), GRS ou GZRS. As regiões limitadas do Azure dão suporte ao ZRS para compartilhamentos de arquivos standard e premium. Somente contas SMB padrão são compatíveis com GRS e GZRS. Os compartilhamentos SMB premium e os compartilhamentos NFS não oferecem suporte a GRS e GZRS. Os Arquivos do Azure não dão suporte ao RA-GRS (armazenamento com redundância geográfica com acesso de leitura) ou ao RA-GZRS (armazenamento com redundância de zona geográfica com acesso de leitura). Se você configurar uma conta de armazenamento para usar RA-GRS ou RA-GZRS, os compartilhamentos de arquivos serão configurados e cobrados como GRS ou GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa propriedade ajuda a estimar a quantidade de dados que você pode perder se iniciar um failover de conta. Todos os dados e metadados gravados antes da última hora de sincronização estão disponíveis na região secundária, mas você pode perder dados e metadados gravados após a última hora de sincronização porque não foram gravados na região secundária.",
+ "guid": "f547bc73-43a1-4cd6-96c0-aee917f85daf",
+ "service": "Azure Files",
+ "text": "Antes de iniciar um failover ou failback, verifique o valor da propriedade da hora da última sincronização para avaliar o potencial de perda de dados. Essa recomendação se aplica somente às configurações GRS e GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A exclusão reversível funciona em um nível de compartilhamento de arquivos para proteger os compartilhamentos de arquivos do Azure contra exclusão acidental. A restauração pontual protege contra exclusão acidental ou corrupção porque você pode restaurar compartilhamentos de arquivos para um estado anterior. Para obter mais informações, consulte Visão geral da proteção de dados.",
+ "guid": "8f7b75e8-8b14-44ce-b4a5-3e994995479d",
+ "service": "Azure Files",
+ "text": "Como parte de sua estratégia de backup e recuperação, habilite a exclusão reversível e use instantâneos para restauração pontual. Você pode usar o Backup do Azure para fazer backup de seus compartilhamentos de arquivos SMB. Você também pode usar a Sincronização de Arquivos do Azure para fazer backup de compartilhamentos de arquivos SMB locais em um compartilhamento de arquivos do Azure. O Backup do Azure também permite que você faça um backup em cofre (versão prévia) dos Arquivos do Azure para proteger seus dados contra ataques de ransomware ou perda de dados de origem devido a um ator mal-intencionado ou administrador não autorizado. Usando o backup protegido, o Backup do Azure copia e armazena dados no cofre dos Serviços de Recuperação. Isso cria uma cópia externa dos dados que você pode reter por até 99 anos. O Backup do Azure cria e gerencia os pontos de recuperação de acordo com o agendamento e a retenção definidos na política de backup. Saiba Mais.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Bloqueie a conta para evitar a exclusão acidental ou mal-intencionada da conta de armazenamento, o que pode causar perda de dados.",
+ "guid": "39e5cade-9e6a-4bde-bedd-5ec33dbf5634",
+ "service": "Azure Files",
+ "text": "Aplique um bloqueio do Azure Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 3.x é um protocolo seguro para a Internet, mas talvez você não tenha a capacidade de alterar as políticas organizacionais ou de ISP. Você pode usar um gateway de VPN ou uma conexão ExpressRoute como uma opção alternativa.",
+ "guid": "9f70f1de-9f49-4425-9fba-2bae24f81014",
+ "service": "Azure Files",
+ "text": "Abra a porta TCP 445 de saída ou configure um gateway de VPN ou uma conexão do Azure ExpressRoute para que clientes fora do Azure acessem o compartilhamento de arquivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 1 é um protocolo desatualizado, ineficiente e inseguro. Desative-o em clientes para melhorar sua postura de segurança.",
+ "guid": "6ad18c63-4c63-45c3-b002-5b305235c439",
+ "service": "Azure Files",
+ "text": "Se você abrir a porta 445, certifique-se de desabilitar o SMBv1 em clientes Windows e Linux. Os Arquivos do Azure não dão suporte ao SMB 1, mas você ainda deve desabilitá-lo em seus clientes.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O tráfego de rede viaja pela rede de backbone da Microsoft em vez da Internet pública, o que elimina a exposição ao risco da Internet pública.",
+ "guid": "0291451b-94f7-4f9c-a479-48c142e6c208",
+ "service": "Azure Files",
+ "text": "Considere desabilitar o acesso à rede pública para sua conta de armazenamento. Habilite o acesso à rede pública somente se os clientes e serviços SMB externos ao Azure exigirem acesso à sua conta de armazenamento. Se você desabilitar o acesso à rede pública, crie um ponto de extremidade privado para sua conta de armazenamento. Aplicam-se taxas de processamento de dados padrão para pontos de extremidade privados. Um ponto de extremidade privado não bloqueia conexões com o ponto de extremidade público. Você ainda deve desabilitar o acesso à rede pública conforme descrito anteriormente. Se você não precisar de um endereço IP estático para o compartilhamento de arquivos e quiser evitar o custo de pontos de extremidade privados, poderá restringir o acesso ao ponto de extremidade público a redes virtuais e endereços IP específicos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Minimize o risco de criar aberturas para invasores.",
+ "guid": "28051b58-caf9-415f-ab61-daa7c3bf37c5",
+ "service": "Azure Files",
+ "text": "Habilite regras de firewall que limitam o acesso a redes virtuais específicas. Comece com acesso zero e, em seguida, forneça de forma metódica e incremental a menor quantidade de acesso necessária para clientes e serviços.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use a autenticação baseada em identidade para diminuir a possibilidade de um invasor usar uma chave de conta de armazenamento para acessar compartilhamentos de arquivos.",
+ "guid": "fa742663-b3d8-4808-a5bb-213c9f4ae78b",
+ "service": "Azure Files",
+ "text": "Quando possível, use a autenticação baseada em identidade com criptografia de tíquete Kerberos AES-256 para autorizar o acesso a compartilhamentos de arquivos SMB do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use o Key Vault para recuperar chaves em tempo de execução em vez de salvá-las com seu aplicativo. O Key Vault também facilita a rotação de suas chaves sem interrupção de seus aplicativos. Alterne periodicamente as chaves da conta para reduzir o risco de expor seus dados a ataques mal-intencionados.",
+ "guid": "90b83f1c-670f-44e6-93b7-c22ac3bb73c3",
+ "service": "Azure Files",
+ "text": "Se você usar chaves de conta de armazenamento, armazene-as no Key Vault e certifique-se de regenerá-las periodicamente. Você pode proibir completamente o acesso da chave da conta de armazenamento ao compartilhamento de arquivos removendo o NTLMv2 das configurações de segurança SMB do compartilhamento. Mas você geralmente não deve remover o NTLMv2 das configurações de segurança SMB do compartilhamento porque os administradores ainda precisam usar a chave de conta para algumas tarefas.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Essa configuração garante que todas as solicitações feitas na conta de armazenamento ocorram por meio de conexões seguras (HTTPS). Todas as solicitações feitas por HTTP falharão.",
+ "guid": "ad87891d-330d-4482-abd0-938ff9e700cc",
+ "service": "Azure Files",
+ "text": "Na maioria dos casos, você deve habilitar a opção Transferência segura necessária em todas as suas contas de armazenamento para habilitar a criptografia em trânsito para compartilhamentos de arquivos SMB. Não habilite essa opção se precisar permitir que clientes muito antigos acessem o compartilhamento. Se você desabilitar a transferência segura, certifique-se de usar controles de rede para restringir o tráfego.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS 1.2 é mais seguro e rápido do que o TLS 1.0 e 1.1, que não oferecem suporte a algoritmos criptográficos modernos e conjuntos de criptografia.",
+ "guid": "8809e836-d9ae-41d8-b357-e0d4610892af",
+ "service": "Azure Files",
+ "text": "Configure sua conta de armazenamento para que o TLS 1.2 seja a versão mínima para os clientes enviarem e receberem dados.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 3.1.1, lançado com o Windows 10, contém atualizações importantes de segurança e desempenho. O AES-256-GCM oferece criptografia de canal mais segura.",
+ "guid": "7704ad4b-c605-458a-bca3-b9915288379d",
+ "service": "Azure Files",
+ "text": "Use apenas a versão mais recente do protocolo SMB com suporte (atualmente 3.1.1.) e use apenas AES-256-GCM para criptografia de canal SMB. Os Arquivos do Azure expõem configurações que você pode usar para alternar o protocolo SMB e torná-lo mais compatível ou mais seguro, dependendo dos requisitos da sua organização. Por padrão, todas as versões SMB são permitidas. No entanto, o SMB 2.1 não será permitido se você habilitar Exigir transferência segura porque o SMB 2.1 não dá suporte à criptografia de dados em trânsito. Se você restringir essas configurações a um alto nível de segurança, alguns clientes talvez não consigam se conectar ao compartilhamento de arquivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Bloqueie a conta para evitar a exclusão acidental ou mal-intencionada da conta de armazenamento, o que pode causar perda de dados.",
+ "guid": "8aba3a20-da7c-41fb-baf6-a954da9480fc",
+ "service": "Azure Files",
+ "text": "Aplique um bloqueio do Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Abra a porta 2049 para permitir que os clientes se comuniquem com o compartilhamento de arquivos do Azure NFS.",
+ "guid": "c0363075-4c11-41ae-bea9-c203481eb76e",
+ "service": "Azure Files",
+ "text": "Você deve abrir a porta 2049 nos clientes nos quais deseja montar seu compartilhamento NFS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O tráfego de rede viaja pela rede de backbone da Microsoft em vez da Internet pública, o que elimina a exposição ao risco da Internet pública.",
+ "guid": "d3fffd01-afd2-4654-94cf-b971a379cb1e",
+ "service": "Azure Files",
+ "text": "Os compartilhamentos de arquivos NFS do Azure só podem ser acessados por meio de redes restritas. Portanto, você deve criar um ponto de extremidade privado para sua conta de armazenamento ou restringir o acesso ao ponto de extremidade público a redes virtuais e endereços IP selecionados. Recomendamos que você crie um ponto de extremidade privado. Você deve configurar a segurança no nível da rede para compartilhamentos NFS porque os Arquivos do Azure não dão suporte à criptografia em trânsito com o protocolo NFS. Você precisa desabilitar a configuração Exigir transferência segura na conta de armazenamento para usar compartilhamentos de arquivos NFS do Azure. As taxas de processamento de dados padrão se aplicam a pontos de extremidade privados. Se você não precisar de um endereço IP estático para o compartilhamento de arquivos e quiser evitar o custo de pontos de extremidade privados, poderá restringir o acesso ao ponto de extremidade público.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Não permita o uso de chaves de conta de armazenamento para tornar sua conta de armazenamento mais segura.",
+ "guid": "e262e0ea-2a15-4870-a43e-77fae1ef4075",
+ "service": "Azure Files",
+ "text": "Considere não permitir o acesso à chave da conta de armazenamento no nível da conta de armazenamento. Você não precisa desse acesso para montar compartilhamentos de arquivos NFS. Mas lembre-se de que o controle administrativo total de um compartilhamento de arquivos, incluindo a capacidade de se apropriar de um arquivo, requer o uso de uma chave de conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A migração para os Arquivos do Azure é uma carga de trabalho temporária e pesada de transações. Otimize o preço para cargas de trabalho de alta transação para ajudar a reduzir os custos de migração.",
+ "guid": "8ed27044-e89f-438c-a654-545697e9b951",
+ "service": "Azure Files",
+ "text": "Ao migrar para compartilhamentos de arquivos padrão do Azure, recomendamos que você comece na camada otimizada para transações durante a migração inicial. O uso da transação durante a migração normalmente não é indicativo do uso normal da transação. Essa consideração não se aplica a compartilhamentos de arquivos premium porque o modelo de cobrança provisionado não cobra por transações.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Selecione a camada de acesso apropriada para compartilhamentos de arquivos padrão para reduzir consideravelmente seus custos.",
+ "guid": "2b332ca7-f600-49c3-a072-ee3679cdcb3a",
+ "service": "Azure Files",
+ "text": "Depois de migrar sua carga de trabalho, se você usar compartilhamentos de arquivos padrão, escolha cuidadosamente a camada de acesso mais econômica para seu compartilhamento de arquivos: frequente, esporádico ou otimizado para transações. Depois de operar por alguns dias ou semanas com uso regular, você pode inserir suas contagens de transações na calculadora de preços para descobrir qual camada melhor se adapta à sua carga de trabalho. A maioria dos clientes deve escolher o cool, mesmo que use ativamente o compartilhamento. Mas você deve examinar cada compartilhamento e comparar o saldo da capacidade de armazenamento com as transações para determinar sua camada. Se os custos de transação representarem uma porcentagem significativa de sua fatura, a economia do uso da camada de acesso esporádico geralmente compensa esse custo e minimiza o custo total geral. Recomendamos que você mova compartilhamentos de arquivos padrão entre camadas de acesso somente quando necessário para otimizar as alterações em seu padrão de carga de trabalho. Cada movimento incorre em transações. Para obter mais informações, consulte Alternando entre camadas padrão.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Provisione em excesso compartilhamentos de arquivos premium em um valor razoável para ajudar a manter o desempenho e levar em conta o crescimento futuro e os requisitos de desempenho.",
+ "guid": "9680a4b4-2878-45eb-bbc4-9954adf25eaa",
+ "service": "Azure Files",
+ "text": "Se você usar compartilhamentos premium, certifique-se de provisionar capacidade e desempenho mais do que suficientes para sua carga de trabalho, mas não tanto a ponto de incorrer em custos desnecessários. Recomendamos o provisionamento excessivo de duas a três vezes. Você pode escalar ou reduzir dinamicamente os compartilhamentos de arquivos premium, dependendo das características de desempenho de armazenamento e entrada/saída (E/S).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As reservas de três anos podem oferecer um desconto de até 36% no custo total do armazenamento de arquivos. As reservas não afetam o desempenho.",
+ "guid": "21d765dd-5a9c-44d7-908f-422102db61a1",
+ "service": "Azure Files",
+ "text": "Use as reservas dos Arquivos do Azure, também conhecidas como instâncias reservadas, para confirmar previamente o uso do armazenamento e obter um desconto. Use reservas para cargas de trabalho de produção ou cargas de trabalho de desenvolvimento/teste com volumes consistentes. Para obter mais informações, consulte Otimizar custos com reservas de armazenamento. As reservas não incluem cobranças de transação, largura de banda, transferência de dados e armazenamento de metadados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os snapshots diferenciais garantem que você não seja cobrado várias vezes pelo armazenamento dos mesmos dados. No entanto, você ainda deve monitorar o uso do instantâneo para ajudar a reduzir sua fatura dos Arquivos do Azure.",
+ "guid": "2600163f-0687-47c0-af5d-ebbc2e4f052b",
+ "service": "Azure Files",
+ "text": "Monitore o uso do snapshot. Os snapshots incorrem em cobranças, mas são cobrados com base no uso diferencial de armazenamento de cada snapshot. Você paga apenas pela diferença em cada instantâneo. Para obter mais informações, consulte Instantâneos. A Sincronização de Arquivos do Azure tira instantâneos no nível do compartilhamento e no nível do arquivo como parte do uso regular, o que pode aumentar sua fatura total dos Arquivos do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Defina um período de retenção para que os arquivos excluídos temporariamente não se acumulem e aumentem o custo da capacidade. Após o período de retenção configurado, os dados excluídos permanentemente não incorrem em custo.",
+ "guid": "e2920277-545a-464d-83be-dd28b3e5c9db",
+ "service": "Azure Files",
+ "text": "Defina períodos de retenção para o recurso de exclusão reversível, especialmente quando você começar a usá-lo pela primeira vez. Considere começar com um curto período de retenção para entender melhor como o recurso afeta sua fatura. O período mínimo de retenção recomendado é de sete dias. Quando você exclui temporariamente compartilhamentos de arquivos padrão e premium, eles são cobrados como capacidade usada em vez de capacidade provisionada. E os compartilhamentos de arquivos premium são cobrados na taxa de instantâneo enquanto estão no estado de exclusão reversível. Os compartilhamentos de arquivos padrão são cobrados à taxa normal enquanto estão no estado de exclusão reversível.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode usar seus processos de DevOps existentes para implantar novas contas de armazenamento e usar o Azure Policy para impor sua configuração.",
+ "guid": "328229e7-0291-48e8-ad52-9c38e3b1dbd2",
+ "service": "Azure Files",
+ "text": "Use a IaC (infraestrutura como código) para definir os detalhes de suas contas de armazenamento em modelos do ARM (modelos do Azure Resource Manager), Bicep ou Terraform.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode acompanhar a integridade e a operação de cada uma de suas contas. Crie facilmente dashboards e relatórios que os stakeholders podem usar para acompanhar a integridade de suas contas de armazenamento.",
+ "guid": "d2414f84-0b9f-44a6-ab13-bef6984774bc",
+ "service": "Azure Files",
+ "text": "Use os insights de armazenamento para acompanhar a integridade e o desempenho de suas contas de armazenamento. Os insights de armazenamento fornecem uma visão unificada das falhas, desempenho, disponibilidade e capacidade de todas as suas contas de armazenamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Monitor fornece uma exibição de disponibilidade, desempenho e resiliência para seus compartilhamentos de arquivos.",
+ "guid": "3a2cca3e-b3c7-46b2-b87e-7db328897503",
+ "service": "Azure Files",
+ "text": "Use o Monitor para analisar métricas, como disponibilidade, latência e uso, e para criar alertas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Aumente a taxa de transferência e o IOPS enquanto reduz o custo total de propriedade. Os benefícios de desempenho aumentam com o número de arquivos que distribuem a carga.",
+ "guid": "7e271270-4f79-4418-b668-5c4a16627bbd",
+ "service": "Azure Files",
+ "text": "Habilite o SMB Multichannel para compartilhamentos de arquivos SMB premium. O SMB Multichannel permite que um cliente SMB 3.1.1 estabeleça várias conexões de rede com um compartilhamento de arquivos SMB do Azure. O SMB Multichannel só funciona quando o recurso está habilitado no lado do cliente (seu cliente) e no lado do serviço (Azure). Em clientes Windows, o SMB Multichannel está habilitado por padrão, mas você precisa habilitá-lo em sua conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Aumente o desempenho em escala e reduza o custo total de propriedade dos compartilhamentos de arquivos NFS.",
+ "guid": "9f9cb641-df29-440a-8f30-513367264e14",
+ "service": "Azure Files",
+ "text": "Use a opção de montagem do lado do cliente nconnect com compartilhamentos de arquivos NFS do Azure em clientes Linux. O Nconnect permite que você use mais conexões TCP entre o cliente e o serviço premium dos Arquivos do Azure para NFSv4.1.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Evite a limitação para fornecer a melhor experiência possível ao cliente.",
+ "guid": "e85fb837-f8a0-4b2f-b759-6ccdafa4f05c",
+ "service": "Azure Files",
+ "text": "Verifique se o compartilhamento de arquivos ou a conta de armazenamento não está sendo limitado, o que pode resultar em alta latência, baixa taxa de transferência ou baixo IOPS. As solicitações são limitadas quando os limites de IOPS, entrada ou saída são atingidos. Para contas de armazenamento padrão, a limitação ocorre no nível da conta. Para compartilhamentos de arquivos premium, a limitação geralmente ocorre no nível do compartilhamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Files Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefiles_sg_checklist.zh-Hant.json b/checklists-ext/azurefiles_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..3a77abb0e
--- /dev/null
+++ b/checklists-ext/azurefiles_sg_checklist.zh-Hant.json
@@ -0,0 +1,306 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "冗餘可保護您的數據免受意外故障的影響。ZRS 和 GZRS 設定選項可在各種可用性區域之間複製,並使應用程式能夠在中斷期間繼續讀取數據。有關詳細資訊,請參閱按中斷方案劃分的持久性和可用性以及持久性和可用性參數。",
+ "guid": "7005fc93-af02-4183-af03-e363ccf31456",
+ "service": "Azure Files",
+ "text": "配置存儲帳戶以實現冗餘。為了獲得最大的可用性和持久性,請使用區域冗餘存儲 (ZRS)、GRS 或 GZRS 配置您的帳戶。有限的 Azure 區域支援標準和高級文件共用的 ZRS。僅標準 SMB 帳戶支援 GRS 和 GZRS。高級SMB共用和NFS共用不支援 GRS 和 GZRS。Azure 檔存儲不支援讀取訪問異地冗餘存儲 (RA-GRS) 或讀取訪問異地區域冗餘存儲 (RA-GZRS)。如果將存儲帳戶配置為使用RA-GRS或RA-GZRS,則檔共用將配置為GRS或 GZRS 並計費。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此屬性可幫助您估計在啟動帳戶故障轉移時可能丟失的數據量。在上次同步時間之前寫入的所有數據和元數據在次要區域上都可用,但你可能會丟失在上次同步時間之後寫入的數據和元數據,因為它不會寫入次要區域。",
+ "guid": "f547bc73-43a1-4cd6-96c0-aee917f85daf",
+ "service": "Azure Files",
+ "text": "在啟動故障轉移或故障回復之前,請檢查“上次同步時間”屬性的值,以評估數據丟失的可能性。此建議僅適用於 GRS 和 GZRS 配置。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "軟刪除在文件共享級別工作,可防止意外刪除 Azure 檔案共用。時間點還原可防止意外刪除或損壞,因為您可以將文件共用還原到早期狀態。有關詳細資訊,請參閱數據保護概述。",
+ "guid": "8f7b75e8-8b14-44ce-b4a5-3e994995479d",
+ "service": "Azure Files",
+ "text": "作為備份和恢復策略的一部分,請啟用軟刪除並使用快照進行時間點還原。可以使用 Azure 備份來備份 SMB 文件共用。還可以使用 Azure 檔案同步將本地 SMB 文件共享備份到 Azure 檔共用。 Azure 備份還允許執行 Azure 檔的保管備份(預覽版),以保護數據免受勒索軟體攻擊或由於惡意參與者或流氓管理員而導致的源數據丟失。通過使用保管備份,Azure 備份將數據複製並存儲在恢復服務保管庫中。這將創建數據的異地副本,您可以保留長達 99 年。Azure 備份根據備份策略中定義的計劃和保留期創建和管理恢復點。瞭解更多資訊。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "鎖定帳戶以防止意外或惡意刪除存儲帳戶,這可能會導致數據丟失。",
+ "guid": "39e5cade-9e6a-4bde-bedd-5ec33dbf5634",
+ "service": "Azure Files",
+ "text": "在存儲帳戶上應用 Azure 資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.x 是一種 Internet 安全協定,但您可能無法更改組織或 ISP 策略。可以使用 VPN 閘道或 ExpressRoute 連接作為替代選項。",
+ "guid": "9f70f1de-9f49-4425-9fba-2bae24f81014",
+ "service": "Azure Files",
+ "text": "打開 TCP 連接埠 445 出站,或為 Azure 外部的用戶端設置 VPN 閘道或 Azure ExpressRoute 連接,以存取檔案共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 1 是一種過時、低效且不安全的協定。在用戶端上禁用它以改善您的安全狀況。",
+ "guid": "6ad18c63-4c63-45c3-b002-5b305235c439",
+ "service": "Azure Files",
+ "text": "如果打開埠 445,請確保在 Windows 和 Linux 用戶端上禁用 SMBv1。Azure 檔存儲不支援 SMB 1,但你仍應在用戶端上禁用它。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路流量通過 Microsoft 主幹網路(而不是公共 Internet)傳輸,從而消除了公共 Internet 的風險暴露。",
+ "guid": "0291451b-94f7-4f9c-a479-48c142e6c208",
+ "service": "Azure Files",
+ "text": "請考慮禁用對存儲帳戶的公用網路訪問。僅當 Azure 外部的 SMB 用戶端和服務需要存取記憶體帳戶時,才啟用公用網路訪問。如果禁用公用網路訪問,請為存儲帳戶創建專用終結點。專用終結點的標準數據處理費率適用。專用終結點不會阻止與公共終結點的連接。如前所述,您仍應禁用公共網路訪問。如果文件共用不需要靜態 IP 位址,並且想要避免專用終結點的成本,則可以改為限制對特定虛擬網路和 IP 位址的公共終結點訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最大限度地降低為攻擊者創造機會的風險。",
+ "guid": "28051b58-caf9-415f-ab61-daa7c3bf37c5",
+ "service": "Azure Files",
+ "text": "啟用防火牆規則,限制對特定虛擬網路的訪問。從零訪問開始,然後有條不紊地逐步提供客戶端和服務所需的最少訪問量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用基於身份的身份驗證可降低攻擊者使用存儲帳戶密鑰訪問檔共用的可能性。",
+ "guid": "fa742663-b3d8-4808-a5bb-213c9f4ae78b",
+ "service": "Azure Files",
+ "text": "如果可能,請將基於身份的身份驗證與 AES-256 Kerberos 票證加密結合使用,以授權訪問 SMB Azure 文件共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Key Vault 在運行時檢索金鑰,而不是將它們與應用程式一起保存。Key Vault 還使輪換密鑰變得容易,而不會中斷應用程式。定期輪換帳戶密鑰,以降低將數據暴露給惡意攻擊的風險。",
+ "guid": "90b83f1c-670f-44e6-93b7-c22ac3bb73c3",
+ "service": "Azure Files",
+ "text": "如果使用存儲帳戶密鑰,請將其存儲在 Key Vault 中,並確保定期重新生成它們。可以通過從共用的SMB安全設置中刪除NTLMv2來完全禁止儲存帳戶密鑰訪問檔案共用。但是,通常不應從共用的SMB安全設置中刪除NTLMv2,因為管理員仍需要使用帳戶密鑰執行某些任務。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "此設置可確保針對存儲帳戶發出的所有請求都通過安全連接 (HTTPS) 進行。通過 HTTP 發出的任何請求都將失敗。",
+ "guid": "ad87891d-330d-4482-abd0-938ff9e700cc",
+ "service": "Azure Files",
+ "text": "在大多數情況下,應在所有存儲帳戶上啟用「需要安全傳輸」選項,以便為SMB檔共用啟用傳輸中加密。如果您需要允許非常舊的用戶端訪問共用,請不要啟用此選項。如果禁用安全傳輸,請務必使用網路控制來限制流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 比 TLS 1.0 和 1.1 更安全、更快,後者不支援現代加密演算法和密碼套件。",
+ "guid": "8809e836-d9ae-41d8-b357-e0d4610892af",
+ "service": "Azure Files",
+ "text": "配置存儲帳戶,使TLS 1.2 成為客戶端發送和接收數據的最低版本。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.1.1 隨 Windows 10 一起發佈,其中包含重要的安全和性能更新。AES-256-GCM 提供更安全的通道加密。",
+ "guid": "7704ad4b-c605-458a-bca3-b9915288379d",
+ "service": "Azure Files",
+ "text": "僅使用受支援的最新SMB協定版本(當前為3.1.1.1.),並且僅使用AES-256-GCM進行SMB通道加密。Azure 檔公開了一些設置,您可以使用這些設置來切換 SMB 協定並使其更相容或更安全,具體取決於組織的要求。默認情況下,允許使用所有SMB版本。但是,如果啟用“需要安全傳輸”,則不允許使用SMB 2.1,因為SMB 2.1不支援對傳輸中的數據進行加密。如果將這些設置限制為高安全級別,則某些用戶端可能無法連接到文件共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "鎖定帳戶以防止意外或惡意刪除存儲帳戶,這可能會導致數據丟失。",
+ "guid": "8aba3a20-da7c-41fb-baf6-a954da9480fc",
+ "service": "Azure Files",
+ "text": "在存儲帳戶上應用資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "打開埠 2049,讓用戶端與 NFS Azure 檔共用通信。",
+ "guid": "c0363075-4c11-41ae-bea9-c203481eb76e",
+ "service": "Azure Files",
+ "text": "您必須在要將 NFS 共用裝載到的用戶端上打開埠 2049。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路流量通過 Microsoft 主幹網路(而不是公共 Internet)傳輸,從而消除了公共 Internet 的風險暴露。",
+ "guid": "d3fffd01-afd2-4654-94cf-b971a379cb1e",
+ "service": "Azure Files",
+ "text": "NFS Azure 檔共用只能通過受限網路訪問。因此,必須為存儲帳戶創建專用終結點,或限制對所選虛擬網路和IP位址的公共終結點訪問。建議創建專用終結點。必須為 NFS 共用配置網路級安全性,因為 Azure 檔案存儲不支援使用 NFS 協定進行傳輸中的加密。需要在存儲帳戶上禁用“需要安全傳輸”設置才能使用 NFS Azure 檔共用。標準數據處理費率適用於專用終結點。如果文件共用不需要靜態 IP 位址,並且想要避免專用終結點的成本,則可以改為限制公共終結點訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁止使用存儲帳戶金鑰,以提高存儲帳戶的安全性。",
+ "guid": "e262e0ea-2a15-4870-a43e-77fae1ef4075",
+ "service": "Azure Files",
+ "text": "請考慮在儲存帳戶級別禁止存儲帳戶密鑰訪問。您不需要此存取權限即可載入 NFS 檔案共用。但請記住,對文件共用的完全管理控制(包括獲取檔擁有權的能力)需要使用存儲帳戶密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "遷移到 Azure 檔存儲是一種臨時的事務繁重工作負載。優化高事務工作負載的價格,以説明降低遷移成本。",
+ "guid": "8ed27044-e89f-438c-a654-545697e9b951",
+ "service": "Azure Files",
+ "text": "遷移到標準 Azure 檔共享時,建議在初始遷移期間從事務優化層開始。遷移期間的事務使用方式通常並不表示正常的事務使用方式。此注意事項不適用於高級文件共享,因為預配的計費模型不對事務收費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "為標準文件共享選擇適當的訪問層,以大大降低成本。",
+ "guid": "2b332ca7-f600-49c3-a072-ee3679cdcb3a",
+ "service": "Azure Files",
+ "text": "遷移工作負載后,如果使用標準文件共用,請仔細為文件共享選擇最具成本效益的訪問層:熱訪問層、冷訪問層或事務優化訪問層。在正常使用幾天或幾周後,您可以在定價計算機中插入交易計數,以確定哪個層最適合您的工作負載。大多數客戶應該選擇酷,即使他們積極使用共用。但是,您應該檢查每個共用,並將儲存容量與事務的餘額進行比較,以確定您的層。如果事務成本在帳單中佔很大比例,則使用冷訪問層所節省的成本通常會抵消此成本,並最大程度地降低總成本。我們建議您僅在必要時才在訪問層之間移動標準文件共用,以針對工作負載模式的變化進行優化。每次移動都會產生事務。有關詳細資訊,請參閱在標準層之間切換。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "按合理的數量超額預置高級文件共用,以説明保持性能並考慮未來的增長和性能要求。",
+ "guid": "9680a4b4-2878-45eb-bbc4-9954adf25eaa",
+ "service": "Azure Files",
+ "text": "如果使用高級共用,請確保為工作負載預置足夠的容量和性能,但不要過多,以免產生不必要的成本。我們建議將預留空間超額增加 2 到 3 倍。您可以根據儲存和輸入/輸出 (IO) 性能特徵動態擴展或縮減高級檔案共用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "三年期預留可以提供高達 36% 的文件存儲總成本折扣。預留不會影響性能。",
+ "guid": "21d765dd-5a9c-44d7-908f-422102db61a1",
+ "service": "Azure Files",
+ "text": "使用 Azure 檔存儲預留(也稱為預留實例)預先承諾存儲使用方式並獲得折扣。對生產工作負載或具有一致佔用空間的開發/測試工作負載使用預留。有關詳細資訊,請參閱使用存儲預留優化成本。預留不包括事務、頻寬、數據傳輸和元數據存儲費用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "差異快照可確保您不會因存儲相同的數據而多次付費。但是,仍應監視快照使用方式,以幫助減少 Azure 檔存儲帳單。",
+ "guid": "2600163f-0687-47c0-af5d-ebbc2e4f052b",
+ "service": "Azure Files",
+ "text": "監控快照使用方式。快照會產生費用,但會根據每個快照的差異存儲使用方式進行計費。您只需為每個快照中的差額付費。有關更多資訊,請參閱快照。Azure 檔同步將共用級和檔級快照作為常規使用的一部分,這可能會增加 Azure 檔存儲總帳單。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "設置保留期,以便軟刪除的檔不會堆積起來並增加容量成本。在配置的保留期之後,永久刪除的數據不會產生費用。",
+ "guid": "e2920277-545a-464d-83be-dd28b3e5c9db",
+ "service": "Azure Files",
+ "text": "設置軟刪除功能的保留期,尤其是在您首次開始使用它時。請考慮從較短的保留期開始,以更好地瞭解該功能如何影響您的帳單。建議的最短保留期為 7 天。軟刪除標準檔共享和高級文件共享時,它們按已用容量計費,而不是按預配容量計費。高級文件共用在軟刪除狀態下按快照費率計費。在軟刪除狀態下,標準文件共用按正常費率計費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "可以使用現有的 DevOps 流程來部署新的儲存帳戶,並使用 Azure Policy 強制實施其配置。",
+ "guid": "328229e7-0291-48e8-ad52-9c38e3b1dbd2",
+ "service": "Azure Files",
+ "text": "使用基礎結構即代碼 (IaC) 在 Azure 資源管理器範本(ARM 範本)、Bicep 或 Terraform 中定義記憶體帳戶的詳細資訊。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您可以追蹤每個帳戶的運行狀況和操作。輕鬆創建儀錶板和報告,利益幹系人可以使用這些儀錶板和報告來跟蹤存儲帳戶的運行狀況。",
+ "guid": "d2414f84-0b9f-44a6-ab13-bef6984774bc",
+ "service": "Azure Files",
+ "text": "使用存儲見解跟蹤存儲帳戶的運行狀況和性能。存儲見解提供所有存儲帳戶的故障、性能、可用性和容量的統一視圖。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Monitor 提供文件共用的可用性、性能和復原能力的視圖。",
+ "guid": "3a2cca3e-b3c7-46b2-b87e-7db328897503",
+ "service": "Azure Files",
+ "text": "使用「監視器」分析可用性、延遲和使用方式等指標,並創建警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "提高輸送量和 IOPS,同時降低總擁有成本。性能優勢隨著分配負載的文件數量的增加而增加。",
+ "guid": "7e271270-4f79-4418-b668-5c4a16627bbd",
+ "service": "Azure Files",
+ "text": "為高級SMB檔共享啟用SMB多通道。SMB 多通道允許SMB 3.1.1用戶端建立到SMB Azure檔共用的多個網路連接。僅當在用戶端(用戶端)和服務端 (Azure) 上都啟用該功能時,SMB 多通道才有效。在 Windows 用戶端上,SMB 多通道預設處於啟用狀態,但你需要在存儲帳戶上啟用它。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "大規模提高性能,並降低NFS檔共用的總擁有成本。",
+ "guid": "9f9cb641-df29-440a-8f30-513367264e14",
+ "service": "Azure Files",
+ "text": "在 Linux 用戶端上將 nconnect 用戶端裝載選項與 NFS Azure 檔共用一起使用。Nconnect 使你能夠在用戶端和適用於 NFSv4.1 的 Azure 檔案存儲高級服務之間使用更多 TCP 連接。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "避免限制,以提供最佳的客戶端體驗。",
+ "guid": "e85fb837-f8a0-4b2f-b759-6ccdafa4f05c",
+ "service": "Azure Files",
+ "text": "請確保檔共用或存儲帳戶未受到限制,這可能會導致高延遲、低輸送量或低 IOPS。當達到 IOPS、入口或出口限制時,請求將受到限制。對於標準存儲帳戶,限制發生在帳戶級別。對於高級文件共用,限制通常發生在共享級別。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Files Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.en.json b/checklists-ext/azurefirewall_sg_checklist.en.json
index 6faef37b9..8aa4126ac 100644
--- a/checklists-ext/azurefirewall_sg_checklist.en.json
+++ b/checklists-ext/azurefirewall_sg_checklist.en.json
@@ -372,35 +372,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -437,6 +437,6 @@
"name": "Azure Firewall Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.es.json b/checklists-ext/azurefirewall_sg_checklist.es.json
new file mode 100644
index 000000000..43acb0e89
--- /dev/null
+++ b/checklists-ext/azurefirewall_sg_checklist.es.json
@@ -0,0 +1,442 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Cree fácilmente arquitecturas radiales y transitivas con servicios de seguridad nativos para la gobernanza y la protección del tráfico. Para obtener más información sobre las topologías de red, consulte la documentación de Azure Cloud Adoption Framework.",
+ "guid": "833670b0-5f05-4810-96be-dd79df30775d",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager con topologías de red tradicionales de Hub & Spokes o Azure Virtual WAN para implementar y administrar instancias de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las directivas de Azure Firewall se pueden organizar en una estructura jerárquica para superponer una directiva base central. Permita que las políticas granulares cumplan con los requisitos de regiones específicas. Delegue políticas de firewall incrementales a los equipos de seguridad locales a través del control de acceso basado en roles (RBAC). Algunas configuraciones son específicas por instancia, por ejemplo, las reglas de DNAT y la configuración de DNS, por lo que es posible que se requieran varias políticas especializadas.",
+ "guid": "5b0404e7-a3be-4103-aff9-903f9fe447d2",
+ "service": "Azure Firewall",
+ "text": "Cree directivas de Azure Firewall para controlar la posición de seguridad en entornos de red globales. Asigne directivas a todas las instancias de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "En el caso de las implementaciones existentes, migre las reglas de Azure Firewall a las directivas de Azure Firewall Manager. Use Azure Firewall Manager para administrar de forma centralizada los firewalls y las directivas. Para más información, consulte Migración a Azure Firewall Premium.",
+ "guid": "182b6ed7-94f3-434c-be79-ce6a93d6560c",
+ "service": "Azure Firewall",
+ "text": "Migre las reglas de Azure Firewall clásico a las directivas de Azure Firewall Manager para las implementaciones existentes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El grupo de productos de Azure Firewall mantiene una lista actualizada de problemas conocidos en esta ubicación. Esta lista contiene información importante relacionada con el comportamiento por diseño, las correcciones en construcción, las limitaciones de la plataforma, junto con posibles soluciones alternativas o mitigaciones.",
+ "guid": "d34dc09b-f98f-47d4-92b7-79f77b9a755d",
+ "service": "Azure Firewall",
+ "text": "Revise la lista de problemas conocidos de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Hay límites en la estructura de la política, incluido el número de reglas y grupos de recopilación de reglas, el tamaño total de la política y los destinos de origen y destino. Asegúrese de redactar su póliza y mantenerse dentro de los umbrales documentados.",
+ "guid": "86b20eea-4ed0-4f79-adf4-4ff5f7edc227",
+ "service": "Azure Firewall",
+ "text": "Asegúrese de que la directiva de Azure Firewall se adhiere a los límites y recomendaciones de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Azure Firewall proporciona diferentes acuerdos de nivel de servicio cuando se implementa en una sola zona de disponibilidad y cuando se implementa en varias zonas. Para más información, consulte Acuerdo de Nivel de Servicio para Azure Firewall. Para obtener información sobre todos los acuerdos de nivel de servicio de Azure, consulte Resumen de acuerdos de nivel de servicio para los servicios de Azure.",
+ "guid": "7f303799-88af-49d0-ae85-73ce4bf33f76",
+ "service": "Azure Firewall",
+ "text": "Implemente Azure Firewall en varias zonas de disponibilidad para obtener un acuerdo de nivel de servicio (SLA) superior.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "En el caso de las arquitecturas tradicionales de Hub & Spokes, en este artículo se explican los detalles de varias regiones. En el caso de los centros virtuales protegidos (Azure Virtual WAN), la intención y las directivas de enrutamiento deben configurarse para proteger las comunicaciones entre centros y de sucursal a sucursal. En el caso de las cargas de trabajo diseñadas para ser resistentes a errores y tolerantes a errores, recuerde tener en cuenta que las instancias de Azure Firewall y Azure Virtual Network son recursos regionales.",
+ "guid": "69dcdc93-55e9-454e-9128-b9996b089e2c",
+ "service": "Azure Firewall",
+ "text": "En entornos de varias regiones, implemente una instancia de Azure Firewall por región.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Supervise de cerca el indicador de métricas clave del estado de mantenimiento de Azure Firewall, como el rendimiento, el estado de mantenimiento del firewall, la utilización del puerto SNAT y las métricas de sondeo de latencia de AZFW. Además, Azure Firewall ahora se integra con Azure Resource Health. Con la comprobación de estado de los recursos de Azure Firewall, ahora puede ver el estado de mantenimiento de Azure Firewall y solucionar los problemas de servicio que podrían afectar a los recursos de Azure Firewall.",
+ "guid": "dbadd7db-ba2d-4b33-bf38-3251fe3fb6fb",
+ "service": "Azure Firewall",
+ "text": "Supervise las métricas de Azure Firewall y el estado de mantenimiento de los recursos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Azure Firewall debe tener conexión directa a Internet. Si AzureFirewallSubnet aprende una ruta predeterminada a la red local a través del protocolo de puerta de enlace fronteriza, debe configurar Azure Firewall en el modo de tunelización forzada. Con la característica de tunelización forzada, necesitará otro espacio de direcciones /26 para la subred de administración de Azure Firewall. Si se trata de una instancia de Azure Firewall existente que no se puede volver a configurar en el modo de tunelización forzada, cree una UDR con una ruta 0.0.0.0/0. Establezca el valor de NextHopType como Internet. Asócielo con AzureFirewallSubnet para mantener la conectividad a Internet.",
+ "guid": "55277728-2747-486c-be69-3428291856a4",
+ "service": "Azure Firewall",
+ "text": "Si es necesario enrutar todo el tráfico enlazado a Internet a un próximo salto designado en lugar de ir directamente a Internet, configure Azure Firewall en modo de tunelización forzada (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al implementar una nueva instancia de Azure Firewall, si habilita el modo de tunelización forzada, puede establecer la dirección IP pública en None para implementar un plano de datos totalmente privado. Sin embargo, el plano de administración sigue requiriendo una dirección IP pública solo con fines de administración. El tráfico interno de las redes virtuales y locales no usará esa dirección IP pública. Para más información sobre la tunelización forzada, consulte Tunelización forzada de Azure Firewall.",
+ "guid": "7d9cd1f0-0f59-452e-be83-de6b49710ddc",
+ "service": "Azure Firewall",
+ "text": "Establezca la dirección IP pública en None para implementar un plano de datos totalmente privado al configurar Azure Firewall en el modo de tunelización forzada (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las directivas de Azure Firewall se pueden organizar en una estructura jerárquica para superponer una directiva base central. Permita que las políticas granulares cumplan con los requisitos de regiones específicas. Cada política puede contener diferentes conjuntos de reglas DNAT, de red y de aplicación con prioridad, acción y orden de procesamiento específicos. Cree sus reglas basadas en el principio de confianza cero de acceso con privilegios mínimos. En este artículo se explica cómo se procesan las reglas.",
+ "guid": "c7600ea8-eb60-4eb1-9aee-c874efef69b7",
+ "service": "Azure Firewall",
+ "text": "Cree reglas para las políticas de firewall en función de los criterios de acceso con privilegios mínimos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "IDPS es una de las características de seguridad más eficaces de Azure Firewall (Premium) y debe estar habilitada. En función de los requisitos de seguridad y de la aplicación, y teniendo en cuenta el impacto en el rendimiento (consulte la sección Costo a continuación), se pueden seleccionar los modos Alerta o Alerta y denegación.",
+ "guid": "d8fc2b4d-a183-4949-82ff-c6130a9d87dc",
+ "service": "Azure Firewall",
+ "text": "Habilite IDPS en modo Alerta o Alerta y denegación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al habilitar esta característica, los clientes de las redes virtuales apuntan a Azure Firewall como servidor DNS. Protegerá la infraestructura DNS interna a la que no se accederá ni se expondrá directamente. Azure Firewall también debe estar configurado para usar DNS personalizado que se usará para reenviar consultas DNS.",
+ "guid": "9fa0a48c-c3cb-4fc2-a02b-1182a047e076",
+ "service": "Azure Firewall",
+ "text": "Habilite la configuración de proxy de Azure Firewall (DNS).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "En una arquitectura tradicional de Hub & Spokes, configure los UDR para forzar el tráfico a través de Azure Firewall para la conectividad \"SpoketoSpoke\", \"SpoketoInternet\" y \"SpoketoHybrid\". En Azure Virtual WAN, en su lugar, configure la intención y las directivas de enrutamiento para redirigir el tráfico privado o de Internet a través de la instancia de Azure Firewall integrada en el centro.",
+ "guid": "a3f23112-5986-4fd2-9d64-edfb0363c08c",
+ "service": "Azure Firewall",
+ "text": "Configure rutas definidas por el usuario (UDR) para forzar el tráfico a través de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con la característica de proxy explícito habilitada en la ruta de salida, puede configurar una configuración de proxy en la aplicación web de envío (como un explorador web) con Azure Firewall configurado como proxy. Como resultado, el tráfico web llegará a la dirección IP privada del firewall y, por lo tanto, sale directamente del firewall sin usar una UDR. Esta característica también facilita el uso de múltiples firewalls sin modificar las rutas de red existentes.",
+ "guid": "f62b7e3d-b86d-4f84-888d-ec7f97b34e96",
+ "service": "Azure Firewall",
+ "text": "Si no es posible aplicar la UDR y solo se requiere el redireccionamiento del tráfico web, considere la posibilidad de usar Azure Firewall como proxy explícito",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede utilizar sus ofertas de SECaaS de terceros, las mejores de su clase, para proteger el acceso a Internet de sus usuarios. Este escenario requiere Azure Virtual WAN con una puerta de enlace de VPN S2S en el centro, ya que usa un túnel IPSec para conectarse a la infraestructura del proveedor. Los proveedores de SECaaS pueden cobrar tarifas de licencia adicionales y limitar el rendimiento de las conexiones IPSec. Existen soluciones alternativas como ZScaler Cloud Connector y podrían ser más adecuadas.",
+ "guid": "1f1a4239-f908-4fb5-aff5-7d716d9227a1",
+ "service": "Azure Firewall",
+ "text": "Configure los proveedores de seguridad de software como servicio (SaaS) de terceros compatibles dentro de Firewall Manager si desea utilizar estas soluciones para proteger las conexiones salientes.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede usar FQDN en función de la resolución de DNS en Azure Firewall y directivas de firewall. Esta capacidad le permite filtrar el tráfico saliente con cualquier protocolo TCP/UDP (incluidos NTP, SSH, RDP y más). Debe habilitar la configuración del proxy DNS de Azure Firewall para usar FQDN en las reglas de red. Para obtener información sobre cómo funciona, consulte Filtrado de FQDN de Azure Firewall en reglas de red.",
+ "guid": "cac3a2cc-688b-42c3-bfb5-e2b55270b8a0",
+ "service": "Azure Firewall",
+ "text": "Use el filtrado de nombres de dominio completos (FQDN) en las reglas de red.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Una etiqueta de servicio representa un grupo de prefijos de dirección IP para ayudar a minimizar la complejidad de la creación de reglas de seguridad. Con las etiquetas de servicio en las reglas de red, es posible habilitar el acceso saliente a servicios específicos en Azure, Dynamics y Office 365 sin abrir amplios rangos de direcciones IP. Azure mantendrá automáticamente la asignación entre estas etiquetas y las direcciones IP subyacentes usadas por cada servicio. La lista de etiquetas de servicio disponibles para Azure Firewall se muestra aquí: Az Firewall Service Tags.",
+ "guid": "8e718b0b-3ae5-4a85-9e5e-7f12ac48ace8",
+ "service": "Azure Firewall",
+ "text": "Use etiquetas de servicio en reglas de red para habilitar el acceso selectivo a servicios específicos de Microsoft.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Una etiqueta FQDN representa un grupo de nombres de dominio completos (FQDN) asociados a servicios conocidos de Microsoft. Puede usar una etiqueta FQDN en las reglas de la aplicación para permitir el tráfico de red saliente necesario a través del firewall para algunos servicios específicos de Azure, Office 365, Windows 365 e Intune.",
+ "guid": "66db2147-74f7-4b4a-af65-a946369ae551",
+ "service": "Azure Firewall",
+ "text": "Use etiquetas FQDN en las reglas de aplicación para habilitar el acceso selectivo a servicios específicos de Microsoft.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Un plan de protección contra DDoS proporciona funciones de mitigación mejoradas para defender su firewall de los ataques DDoS. Azure Firewall Manager es una herramienta integrada para crear la infraestructura de firewall y los planes de protección contra DDoS. Para más información, consulte Configuración de un plan de protección contra DDoS de Azure mediante Azure Firewall Manager.",
+ "guid": "0c87e550-0780-401e-9208-5464b378a8e7",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager para crear y asociar un plan de protección contra DDoS con la red virtual del centro (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con Azure Firewall Premium, si se usa la característica de inspección TLS, se recomienda aprovechar una entidad de certificación (CA) empresarial interna para el entorno de producción. Los certificados autofirmados solo deben usarse con fines de prueba o PoC.",
+ "guid": "821132d4-1ba9-4709-9eb3-5906871b1721",
+ "service": "Azure Firewall",
+ "text": "Utilice una PKI empresarial para generar certificados para la inspección TLS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Si sus requisitos de seguridad requieren la implementación de un enfoque Zero-Trust para las aplicaciones web (inspección y cifrado), se recomienda seguir esta guía. En este documento, se explicará cómo integrar Azure Firewall y Application Gateway, tanto en escenarios tradicionales de Hub & Spoke como de Virtual WAN.",
+ "guid": "0ecf166e-e415-45bf-bece-87a32e76b096",
+ "service": "Azure Firewall",
+ "text": "Revisión de la guía de configuración de Confianza cero para Azure Firewall y Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Azure Firewall se puede implementar en tres SKU diferentes: Básico, Estándar y Premium. Se recomienda Azure Firewall Premium para proteger aplicaciones muy confidenciales (como el procesamiento de pagos). Azure Firewall Standard se recomienda para los clientes que buscan un firewall de capa 3 a capa 7 y necesita escalado automático para controlar períodos de tráfico máximo de hasta 30 Gbps. Azure Firewall Basic se recomienda para clientes de pymes con necesidades de rendimiento de 250 Mbps. Si es necesario, es posible cambiar a una versión anterior o actualizar entre Standard y Premium, como se documenta aquí. Para más información, consulte Elección de la SKU de Azure Firewall adecuada para satisfacer sus necesidades.",
+ "guid": "fbcc2c4d-8026-46a9-8fe7-bdb04dbd1f20",
+ "service": "Azure Firewall",
+ "text": "Implemente la SKU de Azure Firewall adecuada.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Es posible que tenga entornos de desarrollo o pruebas que solo se usen durante el horario comercial. Para más información, consulte Desasignación y asignación de Azure Firewall.",
+ "guid": "4bf5b742-3a86-40a3-abce-a7991e9a0e78",
+ "service": "Azure Firewall",
+ "text": "Detenga las implementaciones de Azure Firewall que no necesitan ejecutarse las 24 horas del día, los 7 días de la semana.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede usar una instancia central de Azure Firewall en la red virtual del centro de conectividad o en el centro de conectividad segura de Virtual WAN y compartir el mismo firewall entre muchas redes virtuales de radio que estén conectadas al mismo centro de conectividad desde la misma región. Asegúrese de que no haya tráfico inesperado entre regiones como parte de la topología en estrella tipo hub-radi.",
+ "guid": "4468b60f-0f1d-4af5-98cd-b4f9fc3bd70f",
+ "service": "Azure Firewall",
+ "text": "Comparta la misma instancia de Azure Firewall en varias cargas de trabajo y redes virtuales de Azure.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El registro de flujos principales (conocido en la industria como flujos de grasa) muestra las conexiones principales que contribuyen al rendimiento más alto a través del firewall. Se recomienda revisar periódicamente el tráfico procesado por Azure Firewall y buscar posibles optimizaciones para reducir la cantidad de tráfico que atraviesa el firewall.",
+ "guid": "3ec205f3-5201-4a2e-b82b-1c77c9ee139c",
+ "service": "Azure Firewall",
+ "text": "Revise periódicamente el tráfico procesado por Azure Firewall y busque optimizaciones de carga de trabajo de origen",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Para identificar las implementaciones de Azure Firewall no utilizadas, empiece por analizar las métricas de supervisión y las UDR asociadas a las subredes que apuntan a la dirección IP privada del firewall. Combine esa información con otras validaciones, por ejemplo, si la instancia de Azure Firewall tiene reglas (clásicas) para NAT, red y aplicación, o incluso si la configuración de Proxy DNS está configurada en Deshabilitado, y con documentación interna sobre el entorno y las implementaciones. Puede detectar implementaciones que sean rentables a lo largo del tiempo. Para obtener más información sobre la supervisión de registros y métricas, consulte Supervisión de registros y métricas de Azure Firewall y uso de puertos SNAT.",
+ "guid": "514f4dbe-5294-44e1-95c5-923a199ff687",
+ "service": "Azure Firewall",
+ "text": "Revise las instancias de Azure Firewall infrautilizadas. Identifique y elimine las implementaciones de Azure Firewall no utilizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Revise detenidamente las políticas, las asociaciones y la herencia de Firewall Manager. Las políticas se facturan en función de las asociaciones de firewall. Una póliza con cero o una asociación de firewall es gratuita. Una política con varias asociaciones de firewall se factura a una tarifa fija. Para obtener más información, consulte Precios: Azure Firewall Manager.",
+ "guid": "90f29560-d536-46bf-a719-f0f95f89105e",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager y sus directivas para reducir los costos operativos, aumentar la eficiencia y reducir la sobrecarga de administración.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Valide si todas las direcciones IP públicas asociadas están en uso. Si no están en uso, desconsocie y elimínelos. Evalúe la utilización del puerto SNAT antes de eliminar cualquier dirección IP. Solo usarás el número de direcciones IP públicas que necesite tu firewall. Para más información, consulte Supervisión de registros y métricas de Azure Firewall y uso de puertos SNAT.",
+ "guid": "e81c61b3-0085-4029-82e3-d55513288f87",
+ "service": "Azure Firewall",
+ "text": "Elimine las direcciones IP públicas no utilizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Azure Firewall tiene la capacidad de registrar de forma exhaustiva los metadatos de todo el tráfico que ve, en áreas de trabajo de Log Analytics, almacenamiento o soluciones de terceros a través de Event Hubs. Sin embargo, todas las soluciones de registro incurren en costos de procesamiento y almacenamiento de datos. En volúmenes muy grandes, estos costos pueden ser significativos, se debe considerar un enfoque rentable y una alternativa a Log Analytics y estimar los costos. Considere si es necesario registrar los metadatos de tráfico para todas las categorías de registro y modificarlos en Configuración de diagnóstico si es necesario.",
+ "guid": "a27d979a-c88c-4ce0-9310-9a69eba3460d",
+ "service": "Azure Firewall",
+ "text": "Revise los requisitos de registro.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Azure Firewall se debe usar para controlar el tráfico entre redes virtuales, entre redes virtuales y redes locales, el tráfico saliente a Internet y el tráfico entrante que no es HTTP/s. Para el control del tráfico dentro de la red virtual, se recomienda usar grupos de seguridad de red.",
+ "guid": "bce7644e-fefe-4d43-94ea-37af4d8743f9",
+ "service": "Azure Firewall",
+ "text": "No use Azure Firewall para el control del tráfico dentro de la red virtual.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Si se usa el enfoque de infraestructura como código (IaC) para mantener Azure Firewall y todas las dependencias, la copia de seguridad y el control de versiones de las directivas de Azure Firewall ya deben estar en su lugar. De lo contrario, se puede implementar un mecanismo complementario basado en una aplicación lógica externa para automatizar y proporcionar una solución eficaz.",
+ "guid": "8b0afffb-17aa-4839-b93f-c01d990ad7c6",
+ "service": "Azure Firewall",
+ "text": "Mantenga copias de seguridad periódicas de los artefactos de Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico son un componente clave para muchas herramientas y estrategias de supervisión de Azure Firewall y deben estar habilitados. Puede supervisar Azure Firewall mediante registros de firewall o libros. También puede usar registros de actividad para auditar operaciones en recursos de Azure Firewall.",
+ "guid": "6d52b11a-0034-4824-84c4-7383182dc4df",
+ "service": "Azure Firewall",
+ "text": "Habilite los registros de diagnóstico para Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de firewall estructurados son un tipo de datos de registro que se organizan en un nuevo formato específico. Utilizan un esquema predefinido para estructurar los datos de registro de una manera que facilite la búsqueda, el filtrado y el análisis. Las últimas herramientas de monitoreo se basan en este tipo de registros, por lo que a menudo es un requisito previo. Utilice el formato de registros de diagnóstico anterior solo si hay una herramienta existente con un requisito previo para ello. No habilite ambos formatos de registro al mismo tiempo.",
+ "guid": "99a0621d-2643-4e46-afb0-dd3e5111dedd",
+ "service": "Azure Firewall",
+ "text": "Utilice el formato de registros de firewall estructurados.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La experiencia del portal de Azure Firewall ahora incluye un nuevo libro en la interfaz de usuario de la sección Supervisión, por lo que ya no es necesaria una instalación independiente. Con el libro de Azure Firewall, puede extraer información valiosa de los eventos de Azure Firewall, profundizar en las reglas de red y aplicaciones, y examinar las estadísticas relativas a las actividades del firewall en direcciones URL, puertos y direcciones.",
+ "guid": "8c18d9ea-2440-4125-a0cb-c1cf35c0be70",
+ "service": "Azure Firewall",
+ "text": "Use el libro de supervisión de Azure Firewall integrado.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se deben crear alertas para supervisar al menos el rendimiento, el estado de mantenimiento del firewall, la utilización del puerto SNAT y las métricas de sondeo de latencia de AZFW. Para obtener información sobre la supervisión de registros y métricas, consulte Supervisión de registros y métricas de Azure Firewall.",
+ "guid": "05877204-1759-4b71-8938-4766b1b24fa7",
+ "service": "Azure Firewall",
+ "text": "Supervise las métricas clave y cree alertas para los indicadores de la utilización de la capacidad de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Si estas herramientas están disponibles en el entorno, se recomienda aprovechar la integración con las soluciones de Microsoft Defender for Cloud y Microsoft Sentinel. Con la integración de Microsoft Defender for Cloud, puede visualizar el estado general de la infraestructura de red y la seguridad de la red en un solo lugar, incluida la seguridad de red de Azure en todas las redes virtuales y centros virtuales repartidos en diferentes regiones de Azure. La integración con Microsoft Sentinel proporciona capacidades de detección y prevención de amenazas.",
+ "guid": "0dd715ab-c76e-49b9-9616-ccb36ddb293e",
+ "service": "Azure Firewall",
+ "text": "Configure la integración de Azure Firewall con Microsoft Defender for Cloud y Microsoft Sentinel.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Policy Analytics es una nueva característica que proporciona información sobre el impacto de las directivas de Azure Firewall. Le ayuda a identificar posibles problemas (alcanzar los límites de las directivas, reglas de uso bajo, reglas redundantes, reglas demasiado genéricas, recomendación de uso de grupos IP) en las directivas y proporciona recomendaciones para mejorar la posición de seguridad y el rendimiento del procesamiento de reglas.",
+ "guid": "9e1b460f-0d41-40a1-9da7-89cda32f7190",
+ "service": "Azure Firewall",
+ "text": "Revise periódicamente el panel de análisis de políticas para identificar posibles problemas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se proporcionan consultas de ejemplo para Azure Firewall. Estos le permitirán identificar rápidamente lo que está sucediendo dentro de su firewall y verificar qué regla se activó o qué regla está permitiendo/bloqueando una solicitud.",
+ "guid": "8f1b00a0-2ba3-4dff-b808-072bbd316a88",
+ "service": "Azure Firewall",
+ "text": "Familiarícese con las consultas KQL (lenguaje de consulta Kusto) para permitir un análisis rápido y la solución de problemas mediante los registros de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Policy Analytics es una nueva característica que proporciona información sobre el impacto de las directivas de Azure Firewall. Le ayuda a identificar posibles problemas (alcanzar los límites de las directivas, reglas de uso bajo, reglas redundantes, reglas demasiado genéricas, recomendación de uso de grupos IP) en las directivas y proporciona recomendaciones para mejorar la posición de seguridad y el rendimiento del procesamiento de reglas.",
+ "guid": "f3a64299-022d-492e-a095-72965cbb79b8",
+ "service": "Azure Firewall",
+ "text": "Utilice el panel de análisis de políticas para identificar posibles optimizaciones para las políticas de firewall.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "En lugar de crear y mantener explícitamente una larga lista de sitios públicos de Internet, considere la posibilidad de usar las categorías web de Azure Firewall. Esta función categorizará dinámicamente el contenido web y permitirá la creación de reglas de aplicación compactas.",
+ "guid": "53e42e9b-6d25-4116-87ca-6c97252e1cd6",
+ "service": "Azure Firewall",
+ "text": "Considere la posibilidad de utilizar las categorías web para permitir o denegar el acceso saliente de forma masiva.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si es necesario que Azure Firewall funcione en modo IDPS Alerta y denegación, considere detenidamente el impacto en el rendimiento, tal como se documenta en esta página.",
+ "guid": "4afedb20-a63a-4c17-907d-d8afc5cd1b43",
+ "service": "Azure Firewall",
+ "text": "Evalúe el impacto en el rendimiento de IDPS en modo de alerta y denegación.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall admite actualmente 2496 puertos por dirección IP pública por instancia de conjunto de escalado de máquinas virtuales de back-end. De forma predeterminada, hay dos instancias de Virtual Machine Scale Set. Por lo tanto, hay 4992 puertos por IP de destino de flujo, puerto de destino y protocolo (TCP o UDP). El firewall se escala hasta un máximo de 20 instancias. Puede evitar los límites configurando implementaciones de Azure Firewall con un mínimo de cinco direcciones IP públicas para implementaciones susceptibles al agotamiento de SNAT.",
+ "guid": "cdb16c9c-fe4e-41d6-bc0c-8519a606d37b",
+ "service": "Azure Firewall",
+ "text": "Evalúe el posible problema de agotamiento del puerto SNAT.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Cree tráfico inicial que no forme parte de las pruebas de carga 20 minutos antes de la prueba. Utilice la configuración de diagnóstico para capturar eventos de escalado vertical y reducido. Puede usar el servicio Azure Load Testing para generar el tráfico inicial. Permite que la instancia de Azure Firewall escale verticalmente sus instancias al máximo.",
+ "guid": "1859fa28-775d-433f-b189-6b250e51b441",
+ "service": "Azure Firewall",
+ "text": "Prepare correctamente Azure Firewall antes de cualquier prueba de rendimiento.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall es una implementación dedicada en la red virtual. Dentro de la red virtual, se requiere una subred dedicada para la instancia de Azure Firewall. Azure Firewall aprovisiona más capacidad a medida que se escala. Un espacio de direcciones /26 para sus subredes garantiza que el firewall tenga suficientes direcciones IP disponibles para acomodar el escalado. Azure Firewall no necesita una subred mayor que /26. El nombre de la subred de Azure Firewall debe ser AzureFirewallSubnet.",
+ "guid": "272b1122-494d-4baa-a328-928a89ebb0ad",
+ "service": "Azure Firewall",
+ "text": "Configure una subred de Azure Firewall (AzureFirewallSubnet) con un espacio de direcciones /26.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall proporciona algunas funcionalidades de registro avanzadas que pueden resultar costosas de mantener siempre activas. En su lugar, deben usarse solo con fines de solución de problemas y tener una duración limitada, y luego deshabilitarse cuando ya no sean necesarios. Por ejemplo, los flujos principales y los registros de seguimiento de flujo son costosos, lo que puede provocar un uso excesivo de CPU y almacenamiento en la infraestructura de Azure Firewall.",
+ "guid": "2b20c2ea-e6fd-4570-b86f-b20bfb695c6f",
+ "service": "Azure Firewall",
+ "text": "No habilite el registro avanzado si no es necesario",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Firewall Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.ja.json b/checklists-ext/azurefirewall_sg_checklist.ja.json
new file mode 100644
index 000000000..aeb17b491
--- /dev/null
+++ b/checklists-ext/azurefirewall_sg_checklist.ja.json
@@ -0,0 +1,442 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "ハブアンドスポーク型で推移的なアーキテクチャを簡単に作成でき、トラフィックのガバナンスと保護のためのネイティブセキュリティサービスを利用できます。 ネットワーク トポロジの詳細については、Azure クラウド導入フレームワークのドキュメントを参照してください。",
+ "guid": "833670b0-5f05-4810-96be-dd79df30775d",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager を従来のハブ & スポークまたは Azure Virtual WAN ネットワーク トポロジと共に使用して、Azure Firewall のインスタンスをデプロイおよび管理します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall ポリシーは、中央の基本ポリシーをオーバーレイするために階層構造に配置できます。特定のリージョンの要件を満たすためのきめ細かなポリシーを許可します。ロールベースのアクセス制御 (RBAC) を通じて、増分ファイアウォール ポリシーをローカル セキュリティ チームに委任します。DNAT ルールや DNS 設定など、一部の設定はインスタンスごとに固有ですが、複数の特殊なポリシーが必要になる場合があります。",
+ "guid": "5b0404e7-a3be-4103-aff9-903f9fe447d2",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall ポリシーを作成して、グローバル ネットワーク環境全体のセキュリティ体制を管理します。Azure Firewall のすべてのインスタンスにポリシーを割り当てます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "既存のデプロイの場合は、Azure Firewall ルールを Azure Firewall Manager ポリシーに移行します。Azure Firewall Manager を使用して、ファイアウォールとポリシーを一元的に管理します。 詳細については、「Azure Firewall Premium への移行」を参照してください。",
+ "guid": "182b6ed7-94f3-434c-be79-ce6a93d6560c",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall クラシック ルールを既存のデプロイの Azure Firewall Manager ポリシーに移行します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall 製品グループは、この場所で既知の問題の最新の一覧を保持しています。このリストには、設計上の動作、開発中の修正、プラットフォームの制限、および可能な回避策または軽減策に関連する重要な情報が含まれています。",
+ "guid": "d34dc09b-f98f-47d4-92b7-79f77b9a755d",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の既知の問題の一覧を確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ポリシーの構造には、ルールとルール コレクション グループの数、ポリシーの合計サイズ、ソース/ターゲットの宛先など、制限があります。必ずポリシーを作成し、文書化されたしきい値を超えないようにしてください。",
+ "guid": "86b20eea-4ed0-4f79-adf4-4ff5f7edc227",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall ポリシーが Azure Firewall の制限と推奨事項に準拠していることを確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall では、1 つの可用性ゾーンにデプロイされる場合と、複数のゾーンにデプロイされる場合で異なる SLA が提供されます。詳細については、「Azure Firewall の SLA」を参照してください。すべての Azure SLA の詳細については、「Azure サービスの SLA の概要」を参照してください。",
+ "guid": "7f303799-88af-49d0-ae85-73ce4bf33f76",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall を複数の可用性ゾーンにデプロイして、より高いサービス レベル アグリーメント (SLA) を実現します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "従来のハブ&スポークアーキテクチャについては、この記事でマルチリージョンの詳細について説明します。セキュリティ保護付き仮想ハブ (Azure Virtual WAN) の場合、ルーティング インテントとポリシーを構成して、ハブ間通信とブランチ間通信をセキュリティで保護する必要があります。障害に対する耐性とフォールト トレラント性を考慮して設計されたワークロードの場合は、Azure Firewall と Azure Virtual Network のインスタンスをリージョン リソースと見なすことを忘れないでください。",
+ "guid": "69dcdc93-55e9-454e-9128-b9996b089e2c",
+ "service": "Azure Firewall",
+ "text": "マルチリージョン環境では、リージョンごとに Azure Firewall インスタンスをデプロイします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall の正常性状態の主要なメトリック インジケーター (スループット、ファイアウォールの正常性状態、SNAT ポート使用率、AZFW 待機時間プローブ メトリックなど) を綿密に監視します。さらに、Azure Firewall は Azure Resource Health と統合されるようになりました。Azure Firewall リソース正常性チェックを使用すると、Azure Firewall の正常性状態を表示し、Azure Firewall リソースに影響を与える可能性のあるサービスの問題に対処できるようになりました。",
+ "guid": "dbadd7db-ba2d-4b33-bf38-3251fe3fb6fb",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall のメトリックとリソースの正常性状態を監視します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall には、インターネットに直接接続できる必要があります。AzureFirewallSubnet が Border Gateway プロトコルを介してオンプレミス ネットワークへの既定のルートを学習する場合は、Azure Firewall を強制トンネリング モードで構成する必要があります。強制トンネリング機能を使用すると、Azure Firewall Management サブネット用に別の /26 アドレス空間が必要になります。これが強制トンネリング モードで再構成できない既存の Azure Firewall インスタンスである場合は、0.0.0.0/0 ルートで UDR を作成します。NextHopType の値を Internet に設定します。AzureFirewallSubnet に関連付けて、インターネット接続を維持します。",
+ "guid": "55277728-2747-486c-be69-3428291856a4",
+ "service": "Azure Firewall",
+ "text": "インターネットへのすべてのトラフィックを、インターネットに直接アクセスするのではなく、指定された次ホップにルーティングする必要がある場合は、Azure Firewall を強制トンネリング モードで構成します (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "新しい Azure Firewall インスタンスをデプロイするときに、強制トンネリング モードを有効にすると、パブリック IP アドレスを None に設定して、完全にプライベート データ プレーンをデプロイできます。ただし、管理プレーンには、管理目的のみにパブリック IP が必要です。仮想ネットワークとオンプレミス ネットワークからの内部トラフィックでは、そのパブリック IP は使用されません。強制トンネリングの詳細については、「Azure Firewall の強制トンネリング」を参照してください。",
+ "guid": "7d9cd1f0-0f59-452e-be83-de6b49710ddc",
+ "service": "Azure Firewall",
+ "text": "強制トンネリング モードで Azure Firewall を構成するときに、完全にプライベート データ プレーンをデプロイするには、パブリック IP アドレスを [なし] に設定します (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall ポリシーは、中央の基本ポリシーをオーバーレイするために階層構造に配置できます。特定のリージョンの要件を満たすためのきめ細かなポリシーを許可します。各ポリシーには、特定の優先度、アクション、および処理順序を持つDNAT、ネットワーク、およびアプリケーションルールの異なるセットを含めることができます。最小特権アクセスゼロトラストの原則に基づいてルールを作成します。ルールの処理方法については、この記事で説明します。",
+ "guid": "c7600ea8-eb60-4eb1-9aee-c874efef69b7",
+ "service": "Azure Firewall",
+ "text": "最小特権アクセス基準に基づいてファイアウォールポリシーのルールを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "IDPS は、最も強力な Azure Firewall (Premium) セキュリティ機能の 1 つであり、有効にする必要があります。セキュリティとアプリケーションの要件に基づいて、パフォーマンスへの影響 (以下の「コスト」セクションを参照) を考慮して、アラート モードまたはアラートと拒否モードを選択できます。",
+ "guid": "d8fc2b4d-a183-4949-82ff-c6130a9d87dc",
+ "service": "Azure Firewall",
+ "text": "IDPSをアラートまたはアラートと拒否モードで有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この機能を有効にすると、VNet 内のクライアントは DNS サーバーとして Azure Firewall にポイントされます。直接アクセスされたり公開されたりしない内部DNSインフラストラクチャを保護します。Azure Firewall は、DNS クエリの転送に使用されるカスタム DNS を使用するようにも構成する必要があります。",
+ "guid": "9fa0a48c-c3cb-4fc2-a02b-1182a047e076",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall (DNS) プロキシ構成を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "従来のハブ & スポーク アーキテクチャでは、'SpoketoSpoke'、'SpoketoInternet'、'SpoketoHybrid' 接続のために Azure Firewall 経由のトラフィックを強制するように UDR を構成します。代わりに、Azure Virtual WAN では、ルーティングの意図とポリシーを構成して、ハブに統合された Azure Firewall インスタンスを介してプライベートまたはインターネットのトラフィックをリダイレクトします。",
+ "guid": "a3f23112-5986-4fd2-9d64-edfb0363c08c",
+ "service": "Azure Firewall",
+ "text": "ユーザー定義ルート (UDR) を構成して、Azure Firewall 経由のトラフィックを強制します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "送信パスで明示的なプロキシ機能を有効にすると、プロキシとして構成された Azure Firewall を使用して、送信側の Web アプリケーション (Web ブラウザーなど) でプロキシ設定を構成できます。その結果、Web トラフィックはファイアウォールのプライベート IP アドレスに到達するため、UDR を使用せずにファイアウォールから直接送信されます。また、この機能により、既存のネットワークルートを変更することなく、複数のファイアウォールの使用が容易になります。",
+ "guid": "f62b7e3d-b86d-4f84-888d-ec7f97b34e96",
+ "service": "Azure Firewall",
+ "text": "UDR を適用できず、Web トラフィックのリダイレクトのみが必要な場合は、Azure Firewall を明示的なプロキシとして使用することを検討してください",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使い慣れた、最高のサードパーティであるSECaaS製品を使用して、ユーザーのインターネットアクセスを保護できます。このシナリオでは、IPSec トンネルを使用してプロバイダーのインフラストラクチャに接続するため、ハブに S2S VPN ゲートウェイを備えた Azure Virtual WAN が必要です。SECaaS プロバイダーは、追加のライセンス料金を請求し、IPSec 接続のスループットを制限する場合があります。ZScaler Cloud Connectorなどの代替ソリューションが存在し、より適している可能性があります。",
+ "guid": "1f1a4239-f908-4fb5-aff5-7d716d9227a1",
+ "service": "Azure Firewall",
+ "text": "サポートされているサードパーティ製の SaaS (Software as a Service) セキュリティプロバイダーを使用してアウトバウンド接続を保護する場合は、Firewall Manager 内でこれらのソリューションを設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN は、Azure Firewall とファイアウォール ポリシーの DNS 解決に基づいて使用できます。この機能により、任意の TCP/UDP プロトコル (NTP、SSH、RDP など) で送信トラフィックをフィルタリングできます。ネットワーク規則で FQDN を使用するには、Azure Firewall DNS プロキシ構成を有効にする必要があります。そのしくみについては、「ネットワーク ルールでの Azure Firewall FQDN フィルタリング」を参照してください。",
+ "guid": "cac3a2cc-688b-42c3-bfb5-e2b55270b8a0",
+ "service": "Azure Firewall",
+ "text": "ネットワークルールで完全修飾ドメイン名 (FQDN) フィルタリングを使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "サービス タグは、セキュリティ ルール作成の複雑さを最小限に抑えるために、IP アドレス プレフィックスのグループを表します。ネットワークルールでサービスタグを使用すると、さまざまなIPアドレスを開かずに、Azure、Dynamics、およびOffice 365の特定のサービスへのアウトバウンドアクセスを有効にすることができます。Azure では、これらのタグと各サービスで使用される基になる IP アドレスとの間のマッピングが自動的に維持されます。Azure Firewall で使用できるサービス タグの一覧は、「Az Firewall サービス タグ」の一覧です。",
+ "guid": "8e718b0b-3ae5-4a85-9e5e-7f12ac48ace8",
+ "service": "Azure Firewall",
+ "text": "ネットワーク ルールでサービス タグを使用して、特定の Microsoft サービスへの選択的なアクセスを有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN タグは、既知の Microsoft サービスに関連付けられている完全修飾ドメイン名 (FQDN) のグループを表します。アプリケーション規則で FQDN タグを使用すると、特定の Azure サービス (Office 365、Windows 365、Intune) のファイアウォール経由に必要な送信ネットワーク トラフィックを許可できます。",
+ "guid": "66db2147-74f7-4b4a-af65-a946369ae551",
+ "service": "Azure Firewall",
+ "text": "アプリケーションルールでFQDNタグを使用して、特定のMicrosoftサービスへの選択的なアクセスを有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "DDoS 保護プランでは、DDoS 攻撃からファイアウォールを保護するための強化された軽減機能が提供されます。Azure Firewall Manager は、ファイアウォール インフラストラクチャと DDoS 保護プランを作成するための統合ツールです。詳細については、「Azure Firewall Manager を使用して Azure DDoS Protection プランを構成する」を参照してください。",
+ "guid": "0c87e550-0780-401e-9208-5464b378a8e7",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager を使用して、DDoS 保護プランを作成し、ハブ仮想ネットワークに関連付けます (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall Premium では、TLS 検査機能を使用する場合は、運用環境に内部のエンタープライズ証明機関 (CA) を活用することをお勧めします。自己署名証明書は、テスト/PoCの目的でのみ使用する必要があります。",
+ "guid": "821132d4-1ba9-4709-9eb3-5906871b1721",
+ "service": "Azure Firewall",
+ "text": "エンタープライズ PKI を使用して、TLS インスペクション用の証明書を生成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティ要件により、Webアプリケーションにゼロトラストアプローチ(検査と暗号化)を実装する必要がある場合は、このガイドに従うことをお勧めします。このドキュメントでは、従来のハブ アンド スポークと Virtual WAN の両方のシナリオで、Azure Firewall と Application Gateway を統合する方法について説明します。",
+ "guid": "0ecf166e-e415-45bf-bece-87a32e76b096",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall と Application Gateway のゼロトラスト構成ガイドを確認する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall は、Basic、Standard、Premium の 3 つの異なる SKU でデプロイできます。Azure Firewall Premium は、機密性の高いアプリケーション (支払い処理など) をセキュリティで保護するために推奨されます。Azure Firewall Standard は、レイヤー 3 からレイヤー 7 のファイアウォールをお探しのお客様で、最大 30 Gbps のピーク トラフィック期間を処理するために自動スケーリングが必要な場合に推奨されます。Azure Firewall Basic は、250 Mbps のスループットが必要な SMB のお客様にお勧めします。必要に応じて、こちらに記載されているように、Standard と Premium の間でダウングレードまたはアップグレードが可能です。 詳細については、「ニーズに合わせて適切な Azure Firewall SKU を選択する」を参照してください。",
+ "guid": "fbcc2c4d-8026-46a9-8fe7-bdb04dbd1f20",
+ "service": "Azure Firewall",
+ "text": "適切な Azure Firewall SKU をデプロイします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "営業時間内のみ使用される開発環境またはテスト環境がある場合があります。詳細については、「Azure Firewall の割り当て解除と割り当て」を参照してください。",
+ "guid": "4bf5b742-3a86-40a3-abce-a7991e9a0e78",
+ "service": "Azure Firewall",
+ "text": "24x7 で実行する必要のない Azure Firewall のデプロイを停止します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ハブ仮想ネットワークまたは Virtual WAN セキュア ハブで Azure Firewall の中央インスタンスを使用し、同じリージョンから同じハブに接続されている多くのスポーク仮想ネットワークで同じファイアウォールを共有できます。ハブスポークトポロジの一部として予期しないリージョン間トラフィックがないことを確認します。",
+ "guid": "4468b60f-0f1d-4af5-98cd-b4f9fc3bd70f",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の同じインスタンスを複数のワークロードと Azure Virtual Network で共有します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "上位フロー ログ (業界では Fat Flows) は、ファイアウォールを介して最高のスループットに貢献している上位の接続を示します。Azure Firewall によって処理されるトラフィックを定期的に確認し、ファイアウォールを通過するトラフィックの量を減らすための最適化の可能性を検索することをお勧めします。",
+ "guid": "3ec205f3-5201-4a2e-b82b-1c77c9ee139c",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall によって処理されたトラフィックを定期的に確認し、発生元のワークロードの最適化を探します",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "未使用の Azure Firewall デプロイを特定するには、まず、ファイアウォールのプライベート IP を指すサブネットに関連付けられている監視メトリックと UDR を分析します。その情報を、Azure Firewall のインスタンスに NAT、ネットワーク、アプリケーションのルール (クラシック) があるかどうか、DNS プロキシ設定が [無効] に構成されているかどうかなど、他の検証と組み合わせ、環境とデプロイに関する内部ドキュメントと組み合わせます。時間の経過とともにコスト効率の高いデプロイを検出できます。 ログとメトリックの監視の詳細については、「Azure Firewall のログとメトリックと SNAT ポートの使用率を監視する」を参照してください。",
+ "guid": "514f4dbe-5294-44e1-95c5-923a199ff687",
+ "service": "Azure Firewall",
+ "text": "使用率の低い Azure Firewall インスタンスを確認します。未使用の Azure Firewall デプロイを特定して削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Firewall Manager のポリシー、関連付け、および継承を慎重に確認してください。ポリシーは、ファイアウォールの関連付けに基づいて請求されます。ファイアウォールの関連付けが 0 個または 1 個のポリシーは無料です。複数のファイアウォールの関連付けを持つポリシーは、固定料金で請求されます。詳細については、「価格 - Azure Firewall Manager」を参照してください。",
+ "guid": "90f29560-d536-46bf-a719-f0f95f89105e",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager とそのポリシーを使用して、運用コストを削減し、効率を高め、管理オーバーヘッドを削減します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "関連付けられているすべてのパブリック IP アドレスが使用中かどうかを検証します。使用していない場合は、関連付けを解除して削除します。IP アドレスを削除する前に、SNAT ポートの使用率を評価します。ファイアウォールに必要な数のパブリック IP のみを使用します。詳細については、「Azure Firewall のログとメトリックの監視」および「SNAT ポートの使用率」を参照してください。",
+ "guid": "e81c61b3-0085-4029-82e3-d55513288f87",
+ "service": "Azure Firewall",
+ "text": "未使用のパブリック IP アドレスを削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Firewall には、表示されるすべてのトラフィックのメタデータを、Event Hubs を介して Log Analytics ワークスペース、ストレージ、またはサードパーティのソリューションに包括的に記録する機能があります。ただし、すべてのロギングソリューションでは、データの処理と保存にコストがかかります。非常に大量のコストがかかると、これらのコストは大きくなる可能性があるため、コスト効率の高いアプローチと Log Analytics の代替手段を検討し、コストを見積もる必要があります。すべてのロギングカテゴリのトラフィックメタデータをログに記録し、必要に応じて診断設定で変更する必要があるかどうかを検討します。",
+ "guid": "a27d979a-c88c-4ce0-9310-9a69eba3460d",
+ "service": "Azure Firewall",
+ "text": "ログ記録の要件を確認します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Firewall は、VNet 間、VNet とオンプレミス ネットワーク間のトラフィック、インターネットへの送信トラフィック、および受信 HTTP/s トラフィックを制御するために使用する必要があります。VNet 内のトラフィック制御には、ネットワーク セキュリティ グループを使用することをお勧めします。",
+ "guid": "bce7644e-fefe-4d43-94ea-37af4d8743f9",
+ "service": "Azure Firewall",
+ "text": "VNet 内のトラフィック制御に Azure Firewall を使用しないでください。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "コードとしてのインフラストラクチャ (IaC) アプローチを使用して Azure Firewall とすべての依存関係を維持する場合は、Azure Firewall ポリシーのバックアップとバージョン管理が既に実施されている必要があります。そうでない場合は、外部ロジック アプリに基づくコンパニオン メカニズムをデプロイして、効果的なソリューションを自動化し、提供できます。",
+ "guid": "8b0afffb-17aa-4839-b93f-c01d990ad7c6",
+ "service": "Azure Firewall",
+ "text": "Azure Policy 成果物の定期的なバックアップを維持します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログは、Azure Firewall の多くの監視ツールと戦略の主要なコンポーネントであり、有効にする必要があります。Azure Firewall は、ファイアウォールのログまたはブックを使用して監視できます。アクティビティ ログを使用して、Azure Firewall リソースに対する操作を監査することもできます。",
+ "guid": "6d52b11a-0034-4824-84c4-7383182dc4df",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の診断ログを有効にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "構造化ファイアウォールログは、特定の新しい形式で整理されたログデータの一種です。事前定義されたスキーマを使用して、検索、フィルタリング、分析を容易にする方法でログデータを構造化します。最新の監視ツールはこのタイプのログに基づいているため、多くの場合、前提条件となります。以前の診断ログ形式は、前提条件を持つ既存のツールがある場合にのみ使用してください。両方のログ形式を同時に有効にしないでください。",
+ "guid": "99a0621d-2643-4e46-afb0-dd3e5111dedd",
+ "service": "Azure Firewall",
+ "text": "構造化ファイアウォールログ形式を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Firewall ポータル エクスペリエンスに、監視セクション UI の下に新しいブックが含まれるようになり、個別のインストールは不要になりました。Azure Firewall ブックを使用すると、Azure Firewall イベントから貴重な分析情報を抽出し、アプリケーションとネットワークのルールを詳しく調べ、URL、ポート、アドレス間のファイアウォール アクティビティに関する統計を調べることができます。",
+ "guid": "8c18d9ea-2440-4125-a0cb-c1cf35c0be70",
+ "service": "Azure Firewall",
+ "text": "組み込みの Azure Firewall 監視ブックを使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "アラートは、少なくともスループット、ファイアウォールの正常性状態、SNAT ポートの使用率、AZFW 待機時間プローブのメトリックを監視するために作成する必要があります。ログとメトリックの監視については、「Azure Firewall のログとメトリックを監視する」を参照してください。",
+ "guid": "05877204-1759-4b71-8938-4766b1b24fa7",
+ "service": "Azure Firewall",
+ "text": "主要なメトリックを監視し、Azure Firewall 容量の使用率を示すインジケーターのアラートを作成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "これらのツールが環境で使用できる場合は、Microsoft Defender for Cloud および Microsoft Sentinel ソリューションとの統合を活用することをお勧めします。Microsoft Defender for Cloud の統合により、すべての VNet にわたる Azure ネットワーク セキュリティや、Azure のさまざまなリージョンに分散した仮想ハブなど、ネットワーク インフラストラクチャとネットワーク セキュリティの全体的な状態を 1 か所で視覚化できます。Microsoft Sentinel との統合により、脅威の検出と防止の機能が実現します。",
+ "guid": "0dd715ab-c76e-49b9-9616-ccb36ddb293e",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall と Microsoft Defender for Cloud および Microsoft Sentinel との統合を構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ポリシー分析は、Azure Firewall ポリシーの影響に関する分析情報を提供する新機能です。これは、ポリシーの潜在的な問題 (ポリシー制限のヒット、使用率の低いルール、冗長なルール、汎用すぎるルール、IP グループの使用に関する推奨事項) を特定するのに役立ち、セキュリティ体制とルール処理のパフォーマンスを向上させるための推奨事項を提供します。",
+ "guid": "9e1b460f-0d41-40a1-9da7-89cda32f7190",
+ "service": "Azure Firewall",
+ "text": "ポリシー分析ダッシュボードを定期的に確認して、潜在的な問題を特定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Firewall のサンプル クエリが用意されています。これにより、ファイアウォール内で何が起こっているかをすばやく特定し、トリガーされたルールや、リクエストを許可/ブロックしているルールを確認できます。",
+ "guid": "8f1b00a0-2ba3-4dff-b808-072bbd316a88",
+ "service": "Azure Firewall",
+ "text": "KQL (Kusto 照会言語) クエリに慣れると、Azure Firewall ログを使用した迅速な分析とトラブルシューティングが可能になります。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ポリシー分析は、Azure Firewall ポリシーの影響に関する分析情報を提供する新機能です。これは、ポリシーの潜在的な問題 (ポリシー制限のヒット、使用率の低いルール、冗長なルール、汎用すぎるルール、IP グループの使用に関する推奨事項) を特定するのに役立ち、セキュリティ体制とルール処理のパフォーマンスを向上させるための推奨事項を提供します。",
+ "guid": "f3a64299-022d-492e-a095-72965cbb79b8",
+ "service": "Azure Firewall",
+ "text": "ポリシー分析ダッシュボードを使用して、ファイアウォール ポリシーの潜在的な最適化を特定します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "パブリック インターネット サイトの長いリストを明示的に構築して維持する代わりに、Azure Firewall Web カテゴリの使用を検討してください。この機能は、Webコンテンツを動的に分類し、コンパクトなアプリケーションルールの作成を可能にします。",
+ "guid": "53e42e9b-6d25-4116-87ca-6c97252e1cd6",
+ "service": "Azure Firewall",
+ "text": "Web カテゴリで、送信アクセスを一括で許可または拒否することを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall を IDPS モードのアラートと拒否で動作させる必要がある場合は、このページに記載されているパフォーマンスへの影響を慎重に検討してください。",
+ "guid": "4afedb20-a63a-4c17-907d-d8afc5cd1b43",
+ "service": "Azure Firewall",
+ "text": "アラート モードと拒否モードでの IDPS のパフォーマンスへの影響を評価します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall では現在、バックエンド仮想マシン スケール セット インスタンスごとにパブリック IP アドレスあたり 2496 ポートがサポートされています。既定では、2 つの Virtual Machine Scale Set インスタンスがあります。したがって、フローの宛先IP、宛先ポート、およびプロトコル(TCPまたはUDP)ごとに4992ポートがあります。ファイアウォールは、最大 20 インスタンスまでスケールアップできます。この制限を回避するには、SNAT の枯渇の影響を受けやすいデプロイに対して、少なくとも 5 つのパブリック IP アドレスを使用して Azure Firewall デプロイを構成します。",
+ "guid": "cdb16c9c-fe4e-41d6-bc0c-8519a606d37b",
+ "service": "Azure Firewall",
+ "text": "SNAT ポートの枯渇の潜在的な問題を評価します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ロード テストに含まれない初期トラフィックは、テストの 20 分前に作成します。診断設定を使用して、スケールアップとスケールダウンのイベントをキャプチャします。Azure Load Testing サービスを使用して、初期トラフィックを生成できます。Azure Firewall インスタンスがインスタンスを最大までスケールアップできるようにします。",
+ "guid": "1859fa28-775d-433f-b189-6b250e51b441",
+ "service": "Azure Firewall",
+ "text": "パフォーマンス テストの前に、Azure Firewall を適切にウォームアップします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall は、仮想ネットワーク内の専用デプロイです。仮想ネットワーク内では、Azure Firewall のインスタンスに専用のサブネットが必要です。Azure Firewall は、スケーリングに応じてより多くの容量をプロビジョニングします。サブネットの /26 アドレス空間により、ファイアウォールはスケーリングに対応するのに十分な IP アドレスを確保できます。Azure Firewall には、/26 より大きいサブネットは必要ありません。Azure Firewall サブネット名は AzureFirewallSubnet にする必要があります。",
+ "guid": "272b1122-494d-4baa-a328-928a89ebb0ad",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall サブネット (AzureFirewallSubnet) を /26 アドレス空間で構成します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall には、常にアクティブに保つにはコストがかかる可能性のある高度なログ機能がいくつか用意されています。代わりに、トラブルシューティングの目的でのみ使用し、期間を制限し、不要になったら無効にする必要があります。たとえば、上位フローとフロー トレース ログは高価です は、Azure Firewall インフラストラクチャで CPU とストレージの過剰な使用を引き起こす可能性があります。",
+ "guid": "2b20c2ea-e6fd-4570-b86f-b20bfb695c6f",
+ "service": "Azure Firewall",
+ "text": "不要な場合は、詳細ログを有効にしないでください",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Firewall Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.ko.json b/checklists-ext/azurefirewall_sg_checklist.ko.json
new file mode 100644
index 000000000..9ea223a78
--- /dev/null
+++ b/checklists-ext/azurefirewall_sg_checklist.ko.json
@@ -0,0 +1,442 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "허브 앤 스포크(hub-and-spoke) 및 전이적 아키텍처를 쉽게 생성할 수 있으며, 트래픽 관리 및 보호를 위한 기본 보안 서비스를 제공합니다. 네트워크 토폴로지에 대한 자세한 내용은 Azure Cloud Adoption Framework 설명서를 참조하세요.",
+ "guid": "833670b0-5f05-4810-96be-dd79df30775d",
+ "service": "Azure Firewall",
+ "text": "기존 허브 & 스포크 또는 Azure Virtual WAN 네트워크 토폴로지와 함께 Azure Firewall Manager를 사용하여 Azure Firewall 인스턴스를 배포하고 관리합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall 정책은 중앙 기본 정책을 오버레이하기 위해 계층 구조로 정렬할 수 있습니다. 특정 지역의 요구 사항을 충족하기 위해 세분화된 정책을 허용합니다. 역할 기반 액세스 제어(RBAC)를 통해 증분 방화벽 정책을 로컬 보안 팀에 위임합니다. 일부 설정은 인스턴스별로 구체적이며(예: DNAT 규칙 및 DNS 구성) 여러 특수 정책이 필요할 수 있습니다.",
+ "guid": "5b0404e7-a3be-4103-aff9-903f9fe447d2",
+ "service": "Azure Firewall",
+ "text": "글로벌 네트워크 환경에서 보안 태세를 제어하는 Azure Firewall 정책을 만듭니다. Azure Firewall의 모든 인스턴스에 정책을 할당합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "기존 배포의 경우 Azure Firewall 규칙을 Azure Firewall Manager 정책으로 마이그레이션합니다. Azure Firewall Manager를 사용하여 방화벽 및 정책을 중앙에서 관리할 수 있습니다. 자세한 내용은 Azure Firewall 프리미엄으로 마이그레이션을 참조하세요.",
+ "guid": "182b6ed7-94f3-434c-be79-ce6a93d6560c",
+ "service": "Azure Firewall",
+ "text": "기존 배포에 대한 Azure Firewall 클래식 규칙을 Azure Firewall Manager 정책으로 마이그레이션합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall 제품 그룹은 이 위치에서 알려진 문제의 업데이트된 목록을 유지 관리합니다. 이 목록에는 설계별 동작, 건설 중인 수정 사항, 플랫폼 제한 사항, 가능한 해결 방법 또는 완화와 관련된 중요한 정보가 포함되어 있습니다.",
+ "guid": "d34dc09b-f98f-47d4-92b7-79f77b9a755d",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 알려진 문제 목록을 검토합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "규칙 및 규칙 수집 그룹의 수, 총 정책 크기, 소스/대상 대상을 포함한 정책 구조에는 제한이 있습니다. 정책을 작성하고 문서화된 임계값을 준수해야 합니다.",
+ "guid": "86b20eea-4ed0-4f79-adf4-4ff5f7edc227",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 정책이 Azure Firewall 제한 및 권장 사항을 준수하는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall은 단일 가용성 영역에 배포될 때와 여러 영역에 배포될 때 서로 다른 SLA를 제공합니다. 자세한 내용은 Azure Firewall에 대한 SLA를 참조하세요. 모든 Azure SLA에 대한 자세한 내용은 Azure 서비스에 대한 SLA 요약을 참조하세요.",
+ "guid": "7f303799-88af-49d0-ae85-73ce4bf33f76",
+ "service": "Azure Firewall",
+ "text": "더 높은 SLA(서비스 수준 계약)를 위해 여러 가용성 영역에 Azure Firewall을 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "기존 Hub & Spokes 아키텍처의 경우 다중 지역 세부 정보가 이 문서에 설명되어 있습니다. 보안 가상 허브(Azure Virtual WAN)의 경우 허브 간 및 분기 간 통신을 보호하도록 라우팅 의도 및 정책을 구성해야 합니다. 오류에 대한 내성 및 내결함성을 갖도록 설계된 워크로드의 경우 Azure Firewall 및 Azure Virtual Network의 인스턴스를 지역 리소스로 고려해야 합니다.",
+ "guid": "69dcdc93-55e9-454e-9128-b9996b089e2c",
+ "service": "Azure Firewall",
+ "text": "다중 지역 환경에서는 지역당 Azure Firewall 인스턴스를 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "처리량, 방화벽 상태, SNAT 포트 사용률 및 AZFW 대기 시간 프로브 메트릭과 같은 Azure Firewall 건강 상태의 주요 메트릭 지표를 면밀히 모니터링합니다. 또한 Azure Firewall은 이제 Azure Resource Health와 통합됩니다. Azure Firewall 리소스 상태 검사를 통해 이제 Azure Firewall의 상태를 보고 Azure Firewall 리소스에 영향을 줄 수 있는 서비스 문제를 해결할 수 있습니다.",
+ "guid": "dbadd7db-ba2d-4b33-bf38-3251fe3fb6fb",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 메트릭 및 리소스 상태 모니터링.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall은 인터넷에 직접 연결되어 있어야 합니다. AzureFirewallSubnet이 Border Gateway Protocol을 통해 온-프레미스 네트워크에 대한 기본 경로를 학습하는 경우 강제 터널링 모드에서 Azure Firewall을 구성해야 합니다. 강제 터널링 기능을 사용하면 Azure Firewall 관리 서브넷에 대한 또 다른 /26 주소 공간이 필요합니다. 이름을 AzureFirewallManagementSubnet으로 지정해야 합니다. 강제 터널링 모드에서 다시 구성할 수 없는 기존 Azure Firewall 인스턴스인 경우 0.0.0.0/0 경로를 사용하여 UDR을 만듭니다. NextHopType 값을 Internet으로 설정합니다. AzureFirewallSubnet과 연결하여 인터넷 연결을 유지합니다.",
+ "guid": "55277728-2747-486c-be69-3428291856a4",
+ "service": "Azure Firewall",
+ "text": "모든 인터넷 바인딩 트래픽을 인터넷으로 직접 이동하는 대신 지정된 다음 홉으로 라우팅해야 하는 경우 강제 터널링 모드에서 Azure Firewall을 구성합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "새 Azure Firewall 인스턴스를 배포할 때 강제 터널링 모드를 사용하도록 설정하면 공용 IP 주소를 없음으로 설정하여 완전 프라이빗 데이터 평면을 배포할 수 있습니다. 그러나 관리 평면에는 관리 목적으로만 공용 IP가 필요합니다. 가상 및 온-프레미스 네트워크의 내부 트래픽은 해당 공용 IP를 사용하지 않습니다. 강제 터널링에 대한 자세한 내용은 Azure Firewall 강제 터널링을 참조하세요.",
+ "guid": "7d9cd1f0-0f59-452e-be83-de6b49710ddc",
+ "service": "Azure Firewall",
+ "text": "강제 터널링 모드에서 Azure Firewall을 구성할 때 공용 IP 주소를 없음으로 설정하여 완전한 프라이빗 데이터 평면을 배포합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall 정책은 중앙 기본 정책을 오버레이하기 위해 계층 구조로 정렬할 수 있습니다. 특정 지역의 요구 사항을 충족하기 위해 세분화된 정책을 허용합니다. 각 정책에는 특정 우선 순위, 작업 및 처리 순서가 있는 서로 다른 DNAT, 네트워크 및 애플리케이션 규칙 집합이 포함될 수 있습니다. 최소 권한 액세스 제로 트러스트 원칙에 따라 규칙을 만듭니다. 규칙이 처리되는 방법은 이 문서에 설명되어 있습니다.",
+ "guid": "c7600ea8-eb60-4eb1-9aee-c874efef69b7",
+ "service": "Azure Firewall",
+ "text": "최소 권한 액세스 기준에 따라 방화벽 정책에 대한 규칙을 생성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "IDPS는 가장 강력한 Azure Firewall(프리미엄) 보안 기능 중 하나이며 사용하도록 설정해야 합니다. 보안 및 응용 프로그램 요구 사항에 따라 성능에 미치는 영향(아래 비용 섹션 참조)을 고려하여 경고 또는 경고 및 거부 모드를 선택할 수 있습니다.",
+ "guid": "d8fc2b4d-a183-4949-82ff-c6130a9d87dc",
+ "service": "Azure Firewall",
+ "text": "경고 또는 경고 및 거부 모드에서 IDPS를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 기능을 사용하도록 설정하면 VNet의 클라이언트가 Azure Firewall을 DNS 서버로 가리킵니다. 직접 액세스 및 노출되지 않는 내부 DNS 인프라를 보호합니다. 또한 DNS 쿼리를 전달하는 데 사용할 사용자 지정 DNS를 사용하도록 Azure Firewall을 구성해야 합니다.",
+ "guid": "9fa0a48c-c3cb-4fc2-a02b-1182a047e076",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall(DNS) 프록시 구성을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기존 Hub & Spokes 아키텍처에서는 'SpoketoSpoke', 'SpoketoInternet' 및 'SpoketoHybrid' 연결을 위해 Azure Firewall을 통해 트래픽을 강제 적용하도록 UDR을 구성합니다. 대신 Azure Virtual WAN에서 허브에 통합된 Azure Firewall 인스턴스를 통해 프라이빗 및/또는 인터넷 트래픽을 리디렉션하도록 라우팅 의도 및 정책을 구성합니다.",
+ "guid": "a3f23112-5986-4fd2-9d64-edfb0363c08c",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall을 통해 트래픽을 강제 적용하도록 UDR(사용자 정의 경로)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "아웃바운드 경로에서 명시적 프록시 기능을 사용하도록 설정하면 Azure Firewall을 프록시로 구성하여 보내는 웹 애플리케이션(예: 웹 브라우저)에서 프록시 설정을 구성할 수 있습니다. 따라서 웹 트래픽은 방화벽의 개인 IP 주소에 도달하므로 UDR을 사용하지 않고 방화벽에서 직접 송신됩니다. 또한 이 기능을 사용하면 기존 네트워크 경로를 수정하지 않고도 여러 방화벽을 쉽게 사용할 수 있습니다.",
+ "guid": "f62b7e3d-b86d-4f84-888d-ec7f97b34e96",
+ "service": "Azure Firewall",
+ "text": "UDR을 적용할 수 없고 웹 트래픽 리디렉션만 필요한 경우 Azure Firewall을 명시적 프록시로 사용하는 것이 좋습니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "익숙한 동급 최고의 타사 SECaaS 오퍼링을 사용하여 사용자의 인터넷 액세스를 보호할 수 있습니다. 이 시나리오에서는 IPSec 터널을 사용하여 공급자의 인프라에 연결하므로 허브에 S2S VPN Gateway가 있는 Azure Virtual WAN이 필요합니다. SECaaS 제공업체는 추가 라이선스 비용을 청구하고 IPSec 연결에 대한 처리량을 제한할 수 있습니다. ZScaler Cloud Connector와 같은 대체 솔루션이 있으며 더 적합할 수 있습니다.",
+ "guid": "1f1a4239-f908-4fb5-aff5-7d716d9227a1",
+ "service": "Azure Firewall",
+ "text": "이러한 솔루션을 사용하여 아웃바운드 연결을 보호하려면 Firewall Manager 내에서 지원되는 타사 SaaS(Software as a Service) 보안 공급자를 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall 및 방화벽 정책에서 DNS 확인에 따라 FQDN을 사용할 수 있습니다. 이 기능을 사용하면 모든 TCP/UDP 프로토콜(NTP, SSH, RDP 등 포함)을 사용하여 아웃바운드 트래픽을 필터링할 수 있습니다. 네트워크 규칙에서 FQDN을 사용하려면 Azure Firewall DNS 프록시 구성을 사용하도록 설정해야 합니다. 작동 방식을 알아보려면 네트워크 규칙에서 Azure Firewall FQDN 필터링을 참조하세요.",
+ "guid": "cac3a2cc-688b-42c3-bfb5-e2b55270b8a0",
+ "service": "Azure Firewall",
+ "text": "네트워크 규칙에서 FQDN(정규화된 도메인 이름) 필터링을 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "서비스 태그는 보안 규칙 생성의 복잡성을 최소화하는 데 도움이 되는 IP 주소 접두사 그룹을 나타냅니다. 네트워크 규칙에서 서비스 태그를 사용하면 광범위한 IP 주소를 열지 않고도 Azure, Dynamics 및 Office 365의 특정 서비스에 대한 아웃바운드 액세스를 사용하도록 설정할 수 있습니다. Azure는 이러한 태그와 각 서비스에서 사용하는 기본 IP 주소 간의 매핑을 자동으로 유지 관리합니다. Azure Firewall에서 사용할 수 있는 서비스 태그 목록은 Az Firewall 서비스 태그에 나열되어 있습니다.",
+ "guid": "8e718b0b-3ae5-4a85-9e5e-7f12ac48ace8",
+ "service": "Azure Firewall",
+ "text": "네트워크 규칙에서 서비스 태그를 사용하여 특정 Microsoft 서비스에 대한 선택적 액세스를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "FQDN 태그는 잘 알려진 Microsoft 서비스와 연결된 FQDN(정규화된 도메인 이름) 그룹을 나타냅니다. 응용 프로그램 규칙에서 FQDN 태그를 사용하여 일부 특정 Azure 서비스, Office 365, Windows 365 및 Intune에 대해 방화벽을 통해 필요한 아웃바운드 네트워크 트래픽을 허용할 수 있습니다.",
+ "guid": "66db2147-74f7-4b4a-af65-a946369ae551",
+ "service": "Azure Firewall",
+ "text": "응용 프로그램 규칙에서 FQDN 태그를 사용하여 특정 Microsoft 서비스에 대한 선택적 액세스를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "DDoS 보호 계획은 DDoS 공격으로부터 방화벽을 보호하기 위한 향상된 완화 기능을 제공합니다. Azure Firewall Manager는 방화벽 인프라 및 DDoS 보호 계획을 만들기 위한 통합 도구입니다. 자세한 내용은 Azure Firewall Manager를 사용하여 Azure DDoS Protection 계획 구성을 참조하세요.",
+ "guid": "0c87e550-0780-401e-9208-5464b378a8e7",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager를 사용하여 DDoS 보호 계획을 만들고 허브 가상 네트워크와 연결합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall Premium에서 TLS 검사 기능을 사용하는 경우 프로덕션 환경에 내부 CA(엔터프라이즈 인증 기관)를 활용하는 것이 좋습니다. 자체 서명된 인증서는 테스트/PoC 목적으로만 사용해야 합니다.",
+ "guid": "821132d4-1ba9-4709-9eb3-5906871b1721",
+ "service": "Azure Firewall",
+ "text": "엔터프라이즈 PKI를 사용하여 TLS 검사용 인증서를 생성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "보안 요구 사항에 따라 웹 애플리케이션(검사 및 암호화)에 대한 제로 트러스트 접근 방식을 구현해야 하는 경우 이 가이드를 따르는 것이 좋습니다. 이 문서에서는 기존 허브 및 스포크 및 Virtual WAN 시나리오 모두에서 Azure Firewall과 Application Gateway를 통합하는 방법을 설명합니다.",
+ "guid": "0ecf166e-e415-45bf-bece-87a32e76b096",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 및 Application Gateway에 대한 제로 트러스트 구성 가이드 검토",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall은 기본, 표준 및 프리미엄의 세 가지 SKU로 배포할 수 있습니다. Azure Firewall 프리미엄은 매우 중요한 애플리케이션(예: 결제 처리)을 보호하는 데 권장됩니다. Azure Firewall 표준은 계층 3–계층 7 방화벽을 찾는 고객에게 권장되며 최대 30Gbps의 최대 트래픽 기간을 처리하기 위해 자동 크기 조정이 필요합니다. Azure Firewall Basic은 처리량이 250Mbps인 SMB 고객에게 권장됩니다. 필요한 경우 여기에 설명된 대로 Standard와 Premium 간에 다운그레이드 또는 업그레이드가 가능합니다. 자세한 내용은 요구 사항에 맞는 올바른 Azure Firewall SKU 선택을 참조하세요.",
+ "guid": "fbcc2c4d-8026-46a9-8fe7-bdb04dbd1f20",
+ "service": "Azure Firewall",
+ "text": "적절한 Azure Firewall SKU를 배포합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "업무 시간 중에만 사용되는 개발 또는 테스트 환경이 있을 수 있습니다. 자세한 내용은 Azure Firewall 할당 취소 및 할당을 참조하세요.",
+ "guid": "4bf5b742-3a86-40a3-abce-a7991e9a0e78",
+ "service": "Azure Firewall",
+ "text": "연중무휴(24x7) 실행할 필요가 없는 Azure Firewall 배포를 중지합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "허브 가상 네트워크 또는 Virtual WAN 보안 허브에서 Azure Firewall의 중앙 인스턴스를 사용하고 동일한 지역의 동일한 허브에 연결된 여러 스포크 가상 네트워크에서 동일한 방화벽을 공유할 수 있습니다. 허브-스포크 토폴로지의 일부로 예기치 않은 지역 간 트래픽이 없는지 확인합니다.",
+ "guid": "4468b60f-0f1d-4af5-98cd-b4f9fc3bd70f",
+ "service": "Azure Firewall",
+ "text": "여러 워크로드 및 Azure Virtual Network에서 동일한 Azure Firewall 인스턴스를 공유합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "상위 흐름 로그(업계에서는 Fat Flows라고 함)는 방화벽을 통해 가장 높은 처리량에 기여하는 상위 연결을 보여 줍니다. Azure Firewall에서 처리한 트래픽을 정기적으로 검토하고 가능한 최적화를 검색하여 방화벽을 통과하는 트래픽의 양을 줄이는 것이 좋습니다.",
+ "guid": "3ec205f3-5201-4a2e-b82b-1c77c9ee139c",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall에서 처리한 트래픽을 정기적으로 검토하고 원래 워크로드 최적화를 찾습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "사용되지 않는 Azure Firewall 배포를 식별하려면 먼저 방화벽의 개인 IP를 가리키는 서브넷과 연결된 모니터링 메트릭 및 UDR을 분석합니다. Azure Firewall 인스턴스에 NAT, 네트워크 및 애플리케이션에 대한 규칙(클래식)이 있는지 또는 DNS 프록시 설정이 사용 안 함으로 구성된 경우와 같은 다른 유효성 검사 및 환경 및 배포에 대한 내부 설명서와 해당 정보를 결합합니다. 시간이 지남에 따라 비용 효율적인 배포를 검색할 수 있습니다. 로그 및 메트릭 모니터링에 대한 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링 및 SNAT 포트 사용률을 참조하세요.",
+ "guid": "514f4dbe-5294-44e1-95c5-923a199ff687",
+ "service": "Azure Firewall",
+ "text": "활용도가 낮은 Azure Firewall 인스턴스를 검토합니다. 사용되지 않는 Azure Firewall 배포를 식별하고 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Firewall Manager 정책, 연결 및 상속을 주의 깊게 검토합니다. 정책은 방화벽 연결을 기준으로 청구됩니다. 방화벽 연결이 0개 또는 1개 있는 정책은 무료입니다. 여러 방화벽 연결이 있는 정책은 고정 요율로 청구됩니다. 자세한 내용은 가격 책정 - Azure Firewall Manager를 참조하세요.",
+ "guid": "90f29560-d536-46bf-a719-f0f95f89105e",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager 및 해당 정책을 사용하여 운영 비용을 줄이고, 효율성을 높이고, 관리 오버헤드를 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "연결된 모든 공용 IP 주소가 사용 중인지 확인합니다. 사용하지 않는 경우 연결을 끊고 삭제하십시오. IP 주소를 제거하기 전에 SNAT 포트 사용률을 평가합니다. 방화벽에 필요한 공용 IP 수만 사용합니다. 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링 및 SNAT 포트 사용률을 참조하세요.",
+ "guid": "e81c61b3-0085-4029-82e3-d55513288f87",
+ "service": "Azure Firewall",
+ "text": "사용하지 않는 공용 IP 주소를 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Firewall은 Event Hubs를 통해 Log Analytics 작업 영역, 스토리지 또는 타사 솔루션에 표시되는 모든 트래픽의 메타데이터를 포괄적으로 기록할 수 있습니다. 그러나 모든 로깅 솔루션에는 데이터 처리 및 저장 비용이 발생합니다. 매우 큰 볼륨에서는 이러한 비용이 상당할 수 있으므로 Log Analytics에 대한 비용 효율적인 접근 방식 및 대안을 고려하고 비용을 예측해야 합니다. 모든 로깅 범주에 대한 트래픽 메타데이터를 기록해야 하는지 여부를 고려하고 필요한 경우 진단 설정에서 수정해야 합니다.",
+ "guid": "a27d979a-c88c-4ce0-9310-9a69eba3460d",
+ "service": "Azure Firewall",
+ "text": "로깅 요구 사항을 검토합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Firewall은 VNet 간, VNet과 온-프레미스 네트워크 간, 인터넷으로의 아웃바운드 트래픽 및 들어오는 비 HTTP/s 트래픽을 제어하는 데 사용해야 합니다. VNet 내 트래픽 제어의 경우 네트워크 보안 그룹을 사용하는 것이 좋습니다.",
+ "guid": "bce7644e-fefe-4d43-94ea-37af4d8743f9",
+ "service": "Azure Firewall",
+ "text": "VNet 내 트래픽 제어에 Azure Firewall을 사용하지 마세요.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "IaC(Infrastructure-as-Code) 접근 방식을 사용하여 Azure Firewall 및 모든 종속성을 유지 관리하는 경우 Azure Firewall 정책의 백업 및 버전 관리가 이미 마련되어 있어야 합니다. 그렇지 않은 경우 외부 Logic App을 기반으로 하는 도우미 메커니즘을 배포하여 자동화하고 효과적인 솔루션을 제공할 수 있습니다.",
+ "guid": "8b0afffb-17aa-4839-b93f-c01d990ad7c6",
+ "service": "Azure Firewall",
+ "text": "Azure Policy 아티팩트의 정기적인 백업을 유지 관리합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그는 Azure Firewall에 대한 많은 모니터링 도구 및 전략의 핵심 구성 요소이며 사용하도록 설정해야 합니다. 방화벽 로그 또는 통합 문서를 사용하여 Azure Firewall을 모니터링할 수 있습니다. Azure Firewall 리소스에 대한 작업을 감사하기 위해 활동 로그를 사용할 수도 있습니다.",
+ "guid": "6d52b11a-0034-4824-84c4-7383182dc4df",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall에 대한 진단 로그를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "구조적 방화벽 로그는 새로운 특정 형식으로 구성된 로그 데이터 유형입니다. 사전 정의된 스키마를 사용하여 쉽게 검색, 필터링 및 분석할 수 있는 방식으로 로그 데이터를 구조화합니다. 최신 모니터링 도구는 이러한 유형의 로그를 기반으로 하므로 필수 구성 요소인 경우가 많습니다. 이전 진단 로그 형식은 필수 구성 요소가 있는 기존 도구가 있는 경우에만 사용합니다. 두 로깅 형식을 동시에 활성화하지 마십시오.",
+ "guid": "99a0621d-2643-4e46-afb0-dd3e5111dedd",
+ "service": "Azure Firewall",
+ "text": "구조적 방화벽 로그 형식을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "이제 Azure Firewall 포털 환경에는 모니터링 섹션 UI 아래에 새 통합 문서가 포함되므로 더 이상 별도의 설치가 필요하지 않습니다. Azure Firewall 통합 문서를 사용하면 Azure Firewall 이벤트에서 중요한 인사이트를 추출하고, 애플리케이션 및 네트워크 규칙을 자세히 살펴보고, URL, 포트 및 주소에서 방화벽 활동과 관련된 통계를 검사할 수 있습니다.",
+ "guid": "8c18d9ea-2440-4125-a0cb-c1cf35c0be70",
+ "service": "Azure Firewall",
+ "text": "기본 제공 Azure Firewall 모니터링 통합 문서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "최소한 처리량, 방화벽 상태, SNAT 포트 사용률 및 AZFW 대기 시간 프로브 메트릭을 모니터링하기 위해 경고를 만들어야 합니다. 로그 및 메트릭 모니터링에 대한 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링을 참조하세요.",
+ "guid": "05877204-1759-4b71-8938-4766b1b24fa7",
+ "service": "Azure Firewall",
+ "text": "주요 메트릭을 모니터링하고 Azure Firewall 용량 사용률 지표에 대한 경고를 만듭니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "이러한 도구를 환경에서 사용할 수 있는 경우 클라우드용 Microsoft Defender 및 Microsoft Sentinel 솔루션과의 통합을 활용하는 것이 좋습니다. 클라우드용 Microsoft Defender 통합을 사용하면 Azure의 여러 지역에 분산된 모든 VNet 및 가상 허브의 Azure 네트워크 보안을 포함하여 네트워크 인프라 및 네트워크 보안의 전체 상태를 한 곳에서 시각화할 수 있습니다. Microsoft Sentinel과 통합하면 위협 탐지 및 방지 기능이 제공됩니다.",
+ "guid": "0dd715ab-c76e-49b9-9616-ccb36ddb293e",
+ "service": "Azure Firewall",
+ "text": "클라우드용 Microsoft Defender 및 Microsoft Sentinel과 Azure Firewall 통합을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "정책 분석은 Azure Firewall 정책의 영향에 대한 인사이트를 제공하는 새로운 기능입니다. 정책에서 잠재적인 문제(정책 제한 적중, 낮은 사용률 규칙, 중복 규칙, 너무 일반적인 규칙, IP 그룹 사용 권장 사항)를 식별하는 데 도움이 되며 보안 상태 및 규칙 처리 성능을 개선하기 위한 권장 사항을 제공합니다.",
+ "guid": "9e1b460f-0d41-40a1-9da7-89cda32f7190",
+ "service": "Azure Firewall",
+ "text": "정책 분석 대시보드를 정기적으로 검토하여 잠재적인 문제를 식별합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Firewall에 대한 샘플 쿼리가 제공됩니다. 이를 통해 방화벽 내부에서 무슨 일이 일어나고 있는지 빠르게 식별하고 어떤 규칙이 트리거되었는지 또는 어떤 규칙이 요청을 허용/차단하는지 확인할 수 있습니다.",
+ "guid": "8f1b00a0-2ba3-4dff-b808-072bbd316a88",
+ "service": "Azure Firewall",
+ "text": "KQL(Kusto 쿼리 언어) 쿼리에 익숙해지면 Azure Firewall 로그를 사용하여 빠르게 분석하고 문제를 해결할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "정책 분석은 Azure Firewall 정책의 영향에 대한 인사이트를 제공하는 새로운 기능입니다. 정책에서 잠재적인 문제(정책 제한 적중, 낮은 사용률 규칙, 중복 규칙, 너무 일반적인 규칙, IP 그룹 사용 권장 사항)를 식별하는 데 도움이 되며 보안 상태 및 규칙 처리 성능을 개선하기 위한 권장 사항을 제공합니다.",
+ "guid": "f3a64299-022d-492e-a095-72965cbb79b8",
+ "service": "Azure Firewall",
+ "text": "정책 분석 대시보드를 사용하여 방화벽 정책에 대한 잠재적 최적화를 식별합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "공용 인터넷 사이트의 긴 목록을 명시적으로 빌드하고 유지 관리하는 대신 Azure Firewall 웹 범주를 사용하는 것이 좋습니다. 이 기능은 웹 콘텐츠를 동적으로 분류하고 컴팩트한 응용 프로그램 규칙을 만들 수 있도록 합니다.",
+ "guid": "53e42e9b-6d25-4116-87ca-6c97252e1cd6",
+ "service": "Azure Firewall",
+ "text": "Web Categories를 사용하여 아웃바운드 액세스를 대량으로 허용하거나 거부하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall이 IDPS 모드 경고 및 거부에서 작동해야 하는 경우 이 페이지에 설명된 대로 성능 영향을 신중하게 고려합니다.",
+ "guid": "4afedb20-a63a-4c17-907d-d8afc5cd1b43",
+ "service": "Azure Firewall",
+ "text": "경고 및 거부 모드에서 IDPS의 성능 영향을 평가합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 현재 백 엔드 Virtual Machine Scale Set 인스턴스당 공용 IP 주소당 2496개의 포트를 지원합니다. 기본적으로 두 개의 Virtual Machine Scale Set 인스턴스가 있습니다. 따라서 흐름 대상 IP, 대상 포트 및 프로토콜(TCP 또는 UDP)당 4992개의 포트가 있습니다. 방화벽은 최대 20개의 인스턴스까지 확장됩니다. SNAT 고갈에 취약한 배포에 대해 최소 5개의 공용 IP 주소로 Azure Firewall 배포를 구성하여 제한을 해결할 수 있습니다.",
+ "guid": "cdb16c9c-fe4e-41d6-bc0c-8519a606d37b",
+ "service": "Azure Firewall",
+ "text": "잠재적인 SNAT 포트 소모 문제를 평가합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "테스트 20분 전에 부하 테스트에 포함되지 않는 초기 트래픽을 만듭니다. 진단 설정을 사용하여 스케일 업 및 스케일 다운 이벤트를 캡처합니다. Azure Load Testing 서비스를 사용하여 초기 트래픽을 생성할 수 있습니다. Azure Firewall 인스턴스가 인스턴스를 최대로 확장할 수 있습니다.",
+ "guid": "1859fa28-775d-433f-b189-6b250e51b441",
+ "service": "Azure Firewall",
+ "text": "성능 테스트 전에 Azure Firewall을 적절하게 워밍업합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 가상 네트워크의 전용 배포입니다. 가상 네트워크 내에서 Azure Firewall 인스턴스에 전용 서브넷이 필요합니다. Azure Firewall은 크기가 조정됨에 따라 더 많은 용량을 프로비전합니다. 서브넷에 대한 /26 주소 공간은 방화벽에 크기 조정을 수용할 수 있는 충분한 IP 주소가 있는지 확인합니다. Azure Firewall에는 /26보다 큰 서브넷이 필요하지 않습니다. Azure Firewall 서브넷 이름은 AzureFirewallSubnet이어야 합니다.",
+ "guid": "272b1122-494d-4baa-a328-928a89ebb0ad",
+ "service": "Azure Firewall",
+ "text": "/26 주소 공간을 사용하여 Azure Firewall 서브넷(AzureFirewallSubnet)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 항상 활성 상태를 유지하는 데 비용이 많이 들 수 있는 몇 가지 고급 로깅 기능을 제공합니다. 대신 문제 해결 목적으로만 사용해야 하며 기간을 제한한 다음 더 이상 필요하지 않을 때 비활성화해야 합니다. 예를 들어 상위 흐름 및 흐름 추적 로그가 비싸면 Azure Firewall 인프라에서 과도한 CPU 및 스토리지 사용량이 발생할 수 있습니다.",
+ "guid": "2b20c2ea-e6fd-4570-b86f-b20bfb695c6f",
+ "service": "Azure Firewall",
+ "text": "필요하지 않은 경우 고급 로깅을 사용하도록 설정하지 마십시오.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Firewall Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.pt.json b/checklists-ext/azurefirewall_sg_checklist.pt.json
new file mode 100644
index 000000000..4259a5c7f
--- /dev/null
+++ b/checklists-ext/azurefirewall_sg_checklist.pt.json
@@ -0,0 +1,442 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Crie facilmente arquiteturas hub-and-spoke e transitivas com serviços de segurança nativos para governança e proteção de tráfego. Para obter mais informações sobre topologias de rede, consulte a documentação do Azure Cloud Adoption Framework.",
+ "guid": "833670b0-5f05-4810-96be-dd79df30775d",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure com topologias de rede tradicionais de Hub & Spokes ou WAN Virtual do Azure para implantar e gerenciar instâncias do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As Políticas de Firewall do Azure podem ser organizadas em uma estrutura hierárquica para sobrepor uma política de base central. Permita políticas granulares para atender aos requisitos de regiões específicas. Delegue políticas de firewall incrementais às equipes de segurança locais por meio do RBAC (controle de acesso baseado em função). Algumas configurações são específicas por instância, por exemplo, regras DNAT e configuração de DNS, então várias políticas especializadas podem ser necessárias.",
+ "guid": "5b0404e7-a3be-4103-aff9-903f9fe447d2",
+ "service": "Azure Firewall",
+ "text": "Crie políticas de firewall do Azure para controlar a postura de segurança em ambientes de rede globais. Atribua políticas a todas as instâncias do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para implantações existentes, migre as regras do Firewall do Azure para as políticas do Gerenciador de Firewall do Azure. Use o Gerenciador de Firewall do Azure para gerenciar centralmente seus firewalls e políticas. Para obter mais informações, consulte Migrar para o Firewall do Azure Premium.",
+ "guid": "182b6ed7-94f3-434c-be79-ce6a93d6560c",
+ "service": "Azure Firewall",
+ "text": "Migre as Regras Clássicas do Firewall do Azure para as Políticas do Gerenciador de Firewall do Azure para implantações existentes.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O Grupo de Produtos do Firewall do Azure mantém uma lista atualizada de problemas conhecidos neste local. Esta lista contém informações importantes relacionadas ao comportamento por design, correções em construção, limitações da plataforma, juntamente com possíveis soluções alternativas ou mitigação.",
+ "guid": "d34dc09b-f98f-47d4-92b7-79f77b9a755d",
+ "service": "Azure Firewall",
+ "text": "Examine a lista de Problemas Conhecidos do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Há limites na estrutura da política, incluindo números de regras e grupos de coleta de regras, tamanho total da política, destinos de origem/destino. Certifique-se de redigir sua política e ficar atrás dos limites documentados.",
+ "guid": "86b20eea-4ed0-4f79-adf4-4ff5f7edc227",
+ "service": "Azure Firewall",
+ "text": "Verifique se a Política de Firewall do Azure está de acordo com os limites e recomendações do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O Firewall do Azure fornece SLAs diferentes quando é implantado em uma única zona de disponibilidade e quando é implantado em várias zonas. Para obter mais informações, consulte SLA para Firewall do Azure. Para obter informações sobre todos os SLAs do Azure, consulte Resumo de SLA para serviços do Azure.",
+ "guid": "7f303799-88af-49d0-ae85-73ce4bf33f76",
+ "service": "Azure Firewall",
+ "text": "Implante o Firewall do Azure em várias zonas de disponibilidade para obter um SLA (contrato de nível de serviço) mais alto.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para arquiteturas tradicionais de Hub & Spokes, os detalhes de várias regiões são explicados neste artigo. Para hubs virtuais protegidos (WAN Virtual do Azure), a Intenção e as Políticas de Roteamento devem ser configuradas para proteger as comunicações entre hubs e branch a branch. Para cargas de trabalho projetadas para serem resistentes a falhas e tolerantes a falhas, lembre-se de considerar essas instâncias do Firewall do Azure e da Rede Virtual do Azure como recursos regionais.",
+ "guid": "69dcdc93-55e9-454e-9128-b9996b089e2c",
+ "service": "Azure Firewall",
+ "text": "Em ambientes de várias regiões, implante uma instância do Firewall do Azure por região.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Monitore de perto o indicador de métricas principais do estado de integridade do Firewall do Azure, como taxa de transferência, estado de integridade do firewall, utilização da porta SNAT e métricas de investigação de latência do AZFW. Além disso, o Firewall do Azure agora se integra ao Azure Resource Health. Com a verificação de Integridade do Recurso do Firewall do Azure, agora você pode exibir o status de integridade do Firewall do Azure e resolver problemas de serviço que podem afetar o recurso do Firewall do Azure.",
+ "guid": "dbadd7db-ba2d-4b33-bf38-3251fe3fb6fb",
+ "service": "Azure Firewall",
+ "text": "Monitore as métricas do Firewall do Azure e o estado do Resource Health.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O Firewall do Azure deve ter conectividade direta com a Internet. Se o AzureFirewallSubnet aprender uma rota padrão para sua rede local por meio do Protocolo de Gateway de Borda, você deverá configurar o Firewall do Azure no modo de túnel forçado. Usando o recurso de túnel forçado, você precisará de outro espaço de endereço /26 para a sub-rede de Gerenciamento do Firewall do Azure. Se essa for uma instância existente do Firewall do Azure que não pode ser reconfigurada no modo de túnel forçado, crie uma UDR com uma rota 0.0.0.0/0. Defina o valor NextHopType como Internet. Associe-o a AzureFirewallSubnet para manter a conectividade com a Internet.",
+ "guid": "55277728-2747-486c-be69-3428291856a4",
+ "service": "Azure Firewall",
+ "text": "Se necessário rotear todo o tráfego vinculado à Internet para um próximo salto designado em vez de ir diretamente para a Internet, configure o Firewall do Azure no modo de túnel forçado (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao implantar uma nova instância do Firewall do Azure, se você habilitar o modo de túnel forçado, poderá definir o endereço IP público como Nenhum para implantar um plano de dados totalmente privado. No entanto, o plano de gerenciamento ainda requer um IP público apenas para fins de gerenciamento. O tráfego interno de redes virtuais e locais não usará esse IP público. Para obter mais informações sobre o túnel forçado, consulte Túnel forçado do Firewall do Azure.",
+ "guid": "7d9cd1f0-0f59-452e-be83-de6b49710ddc",
+ "service": "Azure Firewall",
+ "text": "Defina o endereço IP público como Nenhum para implantar um plano de dados totalmente privado ao configurar o Firewall do Azure no modo de túnel forçado (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As Políticas de Firewall do Azure podem ser organizadas em uma estrutura hierárquica para sobrepor uma política de base central. Permita políticas granulares para atender aos requisitos de regiões específicas. Cada política pode conter diferentes conjuntos de regras de DNAT, Rede e Aplicativo com prioridade, ação e ordem de processamento específicas. Crie suas regras com base no princípio Zero Trust de acesso com privilégios mínimos. Como as regras são processadas é explicado neste artigo.",
+ "guid": "c7600ea8-eb60-4eb1-9aee-c874efef69b7",
+ "service": "Azure Firewall",
+ "text": "Crie regras para políticas de firewall com base em critérios de acesso com privilégios mínimos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O IDPS é um dos recursos de segurança mais poderosos do Firewall do Azure (Premium) e deve ser habilitado. Com base nos requisitos de segurança e do aplicativo, e considerando o impacto no desempenho (consulte a seção Custo abaixo), os modos Alerta ou Alerta e negação podem ser selecionados.",
+ "guid": "d8fc2b4d-a183-4949-82ff-c6130a9d87dc",
+ "service": "Azure Firewall",
+ "text": "Habilite o IDPS no modo Alerta ou Alerta e negação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Habilitar esse recurso aponta clientes nas VNets para o Firewall do Azure como um servidor DNS. Ele protegerá a infraestrutura DNS interna que não será acessada e exposta diretamente. O Firewall do Azure também deve ser configurado para usar o DNS personalizado que será usado para encaminhar consultas DNS.",
+ "guid": "9fa0a48c-c3cb-4fc2-a02b-1182a047e076",
+ "service": "Azure Firewall",
+ "text": "Habilite a configuração de proxy do DNS (Firewall do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Em uma arquitetura Hub e Spokes tradicional, configure UDRs para forçar o tráfego por meio do Firewall do Azure para conectividade 'SpoketoSpoke', 'SpoketoInternet' e 'SpoketoHybrid'. Na WAN Virtual do Azure, em vez disso, configure a Intenção de Roteamento e as Políticas para redirecionar o tráfego privado e/ou da Internet por meio da instância do Firewall do Azure integrada ao hub.",
+ "guid": "a3f23112-5986-4fd2-9d64-edfb0363c08c",
+ "service": "Azure Firewall",
+ "text": "Configure UDR (rotas definidas pelo usuário) para forçar o tráfego por meio do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o recurso de proxy explícito habilitado no caminho de saída, você pode definir uma configuração de proxy no aplicativo Web de envio (como um navegador da Web) com o Firewall do Azure configurado como o proxy. Como resultado, o tráfego da Web alcançará o endereço IP privado do firewall e, portanto, sairá diretamente do firewall sem usar uma UDR. Esse recurso também facilita o uso de vários firewalls sem modificar as rotas de rede existentes.",
+ "guid": "f62b7e3d-b86d-4f84-888d-ec7f97b34e96",
+ "service": "Azure Firewall",
+ "text": "Se não for possível aplicar a UDR e apenas o redirecionamento de tráfego da Web for necessário, considere usar o Firewall do Azure como um Proxy Explícito",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode usar suas ofertas conhecidas e de terceiros SECaaS para proteger o acesso à Internet para seus usuários. Esse cenário requer a WAN Virtual do Azure com um Gateway de VPN S2S no Hub, pois ele usa um túnel IPSec para se conectar à infraestrutura do provedor. Os provedores de SECaaS podem cobrar taxas de licença adicionais e limitar a taxa de transferência em conexões IPSec. Soluções alternativas, como o ZScaler Cloud Connector, existem e podem ser mais adequadas.",
+ "guid": "1f1a4239-f908-4fb5-aff5-7d716d9227a1",
+ "service": "Azure Firewall",
+ "text": "Configure provedores de segurança de software como serviço (SaaS) de terceiros com suporte no Firewall Manager se quiser usar essas soluções para proteger conexões de saída.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode usar o FQDN com base na resolução DNS no Firewall do Azure e nas políticas de firewall. Esse recurso permite filtrar o tráfego de saída com qualquer protocolo TCP/UDP (incluindo NTP, SSH, RDP e muito mais). Você deve habilitar a configuração de Proxy DNS do Firewall do Azure para usar FQDNs em suas regras de rede. Para saber como funciona, confira Filtragem de FQDN do Firewall do Azure em regras de rede.",
+ "guid": "cac3a2cc-688b-42c3-bfb5-e2b55270b8a0",
+ "service": "Azure Firewall",
+ "text": "Use a filtragem de FQDN (Nome de Domínio Totalmente Qualificado) em regras de rede.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Uma marca de serviço representa um grupo de prefixos de endereço IP para ajudar a minimizar a complexidade da criação de regras de segurança. Usando marcas de serviço em regras de rede, é possível habilitar o acesso de saída a serviços específicos no Azure, Dynamics e Office 365 sem abrir grandes intervalos de endereços IP. O Azure manterá automaticamente o mapeamento entre essas marcas e os endereços IP subjacentes usados por cada serviço. A lista de marcas de serviço disponíveis para o Firewall do Azure está listada aqui: Marcas de serviço do Firewall Az.",
+ "guid": "8e718b0b-3ae5-4a85-9e5e-7f12ac48ace8",
+ "service": "Azure Firewall",
+ "text": "Use marcas de serviço em regras de rede para habilitar o acesso seletivo a serviços específicos da Microsoft.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Uma marca FQDN representa um grupo de FQDNs (nomes de domínio totalmente qualificados) associados a serviços conhecidos da Microsoft. Você pode usar uma marca FQDN em regras de aplicativo para permitir o tráfego de rede de saída necessário por meio do firewall para alguns serviços específicos do Azure, Office 365, Windows 365 e Intune.",
+ "guid": "66db2147-74f7-4b4a-af65-a946369ae551",
+ "service": "Azure Firewall",
+ "text": "Use marcas FQDN em regras de aplicativo para habilitar o acesso seletivo a serviços específicos da Microsoft.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Um plano de proteção contra DDoS fornece recursos aprimorados de mitigação para defender seu firewall contra ataques DDoS. O Gerenciador de Firewall do Azure é uma ferramenta integrada para criar sua infraestrutura de firewall e planos de proteção contra DDoS. Para obter mais informações, consulte Configurar um Plano de Proteção contra DDoS do Azure usando o Gerenciador de Firewall do Azure.",
+ "guid": "0c87e550-0780-401e-9208-5464b378a8e7",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure para criar e associar um plano de proteção contra DDoS à sua rede virtual do hub (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o Firewall do Azure Premium, se o recurso de Inspeção TLS for usado, é recomendável aproveitar uma AC (Autoridade de Certificação) Corporativa interna para o ambiente de produção. Os certificados autoassinados devem ser usados apenas para fins de teste/PoC.",
+ "guid": "821132d4-1ba9-4709-9eb3-5906871b1721",
+ "service": "Azure Firewall",
+ "text": "Use uma PKI corporativa para gerar certificados para inspeção TLS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Se seus requisitos de segurança exigirem a implementação de uma abordagem Zero-Trust para aplicativos Web (inspeção e criptografia), é recomendável seguir este guia. Neste documento, será explicado como integrar o Firewall do Azure e o Gateway de Aplicativo, em cenários tradicionais de Hub & Spoke e WAN Virtual.",
+ "guid": "0ecf166e-e415-45bf-bece-87a32e76b096",
+ "service": "Azure Firewall",
+ "text": "Examine o guia de configuração de Confiança Zero para o Firewall do Azure e o Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Firewall do Azure pode ser implantado em três SKUs diferentes: Básico, Standard e Premium. O Firewall do Azure Premium é recomendado para proteger aplicativos altamente confidenciais (como processamento de pagamentos). O Firewall do Azure Standard é recomendado para clientes que procuram firewall de Camada 3 a Camada 7 e precisa de dimensionamento automático para lidar com períodos de pico de tráfego de até 30 Gbps. O Firewall do Azure Basic é recomendado para clientes SMB com necessidades de taxa de transferência de 250 Mbps. Se necessário, é possível fazer downgrade ou upgrade entre Standard e Premium, conforme documentado aqui. Para obter mais informações, consulte Escolher o SKU do Firewall do Azure certo para atender às suas necessidades.",
+ "guid": "fbcc2c4d-8026-46a9-8fe7-bdb04dbd1f20",
+ "service": "Azure Firewall",
+ "text": "Implante o SKU do Firewall do Azure adequado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode ter ambientes de desenvolvimento ou teste que são usados apenas durante o horário comercial. Para obter mais informações, consulte Desalocar e alocar o Firewall do Azure.",
+ "guid": "4bf5b742-3a86-40a3-abce-a7991e9a0e78",
+ "service": "Azure Firewall",
+ "text": "Interrompa as implantações do Firewall do Azure que não precisam ser executadas 24 horas por dia, 7 dias por semana.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode usar uma instância central do Firewall do Azure na rede virtual do hub ou no hub seguro da WAN Virtual e compartilhar o mesmo firewall em várias redes virtuais spoke conectadas ao mesmo hub da mesma região. Verifique se não há tráfego inesperado entre regiões como parte da topologia hub-spoke.",
+ "guid": "4468b60f-0f1d-4af5-98cd-b4f9fc3bd70f",
+ "service": "Azure Firewall",
+ "text": "Compartilhe a mesma instância do Firewall do Azure em várias cargas de trabalho e Redes Virtuais do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O log Top Flows (conhecido no setor como Fat Flows) mostra as principais conexões que estão contribuindo para a maior taxa de transferência por meio do firewall. É recomendável examinar regularmente o tráfego processado pelo Firewall do Azure e pesquisar possíveis otimizações para reduzir a quantidade de tráfego que atravessa o firewall.",
+ "guid": "3ec205f3-5201-4a2e-b82b-1c77c9ee139c",
+ "service": "Azure Firewall",
+ "text": "Examine regularmente o tráfego processado pelo Firewall do Azure e procure otimizações de carga de trabalho de origem",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Para identificar implantações de Firewall do Azure não utilizadas, comece analisando as métricas de monitoramento e UDRs associadas a sub-redes que apontam para o IP privado do firewall. Combine essas informações com outras validações, como se sua instância do Firewall do Azure tiver regras (clássicas) para NAT, Rede e Aplicativo, ou mesmo se a configuração de Proxy DNS estiver definida como Desabilitada e com documentação interna sobre seu ambiente e implantações. Você pode detectar implantações econômicas ao longo do tempo. Para obter mais informações sobre como monitorar logs e métricas, consulte Monitorar logs e métricas do Firewall do Azure e utilização da porta SNAT.",
+ "guid": "514f4dbe-5294-44e1-95c5-923a199ff687",
+ "service": "Azure Firewall",
+ "text": "Examine as instâncias subutilizadas do Firewall do Azure. Identifique e exclua implantações de Firewall do Azure não utilizadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Revise cuidadosamente as políticas, associações e herança do Firewall Manager. As políticas são cobradas com base em associações de firewall. Uma política com zero ou uma associação de firewall é gratuita. Uma política com várias associações de firewall é cobrada a uma taxa fixa. Para obter mais informações, consulte Preços – Gerenciador de Firewall do Azure.",
+ "guid": "90f29560-d536-46bf-a719-f0f95f89105e",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure e suas políticas para reduzir os custos operacionais, aumentar a eficiência e reduzir a sobrecarga de gerenciamento.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Valide se todos os endereços IP públicos associados estão em uso. Se eles não estiverem em uso, desassocie-os e exclua-os. Avalie a utilização da porta SNAT antes de remover qualquer endereço IP. Você usará apenas o número de IPs públicos de que seu firewall precisa. Para obter mais informações, consulte Monitorar logs e métricas do Firewall do Azure e utilização da porta SNAT.",
+ "guid": "e81c61b3-0085-4029-82e3-d55513288f87",
+ "service": "Azure Firewall",
+ "text": "Exclua endereços IP públicos não utilizados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Firewall do Azure tem a capacidade de registrar metadados de forma abrangente de todo o tráfego que vê, para Workspaces do Log Analytics, Armazenamento ou soluções de terceiros por meio de Hubs de Eventos. No entanto, todas as soluções de registro incorrem em custos de processamento e armazenamento de dados. Em volumes muito grandes, esses custos podem ser significativos, uma abordagem econômica e uma alternativa ao Log Analytics devem ser consideradas e o custo estimado. Considere se é necessário registrar metadados de tráfego para todas as categorias de log e modificá-los em Configurações de Diagnóstico, se necessário.",
+ "guid": "a27d979a-c88c-4ce0-9310-9a69eba3460d",
+ "service": "Azure Firewall",
+ "text": "Revise os requisitos de registro.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Firewall do Azure deve ser usado para controlar o tráfego entre VNets, entre VNets e redes locais, o tráfego de saída para a Internet e o tráfego não HTTP/s de entrada. Para o controle de tráfego intra-VNet, é recomendável usar Grupos de Segurança de Rede.",
+ "guid": "bce7644e-fefe-4d43-94ea-37af4d8743f9",
+ "service": "Azure Firewall",
+ "text": "Não use o Firewall do Azure para controle de tráfego intra-VNet.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Se a abordagem de IaC (infraestrutura como código) for usada para manter o Firewall do Azure e todas as dependências, o backup e o controle de versão das Políticas de Firewall do Azure já deverão estar em vigor. Caso contrário, um mecanismo complementar baseado no Aplicativo Lógico externo poderá ser implantado para automatizar e fornecer uma solução eficaz.",
+ "guid": "8b0afffb-17aa-4839-b93f-c01d990ad7c6",
+ "service": "Azure Firewall",
+ "text": "Mantenha backups regulares de artefatos do Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os Logs de Diagnóstico são um componente chave para muitas ferramentas e estratégias de monitoramento do Firewall do Azure e devem ser habilitados. Você pode monitorar o Firewall do Azure usando logs de firewall ou pastas de trabalho. Você também pode usar logs de atividades para auditar operações em recursos do Firewall do Azure.",
+ "guid": "6d52b11a-0034-4824-84c4-7383182dc4df",
+ "service": "Azure Firewall",
+ "text": "Habilite os Logs de Diagnóstico para o Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de firewall estruturados são um tipo de dados de log organizados em um novo formato específico. Eles usam um esquema predefinido para estruturar os dados de log de uma forma que facilite a pesquisa, a filtragem e a análise. As ferramentas de monitoramento mais recentes são baseadas nesse tipo de log, portanto, geralmente é um pré-requisito. Use o formato anterior de Logs de Diagnóstico somente se houver uma ferramenta existente com um pré-requisito para isso. Não habilite os dois formatos de log ao mesmo tempo.",
+ "guid": "99a0621d-2643-4e46-afb0-dd3e5111dedd",
+ "service": "Azure Firewall",
+ "text": "Use o formato Structured Firewall Logs.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A experiência do portal do Firewall do Azure agora inclui uma nova pasta de trabalho na interface do usuário da seção Monitoramento, uma instalação separada não é mais necessária. Com a pasta de trabalho do Firewall do Azure, você pode extrair insights valiosos de eventos do Firewall do Azure, aprofundar suas regras de aplicativo e rede e examinar estatísticas sobre atividades de firewall em URLs, portas e endereços.",
+ "guid": "8c18d9ea-2440-4125-a0cb-c1cf35c0be70",
+ "service": "Azure Firewall",
+ "text": "Use a pasta de trabalho interna de monitoramento do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os alertas devem ser criados para monitorar pelo menos a taxa de transferência, o estado de integridade do firewall, a utilização da porta SNAT e as métricas de investigação de latência do AZFW. Para obter informações sobre como monitorar logs e métricas, consulte Monitorar logs e métricas do Firewall do Azure.",
+ "guid": "05877204-1759-4b71-8938-4766b1b24fa7",
+ "service": "Azure Firewall",
+ "text": "Monitore as principais métricas e crie alertas para indicadores da utilização da capacidade do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Se essas ferramentas estiverem disponíveis no ambiente, é recomendável aproveitar a integração com as soluções Microsoft Defender para Nuvem e Microsoft Sentinel. Com a integração do Microsoft Defender para Nuvem, você pode visualizar o status total da infraestrutura de rede e da segurança de rede em um só lugar, incluindo a Segurança de Rede do Azure em todas as VNets e Hubs Virtuais espalhados por diferentes regiões no Azure. A integração com o Microsoft Sentinel fornece recursos de detecção e prevenção de ameaças.",
+ "guid": "0dd715ab-c76e-49b9-9616-ccb36ddb293e",
+ "service": "Azure Firewall",
+ "text": "Configure a integração do Firewall do Azure com o Microsoft Defender para Nuvem e o Microsoft Sentinel.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A Análise de Política é um novo recurso que fornece insights sobre o impacto de suas políticas de Firewall do Azure. Ele ajuda você a identificar possíveis problemas (atingir limites de política, regras de baixa utilização, regras redundantes, regras muito genéricas, recomendação de uso de grupos de IP) em suas políticas e fornece recomendações para melhorar sua postura de segurança e desempenho de processamento de regras.",
+ "guid": "9e1b460f-0d41-40a1-9da7-89cda32f7190",
+ "service": "Azure Firewall",
+ "text": "Revise regularmente o painel de análise de políticas para identificar possíveis problemas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Consultas de exemplo são fornecidas para o Firewall do Azure. Isso permitirá que você identifique rapidamente o que está acontecendo dentro do seu firewall e verifique qual regra foi acionada ou qual regra está permitindo / bloqueando uma solicitação.",
+ "guid": "8f1b00a0-2ba3-4dff-b808-072bbd316a88",
+ "service": "Azure Firewall",
+ "text": "Familiarize-se com as consultas KQL (Kusto Query Language) para permitir uma análise rápida e a solução de problemas usando os logs do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A Análise de Política é um novo recurso que fornece insights sobre o impacto de suas políticas de Firewall do Azure. Ele ajuda você a identificar possíveis problemas (atingir limites de política, regras de baixa utilização, regras redundantes, regras muito genéricas, recomendação de uso de grupos de IP) em suas políticas e fornece recomendações para melhorar sua postura de segurança e desempenho de processamento de regras.",
+ "guid": "f3a64299-022d-492e-a095-72965cbb79b8",
+ "service": "Azure Firewall",
+ "text": "Use o painel Análise de Política para identificar possíveis otimizações para Políticas de Firewall.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Em vez de criar e manter explicitamente uma longa lista de sites públicos da Internet, considere o uso de Categorias da Web do Firewall do Azure. Esse recurso categorizará dinamicamente o conteúdo da Web e permitirá a criação de Regras de Aplicativo compactas.",
+ "guid": "53e42e9b-6d25-4116-87ca-6c97252e1cd6",
+ "service": "Azure Firewall",
+ "text": "Considere as categorias da Web para permitir ou negar o acesso de saída em massa.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se o Firewall do Azure precisar operar no modo IDPS Alertar e negar, considere cuidadosamente o impacto no desempenho, conforme documentado nesta página.",
+ "guid": "4afedb20-a63a-4c17-907d-d8afc5cd1b43",
+ "service": "Azure Firewall",
+ "text": "Avalie o impacto no desempenho do IDPS no modo de alerta e negação.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualmente, o Firewall do Azure dá suporte a 2496 portas por endereço IP público por instância do Conjunto de Dimensionamento de Máquinas Virtuais de back-end. Por padrão, há duas instâncias do Conjunto de Dimensionamento de Máquinas Virtuais. Portanto, existem 4992 portas por IP de destino de fluxo, porta de destino e protocolo (TCP ou UDP). O firewall pode ser dimensionado até um máximo de 20 instâncias. Você pode contornar os limites configurando implantações do Firewall do Azure com um mínimo de cinco endereços IP públicos para implantações suscetíveis ao esgotamento de SNAT.",
+ "guid": "cdb16c9c-fe4e-41d6-bc0c-8519a606d37b",
+ "service": "Azure Firewall",
+ "text": "Avalie o possível problema de esgotamento da porta SNAT.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Crie tráfego inicial que não faça parte de seus testes de carga 20 minutos antes do teste. Use as configurações de diagnóstico para capturar eventos de expansão e redução. Você pode usar o serviço de Teste de Carga do Azure para gerar o tráfego inicial. Permite que a instância do Firewall do Azure escale verticalmente suas instâncias ao máximo.",
+ "guid": "1859fa28-775d-433f-b189-6b250e51b441",
+ "service": "Azure Firewall",
+ "text": "Aqueça corretamente o Firewall do Azure antes de qualquer teste de desempenho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Firewall do Azure é uma implantação dedicada em sua rede virtual. Em sua rede virtual, uma sub-rede dedicada é necessária para a instância do Firewall do Azure. O Firewall do Azure provisiona mais capacidade à medida que é dimensionado. Um espaço de endereço /26 para suas sub-redes garante que o firewall tenha endereços IP suficientes disponíveis para acomodar o dimensionamento. O Firewall do Azure não precisa de uma sub-rede maior que /26. O nome da sub-rede do Firewall do Azure deve ser AzureFirewallSubnet.",
+ "guid": "272b1122-494d-4baa-a328-928a89ebb0ad",
+ "service": "Azure Firewall",
+ "text": "Configure uma sub-rede do Firewall do Azure (AzureFirewallSubnet) com um espaço de endereço /26.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Firewall do Azure fornece alguns recursos avançados de log que podem ser caros para manter sempre ativos. Em vez disso, eles devem ser usados apenas para fins de solução de problemas e limitados em duração e, em seguida, desativados quando não forem mais necessários. Por exemplo, os principais fluxos e os logs de rastreamento de fluxo são caros podem causar uso excessivo de CPU e armazenamento na infraestrutura do Firewall do Azure.",
+ "guid": "2b20c2ea-e6fd-4570-b86f-b20bfb695c6f",
+ "service": "Azure Firewall",
+ "text": "Não habilite o registro avançado se não for necessário",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Firewall Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefirewall_sg_checklist.zh-Hant.json b/checklists-ext/azurefirewall_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..9f7966403
--- /dev/null
+++ b/checklists-ext/azurefirewall_sg_checklist.zh-Hant.json
@@ -0,0 +1,442 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "使用用於流量治理和保護的原生安全服務輕鬆創建中心輻射型和可傳遞架構。 有關網路拓撲的詳細資訊,請參閱 Azure 雲採用框架文檔。",
+ "guid": "833670b0-5f05-4810-96be-dd79df30775d",
+ "service": "Azure Firewall",
+ "text": "將 Azure 防火牆管理器與傳統的 Hub & Spokes 或 Azure 虛擬 WAN 網路拓撲結合使用,以部署和管理 Azure 防火牆的實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "Azure 防火牆策略可以按層次結構進行排列,以覆蓋中央基本策略。允許使用精細的策略來滿足特定區域的要求。通過基於角色的訪問控制 (RBAC) 將增量防火牆策略委派給本地安全團隊。某些設置是特定於每個實例的,例如 DNAT 規則和 DNS 配置,然後可能需要多個專用策略。",
+ "guid": "5b0404e7-a3be-4103-aff9-903f9fe447d2",
+ "service": "Azure Firewall",
+ "text": "創建 Azure 防火牆策略以管理全球網路環境中的安全狀況。將策略分配給 Azure 防火牆的所有實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "對於現有部署,請將 Azure 防火牆規則遷移到 Azure 防火牆管理器策略。使用 Azure 防火牆管理器集中管理防火牆和策略。 有關詳細資訊,請參閱遷移到 Azure 防火牆高級版。",
+ "guid": "182b6ed7-94f3-434c-be79-ce6a93d6560c",
+ "service": "Azure Firewall",
+ "text": "將 Azure 防火牆經典規則遷移到現有部署的 Azure 防火牆管理器策略。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "Azure 防火牆產品組在此位置維護已知問題的更新清單。此清單包含與按設計行為、正在構建的修復、平臺限制以及可能的解決方法或緩解措施相關的重要資訊。",
+ "guid": "d34dc09b-f98f-47d4-92b7-79f77b9a755d",
+ "service": "Azure Firewall",
+ "text": "查看 Azure 防火牆已知問題清單。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "策略結構存在限制,包括規則和規則集合組的數量、策略總大小、源/目標目標。請務必撰寫您的政策,並保持在記錄的閾值之後。",
+ "guid": "86b20eea-4ed0-4f79-adf4-4ff5f7edc227",
+ "service": "Azure Firewall",
+ "text": "確保 Azure 防火牆策略遵守 Azure 防火牆限制和建議。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當 Azure 防火牆部署在單個可用性區域中時,以及當它部署在多個區域中時,它會提供不同的 SLA。有關詳細資訊,請參閱 Azure 防火牆的 SLA。有關所有 Azure SLA 的資訊,請參閱 Azure 服務的 SLA 摘要。",
+ "guid": "7f303799-88af-49d0-ae85-73ce4bf33f76",
+ "service": "Azure Firewall",
+ "text": "跨多個可用性區域部署 Azure 防火牆,以實現更高的服務級別協定 (SLA)。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "對於傳統的 Hub & Spokes 體系結構,本文將介紹多區域詳細資訊。對於受保護的虛擬中心 (Azure 虛擬 WAN) ,必須配置路由意向和策略,以保護中心間和分支到分支的通信。對於設計為具有抗故障和容錯能力的工作負載,請記住將 Azure 防火牆和 Azure 虛擬網路的實例視為區域資源。",
+ "guid": "69dcdc93-55e9-454e-9128-b9996b089e2c",
+ "service": "Azure Firewall",
+ "text": "在多區域環境中,為每個區域部署一個 Azure 防火牆實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "密切監視 Azure 防火牆運行狀況的關鍵指標指示器,例如輸送量、防火牆運行狀況、SNAT 埠利用率和 AZFW 延遲探測指標。此外,Azure 防火牆現在與 Azure 資源運行狀況集成。通過 Azure 防火牆資源運行狀況檢查,現在可以查看 Azure 防火牆的運行狀況,並解決可能影響 Azure 防火牆資源的服務問題。",
+ "guid": "dbadd7db-ba2d-4b33-bf38-3251fe3fb6fb",
+ "service": "Azure Firewall",
+ "text": "監視 Azure 防火牆指標和資源運行狀況狀態。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "Azure 防火牆必須具有直接的 Internet 連接。如果 AzureFirewallSubnet 透過邊界閘道協定獲知到本地網路的預設路由,則必須在強制隧道模式下配置 Azure 防火牆。使用強制隧道功能時,需要另一個 /26 位址空間用於 Azure 防火牆管理子網。如果這是無法在強制隧道模式下重新配置的現有 Azure 防火牆實例,則需要將其命名為 AzureFirewallManagementSubnet,請創建具有 0.0.0.0/0 路由的 UDR。將 NextHopType 值設置為 Internet。將其與 AzureFirewallSubnet 關聯以維護 Internet 連接。",
+ "guid": "55277728-2747-486c-be69-3428291856a4",
+ "service": "Azure Firewall",
+ "text": "如果需要將所有 Internet 綁定流量路由到指定的下一躍點,而不是直接路由到 Internet,請在強制隧道模式下配置 Azure 防火牆(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "部署新的 Azure 防火牆實例時,如果啟用強制隧道模式,則可以將公共 IP 位址設置為“無”以部署完全專用的數據平面。但是,管理平面仍然需要公共IP僅用於管理目的。來自虛擬網路和本地網路的內部流量不會使用該公共IP。有關強制隧道的詳細資訊,請參閱 Azure 防火牆強制隧道。",
+ "guid": "7d9cd1f0-0f59-452e-be83-de6b49710ddc",
+ "service": "Azure Firewall",
+ "text": "在強制隧道模式下配置 Azure 防火牆時,將公共IP位址設置為“無”,以部署完全專用的數據平面(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 防火牆策略可以按層次結構進行排列,以覆蓋中央基本策略。允許使用精細的策略來滿足特定區域的要求。每個策略可以包含不同的 DNAT、網路和應用程式規則集,這些規則具有特定的優先順序、操作和處理順序。根據最低許可權訪問零信任原則創建規則。本文介紹了如何處理規則。",
+ "guid": "c7600ea8-eb60-4eb1-9aee-c874efef69b7",
+ "service": "Azure Firewall",
+ "text": "根據最低許可權訪問條件為防火牆策略創建規則。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "IDPS 是最強大的 Azure 防火牆 (高級) 安全功能之一,應啟用。根據安全性和應用程式要求,並考慮性能影響(請參閱下面的“成本”部分),可以選擇“警報”或“警報”和“拒絕”模式。",
+ "guid": "d8fc2b4d-a183-4949-82ff-c6130a9d87dc",
+ "service": "Azure Firewall",
+ "text": "在警報或警報和拒絕模式下啟用 IDPS。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "啟用此功能會將 VNet 中的用戶端作為 DNS 伺服器指向 Azure 防火牆。它將保護不會被直接訪問和暴露的內部DNS基礎設施。還必須將 Azure 防火牆配置為使用用於轉發 DNS 查詢的自定義 DNS。",
+ "guid": "9fa0a48c-c3cb-4fc2-a02b-1182a047e076",
+ "service": "Azure Firewall",
+ "text": "啟用 Azure 防火牆 (DNS) 代理配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在傳統的 Hub & Spokes 體系結構中,配置 UDR 以強制流量通過 Azure 防火牆進行“SpoketoSpoke”、“SpoketoInternet”和“SpoketoHybrid”連接。在 Azure 虛擬 WAN 中,請配置路由意向和策略,以通過整合到中心的 Azure 防火牆實例重定向專用和/或 Internet 流量。",
+ "guid": "a3f23112-5986-4fd2-9d64-edfb0363c08c",
+ "service": "Azure Firewall",
+ "text": "配置使用者定義的路由 (UDR) 以強制流量通過 Azure 防火牆。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在出站路徑上啟用顯式代理功能后,可以在發送 Web 應用程式(例如 Web 瀏覽器)上配置代理設置,並將 Azure 防火牆配置為代理。因此,Web 流量將到達防火牆的專用IP位址,因此直接從防火牆退出,而無需使用UDR。此功能還有助於在不修改現有網路路由的情況下使用多個防火牆。",
+ "guid": "f62b7e3d-b86d-4f84-888d-ec7f97b34e96",
+ "service": "Azure Firewall",
+ "text": "如果無法應用 UDR,並且只需要 Web 流量重定向,請考慮使用 Azure 防火牆作為顯式代理",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "您可以使用熟悉的同類最佳第三方 SECaaS 產品來保護使用者的互聯網訪問。此方案確實需要在中心中使用 S2S VPN 閘道的 Azure 虛擬 WAN,因為它使用 IPSec 隧道連接到供應商的基礎結構。SECaaS 供應商可能會收取額外的許可費用並限制IPSec連接的輸送量。存在 ZScaler Cloud Connector 等替代解決方案,可能更合適。",
+ "guid": "1f1a4239-f908-4fb5-aff5-7d716d9227a1",
+ "service": "Azure Firewall",
+ "text": "如果要使用受支援的第三方軟體即服務 (SaaS) 安全提供者來保護出站連接,請在 Firewall Manager 中配置這些解決方案。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "可以在 Azure 防火牆和防火牆策略中使用基於 DNS 解析的 FQDN。此功能允許您使用任何 TCP/UDP 協定(包括 NTP、SSH、RDP 等)篩選出站流量。必須啟用 Azure 防火牆 DNS 代理配置才能在網路規則中使用 FQDN。若要瞭解其工作原理,請參閱網路規則中的 Azure 防火牆 FQDN 篩選。",
+ "guid": "cac3a2cc-688b-42c3-bfb5-e2b55270b8a0",
+ "service": "Azure Firewall",
+ "text": "在網路規則中使用完全限定的功能變數名稱 (FQDN) 篩選。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "服務標記表示一組IP位址前綴,以説明最大程度地降低安全規則創建的複雜性。使用網路規則中的服務標記,可以在不打開大範圍 IP 位址的情況下啟用對 Azure、Dynamics 和 Office 365 中特定服務的出站訪問。Azure 將自動維護這些標記與每個服務使用的基礎 IP 位址之間的映射。此處列出了可用於 Azure 防火牆的服務標記清單:Az Firewall Service Tags。",
+ "guid": "8e718b0b-3ae5-4a85-9e5e-7f12ac48ace8",
+ "service": "Azure Firewall",
+ "text": "在網路規則中使用服務標記以啟用對特定 Microsoft 服務的選擇性訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN 標記表示與已知 Microsoft 服務關聯的一組完全限定的功能變數名稱 (FQDN)。可以在應用程式規則中使用 FQDN 標記,以允許某些特定 Azure 服務、Office 365、Windows 365 和 Intune 所需的出站網路流量通過防火牆。",
+ "guid": "66db2147-74f7-4b4a-af65-a946369ae551",
+ "service": "Azure Firewall",
+ "text": "在應用程式規則中使用 FQDN 標記以啟用對特定 Microsoft 服務的選擇性訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "DDoS 防護計劃提供增強的緩解功能,以保護您的防火牆免受 DDoS 攻擊。Azure 防火牆管理器是一個集成工具,用於創建防火牆基礎結構和 DDoS 保護計劃。有關詳細資訊,請參閱使用 Azure 防火牆管理器配置 Azure DDoS 防護計劃。",
+ "guid": "0c87e550-0780-401e-9208-5464b378a8e7",
+ "service": "Azure Firewall",
+ "text": "使用 Azure 防火牆管理器創建 DDoS 保護計劃並將其與中心虛擬網路關聯(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Azure 防火牆高級版時,如果使用 TLS 檢查功能,建議將內部企業證書頒發機構 (CA) 用於生產環境。自簽名證書應僅用於測試/PoC 目的。",
+ "guid": "821132d4-1ba9-4709-9eb3-5906871b1721",
+ "service": "Azure Firewall",
+ "text": "使用企業 PKI 產生用於 TLS 檢查的證書。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "如果您的安全要求需要對 Web 應用程式(檢查和加密)實施零信任方法,建議遵循本指南。在本文檔中,將介紹如何在傳統的中心輻射型和虛擬 WAN 方案中將 Azure 防火牆和應用程式閘道集成在一起。",
+ "guid": "0ecf166e-e415-45bf-bece-87a32e76b096",
+ "service": "Azure Firewall",
+ "text": "查看 Azure 防火牆和應用程式閘道的零信任配置指南",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 防火牆可以部署在三個不同的 SKU 中:基本、標準和高級。建議使用 Azure 防火牆高級版來保護高度敏感的應用程式(例如付款處理)。對於尋找第 3 層至第 7 層防火牆且需要自動縮放以處理高達 30 Gbps 的峰值流量期的客戶,建議使用 Azure 防火牆標準版。 對於輸送量需求為 250 Mbps 的 SMB 客戶,建議使用 Azure 防火牆基本版。如果需要,可以在標準版和高級版之間降級或升級,如此處所述。 有關詳細資訊,請參閱選擇正確的 Azure 防火牆 SKU 以滿足你的需求。",
+ "guid": "fbcc2c4d-8026-46a9-8fe7-bdb04dbd1f20",
+ "service": "Azure Firewall",
+ "text": "部署正確的 Azure 防火牆 SKU。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可能具有僅在工作時間使用的開發或測試環境。有關詳細資訊,請參閱取消分配和分配 Azure 防火牆。",
+ "guid": "4bf5b742-3a86-40a3-abce-a7991e9a0e78",
+ "service": "Azure Firewall",
+ "text": "停止不需要 24x7 全天候運行的 Azure 防火牆部署。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "可以在中心虛擬網路或虛擬 WAN 安全中心中使用 Azure 防火牆的中心實例,並在從同一區域連接到同一中心的許多分支虛擬網路中共用同一防火牆。確保中心輻射型拓撲中沒有意外的跨區域流量。",
+ "guid": "4468b60f-0f1d-4af5-98cd-b4f9fc3bd70f",
+ "service": "Azure Firewall",
+ "text": "在多個工作負載和 Azure 虛擬網路之間共用同一 Azure 防火牆實例。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "Top Flows 日誌(在業界稱為 Fat Flows)顯示通過防火牆實現最高輸送量的頂級連接。建議定期查看 Azure 防火牆處理的流量,並搜索可能的優化方法,以減少通過防火牆的流量。",
+ "guid": "3ec205f3-5201-4a2e-b82b-1c77c9ee139c",
+ "service": "Azure Firewall",
+ "text": "定期查看 Azure 防火牆處理的流量,並查找原始工作負載優化",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "若要識別未使用的 Azure 防火牆部署,請首先分析與指向防火牆專用 IP 的子網關聯的監視指標和 UDR。將該資訊與其他驗證相結合,例如,Azure 防火牆實例是否具有針對 NAT、網路和應用程式的任何規則 (經典) ,或者即使 DNS 代理設置配置為 已禁用,以及有關環境和部署的內部文檔。您可以檢測出在一段時間內具有成本效益的部署。 有關監視日誌和指標的詳細資訊,請參閱監視 Azure 防火牆日誌和指標和 SNAT 埠利用率。",
+ "guid": "514f4dbe-5294-44e1-95c5-923a199ff687",
+ "service": "Azure Firewall",
+ "text": "查看未充分利用的 Azure 防火牆實例。識別並刪除未使用的 Azure 防火牆部署。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "請仔細查看 Firewall Manager 策略、關聯和繼承。策略根據防火牆關聯進行計費。具有零個或一個防火牆關聯的策略是免費的。具有多個防火牆關聯的策略按固定費率計費。有關詳細資訊,請參閱定價 - Azure 防火牆管理器。",
+ "guid": "90f29560-d536-46bf-a719-f0f95f89105e",
+ "service": "Azure Firewall",
+ "text": "使用 Azure 防火牆管理器及其策略可降低運營成本、提高效率並減少管理開銷。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "驗證是否所有關聯的公共IP位址都在使用中。如果它們未在使用中,請取消關聯並刪除它們。在刪除任何IP位址之前評估SNAT埠利用率。您只需使用防火牆所需的公共IP數量。有關詳細資訊,請參閱監視 Azure 防火牆日誌和指標以及 SNAT 埠利用率。",
+ "guid": "e81c61b3-0085-4029-82e3-d55513288f87",
+ "service": "Azure Firewall",
+ "text": "刪除未使用的公共IP位址。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "Azure 防火牆能夠通過事件中心將它看到的所有流量的元數據全面記錄到 Log Analytics 工作區、存儲或第三方解決方案中。但是,所有日誌記錄解決方案都會產生數據處理和存儲成本。在非常大的數量下,這些成本可能很高,應考慮一種經濟高效的方法和日誌分析的替代方法,並估算成本。考慮是否需要記錄所有日誌記錄類別的流量元數據,並在需要時在診斷設置中進行修改。",
+ "guid": "a27d979a-c88c-4ce0-9310-9a69eba3460d",
+ "service": "Azure Firewall",
+ "text": "查看記錄要求。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "應使用 Azure 防火牆來控制跨 VNet、VNet 與本地網路之間的流量、到 Internet 的出站流量以及傳入的非 HTTP/s 流量。對於 VNet 內部流量控制,建議使用網路安全組。",
+ "guid": "bce7644e-fefe-4d43-94ea-37af4d8743f9",
+ "service": "Azure Firewall",
+ "text": "請勿使用 Azure 防火牆進行 VNet 內部流量控制。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "如果使用基礎結構即代碼 (IaC) 方法來維護 Azure 防火牆和所有依賴項,則 Azure 防火牆策略的備份和版本控制應已到位。如果沒有,可以部署基於外部邏輯應用的配套機制,以自動化並提供有效的解決方案。",
+ "guid": "8b0afffb-17aa-4839-b93f-c01d990ad7c6",
+ "service": "Azure Firewall",
+ "text": "維護 Azure Policy 專案的定期備份。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌是 Azure 防火牆的許多監視工具和策略的關鍵元件,應啟用它。可以使用防火牆日誌或工作簿監視 Azure 防火牆。還可以使用活動日誌來審核對 Azure 防火牆資源的操作。",
+ "guid": "6d52b11a-0034-4824-84c4-7383182dc4df",
+ "service": "Azure Firewall",
+ "text": "啟用 Azure 防火牆的診斷日誌。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "結構化防火牆日誌是一種以特定新格式組織的日誌數據類型。它們使用預定義的架構來構建日誌數據,使其易於搜索、篩選和分析。最新的監視工具基於這種類型的日誌,因此它通常是先決條件。僅當存在具有先決條件的現有工具時,才使用以前的診斷日誌格式。不要同時啟用這兩種日誌記錄格式。",
+ "guid": "99a0621d-2643-4e46-afb0-dd3e5111dedd",
+ "service": "Azure Firewall",
+ "text": "使用結構化防火牆日誌格式。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure 防火牆門戶體驗現在在“監視”部分 UI 下包含一個新工作簿,不再需要單獨安裝。使用 Azure 防火牆工作簿,可以從 Azure 防火牆事件中提取有價值的見解,深入研究應用程式和網路規則,並檢查有關 URL、埠和地址之間的防火牆活動的統計資訊。",
+ "guid": "8c18d9ea-2440-4125-a0cb-c1cf35c0be70",
+ "service": "Azure Firewall",
+ "text": "使用內置的 Azure 防火牆監視工作簿。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應創建警報,至少監視輸送量、防火牆運行狀況狀態、SNAT 埠利用率和 AZFW 延遲探測指標。有關監視日誌和指標的資訊,請參閱監視 Azure 防火牆日誌和指標。",
+ "guid": "05877204-1759-4b71-8938-4766b1b24fa7",
+ "service": "Azure Firewall",
+ "text": "監視關鍵指標,併為 Azure 防火牆容量利用率的指標創建警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "如果這些工具在環境中可用,建議利用與 Microsoft Defender for Cloud 和 Microsoft Sentinel 解決方案的集成。借助 Microsoft Defender for Cloud 集成,可以在一個位置可視化網路基礎結構和網路安全的全面狀態,包括分佈在 Azure 中不同區域的所有 VNet 和虛擬中心的 Azure 網路安全。與 Microsoft Sentinel 集成可提供威脅檢測和預防功能。",
+ "guid": "0dd715ab-c76e-49b9-9616-ccb36ddb293e",
+ "service": "Azure Firewall",
+ "text": "配置 Azure 防火牆與 Microsoft Defender for Cloud 和 Microsoft Sentinel 的集成。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "策略分析是一項新功能,可深入瞭解 Azure 防火牆策略的影響。它可以説明您識別策略中的潛在問題(達到策略限制、低利用率規則、冗餘規則、規則過於通用、IP 組使用建議),並提供建議以改善您的安全狀況和規則處理性能。",
+ "guid": "9e1b460f-0d41-40a1-9da7-89cda32f7190",
+ "service": "Azure Firewall",
+ "text": "定期查看策略分析儀錶板,以確定潛在問題。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "為 Azure 防火牆提供了示例查詢。這些將使您能夠快速識別防火牆內部發生的情況,並檢查觸發了哪個規則,或者哪個規則允許/阻止請求。",
+ "guid": "8f1b00a0-2ba3-4dff-b808-072bbd316a88",
+ "service": "Azure Firewall",
+ "text": "熟悉 KQL(Kusto 查詢語言)查詢,以便使用 Azure 防火牆日誌進行快速分析和故障排除。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "策略分析是一項新功能,可深入瞭解 Azure 防火牆策略的影響。它可以説明您識別策略中的潛在問題(達到策略限制、低利用率規則、冗餘規則、規則過於通用、IP 組使用建議),並提供建議以改善您的安全狀況和規則處理性能。",
+ "guid": "f3a64299-022d-492e-a095-72965cbb79b8",
+ "service": "Azure Firewall",
+ "text": "使用「策略分析」儀錶板確定防火牆策略的潛在優化。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "不要顯式構建和維護一長串公共 Internet 網站,而應考慮使用 Azure 防火牆 Web 類別。此功能將對 Web 內容進行動態分類,並允許創建緊湊的應用程式規則。",
+ "guid": "53e42e9b-6d25-4116-87ca-6c97252e1cd6",
+ "service": "Azure Firewall",
+ "text": "請考慮使用 Web 類別來批量允許或拒絕出站訪問。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果需要 Azure 防火牆在 IDPS 模式下運行警報和拒絕,請仔細考慮本頁中所述的性能影響。",
+ "guid": "4afedb20-a63a-4c17-907d-d8afc5cd1b43",
+ "service": "Azure Firewall",
+ "text": "評估IDPS在警報和拒絕模式下的性能影響。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆目前支援每個後端虛擬機規模集實例的每個公共IP位址 2496個埠。默認情況下,有兩個虛擬機規模集實例。因此,每個流目標 IP、目標埠和協定(TCP 或 UDP)有 4992 個埠。防火牆最多可擴展到20個實例。可以通過將 Azure 防火牆部署配置為至少 5 個公共 IP 位址,以便部署容易受到 SNAT 耗盡的影響,從而繞過這些限制。",
+ "guid": "cdb16c9c-fe4e-41d6-bc0c-8519a606d37b",
+ "service": "Azure Firewall",
+ "text": "評估潛在的 SNAT 埠耗盡問題。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "在測試前 20 分鐘創建不屬於負載測試的初始流量。使用診斷設置來捕獲縱向擴展和縱向縮減事件。可以使用 Azure 負載測試服務來生成初始流量。允許 Azure 防火牆實例將其實例縱向擴展到最大值。",
+ "guid": "1859fa28-775d-433f-b189-6b250e51b441",
+ "service": "Azure Firewall",
+ "text": "在進行任何性能測試之前,請正確預熱 Azure 防火牆。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆是虛擬網路中的專用部署。在虛擬網路中,Azure 防火牆實例需要專用子網。Azure 防火牆在縮放時預配更多容量。其子網的 /26 位址空間可確保防火牆有足夠的可用IP位址來適應縮放。Azure 防火牆不需要大於 /26 的子網。Azure 防火牆子網名稱必須是 AzureFirewallSubnet。",
+ "guid": "272b1122-494d-4baa-a328-928a89ebb0ad",
+ "service": "Azure Firewall",
+ "text": "配置具有 /26 位址空間的 Azure 防火牆子網 (AzureFirewallSubnet)。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆提供了一些高級日誌記錄功能,這些功能保持始終處於活動狀態的成本可能很高。相反,它們應僅用於故障排除目的,並且持續時間有限,然後在不再需要時禁用。例如,「排名靠前」流和「流跟蹤日誌」成本高昂可能會導致 Azure 防火牆基礎結構上的 CPU 和存儲使用率過高。",
+ "guid": "2b20c2ea-e6fd-4570-b86f-b20bfb695c6f",
+ "service": "Azure Firewall",
+ "text": "如果不需要,請不要啟用高級日誌記錄",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Firewall Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.en.json b/checklists-ext/azurefrontdoor_sg_checklist.en.json
index c24f3fa21..f93eecc1f 100644
--- a/checklists-ext/azurefrontdoor_sg_checklist.en.json
+++ b/checklists-ext/azurefrontdoor_sg_checklist.en.json
@@ -180,35 +180,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -245,6 +245,6 @@
"name": "Azure Front Door Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.es.json b/checklists-ext/azurefrontdoor_sg_checklist.es.json
new file mode 100644
index 000000000..a88c9f3cb
--- /dev/null
+++ b/checklists-ext/azurefrontdoor_sg_checklist.es.json
@@ -0,0 +1,250 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Puede seleccionar el mejor recurso de origen mediante una serie de pasos de decisión y su diseño. El origen seleccionado atiende el tráfico dentro del rango de latencia permitido en la proporción de pesos especificada.",
+ "guid": "00d75bec-38c3-456d-86e6-42031076f429",
+ "service": "Azure Front Door",
+ "text": "Elija un método de enrutamiento que admita su estrategia de implementación. El método ponderado, que distribuye el tráfico en función del coeficiente de ponderación configurado, admite modelos activo-activo. Un valor basado en prioridades que configura la región primaria para recibir todo el tráfico y enviar tráfico a la región secundaria como copia de seguridad admite modelos activo-pasivo. Combine los métodos anteriores con la latencia para que el origen con la latencia más baja reciba tráfico.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Varios orígenes admiten redundancia mediante la distribución del tráfico entre varias instancias de la aplicación. Si una instancia no está disponible, otros orígenes de back-end aún pueden recibir tráfico.",
+ "guid": "96530f4b-ba7a-4288-aaa0-9167975de796",
+ "service": "Azure Front Door",
+ "text": "Compatibilidad con la redundancia al tener varios orígenes en uno o varios grupos de back-end. Tenga siempre instancias redundantes de su aplicación y asegúrese de que cada instancia exponga un punto de conexión u origen. Puede colocar esos orígenes en uno o varios grupos de back-end.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los sondeos de estado habilitados forman parte de la implementación del patrón de supervisión de estado. Los sondeos de estado se aseguran de que Azure Front Door solo enruta el tráfico a las instancias que están en buen estado para controlar las solicitudes. Para obtener más información, consulte Procedimientos recomendados para sondeos de estado.",
+ "guid": "f802e2c6-ea9b-4e0d-b3d1-b7c4d0b4aa26",
+ "service": "Azure Front Door",
+ "text": "Configure sondeos de estado en el origen. Configure Azure Front Door para realizar comprobaciones de estado y determinar si la instancia de back-end está disponible y lista para seguir recibiendo solicitudes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los tiempos de espera ayudan a evitar problemas de rendimiento y disponibilidad al finalizar las solicitudes que tardan más de lo esperado en completarse.",
+ "guid": "e1ec439d-2bc8-4e6e-b72f-1aafaa2aae58",
+ "service": "Azure Front Door",
+ "text": "Establezca un tiempo de espera para reenviar solicitudes al back-end. Ajuste la configuración de tiempo de espera según las necesidades de sus terminales. Si no lo hace, Azure Front Door podría cerrar la conexión antes de que el origen envíe la respuesta. También puede reducir el tiempo de espera predeterminado para Azure Front Door si todos los orígenes tienen un tiempo de espera más corto. Para obtener más información, consulte Solución de problemas de solicitudes que no responden.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Establezca el mismo nombre de host para evitar un mal funcionamiento con la afinidad de sesión, la autenticación y la autorización. Para obtener más información, consulte Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end.",
+ "guid": "dd9e850c-0ce5-4ac2-8d8b-53cd21925a8d",
+ "service": "Azure Front Door",
+ "text": "Use el mismo nombre de host en Azure Front Door y en su origen. Azure Front Door puede reescribir el encabezado de host de las solicitudes entrantes, lo que resulta útil cuando hay varios nombres de dominio personalizados que se enrutan a un origen. Sin embargo, reescribir el encabezado del host puede causar problemas con las cookies de solicitud y el redireccionamiento de URL.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Con la afinidad de sesión, las conexiones de usuario permanecen en el mismo origen durante la sesión de usuario. Si ese origen deja de estar disponible, es posible que la experiencia del usuario se vea interrumpida.",
+ "guid": "66bc38be-1613-4bf5-b10b-f130eaff5140",
+ "service": "Azure Front Door",
+ "text": "Decida si la aplicación requiere afinidad de sesión. Si tiene requisitos de alta confiabilidad, le recomendamos que deshabilite la afinidad de sesión.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Limite las solicitudes para evitar que los clientes envíen demasiado tráfico a la aplicación. La limitación de velocidad puede ayudarte a evitar problemas como una tormenta de reintentos.",
+ "guid": "d9ea6be6-aed9-48ef-8774-7a10eb669286",
+ "service": "Azure Front Door",
+ "text": "Aproveche las reglas de limitación de velocidad que se incluyen con un firewall de aplicaciones web (WAF).",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los conjuntos de reglas predeterminados se actualizan con frecuencia en función de los 10 tipos de ataque principales de OWASP y de la información de Microsoft Threat Intelligence. Los conjuntos de reglas especializadas detectan determinados casos de uso. Por ejemplo, las reglas de bots clasifican los bots como buenos, malos o desconocidos en función de las direcciones IP del cliente. También bloquean los bots maliciosos y las direcciones IP conocidas y restringen el tráfico en función de la ubicación geográfica de las personas que llaman. Mediante el uso de una combinación de conjuntos de reglas, puede detectar y bloquear ataques con varias intenciones.",
+ "guid": "56baca49-9e07-4ea8-983f-6a580cee1b4b",
+ "service": "Azure Front Door",
+ "text": "Habilite los conjuntos de reglas de WAF que detectan y bloquean el tráfico potencialmente malintencionado. Esta función está disponible en el nivel Premium. Recomendamos estos conjuntos de reglas: - Predeterminado- Protección contra bots- Restricción de IP- Filtrado geográfico- Limitación de velocidad",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Reduzca los falsos positivos y permita solicitudes legítimas para su aplicación.",
+ "guid": "214d73c2-77e5-4000-81fb-7463d9183beb",
+ "service": "Azure Front Door",
+ "text": "Cree exclusiones para conjuntos de reglas administrados. Pruebe una política de WAF en modo de detección durante unas semanas y ajuste los falsos positivos antes de implementarla.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS garantiza que los intercambios de datos entre el explorador, Azure Front Door y los orígenes back-end estén cifrados para evitar la manipulación. Key Vault ofrece compatibilidad con certificados administrados y renovación y rotación sencillas de certificados.",
+ "guid": "a34600e2-cbae-4bf6-b272-377ec3232184",
+ "service": "Azure Front Door",
+ "text": "Habilite TLS de extremo a extremo, redireccionamiento de HTTP a HTTPS y certificados TLS administrados cuando corresponda. Revise los procedimientos recomendados de TLS para Azure Front Door. Utilice la versión 1.2 de TLS como la versión mínima permitida con cifrados que sean relevantes para su aplicación. Los certificados administrados de Azure Front Door deben ser la opción predeterminada para facilitar las operaciones. Sin embargo, si desea administrar el ciclo de vida de los certificados, use sus propios certificados en los puntos de conexión de dominio personalizado de Azure Front Door y almacénelos en Key Vault.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El almacenamiento en caché optimiza los costos de transferencia de datos, ya que reduce el número de llamadas desde la instancia de Azure Front Door hasta el origen.",
+ "guid": "18343954-6c64-4254-a1f1-95992a15a798",
+ "service": "Azure Front Door",
+ "text": "Use el almacenamiento en caché para los puntos de conexión que lo admitan.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La compresión reduce el consumo de ancho de banda y mejora el rendimiento.",
+ "guid": "e371af3c-0759-4e8d-ba6a-d25483643ec4",
+ "service": "Azure Front Door",
+ "text": "Considere la posibilidad de habilitar la compresión de archivos. Para esta configuración, la aplicación debe admitir la compresión y el almacenamiento en caché debe estar habilitado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede ahorrar en costos de ancho de banda deshabilitando las solicitudes que no son necesarias para tomar decisiones de enrutamiento.",
+ "guid": "8d573a21-8a95-455f-9c6b-d3df3ef7b64f",
+ "service": "Azure Front Door",
+ "text": "Deshabilite las comprobaciones de estado en grupos de back-end únicos. Si solo tiene un origen configurado en el grupo de origen de Azure Front Door, estas llamadas son innecesarias.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cuando se habilita el redireccionamiento, Azure Front Door redirige automáticamente a los clientes que usan el protocolo anterior para usar HTTPS para una experiencia segura.",
+ "guid": "254773ae-c7c4-4ed6-a700-e0002742f249",
+ "service": "Azure Front Door",
+ "text": "Utilice el redireccionamiento de HTTP a HTTPS para admitir la compatibilidad con versiones posteriores.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión del flujo de entrada es una parte crucial de la supervisión de una aplicación. Desea realizar un seguimiento de las solicitudes y realizar mejoras de rendimiento y seguridad. Necesita datos para depurar la configuración de Azure Front Door. Con las alertas, puede recibir notificaciones instantáneas de cualquier problema operativo crítico.",
+ "guid": "380c2642-b634-476a-9bd4-9e3bb2f718e8",
+ "service": "Azure Front Door",
+ "text": "Captura de registros y métricas. Incluya registros de actividad de recursos, registros de acceso, registros de sondeo de estado y registros de WAF. Configura alertas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Una vista holística del perfil de Azure Front Door ayuda a impulsar mejoras basadas en informes de tráfico y seguridad a través de métricas de WAF.",
+ "guid": "7cabd86b-d55e-4a51-9088-a9b66dd9a7bd",
+ "service": "Azure Front Door",
+ "text": "Revise los informes de análisis integrados.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Front Door puede emitir y administrar certificados automáticamente. Esta función elimina la necesidad de renovar certificados y minimiza el riesgo de una interrupción debido a un certificado TLS no válido o caducado.",
+ "guid": "99d4c43f-e603-49ad-bf1e-47cec531a2f3",
+ "service": "Azure Front Door",
+ "text": "Utilice certificados TLS administrados cuando sea posible.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "No es necesario modificar la configuración para agregar o especificar cada subdominio por separado.",
+ "guid": "d979b485-b404-40dc-8d2a-280023a9216b",
+ "service": "Azure Front Door",
+ "text": "Utilice certificados TLS comodín.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Front Door ofrece una solución de red de entrega de contenido sólida que almacena en caché el contenido en el perímetro de la red. El almacenamiento en caché reduce la carga en los servidores back-end y reduce el movimiento de datos a través de la red, lo que ayuda a descargar el uso del ancho de banda.",
+ "guid": "e8d431d1-8549-4d6d-a1da-ec67e7ef897e",
+ "service": "Azure Front Door",
+ "text": "Habilite el almacenamiento en caché. Puede optimizar las cadenas de consulta para el almacenamiento en caché. En el caso de contenido puramente estático, omita las cadenas de consulta para maximizar el uso de la memoria caché. Si la aplicación usa cadenas de consulta, considere la posibilidad de incluirlas en la clave de caché. La inclusión de las cadenas de consulta en la clave de caché permite a Azure Front Door servir respuestas almacenadas en caché u otras respuestas, en función de la configuración.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La compresión en Azure Front Door ayuda a entregar contenido en el formato óptimo, tiene una carga más pequeña y entrega contenido a los usuarios más rápido.",
+ "guid": "55ac8a69-b68f-4d07-a94b-65a9eecb11d3",
+ "service": "Azure Front Door",
+ "text": "Usa la compresión de archivos cuando accedas a contenido descargable.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Las solicitudes 'HEAD' le permiten consultar un cambio de estado sin obtener todo su contenido.",
+ "guid": "05736c21-5250-46a7-8c7a-27bbbf8190db",
+ "service": "Azure Front Door",
+ "text": "Al configurar sondeos de estado en Azure Front Door, considere la posibilidad de usar solicitudes \"HEAD\" en lugar de solicitudes \"GET\". El sondeo de estado solo lee el código de estado, no el contenido.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Optimice el rendimiento y mantenga la continuidad de las sesiones de usuario, especialmente cuando las aplicaciones dependen del mantenimiento de la información de estado localmente.",
+ "guid": "7dd5da03-4e98-440f-9bfa-a60428db96a0",
+ "service": "Azure Front Door",
+ "text": "Evalúe si debe habilitar la afinidad de sesión cuando las solicitudes del mismo usuario deben dirigirse al mismo servidor back-end. Desde el punto de vista de la confiabilidad, no recomendamos este enfoque. Si usa esta opción, la aplicación debería recuperarse correctamente sin interrumpir las sesiones de usuario. También hay una compensación en el equilibrio de carga, ya que restringe la flexibilidad de distribuir el tráfico entre varios back-ends de manera uniforme.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Front Door Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.ja.json b/checklists-ext/azurefrontdoor_sg_checklist.ja.json
new file mode 100644
index 000000000..e6a98f601
--- /dev/null
+++ b/checklists-ext/azurefrontdoor_sg_checklist.ja.json
@@ -0,0 +1,250 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "最適なオリジンリソースを選択するには、一連の決定手順と設計を使用します。選択したオリジンは、指定されたウェイトの比率で許容レイテンシ範囲内のトラフィックを提供します。",
+ "guid": "00d75bec-38c3-456d-86e6-42031076f429",
+ "service": "Azure Front Door",
+ "text": "デプロイ戦略をサポートするルーティング方法を選択します。 設定された重み係数に基づいてトラフィックを分散する加重方式は、アクティブ/アクティブモデルをサポートします。 プライマリ リージョンがすべてのトラフィックを受信し、バックアップとしてセカンダリ リージョンにトラフィックを送信するように設定する優先度ベースの値は、アクティブ/パッシブ モデルをサポートします。 上記の方法とレイテンシを組み合わせて、レイテンシが最も低いオリジンがトラフィックを受信するようにします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "複数のオリジンは、アプリケーションの複数のインスタンスにトラフィックを分散することで冗長性をサポートします。1 つのインスタンスが使用できない場合でも、他のバックエンド配信元は引き続きトラフィックを受信できます。",
+ "guid": "96530f4b-ba7a-4288-aaa0-9167975de796",
+ "service": "Azure Front Door",
+ "text": "1 つ以上のバックエンド プールに複数の配信元を持つことで冗長性をサポートします。アプリケーションの冗長インスタンスを常に用意し、各インスタンスがエンドポイントまたはオリジンを公開していることを確認します。これらの配信元は、1 つ以上のバックエンド プールに配置できます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "有効な正常性プローブは、正常性監視パターンの実装の一部です。正常性プローブは、Azure Front Door が要求を処理するのに十分な正常なインスタンスにのみトラフィックをルーティングすることを確認します。 詳細については、「正常性プローブのベスト プラクティス」を参照してください。",
+ "guid": "f802e2c6-ea9b-4e0d-b3d1-b7c4d0b4aa26",
+ "service": "Azure Front Door",
+ "text": "配信元で正常性プローブを設定します。バックエンド インスタンスが使用可能で、引き続き要求を受信する準備ができているかどうかを判断するための正常性チェックを実行するように Azure Front Door を構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "タイムアウトは、完了までに予想以上に時間がかかる要求を終了することで、パフォーマンスの問題と可用性の問題を防ぐのに役立ちます。",
+ "guid": "e1ec439d-2bc8-4e6e-b72f-1aafaa2aae58",
+ "service": "Azure Front Door",
+ "text": "バックエンドへの要求の転送にタイムアウトを設定します。 エンドポイントのニーズに応じてタイムアウト設定を調整します。そうしないと、配信元が応答を送信する前に Azure Front Door が接続を閉じる可能性があります。 また、すべての配信元のタイムアウトが短い場合は、Azure Front Door の既定のタイムアウトを下げることもできます。 詳細については、「応答しない要求のトラブルシューティング」を参照してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セッションのアフィニティ、認証、および承認の誤動作を防ぐために、同じホスト名を設定します。詳細については、「リバース プロキシとそのバックエンド Web アプリケーション間で元の HTTP ホスト名を保持する」を参照してください。",
+ "guid": "dd9e850c-0ce5-4ac2-8d8b-53cd21925a8d",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door と配信元で同じホスト名を使用します。Azure Front Door では、受信要求のホスト ヘッダーを書き換えることができるため、1 つの配信元にルーティングする複数のカスタム ドメイン名がある場合に便利です。ただし、ホストヘッダーを書き換えると、リクエスト Cookie と URL リダイレクトで問題が発生する可能性があります。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セッション アフィニティを使用すると、ユーザー接続はユーザー セッション中に同じオリジンに留まります。そのオリジンが使用できなくなった場合、ユーザーエクスペリエンスが中断される可能性があります。",
+ "guid": "66bc38be-1613-4bf5-b10b-f130eaff5140",
+ "service": "Azure Front Door",
+ "text": "アプリケーションにセッション アフィニティが必要かどうかを判断します。高い信頼性要件がある場合は、セッション アフィニティを無効にすることをお勧めします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "要求を制限して、クライアントがアプリケーションに大量のトラフィックを送信しないようにします。レート制限は、再試行ストームのような問題を回避するのに役立ちます。",
+ "guid": "d9ea6be6-aed9-48ef-8774-7a10eb669286",
+ "service": "Azure Front Door",
+ "text": "Web アプリケーション ファイアウォール (WAF) に含まれるレート制限ルールを利用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "既定のルール セットは、OWASP の上位 10 種類の攻撃の種類と Microsoft 脅威インテリジェンスからの情報に基づいて頻繁に更新されます。 特殊なルール・セットは、特定のユースケースを検出します。たとえば、ボット ルールは、クライアントの IP アドレスに基づいてボットを良好、不良、または不明に分類します。また、悪意のあるボットや既知のIPアドレスをブロックし、発信者の地理的な場所に基づいてトラフィックを制限します。 ルールセットを組み合わせて使用することで、さまざまなインテントによる攻撃を検知し、ブロックすることができます。",
+ "guid": "56baca49-9e07-4ea8-983f-6a580cee1b4b",
+ "service": "Azure Front Door",
+ "text": "悪意のある可能性のあるトラフィックを検出してブロックする WAF ルールセットを有効にします。この機能は、Premium レベルで使用できます。次のルールセットをお勧めします: - デフォルト - ボット保護 - IP制限 - ジオフィルタリング - レート制限",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "誤検知を減らし、アプリケーションに対する正当な要求を許可します。",
+ "guid": "214d73c2-77e5-4000-81fb-7463d9183beb",
+ "service": "Azure Front Door",
+ "text": "マネージド ルール セットの除外を作成します。 WAF ポリシーを検出モードで数週間テストし、誤検出がある場合は調整してからデプロイします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS により、ブラウザー、Azure Front Door、バックエンドの配信元間のデータ交換が暗号化され、改ざんが防止されます。 Key Vault は、マネージド証明書のサポートと、簡単な証明書の更新とローテーションを提供します。",
+ "guid": "a34600e2-cbae-4bf6-b272-377ec3232184",
+ "service": "Azure Front Door",
+ "text": "エンドツーエンド TLS、HTTP から HTTPS へのリダイレクト、およびマネージド TLS 証明書 (該当する場合) を有効にします。 Azure Front Door の TLS のベスト プラクティスを確認します。 TLS バージョン 1.2 を最小許容バージョンとして使用し、アプリケーションに関連する暗号を使用します。 Azure Front Door で管理される証明書は、操作を容易にするために既定の選択肢にする必要があります。ただし、証明書のライフサイクルを管理する場合は、Azure Front Door カスタム ドメイン エンドポイントで独自の証明書を使用し、Key Vault に格納します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "キャッシュを使用すると、Azure Front Door インスタンスから配信元への呼び出しの数が減るため、データ転送コストが最適化されます。",
+ "guid": "18343954-6c64-4254-a1f1-95992a15a798",
+ "service": "Azure Front Door",
+ "text": "キャッシュをサポートするエンドポイントにはキャッシュを使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "圧縮により、帯域幅の消費が削減され、パフォーマンスが向上します。",
+ "guid": "e371af3c-0759-4e8d-ba6a-d25483643ec4",
+ "service": "Azure Front Door",
+ "text": "ファイル圧縮を有効にすることを検討してください。この構成では、アプリケーションが圧縮をサポートし、キャッシュを有効にする必要があります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ルーティングの決定に必要のない要求を無効にすることで、帯域幅のコストを節約できます。",
+ "guid": "8d573a21-8a95-455f-9c6b-d3df3ef7b64f",
+ "service": "Azure Front Door",
+ "text": "単一のバックエンド・プールのヘルス・チェックを無効にします。Azure Front Door の配信元グループに配信元が 1 つしか構成されていない場合、これらの呼び出しは不要です。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "リダイレクトを有効にすると、Azure Front Door は、セキュリティで保護されたエクスペリエンスのために、古いプロトコルを使用しているクライアントを自動的にリダイレクトして HTTPS を使用します。",
+ "guid": "254773ae-c7c4-4ed6-a700-e0002742f249",
+ "service": "Azure Front Door",
+ "text": "HTTP から HTTPS へのリダイレクトを使用して、上位互換性をサポートします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "イングレス フローの監視は、アプリケーションの監視の重要な部分です。要求を追跡し、パフォーマンスとセキュリティを改善したい。Azure Front Door の構成をデバッグするには、データが必要です。 アラートを設定すると、重大な運用上の問題について即座に通知を受け取ることができます。",
+ "guid": "380c2642-b634-476a-9bd4-9e3bb2f718e8",
+ "service": "Azure Front Door",
+ "text": "ログとメトリクスをキャプチャします。 リソース アクティビティ ログ、アクセス ログ、正常性プローブ ログ、WAF ログを含めます。アラートを設定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Front Door プロファイルの全体像を把握すると、WAF メトリックを通じてトラフィックとセキュリティのレポートに基づいて改善を推進するのに役立ちます。",
+ "guid": "7cabd86b-d55e-4a51-9088-a9b66dd9a7bd",
+ "service": "Azure Front Door",
+ "text": "組み込みの分析レポートを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Front Door では、証明書を発行して管理できます。この機能により、証明書の更新が不要になり、TLS証明書が無効または期限切れであることによる停止のリスクが最小限に抑えられます。",
+ "guid": "99d4c43f-e603-49ad-bf1e-47cec531a2f3",
+ "service": "Azure Front Door",
+ "text": "可能な場合は、マネージド TLS 証明書を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各サブドメインを個別に追加または指定するために、設定を変更する必要はありません。",
+ "guid": "d979b485-b404-40dc-8d2a-280023a9216b",
+ "service": "Azure Front Door",
+ "text": "ワイルドカード TLS 証明書を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Front Door は、ネットワークのエッジでコンテンツをキャッシュする堅牢なコンテンツ配信ネットワーク ソリューションを提供します。キャッシングにより、バックエンド サーバーの負荷が軽減され、ネットワーク経由でのデータ移動が削減されるため、帯域幅の使用量を軽減できます。",
+ "guid": "e8d431d1-8549-4d6d-a1da-ec67e7ef897e",
+ "service": "Azure Front Door",
+ "text": "キャッシュを有効にします。 キャッシュ用にクエリ文字列を最適化できます。純粋に静的なコンテンツの場合は、クエリ文字列を無視して、キャッシュを最大限に活用します。 アプリケーションでクエリ文字列を使用する場合は、それらをキャッシュキーに含めることを検討してください。キャッシュ キーにクエリ文字列を含めると、Azure Front Door は、構成に基づいてキャッシュされた応答またはその他の応答を提供できます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Front Door の圧縮は、最適な形式でコンテンツを配信し、ペイロードを小さくし、コンテンツをユーザーに迅速に配信するのに役立ちます。",
+ "guid": "55ac8a69-b68f-4d07-a94b-65a9eecb11d3",
+ "service": "Azure Front Door",
+ "text": "ダウンロード可能なコンテンツにアクセスするときは、ファイル圧縮を使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "'HEAD' リクエストを使用すると、コンテンツ全体をフェッチせずに状態変更をクエリできます。",
+ "guid": "05736c21-5250-46a7-8c7a-27bbbf8190db",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door で正常性プローブを構成する場合は、'GET' 要求ではなく 'HEAD' 要求を使用することを検討してください。 正常性プローブは、コンテンツではなく、状態コードのみを読み取ります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ユーザーセッションのパフォーマンスを最適化し、継続性を維持します。特に、アプリケーションが状態情報をローカルで保持することに依存している場合に顕著です。",
+ "guid": "7dd5da03-4e98-440f-9bfa-a60428db96a0",
+ "service": "Azure Front Door",
+ "text": "同じユーザーからの要求を同じバックエンド・サーバーに送信する必要がある場合に、セッション・アフィニティーを有効にする必要があるかどうかを評価します。 信頼性の観点から、このアプローチはお勧めしません。このオプションを使用すると、アプリケーションはユーザー・セッションを中断することなく正常にリカバリできます。 また、負荷分散にはトレードオフがあり、複数のバックエンドにトラフィックを均等に分散する柔軟性が制限されます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Front Door Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.ko.json b/checklists-ext/azurefrontdoor_sg_checklist.ko.json
new file mode 100644
index 000000000..f30c3d9d1
--- /dev/null
+++ b/checklists-ext/azurefrontdoor_sg_checklist.ko.json
@@ -0,0 +1,250 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "일련의 의사 결정 단계와 설계를 사용하여 최상의 원본 리소스를 선택할 수 있습니다. 선택한 오리진은 지정된 가중치 비율로 허용 가능한 지연 시간 범위 내에서 트래픽을 처리합니다.",
+ "guid": "00d75bec-38c3-456d-86e6-42031076f429",
+ "service": "Azure Front Door",
+ "text": "배포 전략을 지원하는 라우팅 방법을 선택합니다. 구성된 가중치 계수에 따라 트래픽을 분산하는 가중치 적용 방법은 액티브-액티브 모델을 지원합니다. 모든 트래픽을 수신하고 백업으로 보조 지역으로 트래픽을 보내도록 주 지역을 구성하는 우선 순위 기반 값은 활성-수동 모델을 지원합니다. 앞의 방법을 지연 시간과 결합하여 지연 시간이 가장 낮은 오리진이 트래픽을 수신하도록 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "다중 오리진은 애플리케이션의 여러 인스턴스에 트래픽을 분산하여 중복성을 지원합니다. 한 인스턴스를 사용할 수 없는 경우 다른 백 엔드 오리진은 여전히 트래픽을 수신할 수 있습니다.",
+ "guid": "96530f4b-ba7a-4288-aaa0-9167975de796",
+ "service": "Azure Front Door",
+ "text": "하나 이상의 백 엔드 풀에 여러 원본을 두어 중복성을 지원합니다. 항상 응용 프로그램의 중복 인스턴스를 사용하고 각 인스턴스가 끝점 또는 원본을 노출하는지 확인합니다. 이러한 원본을 하나 이상의 백 엔드 풀에 배치할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "사용하도록 설정된 상태 프로브는 상태 모니터링 패턴 구현의 일부입니다. 상태 프로브는 Azure Front Door가 요청을 처리할 수 있을 만큼 건강한 인스턴스로만 트래픽을 라우팅하도록 합니다. 자세한 내용은 상태 프로브에 대한 모범 사례를 참조하세요.",
+ "guid": "f802e2c6-ea9b-4e0d-b3d1-b7c4d0b4aa26",
+ "service": "Azure Front Door",
+ "text": "원본에서 상태 프로브를 설정합니다. 백 엔드 인스턴스를 사용할 수 있고 요청을 계속 받을 준비가 되었는지 확인하기 위해 상태 검사를 수행하도록 Azure Front Door를 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "시간 제한은 완료하는 데 예상보다 오래 걸리는 요청을 종료하여 성능 문제 및 가용성 문제를 방지하는 데 도움이 됩니다.",
+ "guid": "e1ec439d-2bc8-4e6e-b72f-1aafaa2aae58",
+ "service": "Azure Front Door",
+ "text": "백 엔드에 대한 요청 전달에 대한 시간 제한을 설정합니다. 엔드포인트의 필요에 따라 시간 제한 설정을 조정합니다. 그렇지 않으면 원본이 응답을 보내기 전에 Azure Front Door가 연결을 닫을 수 있습니다. 모든 원본의 시간 제한이 더 짧은 경우 Azure Front Door의 기본 시간 제한을 낮출 수도 있습니다. 자세한 내용은 응답하지 않는 요청 문제 해결을 참조하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "세션 어피니티(affinity), 인증(authentication), 권한 부여(authorization)로 인한 오작동을 방지하기 위해 동일한 호스트 이름을 설정합니다. 자세한 내용은 역방향 프록시와 해당 백 엔드 웹 응용 프로그램 간의 원래 HTTP 호스트 이름 유지를 참조하세요.",
+ "guid": "dd9e850c-0ce5-4ac2-8d8b-53cd21925a8d",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 및 원본에서 동일한 호스트 이름을 사용합니다. Azure Front Door는 들어오는 요청의 호스트 헤더를 다시 작성할 수 있으며, 이는 하나의 원본으로 라우팅되는 여러 사용자 지정 도메인 이름이 있는 경우에 유용합니다. 그러나 호스트 헤더를 다시 작성하면 요청 쿠키 및 URL 리디렉션에 문제가 발생할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "세션 선호도를 사용하면 사용자 세션 동안 사용자 연결이 동일한 원본에 유지됩니다. 해당 원본을 사용할 수 없게 되면 사용자 환경이 중단될 수 있습니다.",
+ "guid": "66bc38be-1613-4bf5-b10b-f130eaff5140",
+ "service": "Azure Front Door",
+ "text": "응용 프로그램에 세션 선호도가 필요한지 여부를 결정합니다. 높은 안정성 요구 사항이 있는 경우 세션 선호도를 사용하지 않도록 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "클라이언트가 애플리케이션에 너무 많은 트래픽을 보내는 것을 방지하기 위해 요청을 제한합니다. 속도 제한은 재시도 폭풍과 같은 문제를 방지하는 데 도움이 될 수 있습니다.",
+ "guid": "d9ea6be6-aed9-48ef-8774-7a10eb669286",
+ "service": "Azure Front Door",
+ "text": "WAF(웹 애플리케이션 방화벽)에 포함된 속도 제한 규칙을 활용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "기본 규칙 집합은 OWASP 상위 10개 공격 유형 및 Microsoft 위협 인텔리전스의 정보에 따라 자주 업데이트됩니다. 특수 규칙 집합은 특정 사용 사례를 감지합니다. 예를 들어, 봇 규칙은 클라이언트 IP 주소를 기반으로 봇을 양호, 불량 또는 알 수 없음으로 분류합니다. 또한 악성 봇과 알려진 IP 주소를 차단하고 호출자의 지리적 위치에 따라 트래픽을 제한합니다. 규칙 집합을 조합하여 사용하면 다양한 의도를 가진 공격을 탐지하고 차단할 수 있습니다.",
+ "guid": "56baca49-9e07-4ea8-983f-6a580cee1b4b",
+ "service": "Azure Front Door",
+ "text": "잠재적으로 악의적인 트래픽을 탐지하고 차단하는 WAF 규칙 집합을 사용하도록 설정합니다. 이 기능은 프리미엄 계층에서 사용할 수 있습니다. 다음 규칙 집합을 사용하는 것이 좋습니다. - 기본- 봇 보호- IP 제한- 지역 필터링- 속도 제한",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "거짓 긍정을 줄이고 애플리케이션에 대한 합법적인 요청을 허용합니다.",
+ "guid": "214d73c2-77e5-4000-81fb-7463d9183beb",
+ "service": "Azure Front Door",
+ "text": "관리형 규칙 집합에 대한 제외를 만듭니다. 몇 주 동안 검색 모드에서 WAF 정책을 테스트하고 배포하기 전에 가양성을 조정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS는 브라우저, Azure Front Door 및 백 엔드 원본 간의 데이터 교환이 암호화되어 변조를 방지하도록 합니다. Key Vault는 관리형 인증서 지원과 간단한 인증서 갱신 및 회전을 제공합니다.",
+ "guid": "a34600e2-cbae-4bf6-b272-377ec3232184",
+ "service": "Azure Front Door",
+ "text": "엔드투엔드 TLS, HTTP에서 HTTPS로 리디렉션 및 관리형 TLS 인증서(해당하는 경우)를 사용하도록 설정합니다. Azure Front Door에 대한 TLS 모범 사례를 검토합니다. TLS 버전 1.2를 애플리케이션과 관련된 암호와 함께 허용되는 최소 버전으로 사용합니다. Azure Front Door 관리형 인증서는 작업을 쉽게 하기 위해 기본 선택이어야 합니다. 그러나 인증서의 수명 주기를 관리하려면 Azure Front Door 사용자 지정 도메인 엔드포인트에서 사용자 고유의 인증서를 사용하고 Key Vault에 저장합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "캐싱은 Azure Front Door 인스턴스에서 원본으로의 호출 수를 줄이기 때문에 데이터 전송 비용을 최적화합니다.",
+ "guid": "18343954-6c64-4254-a1f1-95992a15a798",
+ "service": "Azure Front Door",
+ "text": "캐싱을 지원하는 엔드포인트에 대해 캐싱을 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "압축은 대역폭 소비를 줄이고 성능을 향상시킵니다.",
+ "guid": "e371af3c-0759-4e8d-ba6a-d25483643ec4",
+ "service": "Azure Front Door",
+ "text": "파일 압축을 활성화하는 것이 좋습니다. 이 구성의 경우 응용 프로그램이 압축을 지원해야 하며 캐싱을 사용하도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "라우팅 결정을 내리는 데 필요하지 않은 요청을 비활성화하여 대역폭 비용을 절약할 수 있습니다.",
+ "guid": "8d573a21-8a95-455f-9c6b-d3df3ef7b64f",
+ "service": "Azure Front Door",
+ "text": "단일 백 엔드 풀에서 상태 검사를 사용하지 않도록 설정합니다. Azure Front Door 원본 그룹에 원본이 하나만 구성된 경우 이러한 호출이 필요하지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "리디렉션을 사용하도록 설정하면 Azure Front Door는 보안 환경을 위해 HTTPS를 사용하도록 이전 프로토콜을 사용하는 클라이언트를 자동으로 리디렉션합니다.",
+ "guid": "254773ae-c7c4-4ed6-a700-e0002742f249",
+ "service": "Azure Front Door",
+ "text": "HTTP에서 HTTPS로의 리디렉션을 사용하여 이후 버전 호환성을 지원합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "수신 흐름 모니터링은 응용 프로그램 모니터링의 중요한 부분입니다. 요청을 추적하고 성능 및 보안을 개선하려고 합니다. Azure Front Door 구성을 디버그하려면 데이터가 필요합니다. 경보가 적용되면 중요한 운영 문제에 대한 즉각적인 알림을 받을 수 있습니다.",
+ "guid": "380c2642-b634-476a-9bd4-9e3bb2f718e8",
+ "service": "Azure Front Door",
+ "text": "로그 및 메트릭을 캡처합니다. 리소스 활동 로그, 액세스 로그, 상태 프로브 로그 및 WAF 로그를 포함합니다. 알림을 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Front Door 프로필의 전체적인 보기는 WAF 메트릭을 통해 트래픽 및 보안 보고서를 기반으로 개선을 추진하는 데 도움이 됩니다.",
+ "guid": "7cabd86b-d55e-4a51-9088-a9b66dd9a7bd",
+ "service": "Azure Front Door",
+ "text": "기본 제공 분석 보고서를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Front Door는 인증서를 발급하고 관리할 수 있습니다. 이 기능을 사용하면 인증서를 갱신할 필요가 없으며 유효하지 않거나 만료된 TLS 인증서로 인한 중단 위험을 최소화할 수 있습니다.",
+ "guid": "99d4c43f-e603-49ad-bf1e-47cec531a2f3",
+ "service": "Azure Front Door",
+ "text": "가능한 경우 관리형 TLS 인증서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 하위 도메인을 개별적으로 추가하거나 지정하기 위해 구성을 수정할 필요가 없습니다.",
+ "guid": "d979b485-b404-40dc-8d2a-280023a9216b",
+ "service": "Azure Front Door",
+ "text": "와일드카드 TLS 인증서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Front Door는 네트워크 에지에서 콘텐츠를 캐시하는 강력한 콘텐츠 배달 네트워크 솔루션을 제공합니다. 캐싱은 백 엔드 서버의 부하를 줄이고 네트워크를 통한 데이터 이동을 줄여 대역폭 사용을 오프로드하는 데 도움이 됩니다.",
+ "guid": "e8d431d1-8549-4d6d-a1da-ec67e7ef897e",
+ "service": "Azure Front Door",
+ "text": "캐싱을 활성화합니다. 캐싱을 위해 쿼리 문자열을 최적화할 수 있습니다. 순전히 정적인 콘텐츠의 경우 쿼리 문자열을 무시하여 캐시 사용을 최대화합니다. 응용 프로그램에서 쿼리 문자열을 사용하는 경우 캐시 키에 포함하는 것이 좋습니다. 캐시 키에 쿼리 문자열을 포함하면 Azure Front Door가 구성에 따라 캐시된 응답 또는 기타 응답을 제공할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Front Door의 압축은 최적의 형식으로 콘텐츠를 제공하고, 페이로드가 더 작고, 사용자에게 콘텐츠를 더 빠르게 제공하는 데 도움이 됩니다.",
+ "guid": "55ac8a69-b68f-4d07-a94b-65a9eecb11d3",
+ "service": "Azure Front Door",
+ "text": "다운로드 가능한 콘텐츠에 액세스할 때 파일 압축을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "'HEAD' 요청을 사용하면 전체 콘텐츠를 가져오지 않고도 상태 변경을 쿼리할 수 있습니다.",
+ "guid": "05736c21-5250-46a7-8c7a-27bbbf8190db",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door에서 상태 프로브를 구성할 때 'GET' 요청 대신 'HEAD' 요청을 사용하는 것이 좋습니다. 상태 프로브는 콘텐츠가 아닌 상태 코드만 읽습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "성능을 최적화하고 사용자 세션의 연속성을 유지하며, 특히 응용 프로그램이 로컬에서 상태 정보를 유지 관리해야 하는 경우 더욱 그렇습니다.",
+ "guid": "7dd5da03-4e98-440f-9bfa-a60428db96a0",
+ "service": "Azure Front Door",
+ "text": "동일한 사용자의 요청이 동일한 백엔드 서버로 전달되어야 하는 경우 세션 선호도를 활성화해야 하는지 여부를 평가합니다. 안정성 관점에서는 이 방법을 권장하지 않습니다. 이 옵션을 사용하면 응용 프로그램이 사용자 세션을 중단하지 않고 정상적으로 복구되어야 합니다. 또한 부하 분산에는 여러 백엔드에 트래픽을 균등하게 분산하는 유연성을 제한하기 때문에 절충안이 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Front Door Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.pt.json b/checklists-ext/azurefrontdoor_sg_checklist.pt.json
new file mode 100644
index 000000000..446fea3fe
--- /dev/null
+++ b/checklists-ext/azurefrontdoor_sg_checklist.pt.json
@@ -0,0 +1,250 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Você pode selecionar o melhor recurso de origem usando uma série de etapas de decisão e seu design. A origem selecionada atende ao tráfego dentro do intervalo de latência permitido na proporção especificada de pesos.",
+ "guid": "00d75bec-38c3-456d-86e6-42031076f429",
+ "service": "Azure Front Door",
+ "text": "Escolha um método de roteamento que dê suporte à sua estratégia de implantação. O método ponderado, que distribui o tráfego com base no coeficiente de peso configurado, oferece suporte a modelos ativos-ativos. Um valor baseado em prioridade que configura a região primária para receber todo o tráfego e enviar tráfego para a região secundária como backup oferece suporte a modelos ativo-passivo. Combine os métodos anteriores com latência para que a origem com a menor latência receba tráfego.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Várias origens dão suporte à redundância distribuindo o tráfego em várias instâncias do aplicativo. Se uma instância não estiver disponível, outras origens de back-end ainda poderão receber tráfego.",
+ "guid": "96530f4b-ba7a-4288-aaa0-9167975de796",
+ "service": "Azure Front Door",
+ "text": "Dar suporte à redundância por ter várias origens em um ou mais pools de back-end. Sempre tenha instâncias redundantes do seu aplicativo e certifique-se de que cada instância exponha um ponto de extremidade ou origem. Você pode colocar essas origens em um ou mais pools de back-end.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As investigações de integridade habilitadas fazem parte da implementação do padrão de monitoramento de integridade. As investigações de integridade garantem que o Azure Front Door roteie apenas o tráfego para instâncias íntegras o suficiente para lidar com solicitações. Para obter mais informações, consulte Práticas recomendadas em investigações de integridade.",
+ "guid": "f802e2c6-ea9b-4e0d-b3d1-b7c4d0b4aa26",
+ "service": "Azure Front Door",
+ "text": "Configure investigações de integridade na origem. Configure o Azure Front Door para realizar verificações de integridade para determinar se a instância de back-end está disponível e pronta para continuar recebendo solicitações.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os tempos limite ajudam a evitar problemas de desempenho e disponibilidade, encerrando solicitações que demoram mais do que o esperado para serem concluídas.",
+ "guid": "e1ec439d-2bc8-4e6e-b72f-1aafaa2aae58",
+ "service": "Azure Front Door",
+ "text": "Defina um tempo limite para encaminhar solicitações para o back-end. Ajuste a configuração de tempo limite de acordo com as necessidades de seus endpoints. Caso contrário, o Azure Front Door poderá fechar a conexão antes que a origem envie a resposta. Você também pode reduzir o tempo limite padrão do Azure Front Door se todas as suas origens tiverem um tempo limite mais curto. Para obter mais informações, consulte Solução de problemas de solicitações que não respondem.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Defina o mesmo nome de host para evitar mau funcionamento com afinidade, autenticação e autorização de sessão. Para obter mais informações, consulte Preservar o nome do host HTTP original entre um proxy reverso e seu aplicativo Web de back-end.",
+ "guid": "dd9e850c-0ce5-4ac2-8d8b-53cd21925a8d",
+ "service": "Azure Front Door",
+ "text": "Use o mesmo nome de host no Azure Front Door e sua origem. O Azure Front Door pode reescrever o cabeçalho do host de solicitações de entrada, o que é útil quando você tem vários nomes de domínio personalizados que roteiam para uma origem. No entanto, reescrever o cabeçalho do host pode causar problemas com cookies de solicitação e redirecionamento de URL.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Com a afinidade de sessão, as conexões do usuário permanecem na mesma origem durante a sessão do usuário. Se essa origem ficar indisponível, a experiência do usuário poderá ser interrompida.",
+ "guid": "66bc38be-1613-4bf5-b10b-f130eaff5140",
+ "service": "Azure Front Door",
+ "text": "Decida se seu aplicativo requer afinidade de sessão. Se você tiver requisitos de alta confiabilidade, recomendamos que você desabilite a afinidade de sessão.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Limite as solicitações para impedir que os clientes enviem muito tráfego para seu aplicativo. A limitação de taxa pode ajudá-lo a evitar problemas como uma tempestade de repetição.",
+ "guid": "d9ea6be6-aed9-48ef-8774-7a10eb669286",
+ "service": "Azure Front Door",
+ "text": "Aproveite as regras de limitação de taxa incluídas em um WAF (firewall de aplicativo Web).",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os conjuntos de regras padrão são atualizados com frequência com base nos 10 principais tipos de ataque do OWASP e nas informações do Microsoft Threat Intelligence. Os conjuntos de regras especializados detectam determinados casos de uso. Por exemplo, as regras de bot classificam os bots como bons, ruins ou desconhecidos com base nos endereços IP do cliente. Eles também bloqueiam bots ruins e endereços IP conhecidos e restringem o tráfego com base na localização geográfica dos chamadores. Usando uma combinação de conjuntos de regras, você pode detectar e bloquear ataques com várias intenções.",
+ "guid": "56baca49-9e07-4ea8-983f-6a580cee1b4b",
+ "service": "Azure Front Door",
+ "text": "Habilite conjuntos de regras do WAF que detectam e bloqueiam tráfego potencialmente mal-intencionado. Esse recurso está disponível na camada Premium. Recomendamos estes conjuntos de regras: - Padrão - Proteção contra bots - Restrição de IP - Filtragem geográfica - Limitação de taxa",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Reduza os falsos positivos e permita solicitações legítimas para seu aplicativo.",
+ "guid": "214d73c2-77e5-4000-81fb-7463d9183beb",
+ "service": "Azure Front Door",
+ "text": "Crie exclusões para conjuntos de regras gerenciadas. Teste uma política de WAF no modo de detecção por algumas semanas e ajuste os falsos positivos antes de implantá-la.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS garante que as trocas de dados entre o navegador, o Azure Front Door e as origens de back-end sejam criptografadas para evitar adulterações. O Key Vault oferece suporte a certificados gerenciados e renovação e rotação de certificados simples.",
+ "guid": "a34600e2-cbae-4bf6-b272-377ec3232184",
+ "service": "Azure Front Door",
+ "text": "Habilite TLS de ponta a ponta, redirecionamento de HTTP para HTTPS e certificados TLS gerenciados quando aplicável. Examine as práticas recomendadas de TLS para o Azure Front Door. Use o TLS versão 1.2 como a versão mínima permitida com cifras relevantes para seu aplicativo. Os certificados gerenciados do Azure Front Door devem ser sua opção padrão para facilitar as operações. No entanto, se você quiser gerenciar o ciclo de vida dos certificados, use seus próprios certificados nos pontos de extremidade de domínio personalizados do Azure Front Door e armazene-os no Key Vault.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O cache otimiza os custos de transferência de dados porque reduz o número de chamadas da instância do Azure Front Door para a origem.",
+ "guid": "18343954-6c64-4254-a1f1-95992a15a798",
+ "service": "Azure Front Door",
+ "text": "Use o cache para pontos de extremidade que dão suporte a ele.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A compactação reduz o consumo de largura de banda e melhora o desempenho.",
+ "guid": "e371af3c-0759-4e8d-ba6a-d25483643ec4",
+ "service": "Azure Front Door",
+ "text": "Considere habilitar a compactação de arquivos. Para essa configuração, o aplicativo deve dar suporte à compactação e o cache deve estar habilitado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode economizar nos custos de largura de banda desabilitando solicitações que não são necessárias para tomar decisões de roteamento.",
+ "guid": "8d573a21-8a95-455f-9c6b-d3df3ef7b64f",
+ "service": "Azure Front Door",
+ "text": "Desabilite as verificações de integridade em pools de back-end únicos. Se você tiver apenas uma origem configurada no grupo de origens do Azure Front Door, essas chamadas serão desnecessárias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Quando o redirecionamento está habilitado, o Azure Front Door redireciona automaticamente os clientes que estão usando o protocolo mais antigo para usar HTTPS para uma experiência segura.",
+ "guid": "254773ae-c7c4-4ed6-a700-e0002742f249",
+ "service": "Azure Front Door",
+ "text": "Use o redirecionamento HTTP para HTTPS para dar suporte à compatibilidade com versões futuras.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento do fluxo de entrada é uma parte crucial do monitoramento de um aplicativo. Você deseja rastrear solicitações e fazer melhorias de desempenho e segurança. Você precisa de dados para depurar a configuração do Azure Front Door. Com alertas em vigor, você pode receber notificações instantâneas de quaisquer problemas operacionais críticos.",
+ "guid": "380c2642-b634-476a-9bd4-9e3bb2f718e8",
+ "service": "Azure Front Door",
+ "text": "Capture logs e métricas. Inclua logs de atividades de recursos, logs de acesso, logs de investigação de integridade e logs do WAF. Configure alertas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Uma visão holística do seu perfil do Azure Front Door ajuda a impulsionar melhorias com base em relatórios de tráfego e segurança por meio de métricas do WAF.",
+ "guid": "7cabd86b-d55e-4a51-9088-a9b66dd9a7bd",
+ "service": "Azure Front Door",
+ "text": "Revise os relatórios de análise integrados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Front Door pode emitir e gerenciar certificados para você. Esse recurso elimina a necessidade de renovações de certificado e minimiza o risco de interrupção devido a um certificado TLS inválido ou expirado.",
+ "guid": "99d4c43f-e603-49ad-bf1e-47cec531a2f3",
+ "service": "Azure Front Door",
+ "text": "Use certificados TLS gerenciados quando possível.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você não precisa modificar a configuração para adicionar ou especificar cada subdomínio separadamente.",
+ "guid": "d979b485-b404-40dc-8d2a-280023a9216b",
+ "service": "Azure Front Door",
+ "text": "Use certificados TLS curinga.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Front Door oferece uma solução de rede de distribuição de conteúdo robusta que armazena em cache o conteúdo na borda da rede. O cache reduz a carga nos servidores de back-end e reduz a movimentação de dados pela rede, o que ajuda a descarregar o uso da largura de banda.",
+ "guid": "e8d431d1-8549-4d6d-a1da-ec67e7ef897e",
+ "service": "Azure Front Door",
+ "text": "Habilite o cache. Você pode otimizar cadeias de caracteres de consulta para armazenamento em cache. Para conteúdo puramente estático, ignore as cadeias de caracteres de consulta para maximizar o uso do cache. Se o aplicativo usar cadeias de caracteres de consulta, considere incluí-las na chave de cache. Incluir as cadeias de caracteres de consulta na chave de cache permite que o Azure Front Door forneça respostas armazenadas em cache ou outras respostas, com base em sua configuração.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "A compactação no Azure Front Door ajuda a fornecer conteúdo no formato ideal, tem uma carga menor e fornece conteúdo aos usuários mais rapidamente.",
+ "guid": "55ac8a69-b68f-4d07-a94b-65a9eecb11d3",
+ "service": "Azure Front Door",
+ "text": "Use a compactação de arquivos ao acessar conteúdo para download.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "As solicitações 'HEAD' permitem consultar uma alteração de estado sem buscar todo o seu conteúdo.",
+ "guid": "05736c21-5250-46a7-8c7a-27bbbf8190db",
+ "service": "Azure Front Door",
+ "text": "Ao configurar investigações de integridade no Azure Front Door, considere usar solicitações 'HEAD' em vez de solicitações 'GET'. A investigação de integridade lê apenas o código de status, não o conteúdo.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Otimize o desempenho e mantenha a continuidade das sessões do usuário, especialmente quando os aplicativos dependem da manutenção de informações de estado localmente.",
+ "guid": "7dd5da03-4e98-440f-9bfa-a60428db96a0",
+ "service": "Azure Front Door",
+ "text": "Avalie se você deve habilitar a afinidade de sessão quando as solicitações do mesmo usuário devem ser direcionadas para o mesmo servidor back-end. Do ponto de vista da confiabilidade, não recomendamos essa abordagem. Se você usar essa opção, o aplicativo deverá se recuperar normalmente sem interromper as sessões do usuário. Há também uma compensação no balanceamento de carga porque restringe a flexibilidade de distribuir o tráfego em vários back-ends uniformemente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Front Door Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurefrontdoor_sg_checklist.zh-Hant.json b/checklists-ext/azurefrontdoor_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..c765562b0
--- /dev/null
+++ b/checklists-ext/azurefrontdoor_sg_checklist.zh-Hant.json
@@ -0,0 +1,250 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "您可以通過使用一系列決策步驟和您的設計來選擇最佳的原始資源。選定的源在允許的延遲範圍內以指定的權重比率提供流量。",
+ "guid": "00d75bec-38c3-456d-86e6-42031076f429",
+ "service": "Azure Front Door",
+ "text": "選擇支援您的部署策略的路由方法。 加權方法根據配置的權重係數分配流量,支持主動-主動模型。 基於優先順序的值將主要區域配置為接收所有流量並將流量作為備份發送到次要區域,該值支持主動-被動模型。 將上述方法與延遲相結合,使延遲最低的源接收流量。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "多個源通過在應用程式的多個實例之間分配流量來支援冗餘。如果一個實例不可用,則其他後端源仍然可以接收流量。",
+ "guid": "96530f4b-ba7a-4288-aaa0-9167975de796",
+ "service": "Azure Front Door",
+ "text": "通過在一個或多個後端池中擁有多個源來支援冗餘。始終具有應用程式的冗餘實例,並確保每個實例都公開一個端點或源。您可以將這些源放置在一個或多個後端池中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "啟用的運行狀況探測是運行狀況監視模式實現的一部分。運行狀況探測可確保 Azure Front Door 僅將流量路由到運行狀況良好且足以處理請求的實例。 有關詳細資訊,請參閱有關運行狀況探測的最佳做法。",
+ "guid": "f802e2c6-ea9b-4e0d-b3d1-b7c4d0b4aa26",
+ "service": "Azure Front Door",
+ "text": "在源上設置運行狀況探測。配置 Azure Front Door 以執行運行狀況檢查,以確定後端實例是否可用並準備好繼續接收請求。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "超時通過終止完成時間超過預期時間的請求來説明防止性能問題和可用性問題。",
+ "guid": "e1ec439d-2bc8-4e6e-b72f-1aafaa2aae58",
+ "service": "Azure Front Door",
+ "text": "設置將請求轉發到後端的超時。 根據端點的需求調整超時設置。否則,Azure Front Door 可能會在源發送回應之前關閉連接。 如果所有源的超時都較短,還可以降低 Azure Front Door 的預設超時。 有關更多資訊,請參閱對無回應請求進行故障排除。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "設置相同的主機名,以防止會話親和性、身份驗證和授權出現故障。有關詳細資訊,請參閱在反向代理與其後端 Web 應用程式之間保留原始 HTTP 主機名。",
+ "guid": "dd9e850c-0ce5-4ac2-8d8b-53cd21925a8d",
+ "service": "Azure Front Door",
+ "text": "在 Azure Front Door 和源上使用相同的主機名。Azure Front Door 可以重寫傳入請求的主機標頭,這在有多個路由到一個源的自定義功能變數名稱時非常有用。但是,重寫主機標頭可能會導致請求 Cookie 和 URL 重定向問題。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過會話相關性,使用者連接在用戶會話期間保持在同一源上。如果該源不可用,用戶體驗可能會中斷。",
+ "guid": "66bc38be-1613-4bf5-b10b-f130eaff5140",
+ "service": "Azure Front Door",
+ "text": "確定應用程式是否需要會話相關性。如果您有較高的可靠性要求,我們建議您關閉會話親和性。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "限制請求以防止用戶端向您的應用程式發送過多流量。速率限制可以説明您避免重試風暴等問題。",
+ "guid": "d9ea6be6-aed9-48ef-8774-7a10eb669286",
+ "service": "Azure Front Door",
+ "text": "利用 Web 應用程式防火牆 (WAF) 附帶的速率限制規則。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "默認規則集會根據 OWASP 前 10 種攻擊類型和來自 Microsoft 威脅情報的資訊頻繁更新。 專用規則集可檢測某些用例。例如,機器人規則根據用戶端IP位址將機器人分類為好、壞或未知。它們還可以阻止惡意機器人和已知IP位址,並根據呼叫者的地理位置限制流量。 通過使用規則集的組合,您可以檢測和阻止具有各種意圖的攻擊。",
+ "guid": "56baca49-9e07-4ea8-983f-6a580cee1b4b",
+ "service": "Azure Front Door",
+ "text": "啟用WAF規則集,以檢測和阻止潛在的惡意流量。此功能在高級層上可用。我們建議設置以下規則: - 預設 - 機器人保護 - IP 限制 - 地理過濾 - 速率限制",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "減少誤報,並允許對應用程式的合法請求。",
+ "guid": "214d73c2-77e5-4000-81fb-7463d9183beb",
+ "service": "Azure Front Door",
+ "text": "為託管規則集創建排除項。 在檢測模式下測試 WAF 策略幾周,並在部署之前調整任何誤報。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 可確保對瀏覽器、Azure Front Door 和後端源之間的數據交換進行加密,以防止篡改。 Key Vault 提供託管證書支援以及簡單的證書續訂和輪換。",
+ "guid": "a34600e2-cbae-4bf6-b272-377ec3232184",
+ "service": "Azure Front Door",
+ "text": "啟用端到端 TLS、HTTP 到 HTTPS 重定向和託管 TLS 證書(如果適用)。 查看 Azure Front Door 的 TLS 最佳做法。 使用 TLS 版本 1.2 作為允許的最低版本,並使用與您的應用程式相關的密碼。 為了便於操作,Azure Front Door 託管證書應是預設選項。但是,如果要管理證書的生命週期,請在 Azure Front Door 自定義域終結點中使用自己的證書,並將其存儲在 Key Vault 中。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "緩存可優化數據傳輸成本,因為它減少了從 Azure Front Door 實例到源的調用次數。",
+ "guid": "18343954-6c64-4254-a1f1-95992a15a798",
+ "service": "Azure Front Door",
+ "text": "對支援緩存的終結點使用緩存。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "壓縮可減少頻寬消耗並提高性能。",
+ "guid": "e371af3c-0759-4e8d-ba6a-d25483643ec4",
+ "service": "Azure Front Door",
+ "text": "請考慮啟用檔壓縮。對於此配置,應用程式必須支援壓縮,並且必須啟用緩存。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以通過禁用不需要做出路由決策的請求來節省頻寬成本。",
+ "guid": "8d573a21-8a95-455f-9c6b-d3df3ef7b64f",
+ "service": "Azure Front Door",
+ "text": "在單個後端池中禁用運行狀況檢查。如果在 Azure Front Door 源組中只配置了一個源,則不需要這些調用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "啟用重定向后,Azure Front Door 會自動重定向使用舊協定的用戶端,以使用 HTTPS 提供安全體驗。",
+ "guid": "254773ae-c7c4-4ed6-a700-e0002742f249",
+ "service": "Azure Front Door",
+ "text": "使用 HTTP 到 HTTPS 重定向來支援向前相容性。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監視入口流是監視應用程式的關鍵部分。您希望跟蹤請求並進行性能和安全性改進。需要數據來調試 Azure Front Door 配置。 有了警報,您可以立即收到任何關鍵操作問題的通知。",
+ "guid": "380c2642-b634-476a-9bd4-9e3bb2f718e8",
+ "service": "Azure Front Door",
+ "text": "捕獲日誌和指標。 包括資源活動日誌、訪問日誌、運行狀況探測日誌和 WAF 日誌。設置警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Front Door 配置檔的整體視圖有助於通過WAF指標根據流量和安全報告推動改進。",
+ "guid": "7cabd86b-d55e-4a51-9088-a9b66dd9a7bd",
+ "service": "Azure Front Door",
+ "text": "查看內置分析報告。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Front Door 可以為你頒發和管理證書。此功能消除了證書續訂的需要,並最大限度地降低了由於 TLS 證書無效或過期而導致中斷的風險。",
+ "guid": "99d4c43f-e603-49ad-bf1e-47cec531a2f3",
+ "service": "Azure Front Door",
+ "text": "盡可能使用託管 TLS 證書。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您無需修改設定即可單獨添加或指定每個子域。",
+ "guid": "d979b485-b404-40dc-8d2a-280023a9216b",
+ "service": "Azure Front Door",
+ "text": "使用通配符 TLS 證書。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Front Door 提供可靠的內容分發網路解決方案,可在網路邊緣緩存內容。緩存可減少後端伺服器的負載,並減少網路上的數據移動,這有助於減輕頻寬使用負擔。",
+ "guid": "e8d431d1-8549-4d6d-a1da-ec67e7ef897e",
+ "service": "Azure Front Door",
+ "text": "啟用快取。 您可以優化查詢字串以進行快取。對於純靜態內容,請忽略查詢字串以最大限度地利用緩存。 如果應用程式使用查詢字串,請考慮將它們包含在緩存鍵中。在緩存鍵中包含查詢字串后,Azure Front Door 可以根據你的配置提供緩存的回應或其他回應。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure Front Door 中的壓縮有助於以最佳格式交付內容,具有較小的有效負載,並更快地將內容交付給使用者。",
+ "guid": "55ac8a69-b68f-4d07-a94b-65a9eecb11d3",
+ "service": "Azure Front Door",
+ "text": "在訪問可下載內容時使用檔壓縮。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "“HEAD”請求允許您查詢狀態更改,而無需獲取其全部內容。",
+ "guid": "05736c21-5250-46a7-8c7a-27bbbf8190db",
+ "service": "Azure Front Door",
+ "text": "在 Azure Front Door 中配置運行狀況探測時,請考慮使用“HEAD”請求,而不是“GET”請求。 運行狀況探測僅讀取狀態代碼,而不讀取內容。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "優化性能並保持使用者會話的連續性,尤其是當應用程式依賴於在本地維護狀態資訊時。",
+ "guid": "7dd5da03-4e98-440f-9bfa-a60428db96a0",
+ "service": "Azure Front Door",
+ "text": "評估當來自同一使用者的請求應定向到同一後端伺服器時,是否應啟用會話相關性。 從可靠性角度來看,我們不建議使用此方法。如果使用此選項,應用程式應正常恢復,而不會中斷用戶會話。 在負載均衡方面也存在權衡,因為它限制了在多個後端之間均勻分配流量的靈活性。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Front Door Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.en.json b/checklists-ext/azurekubernetesservice_sg_checklist.en.json
index 434ccb03a..cd127675e 100644
--- a/checklists-ext/azurekubernetesservice_sg_checklist.en.json
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.en.json
@@ -319,7 +319,7 @@
"text": "Cluster and workload architectures: Configure monitoring of cluster with Container insights.",
"description": "Container insights help monitor the performance of containers by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API and container logs.",
"type": "recommendation",
- "guid": "6a9671bd-a6e9-46c3-bd2e-8aecaf8f59d6"
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377"
},
{
"waf": "Operations",
@@ -343,7 +343,7 @@
"text": "Cluster architecture: Adopt a multiregion strategy by deploying AKS clusters deployed across different Azure regions to maximize availability and provide business continuity.",
"description": "Internet facing workloads should leverage Azure Front Door or Azure Traffic Manager to route traffic globally across AKS clusters.",
"type": "recommendation",
- "guid": "d0846227-0052-44a1-b340-25e6e3b9aebe"
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d"
},
{
"waf": "Operations",
@@ -412,35 +412,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -477,6 +477,6 @@
"name": "Azure Kubernetes Service Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.es.json b/checklists-ext/azurekubernetesservice_sg_checklist.es.json
new file mode 100644
index 000000000..5f6e12eeb
--- /dev/null
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.es.json
@@ -0,0 +1,482 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Permite que el programador de Kubernetes aísle lógicamente las cargas de trabajo por hardware en el nodo. A diferencia de las tolerancias, los pods sin un selector de nodos coincidentes se pueden programar en nodos etiquetados, lo que permite que se consuman los recursos no utilizados en los nodos, pero da prioridad a los pods que definen el selector de nodos coincidentes. Utilice la afinidad de nodo para obtener más flexibilidad, lo que le permite definir qué sucede si el pod no se puede hacer coincidir con un nodo.",
+ "guid": "79d7a487-b319-40ef-b55f-94c265986865",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: controle la programación de pods mediante selectores de nodos y afinidad.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Azure CNI es necesario para escenarios específicos, por ejemplo, grupos de nodos basados en Windows, requisitos de red específicos y directivas de red de Kubernetes. Consulte Kubenet frente a Azure CNI para obtener más información.",
+ "guid": "d152a74d-cb2f-4c9c-978e-0e3a07b174a5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura del clúster: garantice la selección adecuada del complemento de red en función de los requisitos de la red y el tamaño del clúster.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El Acuerdo de Nivel de Servicio de Tiempo de Actividad de AKS garantiza: - Disponibilidad del 99,95 % del punto de conexión del servidor de la API de Kubernetes para los clústeres de AKS que usan Zonas de disponibilidad de Azure, o - Disponibilidad del 99,9 % para los clústeres de AKS que no usan Zonas de disponibilidad de Azure.",
+ "guid": "99cc0fc7-138a-452f-a4dd-fd79daa5049e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: use el Acuerdo de Nivel de Servicio de tiempo de actividad de AKS para clústeres de nivel de producción.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Container Insights ayuda a supervisar el estado y el rendimiento de los controladores, nodos y contenedores que están disponibles en Kubernetes a través de la API de métricas. La integración con Prometheus permite la recopilación de métricas de aplicaciones y cargas de trabajo.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Al distribuir los grupos de nodos en varias zonas, los nodos de un grupo de nodos seguirán ejecutándose incluso si otra zona ha dejado de funcionar. Si existen requisitos de colocalidad, se puede usar una implementación de AKS normal basada en VMSS en una sola zona o grupos de selección de ubicación por proximidad para minimizar la latencia de los entrenudos.",
+ "guid": "29400c1f-e4ff-4ab5-89ff-be93d51d5fa8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use zonas de disponibilidad para maximizar la resistencia dentro de una región de Azure mediante la distribución de nodos de agente de AKS en centros de datos físicamente independientes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las cargas de trabajo orientadas a Internet deben aprovechar Azure Front Door o Azure Traffic Manager para enrutar el tráfico globalmente a través de clústeres de AKS.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: adopte una estrategia multirregional mediante la implementación de clústeres de AKS implementados en diferentes regiones de Azure para maximizar la disponibilidad y proporcionar continuidad empresarial.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los límites de recursos de memoria y CPU del contenedor son necesarios para evitar el agotamiento de recursos en el clúster de Kubernetes.",
+ "guid": "f230e754-6818-4428-b2ad-7ad543723f80",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: defina las solicitudes y los límites de recursos de pod en los manifiestos de implementación de aplicaciones y aplíquelos con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los grupos de nodos del sistema requieren una SKU de máquina virtual de al menos 2 vCPU y 4 GB de memoria, pero se recomiendan 4 vCPU o más. Sistema de referencia y grupos de nodos de usuario para requisitos detallados.",
+ "guid": "f51b6cdd-3914-4e11-a8e8-f2cf61788e84",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: mantenga el grupo de nodos del sistema aislado de las cargas de trabajo de las aplicaciones.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las aplicaciones pueden compartir la misma configuración y necesitar máquinas virtuales habilitadas para GPU, máquinas virtuales optimizadas para CPU o memoria, o la capacidad de escalar a cero. Evite un gran número de grupos de nodos para reducir la sobrecarga de administración adicional.",
+ "guid": "e303e4a0-0b81-47bd-bd44-bede44825fa2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: separe las aplicaciones en grupos de nodos dedicados en función de requisitos específicos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para evitar problemas de confiabilidad con las limitaciones de Azure Load Balancer con un alto tráfico de salida simultáneo, utilice una puerta de enlace NAT en su lugar para admitir el tráfico de salida confiable a escala.",
+ "guid": "ff84fa04-ee66-4605-85f3-803dd2cab3c4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: utilice una puerta de enlace NAT para clústeres que ejecutan cargas de trabajo que realizan muchas conexiones salientes simultáneas.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El uso de Microsoft Entra ID centraliza el componente de administración de identidades. Cualquier cambio en el estado de la cuenta de usuario o del grupo se actualiza automáticamente en el acceso al clúster de AKS. Los desarrolladores y propietarios de aplicaciones de su clúster de Kubernetes necesitan acceso a diferentes recursos.",
+ "guid": "03a24546-1e4a-46d6-ad0c-63e80d157b51",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use la integración de Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "AKS y Microsoft Entra ID habilitan la autenticación con Azure Container Registry sin el uso de secretos 'imagePullSecrets'. Para obtener más información, consulte Autenticación con Azure Container Registry desde Azure Kubernetes Service.",
+ "guid": "dc50fb2f-f5e9-4ea2-a1b8-36fbf1e1bec4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: autentique con el identificador de Microsoft Entra en Azure Container Registry.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "De forma predeterminada, el tráfico de red entre los grupos de nodos y el servidor de API viaja por la red troncal de Microsoft; mediante el uso de un clúster privado, puede asegurarse de que el tráfico de red al servidor de API permanezca solo en la red privada.",
+ "guid": "3d11d647-363f-469c-bea9-9ef27a9bee70",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: proteja el tráfico de red al servidor de API con un clúster de AKS privado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al utilizar clústeres públicos, aún puede limitar el tráfico que puede llegar al servidor de API de clústeres mediante la característica de rango de IP autorizado. Incluya orígenes como las direcciones IP públicas de los agentes de compilación de implementación, la administración de operaciones y el punto de salida de los grupos de nodos (como Azure Firewall).",
+ "guid": "0418c965-c483-41bc-933c-9289108b8ad0",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: en el caso de los clústeres de AKS no privados, use intervalos IP autorizados por el servidor de API.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteger el acceso al servidor de API de Kubernetes es una de las cosas más importantes que puede hacer para proteger su clúster. Integre el control de acceso basado en roles (RBAC) de Kubernetes con el ID de Microsoft Entra para controlar el acceso al servidor de API. Deshabilite las cuentas locales para aplicar todo el acceso al clúster mediante identidades basadas en el identificador de Microsoft Entra.",
+ "guid": "951727b0-fd7b-4d09-8ae6-384f8441c234",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: proteja el servidor de API con Microsoft Entra RBAC.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteja y controle el tráfico de red entre los pods de un clúster.",
+ "guid": "68a66542-3c31-43c4-8a16-a05ab2a4df5f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use directivas de red de Azure o Calico.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Azure Policy puede ayudar a aplicar la aplicación y las protecciones a gran escala en los clústeres de forma centralizada y coherente. También puede controlar qué funciones se otorgan a los pods y si algo se está ejecutando en contra de la política de la empresa.",
+ "guid": "c99d155b-6a13-4f61-8672-356b1ed3a922",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: proteja clústeres y pods con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Limite el acceso a las acciones que pueden realizar los contenedores. Proporcione el menor número de permisos y evite el uso de la raíz o la escalada con privilegios.",
+ "guid": "43384eb1-7b95-44aa-9c60-e09652b18521",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: acceso seguro de los contenedores a los recursos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Para examinar el tráfico entrante en busca de posibles ataques, use un firewall de aplicaciones web como Azure Web Application Firewall (WAF) en Azure Application Gateway o Azure Front Door.",
+ "guid": "ae6a3199-847d-4901-bad1-63be20d584b8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice un firewall de aplicaciones web para proteger el tráfico HTTP(S).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Asegúrese de que el tráfico de salida del clúster pasa a través de un punto de seguridad de red, como Azure Firewall o un proxy HTTP.",
+ "guid": "d67db716-6569-4a40-b18f-01052c02399f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: controle el tráfico de salida del clúster.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteja y rote secretos, certificados y cadenas de conexión en Azure Key Vault con cifrado seguro. Proporciona un registro de auditoría de acceso y mantiene los secretos principales fuera de la canalización de implementación.",
+ "guid": "bc5240f0-9c6d-469e-bf71-9f8d4bf18c29",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use el identificador de carga de trabajo de Microsoft Entra de código abierto y el controlador CSI del almacén de secretos con Azure Key Vault.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Supervise y mantenga la seguridad de sus clústeres, contenedores y sus aplicaciones.",
+ "guid": "2ac2d30a-a96a-4d14-b63d-7e2e3147ea9e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use Microsoft Defender para contenedores.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Hacer coincidir su selección con las demandas de su carga de trabajo garantiza que no pague por recursos innecesarios.",
+ "guid": "93a3ae7a-6f04-471b-bb3f-5eb4e6664c5b",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: alinee la selección de SKU y el tamaño del disco administrado con los requisitos de la carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La selección del tipo de instancia de máquina virtual correcto es fundamental, ya que afecta directamente al costo de ejecutar aplicaciones en AKS. La elección de una instancia de alto rendimiento sin una utilización adecuada puede generar un gasto innecesario, mientras que la elección de una instancia potente puede provocar problemas de rendimiento y un mayor tiempo de inactividad. Para determinar el tipo de instancia de máquina virtual adecuado, tenga en cuenta las características de la carga de trabajo, los requisitos de recursos y las necesidades de disponibilidad.",
+ "guid": "f16a2684-c225-4fd5-8202-8ea1db7f18e7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione el tipo de instancia de máquina virtual adecuado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "AKS admite la creación de nodos de agente ARM64 de Ubuntu, así como una combinación de nodos de arquitectura Intel y ARM dentro de un clúster que puede ofrecer un mejor rendimiento a un costo menor.",
+ "guid": "f0572fdc-24e3-4e6c-8c90-0ba85cc6f52a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione máquinas virtuales en función de la arquitectura de Arm.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las máquinas virtuales de acceso puntual le permiten aprovechar la capacidad de Azure no utilizada con importantes descuentos (hasta un 90 % en comparación con los precios de pago por uso). Si Azure necesita recuperar capacidad, la infraestructura de Azure expulsa los nodos de acceso puntual.",
+ "guid": "15372689-94ad-4247-a157-fde418217ce4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione Azure Spot Virtual Machines.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Debido a muchos factores, el costo de los recursos varía según la región de Azure. Evalúe el costo, la latencia y los requisitos de cumplimiento para asegurarse de que está ejecutando su carga de trabajo de manera rentable y que no afecta a sus usuarios finales ni genera cargos de red adicionales.",
+ "guid": "41a6e1ef-d63a-4e26-842f-1a0cde3abaa6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione la región adecuada.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La optimización de las imágenes ayuda a reducir los costos, ya que los nuevos nodos necesitan descargar estas imágenes. Cree imágenes de una manera que permita que el contenedor se inicie lo antes posible para ayudar a evitar errores de solicitud de usuario o tiempos de espera mientras se inicia la aplicación, lo que podría provocar un sobreaprovisionamiento.",
+ "guid": "e689c267-1eaa-444d-806e-c5a0735658de",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: Mantenga imágenes pequeñas y optimizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Reducir verticalmente automáticamente el número de nodos del clúster de AKS permite ejecutar un clúster eficaz cuando la demanda es baja y escalar verticalmente cuando la demanda vuelve.",
+ "guid": "e770ea75-690d-4dc0-a0e4-43c17b6bb56f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el escalador automático de clústeres para reducir automáticamente el número de nodos de agente en respuesta al exceso de capacidad de recursos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El aprovisionamiento automático de nodos simplifica el proceso de selección de SKU y decide, en función de los requisitos de recursos de pod pendientes, la configuración óptima de la máquina virtual para ejecutar cargas de trabajo de la manera más eficiente y rentable.",
+ "guid": "9994ccff-d3d4-46e3-92cb-d04231859e20",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el aprovisionamiento automático de nodos para automatizar la selección de SKU de máquina virtual.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Ajuste el número de pods de una implementación en función de la utilización de la CPU u otras métricas seleccionadas, que admitan operaciones de reducción horizontal de clústeres.",
+ "guid": "1321c176-e53a-4451-91cf-e4e50c637d07",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: usa el escalador automático de pods horizontal.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Ajusta el tamaño de tus pods y establece dinámicamente solicitudes y límites en función del uso histórico.",
+ "guid": "554e18fe-b835-4e78-8d27-6f49999855ad",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use el escalador automático de pods vertical (versión preliminar).",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Escala en función del número de eventos que se están procesando. Elija entre un amplio catálogo de 50+ escaladores KEDA.",
+ "guid": "fe15f362-a48d-4a25-aa3e-7938b3d1f5e2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use el escalado automático basado en eventos (KEDA) de Kubernetes.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La base para permitir la optimización de costos es la difusión de un clúster de ahorro de costos. Un enfoque de operaciones financieras (FinOps) se utiliza a menudo para ayudar a las organizaciones a reducir los costos de la nube. Se trata de una práctica que implica la colaboración entre los equipos de finanzas, operaciones e ingeniería para impulsar la alineación de los objetivos de ahorro de costes y aportar transparencia a los costes de la nube.",
+ "guid": "d0ed8b85-2072-4952-a00c-697135e435a2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: adopte una disciplina financiera y una práctica cultural en la nube para impulsar la propiedad del uso de la nube.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Si planeó correctamente la capacidad, la carga de trabajo es predecible y existe durante un período de tiempo prolongado, regístrese para obtener una reserva de Azure o un plan de ahorro para reducir aún más los costos de recursos.",
+ "guid": "9d4b8d27-c793-4862-94c8-c2505205f07f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: regístrese en Azure Reservations o Azure Savings Plan.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La ayuda de Container Insights proporciona información procesable sobre los recursos inactivos y no asignados de los clústeres. Container Insights también admite la recopilación de métricas de Prometheus y se integra con Azure Managed Grafana para obtener una vista holística de la aplicación y la infraestructura.",
+ "guid": "f4113186-82e7-495e-90e8-0da553de3039",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La extensión de clúster de análisis de costos le permite obtener información detallada sobre los costos asociados con varios recursos de Kubernetes en sus clústeres o espacios de nombres.",
+ "guid": "43cae555-15bd-4cd7-90b9-905d40528506",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: configure el complemento Análisis de costos de AKS.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Para compilar y ejecutar aplicaciones correctamente en AKS, hay que comprender e implementar consideraciones clave. Estas áreas incluyen funciones de multitenencia y programador, seguridad de clústeres y pods, o continuidad del negocio y recuperación ante desastres.",
+ "guid": "4ea51e35-26bb-4a2b-a7ca-435eb6d857b9",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: revise la documentación de procedimientos recomendados de AKS.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Chaos Studio puede ayudar a simular errores y desencadenar situaciones de recuperación ante desastres.",
+ "guid": "d38b720a-0b27-409f-9dfa-28f698067a19",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: revise Azure Chaos Studio.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Container Insights ayuda a supervisar el rendimiento de los contenedores mediante la recopilación de métricas de memoria y procesador de controladores, nodos y contenedores que están disponibles en Kubernetes a través de la API de métricas y los registros de contenedores.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Configure Application Insights para la supervisión basada en código de las aplicaciones que se ejecutan en un clúster de AKS.",
+ "guid": "b7c8f991-0c99-4f2e-8ed9-1b0bcffc2b42",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de cargas de trabajo: supervise el rendimiento de las aplicaciones con Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Container Insights, que forman parte de Azure Monitor, proporciona una experiencia de incorporación fluida para recopilar métricas de Prometheus. Consulte Configurar el raspado de métricas de Prometheus para obtener más información.",
+ "guid": "959a2059-d560-4f51-8f9a-c68b0a595beb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: configure el raspado de métricas de Prometheus con Container Insights.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las cargas de trabajo orientadas a Internet deben aprovechar Azure Front Door o Azure Traffic Manager para enrutar el tráfico globalmente a través de clústeres de AKS.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: adopte una estrategia multirregional mediante la implementación de clústeres de AKS implementados en diferentes regiones de Azure para maximizar la disponibilidad y proporcionar continuidad empresarial.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Policy puede ayudar a aplicar la aplicación y las protecciones a gran escala en los clústeres de forma centralizada y coherente. También puede controlar qué funciones se otorgan a los pods y si algo se está ejecutando en contra de la política de la empresa.",
+ "guid": "4fa55d17-b08b-4885-8d5b-d8cfbe3eda59",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: ponga en funcionamiento los estándares de configuración de clústeres y pods con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Kubernetes y los controladores de entrada admiten muchos patrones de implementación avanzados para su inclusión en el proceso de ingeniería de versiones. Tenga en cuenta patrones como las implementaciones azul-verde o las versiones canary.",
+ "guid": "40bf5a02-ca6a-410d-9b6a-87fe75ff0873",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice las capacidades de la plataforma en su proceso de ingeniería de versiones.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Automatice sus áreas de diseño de misión crítica, incluidas la implementación y las pruebas.",
+ "guid": "dec76a46-6005-4c3e-ac2c-70b7214a28ba",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: para cargas de trabajo críticas, utilice implementaciones azul/verde a nivel de sello.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Después de formalizar el plan de capacidad, debe actualizarse con frecuencia mediante la observación continua de la utilización de recursos del clúster.",
+ "guid": "9f2cef22-f674-4702-a57a-5dcf90bf9143",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: desarrolle un plan de capacidad detallado y revíselo y reviselo continuamente.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La capacidad de escalar o reducir verticalmente automáticamente el número de nodos del clúster de AKS permite ejecutar un clúster eficaz y rentable.",
+ "guid": "d50d653b-0d8d-44ca-8ba6-9963321d1f24",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el escalador automático de clústeres para ajustar automáticamente el número de nodos de agente en respuesta a las restricciones de recursos.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "A diferencia de los grupos de nodos del sistema que siempre requieren nodos en ejecución, los grupos de nodos de usuario permiten escalar o reducir verticalmente.",
+ "guid": "cd14e737-9478-4fb4-9556-586b03d5e248",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: separe las cargas de trabajo en diferentes grupos de nodos y considere la posibilidad de escalar los grupos de nodos de usuario.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Ayuda a controlar el equilibrio de los recursos para las cargas de trabajo que los requieren.",
+ "guid": "e452f566-2a10-4119-a802-aeab44201971",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use las características del programador avanzado de AKS.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "No todas las decisiones de escala se pueden derivar de las métricas de CPU o memoria. A menudo, las consideraciones de escala provendrán de puntos de datos más complejos o incluso externos. Utilice KEDA para crear un conjunto de reglas de escalado automático significativo basado en señales específicas de su carga de trabajo.",
+ "guid": "43df6223-dfca-447d-9b00-f4742ef18be1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice métricas significativas de escalado de carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Kubernetes Service Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.ja.json b/checklists-ext/azurekubernetesservice_sg_checklist.ja.json
new file mode 100644
index 000000000..c29f007a8
--- /dev/null
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.ja.json
@@ -0,0 +1,482 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Kubernetes スケジューラがノード内のハードウェアによってワークロードを論理的に分離できるようにします。容認とは異なり、一致するノードセレクターのないPodは、ラベル付きノードでスケジュールできるため、ノード上の未使用のリソースを消費できますが、一致するノードセレクターを定義するPodが優先されます。ノード アフィニティを使用すると、柔軟性が向上し、ポッドがノードと一致しない場合に何が起こるかを定義できます。",
+ "guid": "79d7a487-b319-40ef-b55f-94c265986865",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ノードセレクターとアフィニティーを使用してポッドのスケジューリングを制御します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure CNI は、Windows ベースのノード プール、特定のネットワーク要件、Kubernetes ネットワーク ポリシーなど、特定のシナリオに必要です。詳細については、「Kubenet と Azure CNI」を参照してください。",
+ "guid": "d152a74d-cb2f-4c9c-978e-0e3a07b174a5",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: ネットワーク要件とクラスターのサイズに基づいて、ネットワークプラグインを適切に選択していることを確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "AKS アップタイム SLA では、Azure Availability Zones を使用する AKS クラスターの Kubernetes API サーバー エンドポイントの \"99.95%\" の可用性、または Azure Availability Zones を使用しない AKS クラスターの \"99.9%\" の可用性が保証されます。",
+ "guid": "99cc0fc7-138a-452f-a4dd-fd79daa5049e",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 運用グレードのクラスターには、AKS アップタイム SLA を使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテナの分析情報は、Metrics API を介して Kubernetes で使用できるコントローラー、ノード、およびコンテナの正常性とパフォーマンスを監視するのに役立ちます。Prometheus との統合により、アプリケーションとワークロードのメトリクスを収集できます。",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ノードプールを複数のゾーンに分散させることで、1つのノードプール内のノードは、別のゾーンがダウンしても実行を続けます。コローカリティ要件が存在する場合は、1 つのゾーンへの通常の VMSS ベースの AKS デプロイまたは近接配置グループを使用して、ノード間の待機時間を最小限に抑えることができます。",
+ "guid": "29400c1f-e4ff-4ab5-89ff-be93d51d5fa8",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 可用性ゾーンを使用して、AKS エージェント ノードを物理的に分離されたデータ センターに分散することで、Azure リージョン内の回復性を最大化します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "インターネットに接続するワークロードでは、Azure Front Door または Azure Traffic Manager を利用して、AKS クラスター間でトラフィックをグローバルにルーティングする必要があります。",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 異なる Azure リージョンにデプロイされた AKS クラスターをデプロイすることで、マルチリージョン戦略を採用して、可用性を最大化し、ビジネス継続性を提供します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテナの CPU とメモリのリソース制限は、Kubernetes クラスタのリソース枯渇を防ぐために必要です。",
+ "guid": "f230e754-6818-4428-b2ad-7ad543723f80",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ポッド リソースの要求と制限をアプリケーションのデプロイ マニフェストで定義し、Azure Policy を使用して適用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "システム ノード プールには、少なくとも 2 つの vCPU と 4 GB のメモリの VM SKU が必要ですが、4 つ以上の vCPU をお勧めします。詳細な要件については、システムおよびユーザーノードプールを参照してください。",
+ "guid": "f51b6cdd-3914-4e11-a8e8-f2cf61788e84",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: システム ノード プールをアプリケーション ワークロードから分離します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションは同じ構成を共有し、GPU 対応 VM、CPU またはメモリ最適化 VM、またはゼロへのスケーリング機能が必要な場合があります。ノードプールの数が多くならないようにして、余分な管理オーバーヘッドを削減します。",
+ "guid": "e303e4a0-0b81-47bd-bd44-bede44825fa2",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 特定の要件に基づいて、アプリケーションを専用のノード プールに分離します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Load Balancer の制限による信頼性の問題を回避するために、同時送信トラフィックが多い場合は、代わりに NAT ゲートウェイを使用して、信頼性の高いエグレス トラフィックを大規模にサポートします。",
+ "guid": "ff84fa04-ee66-4605-85f3-803dd2cab3c4",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: NAT ゲートウェイは、多数の同時送信接続を行うワークロードを実行するクラスターに使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Microsoft Entra ID を使用すると、ID 管理コンポーネントが一元化されます。ユーザー アカウントまたはグループの状態を変更すると、AKS クラスターへのアクセスで自動的に更新されます。Kubernetes クラスターの開発者とアプリケーション所有者は、さまざまなリソースにアクセスする必要があります。",
+ "guid": "03a24546-1e4a-46d6-ad0c-63e80d157b51",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Entra 統合を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "AKS と Microsoft Entra ID を使用すると、'imagePullSecrets' シークレットを使用せずに Azure Container Registry による認証が可能になります。詳細については、「Azure Kubernetes Service から Azure Container Registry を使用した認証」を参照してください。",
+ "guid": "dc50fb2f-f5e9-4ea2-a1b8-36fbf1e1bec4",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Entra ID を使用して Azure Container Registry に認証します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "デフォルトでは、ノード プールと API サーバー間のネットワーク トラフィックは、Microsoft のバックボーン ネットワークを移動します。プライベートクラスターを使用すると、API サーバーへのネットワークトラフィックがプライベートネットワーク上にのみ留まるようにすることができます。",
+ "guid": "3d11d647-363f-469c-bea9-9ef27a9bee70",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: プライベート AKS クラスターを使用して、API サーバーへのネットワーク トラフィックをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "公開クラスターを使用する場合でも、許可された IP 範囲機能を使用して、クラスター API サーバーに到達できるトラフィックを制限できます。デプロイ ビルド エージェントのパブリック IP、運用管理、ノード プールのエグレス ポイント (Azure Firewall など) などのソースを含めます。",
+ "guid": "0418c965-c483-41bc-933c-9289108b8ad0",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: プライベートでない AKS クラスターの場合は、API サーバーによって承認された IP 範囲を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Kubernetes APIサーバーへのアクセスを保護することは、クラスターを保護するために実行できる最も重要なことの1つです。Kubernetes のロールベースのアクセス制御 (RBAC) を Microsoft Entra ID と統合して、API サーバーへのアクセスを制御します。ローカル アカウントを無効にして、Microsoft Entra ID ベースの ID を使用してすべてのクラスター アクセスを強制します。",
+ "guid": "951727b0-fd7b-4d09-8ae6-384f8441c234",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Microsoft Entra RBAC を使用して API サーバーを保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスター内のポッド間のネットワーク トラフィックを保護および制御します。",
+ "guid": "68a66542-3c31-43c4-8a16-a05ab2a4df5f",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure ネットワーク ポリシーまたは Calico を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Policy は、一元化された一貫した方法で、クラスターに大規模な適用と保護を適用するのに役立ちます。また、ポッドに付与される機能や、会社のポリシーに対して実行されているものがあるかどうかも制御できます。",
+ "guid": "c99d155b-6a13-4f61-8672-356b1ed3a922",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Policy を使用してクラスターとポッドをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "コンテナが実行できるアクションへのアクセスを制限します。最小限の権限を付与し、ルートまたは特権エスカレーションの使用を避けます。",
+ "guid": "43384eb1-7b95-44aa-9c60-e09652b18521",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: リソースへのコンテナー アクセスをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "受信トラフィックをスキャンして潜在的な攻撃を検出するには、Azure Application Gateway または Azure Front Door 上の Azure Web Application Firewall (WAF) などの Web アプリケーション ファイアウォールを使用します。",
+ "guid": "ae6a3199-847d-4901-bad1-63be20d584b8",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Web Application Firewall を使用して HTTP(S) トラフィックをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスターの送信トラフィックが、Azure Firewall や HTTP プロキシなどのネットワーク セキュリティ ポイントを通過していることを確認します。",
+ "guid": "d67db716-6569-4a40-b18f-01052c02399f",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: クラスターのエグレス トラフィックを制御します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Key Vault のシークレット、証明書、接続文字列を強力な暗号化で保護し、ローテーションします。アクセス監査ログを提供し、コアシークレットをデプロイメントパイプラインから保持します。",
+ "guid": "bc5240f0-9c6d-469e-bf71-9f8d4bf18c29",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: オープンソースの Microsoft Entra ワークロード ID とシークレット ストア CSI ドライバーを Azure Key Vault と共に使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスター、コンテナ、およびそれらのアプリケーションのセキュリティを監視および維持します。",
+ "guid": "2ac2d30a-a96a-4d14-b63d-7e2e3147ea9e",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Defender for Containers を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ワークロードの要求に合わせて選択することで、不要なリソースにお金を払う必要がなくなります。",
+ "guid": "93a3ae7a-6f04-471b-bb3f-5eb4e6664c5b",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: SKU の選択とマネージド ディスクのサイズをワークロードの要件に合わせて調整します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "適切な仮想マシン インスタンスの種類を選択することは、AKS でアプリケーションを実行するコストに直接影響するため、非常に重要です。適切な使用率を欠いて高パフォーマンスのインスタンスを選択すると、無駄な支出につながる可能性があり、強力なインスタンスを選択すると、パフォーマンスの問題やダウンタイムの増加につながる可能性があります。適切な仮想マシンインスタンスタイプを決定するには、ワークロードの特性、リソース要件、および可用性のニーズを考慮します。",
+ "guid": "f16a2684-c225-4fd5-8202-8ea1db7f18e7",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 適切な仮想マシン インスタンスの種類を選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "AKS では、ARM64 Ubuntu エージェント ノードの作成と、クラスター内の Intel アーキテクチャと ARM アーキテクチャ ノードの組み合わせの作成がサポートされており、低コストでパフォーマンスを向上させることができます。",
+ "guid": "f0572fdc-24e3-4e6c-8c90-0ba85cc6f52a",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Arm アーキテクチャに基づいて仮想マシンを選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スポット VM を使用すると、未使用の Azure 容量を大幅な割引 (従量課金制と比較して最大 90%) で利用できます。Azure で容量を戻す必要がある場合、Azure インフラストラクチャはスポット ノードを削除します。",
+ "guid": "15372689-94ad-4247-a157-fde418217ce4",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: [Azure Spot Virtual Machines] を選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "多くの要因により、リソースのコストは Azure のリージョンごとに異なります。コスト、レイテンシ、コンプライアンスの要件を評価して、ワークロードをコスト効率よく実行し、エンドユーザーに影響を与えたり、追加のネットワーク料金が発生したりしないようにします。",
+ "guid": "41a6e1ef-d63a-4e26-842f-1a0cde3abaa6",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 適切なリージョンを選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "イメージを合理化すると、新しいノードがこれらのイメージをダウンロードする必要があるため、コストを削減できます。コンテナをできるだけ早く起動できるようにイメージをビルドすると、アプリケーションの起動中にユーザーリクエストの失敗やタイムアウトが発生し、オーバープロビジョニングにつながる可能性を回避できます。",
+ "guid": "e689c267-1eaa-444d-806e-c5a0735658de",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: 小さく最適化されたイメージを維持します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "AKS クラスター内のノード数を自動的にスケールダウンすると、需要が少ないときに効率的なクラスターを実行し、需要が戻ったときにスケールアップできます。",
+ "guid": "e770ea75-690d-4dc0-a0e4-43c17b6bb56f",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Cluster Autoscaler を有効にして、過剰なリソース容量に対応してエージェント ノードの数を自動的に減らします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ノード自動プロビジョニングは、SKU の選択プロセスを簡素化し、保留中のポッド リソース要件に基づいて、最も効率的でコスト効率の高い方法でワークロードを実行するための最適な VM 構成を決定します。",
+ "guid": "9994ccff-d3d4-46e3-92cb-d04231859e20",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: ノードの自動プロビジョニングを有効にして、VM SKU の選択を自動化します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "デプロイ内のポッドの数は、CPU 使用率やその他の選択メトリクス (クラスターのスケールイン操作をサポートする) に応じて調整します。",
+ "guid": "1321c176-e53a-4451-91cf-e4e50c637d07",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Horizontal Pod Autoscaler を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ポッドのサイズを適正化し、過去の使用状況に基づいてリクエストと制限を動的に設定します。",
+ "guid": "554e18fe-b835-4e78-8d27-6f49999855ad",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Vertical Pod Autoscaler (プレビュー) を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "処理中のイベントの数に基づいてスケーリングします。50+ KEDAスケーラーの豊富なカタログからお選びください。",
+ "guid": "fe15f362-a48d-4a25-aa3e-7938b3d1f5e2",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Kubernetes イベント駆動型自動スケーリング (KEDA) を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コスト最適化を可能にするための基盤は、コスト削減クラスターの普及です。財務運用アプローチ(FinOps)は、組織がクラウドのコストを削減するためによく使用されます。これは、財務、運用、エンジニアリングの各チームが協力して、コスト削減目標の調整を推進し、クラウドコストに透明性をもたらすための手法です。",
+ "guid": "d0ed8b85-2072-4952-a00c-697135e435a2",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: クラウドの財務規律と文化的な実践を採用して、クラウドの使用の所有権を促進します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "容量を適切に計画し、ワークロードが予測可能で、長期間存在する場合は、Azure 予約または節約プランにサインアップして、リソース コストをさらに削減します。",
+ "guid": "9d4b8d27-c793-4862-94c8-c2505205f07f",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Reservations または Azure Savings Plan にサインアップします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Container insights は、クラスターのアイドル状態と未割り当てのリソースに関する実用的な分析情報を提供します。Container insights は、Prometheus メトリックの収集もサポートし、Azure Managed Grafana と統合して、アプリケーションとインフラストラクチャの全体像を把握します。",
+ "guid": "f4113186-82e7-495e-90e8-0da553de3039",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コスト分析クラスター拡張機能を使用すると、クラスターまたは名前空間内のさまざまな Kubernetes リソースに関連するコストに関する詳細な分析情報を取得できます。",
+ "guid": "43cae555-15bd-4cd7-90b9-905d40528506",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: AKS Cost Analysis アドオンを構成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "AKS でアプリケーションを正常にビルドして実行するには、理解して実装する必要がある重要な考慮事項があります。これらの領域には、マルチテナンシーとスケジューラ機能、クラスタとポッドのセキュリティ、またはビジネス継続性とディザスタリカバリが含まれます。",
+ "guid": "4ea51e35-26bb-4a2b-a7ca-435eb6d857b9",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: AKS のベスト プラクティスに関するドキュメントを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Chaos Studio は、障害をシミュレートし、ディザスター リカバリー状況をトリガーするのに役立ちます。",
+ "guid": "d38b720a-0b27-409f-9dfa-28f698067a19",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Azure Chaos Studio を確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Container insights は、Metrics API とコンテナ ログを通じて Kubernetes で使用可能なコントローラー、ノード、およびコンテナからメモリとプロセッサのメトリクスを収集することで、コンテナのパフォーマンスを監視するのに役立ちます。",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "AKS クラスターで実行されているアプリケーションのコードベースの監視のために Application Insights を構成します。",
+ "guid": "b7c8f991-0c99-4f2e-8ed9-1b0bcffc2b42",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Azure Monitor を使用してアプリケーションのパフォーマンスを監視します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Monitor の一部であるコンテナー分析情報は、Prometheus メトリックを収集するためのシームレスなオンボード エクスペリエンスを提供します。詳細については、「Prometheus メトリックのスクレイピングの設定」を参照してください。",
+ "guid": "959a2059-d560-4f51-8f9a-c68b0a595beb",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Container insights を使用して Prometheus メトリックのスクレイピングを構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "インターネットに接続するワークロードでは、Azure Front Door または Azure Traffic Manager を利用して、AKS クラスター間でトラフィックをグローバルにルーティングする必要があります。",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 異なる Azure リージョンにデプロイされた AKS クラスターをデプロイすることで、マルチリージョン戦略を採用して、可用性を最大化し、ビジネス継続性を提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Policy は、一元化された一貫した方法で、クラスターに大規模な適用と保護を適用するのに役立ちます。また、ポッドに付与される機能や、会社のポリシーに対して実行されているものがあるかどうかも制御できます。",
+ "guid": "4fa55d17-b08b-4885-8d5b-d8cfbe3eda59",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Policy を使用して、クラスターとポッドの構成標準を運用可能にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "KubernetesとIngressコントローラーは、リリースエンジニアリングプロセスに含めるための多くの高度なデプロイパターンをサポートしています。ブルーグリーンデプロイやカナリアリリースなどのパターンを考えてみましょう。",
+ "guid": "40bf5a02-ca6a-410d-9b6a-87fe75ff0873",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: リリースエンジニアリングプロセスでプラットフォーム機能を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "デプロイメントやテストなど、ミッションクリティカルな設計領域を自動化します。",
+ "guid": "dec76a46-6005-4c3e-ac2c-70b7214a28ba",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ミッションクリティカルなワークロードの場合は、スタンプレベルのブルー/グリーンデプロイを使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "容量計画を形式化した後は、クラスターのリソース使用率を継続的に観察して、容量計画を頻繁に更新する必要があります。",
+ "guid": "9f2cef22-f674-4702-a57a-5dcf90bf9143",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 詳細な容量計画を作成し、継続的に見直して改訂します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "AKS クラスター内のノード数を自動的にスケールアップまたはスケールダウンする機能により、効率的でコスト効率の高いクラスターを実行できます。",
+ "guid": "d50d653b-0d8d-44ca-8ba6-9963321d1f24",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: クラスター オートスケーラーを有効にして、リソースの制約に応じてエージェント ノードの数を自動的に調整します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "常に実行中のノードを必要とするシステムノードプールとは異なり、ユーザーノードプールではスケールアップまたはスケールダウンできます。",
+ "guid": "cd14e737-9478-4fb4-9556-586b03d5e248",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ワークロードを異なるノードプールに分割し、ユーザーノードプールのスケーリングを検討します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "リソースを必要とするワークロードのリソースのバランスを制御するのに役立ちます。",
+ "guid": "e452f566-2a10-4119-a802-aeab44201971",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロード アーキテクチャ: AKS の高度なスケジューラ機能を使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "すべてのスケール決定が CPU またはメモリのメトリクスから導き出されるわけではありません。多くの場合、スケールに関する考慮事項は、より複雑なデータ ポイントや外部のデータ ポイントから得られます。KEDA を使用して、ワークロードに固有のシグナルに基づいて意味のある自動スケール ルールセットを構築します。",
+ "guid": "43df6223-dfca-447d-9b00-f4742ef18be1",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: 意味のあるワークロードスケーリングメトリクスを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Kubernetes Service Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.ko.json b/checklists-ext/azurekubernetesservice_sg_checklist.ko.json
new file mode 100644
index 000000000..60229e303
--- /dev/null
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.ko.json
@@ -0,0 +1,482 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Kubernetes 스케줄러가 노드의 하드웨어별로 워크로드를 논리적으로 격리할 수 있습니다. 허용 오차와 달리, 일치하는 노드 선택기가 없는 Pod는 레이블이 지정된 노드에서 예약할 수 있으며, 이는 노드에서 사용되지 않는 리소스를 사용할 수 있도록 허용하지만 일치하는 노드 선택기를 정의하는 Pod에 우선 순위를 부여합니다. 유연성을 높이기 위해 노드 어피니티를 사용하면 Pod를 노드와 일치시킬 수 없는 경우 발생하는 작업을 정의할 수 있습니다.",
+ "guid": "79d7a487-b319-40ef-b55f-94c265986865",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 노드 선택기 및 선호도를 사용하여 Pod 스케줄링을 제어합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure CNI는 Windows 기반 노드 풀, 특정 네트워킹 요구 사항 및 Kubernetes 네트워크 정책과 같은 특정 시나리오에 필요합니다. 자세한 내용은 Kubenet 및 Azure CNI를 참조하세요.",
+ "guid": "d152a74d-cb2f-4c9c-978e-0e3a07b174a5",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 네트워크 요구 사항 및 클러스터 크기 조정에 따라 네트워크 플러그인을 적절하게 선택해야 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "AKS 작동 시간 SLA는 - Azure 가용성 영역을 사용하는 AKS 클러스터에 대한 Kubernetes API 서버 엔드포인트의 '99.95%' 가용성 또는 - Azure 가용성 영역을 사용하지 않는 AKS 클러스터에 대한 '99.9%' 가용성을 보장합니다.",
+ "guid": "99cc0fc7-138a-452f-a4dd-fd79daa5049e",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 프로덕션 등급 클러스터에 AKS 작동 시간 SLA를 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "컨테이너 인사이트는 메트릭 API를 통해 Kubernetes에서 사용할 수 있는 컨트롤러, 노드 및 컨테이너의 상태와 성능을 모니터링하는 데 도움이 됩니다. Prometheus와 통합하면 애플리케이션 및 워크로드 메트릭을 수집할 수 있습니다.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "노드 풀을 여러 영역에 분산하면 다른 영역이 다운되더라도 한 노드 풀의 노드가 계속 실행됩니다. 공동 지역성 요구 사항이 있는 경우 단일 영역에 일반 VMSS 기반 AKS 배포 또는 근접 배치 그룹을 사용하여 노드 간 대기 시간을 최소화할 수 있습니다.",
+ "guid": "29400c1f-e4ff-4ab5-89ff-be93d51d5fa8",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 가용성 영역을 사용하여 AKS 에이전트 노드를 물리적으로 분리된 데이터 센터에 분산하여 Azure 지역 내에서 복원력을 최대화합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "인터넷 연결 워크로드는 Azure Front Door 또는 Azure Traffic Manager를 활용하여 AKS 클러스터 간에 트래픽을 전역적으로 라우팅해야 합니다.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 여러 Azure 지역에 배포된 AKS 클러스터를 배포하여 다중 지역 전략을 채택하여 가용성을 최대화하고 비즈니스 연속성을 제공합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "컨테이너 CPU 및 메모리 리소스 제한은 Kubernetes 클러스터에서 리소스 고갈을 방지하는 데 필요합니다.",
+ "guid": "f230e754-6818-4428-b2ad-7ad543723f80",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 애플리케이션 배포 매니페스트에서 Pod 리소스 요청 및 제한을 정의하고 Azure Policy를 사용하여 적용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "시스템 노드 풀에는 최소 2개의 vCPU와 4GB 메모리의 VM SKU가 필요하지만 4개 이상의 vCPU를 사용하는 것이 좋습니다. 자세한 요구 사항은 시스템 및 사용자 노드 풀을 참조하십시오.",
+ "guid": "f51b6cdd-3914-4e11-a8e8-f2cf61788e84",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 시스템 노드 풀을 애플리케이션 워크로드로부터 격리된 상태로 유지합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "애플리케이션은 동일한 구성을 공유할 수 있으며 GPU 지원 VM, CPU 또는 메모리 최적화 VM 또는 0으로 확장 기능이 필요할 수 있습니다. 추가 관리 오버헤드를 줄이기 위해 많은 수의 노드 풀을 피합니다.",
+ "guid": "e303e4a0-0b81-47bd-bd44-bede44825fa2",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 특정 요구 사항에 따라 애플리케이션을 전용 노드 풀로 분리합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "동시 아웃바운드 트래픽이 많은 Azure Load Balancer 제한과 관련된 안정성 문제를 방지하려면 대신 NAT Gateway를 사용하여 대규모로 신뢰할 수 있는 송신 트래픽을 지원합니다.",
+ "guid": "ff84fa04-ee66-4605-85f3-803dd2cab3c4",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 동시 아웃바운드 연결이 많은 워크로드를 실행하는 클러스터에 NAT 게이트웨이를 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Microsoft Entra ID를 사용하면 ID 관리 구성 요소가 중앙 집중화됩니다. 사용자 계정 또는 그룹 상태의 모든 변경 내용은 AKS 클러스터에 대한 액세스에서 자동으로 업데이트됩니다. Kubernetes 클러스터의 개발자와 애플리케이션 소유자는 서로 다른 리소스에 액세스해야 합니다.",
+ "guid": "03a24546-1e4a-46d6-ad0c-63e80d157b51",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra 통합을 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "AKS 및 Microsoft Entra ID를 사용하면 'imagePullSecrets' 비밀을 사용하지 않고 Azure Container Registry로 인증할 수 있습니다. 자세한 내용은 Azure Kubernetes Service에서 Azure Container Registry를 사용하여 인증을 검토하세요.",
+ "guid": "dc50fb2f-f5e9-4ea2-a1b8-36fbf1e1bec4",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra ID를 사용하여 Azure Container Registry에 인증합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기본적으로 노드 풀과 API 서버 간의 네트워크 트래픽은 Microsoft 백본 네트워크를 이동합니다. 개인 클러스터를 사용하면 API 서버에 대한 네트워크 트래픽이 개인 네트워크에서만 유지되도록 할 수 있습니다.",
+ "guid": "3d11d647-363f-469c-bea9-9ef27a9bee70",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 프라이빗 AKS 클러스터를 사용하여 API 서버에 대한 네트워크 트래픽을 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공용 클러스터를 사용하는 경우에도 권한 있는 IP 범위 기능을 사용하여 클러스터 API 서버에 도달할 수 있는 트래픽을 제한할 수 있습니다. 배포 빌드 에이전트의 공용 IP, 작업 관리 및 노드 풀의 송신 지점(예: Azure Firewall)과 같은 원본을 포함합니다.",
+ "guid": "0418c965-c483-41bc-933c-9289108b8ad0",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 프라이빗이 아닌 AKS 클러스터의 경우 API 서버 권한이 부여된 IP 범위를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "쿠버네티스 API 서버에 대한 액세스를 보호하는 것은 클러스터를 보호하기 위해 할 수 있는 가장 중요한 일 중 하나이다. Kubernetes RBAC(역할 기반 액세스 제어)를 Microsoft Entra ID와 통합하여 API 서버에 대한 액세스를 제어합니다. 로컬 계정을 사용하지 않도록 설정하여 Microsoft Entra ID 기반 ID를 사용하여 모든 클러스터 액세스를 적용합니다.",
+ "guid": "951727b0-fd7b-4d09-8ae6-384f8441c234",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra RBAC를 사용하여 API 서버를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터의 Pod 간 네트워크 트래픽을 보호하고 제어합니다.",
+ "guid": "68a66542-3c31-43c4-8a16-a05ab2a4df5f",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure 네트워크 정책 또는 Calico를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Policy는 중앙 집중화되고 일관된 방식으로 클러스터에 대규모 적용 및 보호 기능을 적용하는 데 도움이 될 수 있습니다. 또한 Pod에 부여되는 기능과 회사 정책에 반하는 항목이 있는지 여부를 제어할 수 있습니다.",
+ "guid": "c99d155b-6a13-4f61-8672-356b1ed3a922",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Policy를 사용하여 클러스터 및 Pod를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "컨테이너가 수행할 수 있는 작업에 대한 액세스를 제한합니다. 최소한의 권한을 제공하고 루트 또는 권한 있는 에스컬레이션을 사용하지 않도록 합니다.",
+ "guid": "43384eb1-7b95-44aa-9c60-e09652b18521",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 리소스에 대한 컨테이너 액세스를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "들어오는 트래픽에서 잠재적인 공격을 검색하려면 Azure Application Gateway 또는 Azure Front Door에서 Azure WAF(Web Application Firewall)와 같은 웹 애플리케이션 방화벽을 사용합니다.",
+ "guid": "ae6a3199-847d-4901-bad1-63be20d584b8",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Web Application Firewall을 사용하여 HTTP(S) 트래픽을 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터의 아웃바운드 트래픽이 Azure Firewall 또는 HTTP 프록시와 같은 네트워크 보안 지점을 통과하고 있는지 확인합니다.",
+ "guid": "d67db716-6569-4a40-b18f-01052c02399f",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 클러스터 송신 트래픽을 제어합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "강력한 암호화를 사용하여 Azure Key Vault에서 비밀, 인증서 및 연결 문자열을 보호하고 회전합니다. 액세스 감사 로그를 제공하고 핵심 비밀을 배포 파이프라인에서 제외합니다.",
+ "guid": "bc5240f0-9c6d-469e-bf71-9f8d4bf18c29",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Key Vault와 함께 오픈 소스 Microsoft Entra 워크로드 ID 및 비밀 저장소 CSI 드라이버를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터, 컨테이너 및 해당 애플리케이션의 보안을 모니터링하고 유지 관리합니다.",
+ "guid": "2ac2d30a-a96a-4d14-b63d-7e2e3147ea9e",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 컨테이너용 Microsoft Defender를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "워크로드 요구 사항에 맞게 선택 항목을 일치시키면 불필요한 리소스에 대한 비용을 지불하지 않아도 됩니다.",
+ "guid": "93a3ae7a-6f04-471b-bb3f-5eb4e6664c5b",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: SKU 선택 및 관리 디스크 크기를 워크로드 요구 사항에 맞게 조정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "올바른 가상 머신 인스턴스 유형을 선택하는 것은 AKS에서 애플리케이션을 실행하는 비용에 직접적인 영향을 미치므로 중요합니다. 적절한 사용률 없이 고성능 인스턴스를 선택하면 낭비적인 지출이 발생할 수 있으며, 강력한 인스턴스를 선택하면 성능 문제와 가동 중지 시간이 증가할 수 있습니다. 올바른 가상 머신 인스턴스 유형을 결정하려면 워크로드 특성, 리소스 요구 사항 및 가용성 요구 사항을 고려합니다.",
+ "guid": "f16a2684-c225-4fd5-8202-8ea1db7f18e7",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 올바른 가상 머신 인스턴스 유형을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "AKS는 ARM64 Ubuntu 에이전트 노드뿐만 아니라 더 낮은 비용으로 더 나은 성능을 제공할 수 있는 클러스터 내에서 Intel 및 ARM 아키텍처 노드를 혼합하여 만들 수 있도록 지원합니다.",
+ "guid": "f0572fdc-24e3-4e6c-8c90-0ba85cc6f52a",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Arm 아키텍처를 기반으로 가상 머신을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스폿 VM을 사용하면 사용하지 않는 Azure 용량을 대폭 할인된 가격(종량제 가격과 비교하여 최대 90%)으로 활용할 수 있습니다. Azure에 용량이 다시 필요한 경우 Azure 인프라는 스폿 노드를 제거합니다.",
+ "guid": "15372689-94ad-4247-a157-fde418217ce4",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Spot Virtual Machines를 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "여러 요인으로 인해 리소스 비용은 Azure의 지역마다 다릅니다. 비용, 대기 시간 및 규정 준수 요구 사항을 평가하여 워크로드를 비용 효율적으로 실행하고 있는지, 최종 사용자에게 영향을 미치거나 추가 네트워킹 요금이 발생하지 않는지 확인합니다.",
+ "guid": "41a6e1ef-d63a-4e26-842f-1a0cde3abaa6",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 적절한 지역을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "이미지를 간소화하면 새 노드가 이러한 이미지를 다운로드해야 하므로 비용을 줄이는 데 도움이 됩니다. 애플리케이션이 시작되는 동안 사용자 요청 실패 또는 시간 초과를 방지하여 잠재적으로 오버프로비저닝으로 이어질 수 있도록 컨테이너가 가능한 한 빨리 시작될 수 있는 방식으로 이미지를 빌드합니다.",
+ "guid": "e689c267-1eaa-444d-806e-c5a0735658de",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 작고 최적화된 이미지를 유지 관리합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "AKS 클러스터의 노드 수를 자동으로 축소하면 수요가 낮을 때 효율적인 클러스터를 실행하고 수요가 돌아올 때 확장할 수 있습니다.",
+ "guid": "e770ea75-690d-4dc0-a0e4-43c17b6bb56f",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Cluster Autoscaler를 활성화하여 과도한 리소스 용량에 대한 응답으로 에이전트 노드 수를 자동으로 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "노드 자동 프로비저닝은 SKU 선택 프로세스를 간소화하고 보류 중인 Pod 리소스 요구 사항에 따라 가장 효율적이고 비용 효율적인 방식으로 워크로드를 실행하기 위한 최적의 VM 구성을 결정합니다.",
+ "guid": "9994ccff-d3d4-46e3-92cb-d04231859e20",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 노드 자동 프로비전을 사용하도록 설정하여 VM SKU 선택을 자동화합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "CPU 사용률 또는 클러스터 스케일 인 작업을 지원하는 기타 선택 메트릭에 따라 배포의 Pod 수를 조정합니다.",
+ "guid": "1321c176-e53a-4451-91cf-e4e50c637d07",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Horizontal Pod Autoscaler를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Pod의 크기를 적절하게 조정하고 과거 사용량에 따라 요청 및 제한을 동적으로 설정합니다.",
+ "guid": "554e18fe-b835-4e78-8d27-6f49999855ad",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Vertical Pod Autoscaler(미리 보기)를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "처리되는 이벤트 수에 따라 크기를 조정합니다. 50+ KEDA 스케일러의 풍부한 카탈로그에서 선택하십시오.",
+ "guid": "fe15f362-a48d-4a25-aa3e-7938b3d1f5e2",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: KEDA(Kubernetes Event Driven Autoscaling)를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 최적화를 가능하게 하는 기반은 비용 절감 클러스터의 확산입니다. 재무 운영 접근 방식(FinOps)은 조직이 클라우드 비용을 절감하는 데 도움이 되는 데 자주 사용됩니다. 이는 재무, 운영 및 엔지니어링 팀 간의 협업을 통해 비용 절감 목표를 조정하고 클라우드 비용에 대한 투명성을 확보하는 관행입니다.",
+ "guid": "d0ed8b85-2072-4952-a00c-697135e435a2",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 클라우드 재무 규율과 문화적 관행을 채택하여 클라우드 사용에 대한 소유권을 촉진합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "용량을 적절하게 계획한 경우 워크로드를 예측 가능하고 장기간 동안 존재하므로 Azure 예약 또는 절약 플랜에 등록하여 리소스 비용을 더욱 줄입니다.",
+ "guid": "9d4b8d27-c793-4862-94c8-c2505205f07f",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Reservations 또는 Azure Savings Plan에 등록합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "컨테이너 인사이트는 클러스터, 유휴 및 할당되지 않은 리소스에 대한 실행 가능한 인사이트를 제공하는 데 도움이 됩니다. 또한 컨테이너 인사이트는 Prometheus 메트릭 수집을 지원하고 Azure Managed Grafana와 통합되어 애플리케이션 및 인프라에 대한 전체적인 보기를 얻을 수 있습니다.",
+ "guid": "f4113186-82e7-495e-90e8-0da553de3039",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 분석 클러스터 확장을 사용하면 클러스터 또는 네임스페이스의 다양한 Kubernetes 리소스와 관련된 비용에 대한 세분화된 인사이트를 얻을 수 있습니다.",
+ "guid": "43cae555-15bd-4cd7-90b9-905d40528506",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: AKS 비용 분석 추가 기능을 구성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "AKS에서 애플리케이션을 성공적으로 빌드하고 실행하려면 이해하고 구현해야 할 주요 고려 사항이 있습니다. 이러한 영역에는 멀티 테넌시 및 스케줄러 기능, 클러스터 및 Pod 보안 또는 비즈니스 연속성 및 재해 복구가 포함됩니다.",
+ "guid": "4ea51e35-26bb-4a2b-a7ca-435eb6d857b9",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: AKS 모범 사례 설명서를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Chaos Studio는 오류를 시뮬레이션하고 재해 복구 상황을 트리거하는 데 도움이 될 수 있습니다.",
+ "guid": "d38b720a-0b27-409f-9dfa-28f698067a19",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: Azure Chaos Studio를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "컨테이너 인사이트는 메트릭 API 및 컨테이너 로그를 통해 Kubernetes에서 사용할 수 있는 컨트롤러, 노드 및 컨테이너에서 메모리 및 프로세서 메트릭을 수집하여 컨테이너의 성능을 모니터링하는 데 도움이 됩니다.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "AKS 클러스터에서 실행되는 애플리케이션의 코드 기반 모니터링을 위해 Application Insights를 구성합니다.",
+ "guid": "b7c8f991-0c99-4f2e-8ed9-1b0bcffc2b42",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Azure Monitor를 사용하여 애플리케이션 성능을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Monitor의 일부인 컨테이너 인사이트는 Prometheus 메트릭을 수집하기 위한 원활한 온보딩 환경을 제공합니다. 자세한 내용은 Configure scraping of Prometheus metrics를 참조하십시오.",
+ "guid": "959a2059-d560-4f51-8f9a-c68b0a595beb",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 컨테이너 인사이트를 사용하여 Prometheus 메트릭 스크래핑을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "인터넷 연결 워크로드는 Azure Front Door 또는 Azure Traffic Manager를 활용하여 AKS 클러스터 간에 트래픽을 전역적으로 라우팅해야 합니다.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 여러 Azure 지역에 배포된 AKS 클러스터를 배포하여 다중 지역 전략을 채택하여 가용성을 최대화하고 비즈니스 연속성을 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Policy는 중앙 집중화되고 일관된 방식으로 클러스터에 대규모 적용 및 보호 기능을 적용하는 데 도움이 될 수 있습니다. 또한 Pod에 부여되는 기능과 회사 정책에 반하는 항목이 있는지 여부를 제어할 수 있습니다.",
+ "guid": "4fa55d17-b08b-4885-8d5b-d8cfbe3eda59",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Policy를 사용하여 클러스터 및 Pod 구성 표준을 운영합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Kubernetes 및 수신 컨트롤러는 릴리스 엔지니어링 프로세스에 포함할 수 있는 많은 고급 배포 패턴을 지원합니다. 블루-그린 배포 또는 카나리아 릴리스와 같은 패턴을 고려합니다.",
+ "guid": "40bf5a02-ca6a-410d-9b6a-87fe75ff0873",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 릴리스 엔지니어링 프로세스에서 플랫폼 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "배포 및 테스트를 포함한 미션 크리티컬 설계 영역을 자동화합니다.",
+ "guid": "dec76a46-6005-4c3e-ac2c-70b7214a28ba",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 미션 크리티컬 워크로드의 경우 스탬프 수준 블루/그린 배포를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "용량 계획을 공식화한 후에는 클러스터의 리소스 사용률을 지속적으로 관찰하여 자주 업데이트해야 합니다.",
+ "guid": "9f2cef22-f674-4702-a57a-5dcf90bf9143",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 상세한 용량 계획을 개발하고 지속적으로 검토 및 수정합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "AKS 클러스터의 노드 수를 자동으로 확장하거나 축소하는 기능을 사용하면 효율적이고 비용 효율적인 클러스터를 실행할 수 있습니다.",
+ "guid": "d50d653b-0d8d-44ca-8ba6-9963321d1f24",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 클러스터 자동 크기 조정기를 사용하여 리소스 제약 조건에 대한 응답으로 에이전트 노드 수를 자동으로 조정할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "항상 실행 중인 노드가 필요한 시스템 노드 풀과 달리 사용자 노드 풀을 사용하면 확장 또는 축소할 수 있습니다.",
+ "guid": "cd14e737-9478-4fb4-9556-586b03d5e248",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 워크로드를 서로 다른 노드 풀로 분리하고 사용자 노드 풀의 크기를 조정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "필요한 작업에 대한 리소스 분산을 제어하는 데 도움이 됩니다.",
+ "guid": "e452f566-2a10-4119-a802-aeab44201971",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: AKS 고급 스케줄러 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "모든 크기 조정 결정을 CPU 또는 메모리 메트릭에서 파생할 수 있는 것은 아닙니다. 규모 조정 고려 사항은 더 복잡하거나 외부 데이터 요소에서 오는 경우가 많습니다. KEDA를 사용하여 워크로드와 관련된 신호를 기반으로 의미 있는 자동 크기 조정 규칙 집합을 빌드합니다.",
+ "guid": "43df6223-dfca-447d-9b00-f4742ef18be1",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 의미 있는 워크로드 확장 메트릭을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Kubernetes Service Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.pt.json b/checklists-ext/azurekubernetesservice_sg_checklist.pt.json
new file mode 100644
index 000000000..f7f4e82d8
--- /dev/null
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.pt.json
@@ -0,0 +1,482 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Permite que o agendador do Kubernetes isole logicamente as cargas de trabalho por hardware no nó. Ao contrário das tolerâncias, os pods sem um seletor de nó correspondente podem ser agendados em nós rotulados, o que permite que recursos não utilizados nos nós sejam consumidos, mas dá prioridade aos pods que definem o seletor de nó correspondente. Use a afinidade de nó para obter mais flexibilidade, o que permite definir o que acontece se o pod não puder ser correspondido a um nó.",
+ "guid": "79d7a487-b319-40ef-b55f-94c265986865",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: controle o agendamento de pod usando seletores de nó e afinidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A CNI do Azure é necessária para cenários específicos, por exemplo, pools de nós baseados no Windows, requisitos de rede específicos e Políticas de Rede do Kubernetes. Consulte Kubenet versus CNI do Azure para obter mais informações.",
+ "guid": "d152a74d-cb2f-4c9c-978e-0e3a07b174a5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: Garanta a seleção adequada do plug-in de rede com base nos requisitos de rede e no dimensionamento do cluster.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O SLA de Tempo de Atividade do AKS garante: - disponibilidade de '99,95%' do ponto de extremidade do servidor de API do Kubernetes para Clusters do AKS que usam Zonas de Disponibilidade do Azure ou - disponibilidade de '99,9%' para Clusters do AKS que não usam Zonas de Disponibilidade do Azure.",
+ "guid": "99cc0fc7-138a-452f-a4dd-fd79daa5049e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: use o SLA de Tempo de Atividade do AKS para clusters de nível de produção.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a monitorar a integridade e o desempenho de controladores, nós e contêineres disponíveis no Kubernetes por meio da API de Métricas. A integração com o Prometheus permite a coleta de métricas de aplicativos e cargas de trabalho.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Ao distribuir pools de nós em várias zonas, os nós em um pool de nós continuarão em execução mesmo que outra zona tenha ficado inativa. Se houver requisitos de colocalidade, uma implantação regular do AKS baseada em VMSS em uma única zona ou grupos de posicionamento por proximidade poderão ser usados para minimizar a latência entre nós.",
+ "guid": "29400c1f-e4ff-4ab5-89ff-be93d51d5fa8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use zonas de disponibilidade para maximizar a resiliência em uma região do Azure distribuindo nós de agente do AKS em data centers fisicamente separados.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As cargas de trabalho voltadas para a Internet devem aproveitar o Azure Front Door ou o Gerenciador de Tráfego do Azure para rotear o tráfego globalmente entre clusters do AKS.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: adote uma estratégia de várias regiões implantando clusters do AKS implantados em diferentes regiões do Azure para maximizar a disponibilidade e fornecer continuidade dos negócios.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os limites de recursos de CPU e memória do contêiner são necessários para evitar o esgotamento de recursos no cluster do Kubernetes.",
+ "guid": "f230e754-6818-4428-b2ad-7ad543723f80",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: defina solicitações e limites de recursos de pod em manifestos de implantação de aplicativo e imponha com Azure Policy.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os pools de nós do sistema exigem um SKU de VM de pelo menos 2 vCPUs e 4 GB de memória, mas 4 vCPUs ou mais são recomendados. Sistema de referência e pools de nós do usuário para requisitos detalhados.",
+ "guid": "f51b6cdd-3914-4e11-a8e8-f2cf61788e84",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: mantenha o pool de nós do sistema isolado das cargas de trabalho do aplicativo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os aplicativos podem compartilhar a mesma configuração e precisar de VMs habilitadas para GPU, VMs otimizadas para CPU ou memória ou a capacidade de escalar para zero. Evite um grande número de pools de nós para reduzir a sobrecarga de gerenciamento extra.",
+ "guid": "e303e4a0-0b81-47bd-bd44-bede44825fa2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: Separe aplicativos para pools de nós dedicados com base em requisitos específicos.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para evitar problemas de confiabilidade com as limitações do Azure Load Balancer com alto tráfego de saída simultâneo, use um Gateway NAT para dar suporte ao tráfego de saída confiável em escala.",
+ "guid": "ff84fa04-ee66-4605-85f3-803dd2cab3c4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use um gateway NAT para clusters que executam cargas de trabalho que fazem muitas conexões de saída simultâneas.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O uso do Microsoft Entra ID centraliza o componente de gerenciamento de identidade. Qualquer alteração no status da conta de usuário ou do grupo é atualizada automaticamente no acesso ao cluster do AKS. Os desenvolvedores e proprietários de aplicativos do cluster do Kubernetes precisam de acesso a recursos diferentes.",
+ "guid": "03a24546-1e4a-46d6-ad0c-63e80d157b51",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use a integração do Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O AKS e a ID do Microsoft Entra habilitam a autenticação com o Registro de Contêiner do Azure sem o uso de segredos 'imagePullSecrets'. Examine Autenticar com o Registro de Contêiner do Azure do Serviço de Kubernetes do Azure para obter mais informações.",
+ "guid": "dc50fb2f-f5e9-4ea2-a1b8-36fbf1e1bec4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: autentique com a ID do Microsoft Entra no Registro de Contêiner do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Por padrão, o tráfego de rede entre os pools de nós e o servidor de API viaja pela rede de backbone da Microsoft; usando um cluster privado, você pode garantir que o tráfego de rede para o servidor de API permaneça somente na rede privada.",
+ "guid": "3d11d647-363f-469c-bea9-9ef27a9bee70",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja o tráfego de rede para o servidor de API com o cluster AKS privado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao usar clusters públicos, você ainda pode limitar o tráfego que pode chegar ao servidor de API de clusters usando o recurso de intervalo de IP autorizado. Inclua fontes como os IPs públicos de seus agentes de build de implantação, gerenciamento de operações e ponto de saída de pools de nós (como Firewall do Azure).",
+ "guid": "0418c965-c483-41bc-933c-9289108b8ad0",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: para clusters do AKS não privados, use intervalos de IP autorizados pelo servidor de API.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteger o acesso ao Kubernetes API Server é uma das coisas mais importantes que você pode fazer para proteger seu cluster. Integre o RBAC (controle de acesso baseado em função) do Kubernetes com a ID do Microsoft Entra para controlar o acesso ao servidor de API. Desabilite contas locais para impor todo o acesso ao cluster usando identidades baseadas em ID do Microsoft Entra.",
+ "guid": "951727b0-fd7b-4d09-8ae6-384f8441c234",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja o servidor de API com o RBAC do Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteja e controle o tráfego de rede entre pods em um cluster.",
+ "guid": "68a66542-3c31-43c4-8a16-a05ab2a4df5f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use políticas de rede do Azure ou Calico.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Azure Policy pode ajudar a aplicar imposições e proteções em escala em seus clusters de maneira centralizada e consistente. Ele também pode controlar quais funções os pods são concedidos e se algo está sendo executado contra a política da empresa.",
+ "guid": "c99d155b-6a13-4f61-8672-356b1ed3a922",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja clusters e pods com o Azure Policy.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Limite o acesso às ações que os contêineres podem executar. Forneça o menor número de permissões e evite o uso de escalonamento raiz ou privilegiado.",
+ "guid": "43384eb1-7b95-44aa-9c60-e09652b18521",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: acesso seguro de contêiner aos recursos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Para verificar o tráfego de entrada em busca de possíveis ataques, use um firewall de aplicativo Web, como o WAF (Firewall de Aplicativo Web) do Azure no Gateway de Aplicativo do Azure ou no Azure Front Door.",
+ "guid": "ae6a3199-847d-4901-bad1-63be20d584b8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use um firewall de aplicativo Web para proteger o tráfego HTTP(S).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Verifique se o tráfego de saída do cluster está passando por um ponto de segurança de rede, como o Firewall do Azure ou um proxy HTTP.",
+ "guid": "d67db716-6569-4a40-b18f-01052c02399f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura do cluster: controle o tráfego de saída do cluster.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteja e gire segredos, certificados e cadeias de conexão no Azure Key Vault com criptografia forte. Fornece um log de auditoria de acesso e mantém os segredos principais fora do pipeline de implantação.",
+ "guid": "bc5240f0-9c6d-469e-bf71-9f8d4bf18c29",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use a ID de carga de trabalho do Microsoft Entra de software livre e o driver CSI do repositório de segredos com o Azure Key Vault.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Monitore e mantenha a segurança de seus clusters, contêineres e seus aplicativos.",
+ "guid": "2ac2d30a-a96a-4d14-b63d-7e2e3147ea9e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use Microsoft Defender para Contêineres.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Combinar sua seleção com suas demandas de carga de trabalho garante que você não pague por recursos desnecessários.",
+ "guid": "93a3ae7a-6f04-471b-bb3f-5eb4e6664c5b",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: alinhe a seleção de SKU e o tamanho do disco gerenciado com os requisitos de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Selecionar o tipo de instância de máquina virtual correto é fundamental, pois afeta diretamente o custo de execução de aplicativos no AKS. A escolha de uma instância de alta performance sem a utilização adequada pode levar a gastos desnecessários, enquanto a escolha de uma instância poderosa pode levar a problemas de performance e aumento do tempo de inatividade. Para determinar o tipo de instância de máquina virtual correto, considere as características da carga de trabalho, os requisitos de recursos e as necessidades de disponibilidade.",
+ "guid": "f16a2684-c225-4fd5-8202-8ea1db7f18e7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione o tipo de instância de máquina virtual correto.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O AKS dá suporte à criação de nós de agente do Ubuntu ARM64, bem como uma combinação de nós de arquitetura Intel e ARM em um cluster que pode trazer melhor desempenho a um custo menor.",
+ "guid": "f0572fdc-24e3-4e6c-8c90-0ba85cc6f52a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione máquinas virtuais com base na arquitetura Arm.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As VMs spot permitem que você aproveite a capacidade não utilizada do Azure com descontos significativos (até 90% em comparação com os preços pagos conforme o uso). Se o Azure precisar de capacidade de volta, a infraestrutura do Azure removerá os nós spot.",
+ "guid": "15372689-94ad-4247-a157-fde418217ce4",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione Máquinas Virtuais Spot do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Devido a muitos fatores, o custo dos recursos varia de acordo com a região no Azure. Avalie os requisitos de custo, latência e conformidade para garantir que você esteja executando sua carga de trabalho de maneira econômica e que ela não afete seus usuários finais nem crie cobranças extras de rede.",
+ "guid": "41a6e1ef-d63a-4e26-842f-1a0cde3abaa6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione a região apropriada.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Simplificar suas imagens ajuda a reduzir custos, pois novos nós precisam baixar essas imagens. Crie imagens de uma forma que permita que o contêiner seja iniciado o mais rápido possível para ajudar a evitar falhas de solicitação do usuário ou tempos limite enquanto o aplicativo está sendo inicializado, potencialmente levando ao superprovisionamento.",
+ "guid": "e689c267-1eaa-444d-806e-c5a0735658de",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: mantenha imagens pequenas e otimizadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduzir verticalmente automaticamente o número de nós no cluster do AKS permite que você execute um cluster eficiente quando a demanda é baixa e escale verticalmente quando a demanda retornar.",
+ "guid": "e770ea75-690d-4dc0-a0e4-43c17b6bb56f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o Dimensionador Automático de Cluster para reduzir automaticamente o número de nós do agente em resposta ao excesso de capacidade de recursos.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Node Autoprovision simplifica o processo de seleção de SKU e decide, com base nos requisitos de recursos de pod pendentes, a configuração ideal da VM para executar cargas de trabalho da maneira mais eficiente e econômica.",
+ "guid": "9994ccff-d3d4-46e3-92cb-d04231859e20",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o provisionamento automático de nó para automatizar a seleção de SKU de VM.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Ajuste o número de pods em uma implantação dependendo da utilização da CPU ou de outras métricas selecionadas, que dão suporte a operações de redução horizontal do cluster.",
+ "guid": "1321c176-e53a-4451-91cf-e4e50c637d07",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Horizontal Pod Autoscaler.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Dimensione corretamente seus pods e defina dinamicamente solicitações e limites com base no uso histórico.",
+ "guid": "554e18fe-b835-4e78-8d27-6f49999855ad",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Vertical Pod Autoscaler (versão prévia).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Dimensione com base no número de eventos que estão sendo processados. Escolha entre um rico catálogo de 50+ scalers KEDA.",
+ "guid": "fe15f362-a48d-4a25-aa3e-7938b3d1f5e2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Kubernetes Event Driven Autoscaling (KEDA).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A base para habilitar a otimização de custos é a disseminação de um cluster de economia de custos. Uma abordagem de operações financeiras (FinOps) é frequentemente usada para ajudar as organizações a reduzir os custos da nuvem. É uma prática que envolve a colaboração entre as equipes de finanças, operações e engenharia para impulsionar o alinhamento das metas de economia de custos e trazer transparência aos custos da nuvem.",
+ "guid": "d0ed8b85-2072-4952-a00c-697135e435a2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: adote uma disciplina financeira de nuvem e uma prática cultural para impulsionar a propriedade do uso da nuvem.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Se você planejou corretamente a capacidade, sua carga de trabalho é previsível e existe por um longo período de tempo, inscreva-se em uma Reserva do Azure ou em um plano de economia para reduzir ainda mais seus custos de recursos.",
+ "guid": "9d4b8d27-c793-4862-94c8-c2505205f07f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: inscreva-se nas Reservas do Azure ou no Plano de Economia do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a fornecer insights acionáveis sobre os recursos ociosos e não alocados dos clusters. Os insights de contêiner também dão suporte à coleta de métricas do Prometheus e se integram ao Azure Managed Grafana para obter uma visão holística do aplicativo e da infraestrutura.",
+ "guid": "f4113186-82e7-495e-90e8-0da553de3039",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A extensão de cluster de análise de custos permite que você obtenha insights granulares sobre os custos associados a vários recursos do Kubernetes em seus clusters ou namespaces.",
+ "guid": "43cae555-15bd-4cd7-90b9-905d40528506",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: configure o complemento Análise de Custos do AKS.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Para criar e executar aplicativos com êxito no AKS, há considerações importantes a serem entendidas e implementadas. Essas áreas incluem recursos de agendamento e multilocação, segurança de cluster e pod ou continuidade dos negócios e recuperação de desastres.",
+ "guid": "4ea51e35-26bb-4a2b-a7ca-435eb6d857b9",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: examine a documentação de práticas recomendadas do AKS.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Chaos Studio pode ajudar a simular falhas e disparar situações de recuperação de desastre.",
+ "guid": "d38b720a-0b27-409f-9dfa-28f698067a19",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: examine o Azure Chaos Studio.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a monitorar o desempenho de contêineres coletando métricas de memória e processador de controladores, nós e contêineres disponíveis no Kubernetes por meio da API de Métricas e dos logs de contêiner.",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Configure o Application Insights para monitoramento baseado em código de aplicativos em execução em um cluster do AKS.",
+ "guid": "b7c8f991-0c99-4f2e-8ed9-1b0bcffc2b42",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: monitore o desempenho do aplicativo com o Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os insights de contêiner, que fazem parte do Azure Monitor, fornecem uma experiência de integração perfeita para coletar métricas do Prometheus. Consulte Configurar a extração de métricas do Prometheus para obter mais informações.",
+ "guid": "959a2059-d560-4f51-8f9a-c68b0a595beb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: configure a extração de métricas do Prometheus com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As cargas de trabalho voltadas para a Internet devem aproveitar o Azure Front Door ou o Gerenciador de Tráfego do Azure para rotear o tráfego globalmente entre clusters do AKS.",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: adote uma estratégia de várias regiões implantando clusters do AKS implantados em diferentes regiões do Azure para maximizar a disponibilidade e fornecer continuidade dos negócios.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Policy pode ajudar a aplicar imposições e proteções em escala em seus clusters de maneira centralizada e consistente. Ele também pode controlar quais funções os pods são concedidos e se algo está sendo executado contra a política da empresa.",
+ "guid": "4fa55d17-b08b-4885-8d5b-d8cfbe3eda59",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: operacionalize os padrões de configuração de clusters e pods com o Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Kubernetes e os controladores de entrada oferecem suporte a muitos padrões avançados de implantação para inclusão em seu processo de engenharia de lançamento. Considere padrões como implantações azul-verde ou versões canário.",
+ "guid": "40bf5a02-ca6a-410d-9b6a-87fe75ff0873",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use os recursos da plataforma em seu processo de engenharia de lançamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Automatize suas áreas de projeto de missão crítica, incluindo implantação e teste.",
+ "guid": "dec76a46-6005-4c3e-ac2c-70b7214a28ba",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: para cargas de trabalho críticas, use implantações azul/verde no nível do selo.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Depois de formalizar seu plano de capacidade, ele deve ser atualizado com frequência, observando continuamente a utilização de recursos do cluster.",
+ "guid": "9f2cef22-f674-4702-a57a-5dcf90bf9143",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: desenvolva um plano de capacidade detalhado e revise e revise continuamente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "A capacidade de escalar ou reduzir verticalmente automaticamente o número de nós no cluster do AKS permite que você execute um cluster eficiente e econômico.",
+ "guid": "d50d653b-0d8d-44ca-8ba6-9963321d1f24",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o dimensionador automático de cluster para ajustar automaticamente o número de nós do agente em resposta a restrições de recursos.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ao contrário dos pools de nós do sistema que sempre exigem nós em execução, os pools de nós do usuário permitem que você aumente ou diminua verticalmente.",
+ "guid": "cd14e737-9478-4fb4-9556-586b03d5e248",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: separe as cargas de trabalho em pools de nós diferentes e considere dimensionar pools de nós do usuário.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ajuda a controlar o balanceamento de recursos para cargas de trabalho que os exigem.",
+ "guid": "e452f566-2a10-4119-a802-aeab44201971",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use os recursos avançados do agendador do AKS.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Nem todas as decisões de escala podem ser derivadas de métricas de CPU ou memória. Muitas vezes, as considerações de escala virão de pontos de dados mais complexos ou mesmo externos. Use o KEDA para criar um conjunto de regras de dimensionamento automático significativo com base em sinais específicos para sua carga de trabalho.",
+ "guid": "43df6223-dfca-447d-9b00-f4742ef18be1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use métricas significativas de dimensionamento de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Kubernetes Service Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azurekubernetesservice_sg_checklist.zh-Hant.json b/checklists-ext/azurekubernetesservice_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..4f57fc6d6
--- /dev/null
+++ b/checklists-ext/azurekubernetesservice_sg_checklist.zh-Hant.json
@@ -0,0 +1,482 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "允許 Kubernetes 調度器按節點中的硬體邏輯隔離工作負載。與容忍度不同,沒有匹配節點選擇器的 Pod 可以調度在標記的節點上,這允許節點上未使用的資源使用,但優先考慮定義匹配節點選擇器的 Pod。使用節點親和性可提高靈活性,這使您可以定義如果 Pod 無法與節點匹配時會發生什麼情況。",
+ "guid": "79d7a487-b319-40ef-b55f-94c265986865",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用節點選擇器和親和性控制Pod調度。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "特定方案(例如,基於 Windows 的節點池、特定網路要求和 Kubernetes 網路策略)需要 Azure CNI。有關詳細資訊,請參閱 Kubenet 與 Azure CNI。",
+ "guid": "d152a74d-cb2f-4c9c-978e-0e3a07b174a5",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:確保根據網路需求和集群大小正確選擇網路外掛程式。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "AKS 運行時間 SLA 保證: - 對於使用 Azure 可用性區域的 AKS 群集,Kubernetes API 伺服器終結點的可用性為“99.95%”,或者 - 對於不使用 Azure 可用性區域的 AKS 群集,可用性為“99.9%”。",
+ "guid": "99cc0fc7-138a-452f-a4dd-fd79daa5049e",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:將 AKS 運行時間 SLA 用於生產級群集。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容器見解有助於通過指標 API 監控 Kubernetes 中可用的控制器、節點和容器的運行狀況和性能。與 Prometheus 集成後,可以收集應用程式和工作負載指標。",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過將節點池分佈在多個區域中,即使另一個區域已關閉,一個節點池中的節點也將繼續運行。如果存在同域性要求,則可以使用基於 VMSS 的常規 AKS 部署到單個區域或鄰近放置組來最大程度地減少節點間延遲。",
+ "guid": "29400c1f-e4ff-4ab5-89ff-be93d51d5fa8",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用可用性區域將 AKS 代理節點分佈在物理上獨立的數據中心,從而最大限度地提高 Azure 區域內的復原能力。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "面向 Internet 的工作負載應利用 Azure Front Door 或 Azure 流量管理員在 AKS 群集之間全域路由流量。",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:通過部署跨不同 Azure 區域部署的 AKS 群集來採用多區域策略,以最大限度地提高可用性並提供業務連續性。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容器 CPU 和記憶體資源限制對於防止 Kubernetes 集群中的資源耗盡是必要的。",
+ "guid": "f230e754-6818-4428-b2ad-7ad543723f80",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:在應用程式部署清單中定義Pod資源請求和限制,並使用 Azure Policy 強制實施。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "系統節點池需要至少 2 個 vCPU 和 4 GB 記憶體的 VM SKU,但建議使用 4 個或更多的 vCPU。參考系統和用戶節點池,瞭解詳細要求。",
+ "guid": "f51b6cdd-3914-4e11-a8e8-f2cf61788e84",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:將系統節點池與應用程式工作負載隔離。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "應用程式可能共用相同的配置,並且需要啟用了 GPU 的 VM、CPU 或記憶體優化的 VM,或者能夠擴展到零。避免使用大量節點池,以減少額外的管理開銷。",
+ "guid": "e303e4a0-0b81-47bd-bd44-bede44825fa2",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:根據特定要求將應用程式分離到專用節點池中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "為了避免 Azure 負載均衡器限制在高併發出站流量下的可靠性問題,我們改用 NAT 閘道來支持大規模的可靠出口流量。",
+ "guid": "ff84fa04-ee66-4605-85f3-803dd2cab3c4",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:將 NAT 閘道用於運行產生許多併發出站連接的工作負載的集群。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "使用 Microsoft Entra ID 可以集中標識管理元件。用戶帳戶或組狀態的任何更改都會在訪問 AKS 群集時自動更新。Kubernetes 集群的開發人員和應用程式擁有者需要訪問不同的資源。",
+ "guid": "03a24546-1e4a-46d6-ad0c-63e80d157b51",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra 集成。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "AKS 和 Microsoft Entra ID 支援使用 Azure 容器註冊表進行身份驗證,而無需使用“imagePullSecrets”機密。有關詳細資訊,請查看從 Azure Kubernetes 服務使用 Azure 容器註冊表進行身份驗證。",
+ "guid": "dc50fb2f-f5e9-4ea2-a1b8-36fbf1e1bec4",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra ID 對 Azure 容器註冊表進行身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "默認情況下,節點池和 API 伺服器之間的網路流量通過 Microsoft 主幹網路傳輸;通過使用私有集群,您可以確保流向 API 伺服器的網路流量僅保持在私有網路上。",
+ "guid": "3d11d647-363f-469c-bea9-9ef27a9bee70",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用專用 AKS 群集保護到 API 伺服器的網路流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用公共集群時,您仍然可以使用授權IP範圍功能來限制可以到達集群 API 伺服器的流量。包括部署生成代理的公共IP、操作管理和節點池的出口點(例如 Azure 防火牆)等源。",
+ "guid": "0418c965-c483-41bc-933c-9289108b8ad0",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:對於非專用 AKS 群集,請使用 API 伺服器授權的 IP 範圍。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保護對 Kubernetes API 伺服器的訪問是您可以做的最重要的事情之一,以保護您的集群。將 Kubernetes 基於角色的訪問控制 (RBAC) 與 Microsoft Entra ID 整合,以控制對 API 伺服器的訪問。禁用本地帳戶以使用基於 Microsoft Entra ID 的標識強制執行所有群集訪問。",
+ "guid": "951727b0-fd7b-4d09-8ae6-384f8441c234",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra RBAC 保護 API 伺服器。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保護和控制集群中 Pod 之間的網路流量。",
+ "guid": "68a66542-3c31-43c4-8a16-a05ab2a4df5f",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure 網路策略或 Calico。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Policy 可以説明以集中、一致的方式在群集上應用大規模強制實施和保護措施。它還可以控制授予 pod 哪些功能,以及是否有任何內容違反公司策略。",
+ "guid": "c99d155b-6a13-4f61-8672-356b1ed3a922",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure Policy 保護群集和 Pod。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "限制對容器可以執行的操作的訪問。提供最少數量的許可權,並避免使用 root 或特權升級。",
+ "guid": "43384eb1-7b95-44aa-9c60-e09652b18521",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:保護容器對資源的訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "若要掃描傳入流量以查找潛在攻擊,請使用 Web 應用程式防火牆,例如 Azure 應用程式閘道或 Azure Front Door 上的 Azure Web 應用程式防火牆 (WAF)。",
+ "guid": "ae6a3199-847d-4901-bad1-63be20d584b8",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Web 應用程式防火牆來保護 HTTP(S) 流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "確保群集的出站流量通過網路安全點,例如 Azure 防火牆或 HTTP 代理。",
+ "guid": "d67db716-6569-4a40-b18f-01052c02399f",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:控制集群出口流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用強加密保護和輪換 Azure Key Vault 中的機密、證書和連接字串。提供訪問審核日誌,並將核心機密排除在部署管道之外。",
+ "guid": "bc5240f0-9c6d-469e-bf71-9f8d4bf18c29",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:將開源 Microsoft Entra 工作負載 ID 和機密存儲 CSI 驅動程式與 Azure Key Vault 配合使用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "監控和維護集群、容器及其應用程式的安全性。",
+ "guid": "2ac2d30a-a96a-4d14-b63d-7e2e3147ea9e",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Defender for Containers。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "將您的選擇與工作負載需求相匹配,可確保您不會為不需要的資源付費。",
+ "guid": "93a3ae7a-6f04-471b-bb3f-5eb4e6664c5b",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:使 SKU 選擇和託管磁碟大小與工作負載要求保持一致。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "選擇正確的虛擬機實例類型至關重要,因為它直接影響在AKS上運行應用程式的成本。選擇高性能實例而沒有適當的利用率可能會導致浪費支出,而選擇功能強大的實例可能會導致性能問題和停機時間增加。要確定正確的虛擬機實例類型,請考慮工作負載特徵、資源要求和可用性需求。",
+ "guid": "f16a2684-c225-4fd5-8202-8ea1db7f18e7",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇正確的虛擬機實例類型。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "AKS 支援在群集中創建ARM64 Ubuntu代理節點,以及混合使用Intel和ARM體系結構的節點,這些節點可以以更低的成本帶來更好的性能。",
+ "guid": "f0572fdc-24e3-4e6c-8c90-0ba85cc6f52a",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇基於Arm架構的虛擬機。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "現成 VM 允許你以大幅折扣利用未使用的 Azure 容量(與即用即付價格相比,最高可享受 90%)。如果 Azure 需要恢復容量,Azure 基礎結構將逐出 Spot 節點。",
+ "guid": "15372689-94ad-4247-a157-fde418217ce4",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:選擇「Azure 現成虛擬機」。。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "由於許多因素,Azure 中每個區域的資源成本會有所不同。評估成本、延遲和合規性要求,以確保您以經濟高效的方式運行工作負載,並且不會影響您的最終使用者或產生額外的網路費用。",
+ "guid": "41a6e1ef-d63a-4e26-842f-1a0cde3abaa6",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇合適的地域。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "簡化圖像有助於降低成本,因為新節點需要下載這些圖像。以允許容器儘快啟動的方式生成映像,以説明避免在應用程式啟動時使用者請求失敗或超時,這可能導致過度預配。",
+ "guid": "e689c267-1eaa-444d-806e-c5a0735658de",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:維護小型和優化的映像。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過自動縮減 AKS 群集中的節點數,可以在需求較低時運行高效的群集,並在需求返回時縱向擴展。",
+ "guid": "e770ea75-690d-4dc0-a0e4-43c17b6bb56f",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用 Cluster Autoscaler 以自動減少代理節點的數量,以響應資源容量過剩。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "節點自動配置簡化了 SKU 選擇過程,並根據待處理的 Pod 資源要求決定最佳 VM 配置,以最高效且經濟高效的方式運行工作負載。",
+ "guid": "9994ccff-d3d4-46e3-92cb-d04231859e20",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:啟用節點自動預配以自動選擇 VM SKU。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據 CPU 利用率或其他支援集群縮減操作的選擇指標調整部署中的 Pod 數量。",
+ "guid": "1321c176-e53a-4451-91cf-e4e50c637d07",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用水準Pod自動縮放器。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "調整 Pod 的大小,並根據歷史使用方式動態設置請求和限制。",
+ "guid": "554e18fe-b835-4e78-8d27-6f49999855ad",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用垂直 Pod 自動縮放程式(預覽版)。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據正在處理的事件數進行縮放。從 50+ KEDA 潔牙器的豐富目錄中選擇。",
+ "guid": "fe15f362-a48d-4a25-aa3e-7938b3d1f5e2",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Kubernetes 事件驅動的自動縮放 (KEDA)。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "實現成本優化的基礎是成本節約集群的分佈。財務運營方法 (FinOps) 通常用於幫助組織降低雲成本。它是一種涉及財務、運營和工程團隊之間協作的做法,旨在推動成本節約目標的一致性,並使雲成本透明化。",
+ "guid": "d0ed8b85-2072-4952-a00c-697135e435a2",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:採用雲財務規則和文化實踐來推動對雲使用的擁有權。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "如果正確規劃了容量,則工作負載是可預測的,並且會存在較長的時間段,請註冊 Azure 預留或節省計劃以進一步降低資源成本。",
+ "guid": "9d4b8d27-c793-4862-94c8-c2505205f07f",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:註冊 Azure 預留或 Azure 節省計劃。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "容器見解有助於提供有關集群、空閒和未分配資源的可操作見解。容器見解還支援收集 Prometheus 指標,並與 Azure 託管 Grafana 集成,以全面瞭解應用程式和基礎結構。",
+ "guid": "f4113186-82e7-495e-90e8-0da553de3039",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過成本分析集群擴展,您可以深入瞭解與集群或命名空間中的各種 Kubernetes 資源關聯的成本。",
+ "guid": "43cae555-15bd-4cd7-90b9-905d40528506",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:配置 AKS 成本分析載入項。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "若要在 AKS 中成功生成和運行應用程式,需要瞭解和實施一些關鍵注意事項。這些領域包括多租戶和調度器功能、集群和 Pod 安全性,或業務連續性和災難恢復。",
+ "guid": "4ea51e35-26bb-4a2b-a7ca-435eb6d857b9",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:查看 AKS 最佳做法文檔。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Chaos Studio 可以幫助類比故障並觸發災難恢復情況。",
+ "guid": "d38b720a-0b27-409f-9dfa-28f698067a19",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:查看 Azure Chaos Studio。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "容器見解通過指標 API 和容器日誌從 Kubernetes 中可用的控制器、節點和容器收集記憶體和處理器指標,從而幫助監控容器的性能。",
+ "guid": "76d86a61-446d-4597-a547-9ba4d9c25377",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "配置 Application Insights,以便對 AKS 群集中運行的應用程式進行基於代碼的監視。",
+ "guid": "b7c8f991-0c99-4f2e-8ed9-1b0bcffc2b42",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Azure Monitor 監視應用程式性能。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "容器見解是 Azure Monitor 的一部分,可提供無縫的載入體驗來收集 Prometheus 指標。有關更多資訊,請參閱配置 Prometheus 指標的抓取。",
+ "guid": "959a2059-d560-4f51-8f9a-c68b0a595beb",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用容器洞察配置 Prometheus 指標抓取。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "面向 Internet 的工作負載應利用 Azure Front Door 或 Azure 流量管理員在 AKS 群集之間全域路由流量。",
+ "guid": "72c0719b-444b-49fa-b3fb-598de4c4a99d",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:通過部署跨不同 Azure 區域部署的 AKS 群集來採用多區域策略,以最大限度地提高可用性並提供業務連續性。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Policy 可以説明以集中、一致的方式在群集上應用大規模強制實施和保護措施。它還可以控制授予 pod 哪些功能,以及是否有任何內容違反公司策略。",
+ "guid": "4fa55d17-b08b-4885-8d5b-d8cfbe3eda59",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure Policy 操作群集和 Pod 配置標準。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Kubernetes 和入口控制器支援許多高級部署模式,可包含在您的發佈工程流程中。考慮藍綠部署或金絲雀發佈等模式。",
+ "guid": "40bf5a02-ca6a-410d-9b6a-87fe75ff0873",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:在發佈工程過程中使用平臺功能。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "自動執行任務關鍵型設計領域,包括部署和測試。",
+ "guid": "dec76a46-6005-4c3e-ac2c-70b7214a28ba",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:對於任務關鍵型工作負載,請使用標記級別的藍/綠部署。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "在正式確定容量計劃后,應通過持續觀察集群的資源利用率來頻繁更新容量計劃。",
+ "guid": "9f2cef22-f674-4702-a57a-5dcf90bf9143",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:制定詳細的容量計劃,並不斷審查和修訂。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "通過自動增加或減少 AKS 群集中的節點數,可以運行高效且經濟高效的群集。",
+ "guid": "d50d653b-0d8d-44ca-8ba6-9963321d1f24",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用集群自動縮放程式,以根據資源限制自動調整代理節點數。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "與始終需要運行節點的系統節點池不同,用戶節點池允許您縱向擴展或縮減。",
+ "guid": "cd14e737-9478-4fb4-9556-586b03d5e248",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:將工作負載分離到不同的節點池中,並考慮縮放用戶節點池。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "説明控制需要資源的工作負載的資源平衡。",
+ "guid": "e452f566-2a10-4119-a802-aeab44201971",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 AKS 高級計劃程式功能。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "並非所有規模決策都可以從 CPU 或記憶體指標中得出。通常,規模考慮因素將來自更複雜甚至外部的數據點。使用 KEDA 根據特定於工作負載的信號生成有意義的自動縮放規則集。",
+ "guid": "43df6223-dfca-447d-9b00-f4742ef18be1",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用有意義的工作負載擴展指標。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Kubernetes Service Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.en.json b/checklists-ext/azuremachinelearning_sg_checklist.en.json
index 1992306e2..9d605668b 100644
--- a/checklists-ext/azuremachinelearning_sg_checklist.en.json
+++ b/checklists-ext/azuremachinelearning_sg_checklist.en.json
@@ -268,35 +268,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -333,6 +333,6 @@
"name": "Azure Machine Learning Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.es.json b/checklists-ext/azuremachinelearning_sg_checklist.es.json
new file mode 100644
index 000000000..c97a24b41
--- /dev/null
+++ b/checklists-ext/azuremachinelearning_sg_checklist.es.json
@@ -0,0 +1,338 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Una implementación en varias regiones garantiza que las cargas de trabajo de Machine Learning continúen ejecutándose incluso si una región experimenta una interrupción. La implementación en varias regiones mejora la distribución de la carga entre regiones, lo que podría mejorar el rendimiento para los usuarios ubicados en diferentes áreas geográficas. Para obtener más información, consulte Conmutación por error para la continuidad empresarial y la recuperación ante desastres.",
+ "guid": "f0411b34-73cc-4026-a3e0-495204a7f02b",
+ "service": "Azure Machine Learning",
+ "text": "Implementación de modelos de varias regiones: para mejorar la confiabilidad y la disponibilidad, considere la posibilidad de utilizar un entorno de implementación de varias regiones cuando sea posible.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los puntos de control del modelo guardan periódicamente el estado del modelo de aprendizaje automático durante el entrenamiento, de modo que se pueda restaurar en caso de interrupción, error o finalización. Para obtener más información, consulte Aumentar la velocidad de los puntos de control y reducir el costo con Nebula.",
+ "guid": "2d3126b3-dae2-4938-b558-9fbb05ec6342",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia de entrenamiento de modelos: use las características de puntos de control compatibles con Machine Learning, como Azure Container for PyTorch, la clase TensorFlow Estimator o el objeto Run y la clase FileDataset que admiten puntos de control de modelos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las máquinas virtuales de prioridad baja tienen un precio reducido, pero se pueden interrumpir. Los clústeres que usan el nivel de máquina virtual dedicada no se adelantan.",
+ "guid": "d9a0f9e6-a89c-4516-83ec-6f22ae29aaaf",
+ "service": "Azure Machine Learning",
+ "text": "Use el nivel de máquina virtual dedicada para clústeres de proceso: use el nivel de máquina virtual dedicada para clústeres de proceso para la inferencia por lotes para asegurarse de que el trabajo por lotes no se adelante.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La línea de base de seguridad proporciona orientación personalizada sobre aspectos de seguridad cruciales, como la seguridad de la red, la gestión de identidades, la protección de datos y el acceso con privilegios. Para una seguridad óptima, use Microsoft Defender for Cloud para supervisar estos aspectos.",
+ "guid": "9195a712-feaf-4aa9-ac8e-6cfe01423d34",
+ "service": "Azure Machine Learning",
+ "text": "Línea base de seguridad: para mejorar la seguridad y el cumplimiento de su servicio de Machine Learning, aplique la línea base de seguridad de Azure para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red virtual administrado mejora la seguridad al aislar el área de trabajo de otras redes, lo que reduce el riesgo de acceso no autorizado. En un escenario en el que se produce una infracción en otra red de la organización, la red aislada del área de trabajo de Machine Learning no se ve afectada, lo que protege las cargas de trabajo de machine learning.",
+ "guid": "01b471f4-3d3d-498c-86b2-9b1b0ef458e3",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red virtual administrada: configure el aislamiento de red virtual administrada para Machine Learning. Al habilitar el aislamiento de red virtual administrada, se crea una red virtual administrada para el área de trabajo. Los recursos de proceso administrados que cree para el área de trabajo usan automáticamente esta red virtual administrada. Si no puede implementar el aislamiento de red virtual administrado, debe seguir las recomendaciones de topología de red para separar el proceso en una subred dedicada lejos del resto de los recursos de la solución, incluidos los puntos de conexión privados para los recursos del área de trabajo.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red de Machine Learning mejora la seguridad al garantizar que el acceso a su espacio de trabajo sea seguro y controlado. Con un punto de conexión privado configurado para el área de trabajo, puede limitar el acceso al área de trabajo para que solo se produzca a través de las direcciones IP privadas.",
+ "guid": "001f1a80-6e4e-432d-a762-34ff31ae0a5b",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red de Machine Learning: configure un punto de conexión privado para el área de trabajo de Machine Learning y conéctese al área de trabajo a través de ese punto de conexión privado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Esta configuración minimiza el riesgo de exfiltración de datos, mejorando la seguridad de los datos. Con esta configuración habilitada, un actor malintencionado que obtenga acceso a su sistema no puede enviar sus datos a un destino externo no aprobado.",
+ "guid": "fb08378f-3b8a-4991-bb1f-f7c3a026fecf",
+ "service": "Azure Machine Learning",
+ "text": "Permitir solo el acceso de salida aprobado: configure el modo de salida en el acceso de salida administrado del área de trabajo de Machine Learning a \"Permitir solo el acceso de salida aprobado\" para minimizar el riesgo de exfiltración de datos. Configure puntos de conexión privados, etiquetas de servicio o nombres de dominio completos (FQDN) para los recursos a los que necesita acceder.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red refuerza la seguridad al restringir el acceso a las soluciones de plataforma como servicio (PaaS) de Azure solo a direcciones IP privadas.",
+ "guid": "a426e1df-08ed-43b8-ae7b-35d4833bc516",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red virtual para servicios dependientes: configure servicios dependientes, como Storage, Key Vault y Container Registry con puntos de conexión privados y deshabilite el acceso público.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las identidades administradas mejoran la seguridad al eliminar la necesidad de almacenar credenciales y administrar y rotar manualmente las entidades de servicio.",
+ "guid": "70a7a786-d676-42a3-8513-5ce0c9ceeb50",
+ "service": "Azure Machine Learning",
+ "text": "Identidad administrada: use identidades administradas para la autenticación entre Machine Learning y otros servicios.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La deshabilitación de la autenticación local aumenta la seguridad del proceso de Machine Learning y proporciona un control y una administración centralizados de las identidades y las credenciales de los recursos.",
+ "guid": "50500732-feb1-42a7-a5ce-271443cd7eeb",
+ "service": "Azure Machine Learning",
+ "text": "Deshabilitar la autenticación local: deshabilite la autenticación local para clústeres e instancias de proceso de Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Deshabilitar el acceso SSH ayuda a evitar que personas no autorizadas obtengan acceso y puedan causar daños a su sistema, y lo protege contra ataques de fuerza bruta.",
+ "guid": "3e537535-ca7e-4669-a580-92819410e4d4",
+ "service": "Azure Machine Learning",
+ "text": "Deshabilite el puerto SSH público: asegúrese de que el puerto público de Secure Shell (SSH) esté cerrado en el clúster de proceso de Machine Learning estableciendo \"remoteLoginPortPublicAccess\" en \"Disabled\". Aplique una configuración similar si utiliza un proceso diferente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Absténgase de aprovisionar direcciones IP públicas para mejorar la seguridad limitando la posibilidad de acceso no autorizado a la instancia informática o a los clústeres.",
+ "guid": "4ed5455d-c887-4075-9f11-16408abdffd9",
+ "service": "Azure Machine Learning",
+ "text": "No aprovisione direcciones IP públicas para el proceso de Machine Learning: establezca enableNodePublicIp en \"false\" al aprovisionar clústeres de proceso o instancias de proceso de Machine Learning. Aplique una configuración similar si utiliza un proceso diferente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de las imágenes más recientes garantiza que mantenga un entorno coherente, estable y seguro, lo que incluye asegurarse de tener los parches de seguridad más recientes.",
+ "guid": "9772d2de-8ffe-4918-88d3-4385c6f3b852",
+ "service": "Azure Machine Learning",
+ "text": "Obtener la imagen más reciente del sistema operativo: vuelva a crear instancias informáticas para obtener la imagen más reciente del sistema operativo.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los estrictos controles de acceso al espacio de trabajo mejoran la seguridad al garantizar que las personas solo tengan los permisos necesarios para su función. Un científico de datos, por ejemplo, puede tener acceso para ejecutar experimentos, pero no para modificar la configuración de seguridad, lo que minimiza los posibles riesgos de seguridad.",
+ "guid": "6d277dc0-7569-4ef5-b7b5-3958e102ef3b",
+ "service": "Azure Machine Learning",
+ "text": "Controles estrictos de acceso al área de trabajo de Machine Learning: use grupos de identificadores de Microsoft Entra para administrar el acceso al área de trabajo y cumplir con el principio de privilegios mínimos para RBAC.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al restringir las implementaciones del catálogo de modelos a registros específicos, se garantiza que solo se implementen modelos en registros aprobados. Este enfoque ayuda a regular el acceso a los modelos fundacionales de código abierto.",
+ "guid": "1245aca7-0f54-4c03-8a85-f7da745385e6",
+ "service": "Azure Machine Learning",
+ "text": "Restringir implementaciones de catálogos de modelos: restrinja las implementaciones de modelos a registros específicos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El cifrado de datos en reposo mejora la seguridad de los datos al garantizar que los datos confidenciales se cifren mediante el uso de claves administradas directamente por usted. Si tiene un requisito normativo para administrar sus propias claves de cifrado, utilice esta función para cumplir con ese requisito.",
+ "guid": "44edeb32-99a9-4c6b-a941-2c4bf8e815ac",
+ "service": "Azure Machine Learning",
+ "text": "Cifrar datos en reposo: considere la posibilidad de usar claves administradas por el cliente con Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Minimice el riesgo de exfiltración de datos limitando los requisitos de entrada y salida.",
+ "guid": "0dd2a6df-26e0-4999-92d3-414bd5b29901",
+ "service": "Azure Machine Learning",
+ "text": "Minimice el riesgo de exfiltración de datos: implemente la prevención de exfiltración de datos. Por ejemplo, cree una directiva de punto de conexión de servicio para filtrar el tráfico de red virtual de salida y permitir la filtración de datos solo a cuentas específicas de Azure Storage.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La selección del proceso adecuado es fundamental, ya que afecta directamente al costo de ejecución de la carga de trabajo. Elegir una GPU o una SKU de alto rendimiento sin un uso adecuado puede generar gastos innecesarios, mientras que elegir un proceso de tamaño insuficiente puede provocar tiempos de entrenamiento prohibitivos y problemas de rendimiento.",
+ "guid": "04967265-74a1-4b44-a559-a2b64ab9b67b",
+ "service": "Azure Machine Learning",
+ "text": "Optimice los recursos informáticos: optimice los recursos informáticos en función de los requisitos de la carga de trabajo. Elija la SKU que mejor se adapte a su carga de trabajo:
- Propósito general: relación equilibrada entre CPU y memoria, buena para todos los propósitos.
- Optimizado para cómputo: alta relación entre CPU y memoria, buena para cálculos matemáticos pesados.
- Optimizado para memoria: alta memoria para la CPU, buena para cálculos en memoria o aplicaciones de bases de datos.
- Serie M: máquinas muy grandes que tienen grandes cantidades de memoria y CPU.
- GPU: mejor para modelos con un gran número de variables que pueden beneficiarse de un mayor paralelismo e instrucciones de núcleo especializadas. Las aplicaciones típicas son el aprendizaje profundo, el procesamiento de imágenes o vídeos, las simulaciones científicas, la minería de datos y el aprovechamiento de los marcos de desarrollo de GPU. Pruebe con varias familias y documente los resultados como referencia. A medida que el modelo y los datos evolucionan, es posible que cambie el recurso informático más adecuado. Supervise los tiempos de ejecución y reevalúe según sea necesario.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Configure el escalado automático para que los clústeres de proceso reduzcan verticalmente cuando su uso sea bajo. Establezca el número mínimo de nodos en 0 para que los clústeres de entrenamiento se reduzcan verticalmente a 0 cuando no estén en uso.",
+ "guid": "052b07f8-ae5a-4425-8c1c-7b2eda14d127",
+ "service": "Azure Machine Learning",
+ "text": "Optimice el escalado de proceso: configure los clústeres de proceso para el escalado automático a fin de asegurarse de que solo usa lo que necesita. Para los clústeres de entrenamiento, establezca el número mínimo de nodos en 0 y configure la cantidad de tiempo que el nodo está inactivo en un tiempo adecuado. Para una experimentación menos iterativa, reduzca el tiempo para ahorrar costos. Para una experimentación más iterativa, use un tiempo mayor para evitar tener que pagar por escalar hacia arriba o hacia abajo después de cada cambio.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La configuración de directivas de terminación puede ayudarle a ahorrar costos al detener las ejecuciones que no funcionan antes de tiempo.",
+ "guid": "84efffef-23ff-465c-bb2a-f01d88e73c7e",
+ "service": "Azure Machine Learning",
+ "text": "Establecer directivas de finalización del entrenamiento: establezca directivas de finalización anticipada para limitar la duración de las ejecuciones de entrenamiento o finalizarlas antes de tiempo.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las máquinas virtuales de baja prioridad permiten utilizar una gran cantidad de potencia de proceso a bajo costo. Aprovechan el excedente de capacidad de Azure.",
+ "guid": "dc2f2c28-1da5-4b18-9ffc-69ebc766d184",
+ "service": "Azure Machine Learning",
+ "text": "Use máquinas virtuales de prioridad baja para cargas de trabajo por lotes: considere la posibilidad de usar máquinas virtuales de prioridad baja para cargas de trabajo por lotes que no sean urgentes y en las que se puedan recuperar las interrupciones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "De forma predeterminada, las instancias informáticas están disponibles para usted, acumulando costos. Configurar instancias de proceso para que se apaguen cuando estén inactivas o configurar una programación para ellas ahorra costos cuando no están en uso.",
+ "guid": "379134e1-c92f-4b18-9a3e-0f944a973aa4",
+ "service": "Azure Machine Learning",
+ "text": "Habilitar el apagado inactivo para instancias informáticas: habilite el apagado inactivo para instancias informáticas o programe una hora de inicio y finalización si se conoce el tiempo de uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las cargas de trabajo paralelas se pueden ejecutar en varias instancias más pequeñas, lo que puede generar ahorros de costos.",
+ "guid": "df1f64ad-5d9c-40dd-9943-a0e06ee7891f",
+ "service": "Azure Machine Learning",
+ "text": "Paralelizar cargas de trabajo de entrenamiento: considere la posibilidad de paralelizar cargas de trabajo de entrenamiento. Pruebe a ejecutarlos con la ayuda de los componentes paralelos de Machine Learning.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Compre Azure Reserved VM Instances para pagar por adelantado el uso de máquinas virtuales y ofrecer descuentos con precios de pago por uso. El descuento se aplica automáticamente al uso de la máquina virtual que coincida con la reserva.",
+ "guid": "da87b89e-6218-4bf7-8d4b-b988fd2b3156",
+ "service": "Azure Machine Learning",
+ "text": "Azure Reserved VM Instances: compre Azure Reserved VM Instances si tiene una buena estimación del uso para los próximos uno a tres años. Aproveche las opciones de capacidad reservada para los servicios cuando tenga buenas estimaciones de uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Limitar el número de espacios de trabajo reduce el esfuerzo de mantenimiento y el costo de operación. Para los requisitos, como la seguridad, es posible que necesite varias áreas de trabajo independientes. Minimice el número de espacios de trabajo cuando sea posible.",
+ "guid": "e8d7df42-a0cf-49ea-9f9a-d01849c92a2b",
+ "service": "Azure Machine Learning",
+ "text": "Minimice las instancias de áreas de trabajo de Machine Learning: minimice el número de áreas de trabajo, cuando sea posible, para reducir el mantenimiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Use los registros de modelos de Machine Learning para almacenar y versionar los modelos de Machine Learning para realizar un seguimiento de los cambios y mantener el linaje con el trabajo y los conjuntos de datos utilizados para el entrenamiento. Con los catálogos de modelos de Machine Learning, los equipos de ciencia de datos pueden detectar, evaluar y ajustar modelos básicos de aprendizaje automático preentrenados. El almacenamiento de modelos con versiones en registros de modelos de Machine Learning admite estrategias de implementación como versiones A/B, versiones Canary y reversiones.",
+ "guid": "796e23ec-1071-4131-b0d3-77121aae8e33",
+ "service": "Azure Machine Learning",
+ "text": "Aproveche los catálogos y registros de modelos: aproveche los catálogos y registros de modelos de Machine Learning para almacenar, versionar y compartir activos de Machine Learning. Use los catálogos de modelos de Machine Learning para ayudarle a implementar pruebas A/B e implementación de modelos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los modelos implementados garantiza que los modelos cumplan los requisitos de rendimiento. La supervisión del desfase de datos le ayuda a detectar cambios en los datos de entrada que pueden provocar una disminución en el rendimiento del modelo. La administración del desfase de datos le ayuda a garantizar que el modelo proporcione resultados precisos a lo largo del tiempo.",
+ "guid": "295dae47-5380-41c6-b1bd-bfa3605a4e10",
+ "service": "Azure Machine Learning",
+ "text": "Supervise el rendimiento del modelo: supervise el rendimiento de los modelos implementados y detecte el desfase de datos en los conjuntos de datos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los puntos de conexión le proporciona visibilidad de métricas como la latencia de las solicitudes y las solicitudes por minuto. Puede comparar el rendimiento con la línea base y usar esta información para realizar cambios en los recursos informáticos en consecuencia. Las métricas de supervisión, como los bytes de red, pueden alertarte si te estás acercando a los límites de cuota y evitar la limitación. Del mismo modo, la supervisión de su entorno de formación le proporciona la información necesaria para realizar cambios en su entorno de formación. Use esa información para decidir si escalar o reducir horizontalmente, escalar o reducir verticalmente con diferentes SKU de alto rendimiento, o elegir entre CPU o GPU.",
+ "guid": "1d6384f8-a394-46f3-acf0-caf1f82b15c0",
+ "service": "Azure Machine Learning",
+ "text": "Supervisar la infraestructura: si los modelos se implementan en puntos de conexión en línea, habilite Application Insights para supervisar los puntos de conexión y las implementaciones en línea. Supervise la infraestructura de formación para asegurarse de que cumple con los requisitos básicos. Asegúrese de recopilar registros de recursos para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los entornos seleccionados son entornos creados previamente proporcionados por Machine Learning que aceleran el tiempo de implementación y reducen la latencia de implementación y entrenamiento. El uso de entornos seleccionados mejora las tasas de éxito del entrenamiento y la implementación, y evita compilaciones de imágenes innecesarias. Los entornos seleccionados, como Azure Container for PyTorch, también se pueden optimizar para entrenar modelos grandes en Machine Learning.",
+ "guid": "ed696d41-009b-47b5-9ae1-16b2ac09a83b",
+ "service": "Azure Machine Learning",
+ "text": "Seleccionar entornos de entrenamiento de modelos: use entornos seleccionados optimizados para Machine Learning, cuando estén disponibles.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La selección del proceso adecuado es fundamental, ya que afecta directamente al tiempo de entrenamiento. La elección de la SKU y la CPU correctas en comparación con la GPU garantiza que el entrenamiento de modelos pueda cumplir con sus requisitos y objetivos de rendimiento. Elegir un SKU de bajo rendimiento que se use en exceso puede provocar tiempos de entrenamiento prohibitivos y problemas de rendimiento. Los clústeres de proceso proporcionan la capacidad de mejorar el rendimiento mediante el escalado horizontal de las cargas de trabajo que admiten el escalado horizontal. Este método proporciona flexibilidad para manejar cargas de trabajo con diferentes demandas y le permite agregar o quitar máquinas según sea necesario.",
+ "guid": "7ff0753e-559c-4872-9b46-056600d393b9",
+ "service": "Azure Machine Learning",
+ "text": "Seleccione los servicios de proceso adecuados para el entrenamiento de modelos: considere la posibilidad de utilizar clústeres de proceso de Machine Learning en lugar de instancias de proceso para el entrenamiento de modelos si necesita el escalado automático. Optimice sus recursos informáticos en función de los requisitos de formación. En primer lugar, elija entre CPU y GPU. De forma predeterminada, utilice CPU, pero considere las GPU para cargas de trabajo como el aprendizaje profundo, el procesamiento de imágenes o vídeos, o grandes cantidades de datos. A continuación, elija la SKU de imagen que mejor se adapte a su carga de trabajo. Use las pruebas para elegir la opción de proceso que optimiza el costo en función del tiempo de entrenamiento al determinar la línea base.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El escalado automático ajusta el número de instancias del modelo implementado para que coincida con la demanda.",
+ "guid": "d1e94aee-19e1-4888-9220-6d0c7e351971",
+ "service": "Azure Machine Learning",
+ "text": "Escalado del entorno de implementación de modelos: use las capacidades de escalado automático del entorno de implementación. En el caso de los entornos de implementación de AKS, use el escalador automático de clústeres para escalar y satisfacer la demanda. En el caso de los puntos de conexión en línea, escale automáticamente a través de la integración con la característica de escalado automático de Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El seguimiento del rendimiento de los modelos en producción le alerta de posibles problemas, como el desfase de datos, el desfase de predicción, la calidad de los datos y el desfase de atribución de características. La supervisión del desfase de datos le ayuda a detectar cambios en los datos de entrada que pueden provocar una disminución en el rendimiento del modelo. La administración del desfase de datos le ayuda a garantizar que el modelo proporcione resultados precisos a lo largo del tiempo.",
+ "guid": "c1d46066-94b8-4482-800d-1c9f7f5704ad",
+ "service": "Azure Machine Learning",
+ "text": "Supervise el rendimiento del modelo: supervise el rendimiento de los modelos implementados.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La supervisión de los puntos de conexión le proporciona visibilidad de métricas como la latencia de las solicitudes y las solicitudes por minuto. Puede comparar el rendimiento con la línea base y usar esta información para realizar cambios en los recursos informáticos en consecuencia. Las métricas de supervisión, como los bytes de red, pueden alertarte si te estás acercando a los límites de cuota y evitar la limitación. Del mismo modo, la supervisión de su entorno de formación le proporciona la información necesaria para realizar cambios en su entorno de formación. Use esa información para decidir si escalar o reducir horizontalmente, escalar o reducir verticalmente con diferentes SKU de alto rendimiento, o elegir entre CPU o GPU.",
+ "guid": "60fc9cf9-8eec-422c-9894-70a364e63ece",
+ "service": "Azure Machine Learning",
+ "text": "Supervise la infraestructura: supervise los puntos finales en línea e intégrelos con Monitor para realizar un seguimiento y supervisar las métricas y los registros adecuados. Habilite Application Insights al crear implementaciones en línea. Supervise la infraestructura de entrenamiento y revise el uso de recursos, como la memoria y el uso de CPU o GPU, al entrenar modelos para asegurarse de que cumple con los requisitos básicos.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Machine Learning Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.ja.json b/checklists-ext/azuremachinelearning_sg_checklist.ja.json
new file mode 100644
index 000000000..32b70961e
--- /dev/null
+++ b/checklists-ext/azuremachinelearning_sg_checklist.ja.json
@@ -0,0 +1,338 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "マルチリージョンのデプロイにより、1 つのリージョンで障害が発生した場合でも、Machine Learning ワークロードが引き続き実行されます。マルチリージョン デプロイにより、リージョン間の負荷分散が改善され、異なる地理的領域にいるユーザーのパフォーマンスが向上する可能性があります。詳細については、「ビジネス継続性とディザスター リカバリーのためのフェールオーバー」を参照してください。",
+ "guid": "f0411b34-73cc-4026-a3e0-495204a7f02b",
+ "service": "Azure Machine Learning",
+ "text": "マルチリージョン モデルのデプロイ: 信頼性と可用性を向上させるために、可能な場合はマルチリージョンのデプロイ環境を検討してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "モデルのチェックポイント処理では、トレーニング中に機械学習モデルの状態が定期的に保存されるため、中断、障害、または終了が発生した場合に復元できます。詳細については、「Nebula によるチェックポイント速度の向上とコストの削減」を参照してください。",
+ "guid": "2d3126b3-dae2-4938-b558-9fbb05ec6342",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニングの回復性: Azure Container for PyTorch、TensorFlow Estimator クラス、モデルのチェックポイント処理をサポートする Run オブジェクトと FileDataset クラスなど、Machine Learning でサポートされているチェックポイント機能を使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "低優先度の仮想マシンは、価格が割引されますが、プリエンプティブです。専用仮想マシン層を使用するクラスターは割り込まれません。",
+ "guid": "d9a0f9e6-a89c-4516-83ec-6f22ae29aaaf",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティング クラスターに専用仮想マシン層を使用する: バッチ推論にコンピューティング クラスターに専用仮想マシン層を使用して、バッチ ジョブが割り込まれないようにします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セキュリティ ベースラインは、ネットワーク セキュリティ、ID 管理、データ保護、特権アクセスなどの重要なセキュリティ側面に関するカスタマイズされたガイダンスを提供します。最適なセキュリティを確保するには、Microsoft Defender for Cloud を使用してこれらの側面を監視します。",
+ "guid": "9195a712-feaf-4aa9-ac8e-6cfe01423d34",
+ "service": "Azure Machine Learning",
+ "text": "セキュリティ ベースライン: Machine Learning Service のセキュリティとコンプライアンスを強化するには、Machine Learning の Azure セキュリティ ベースラインを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "マネージド仮想ネットワークの分離は、ワークスペースを他のネットワークから分離することでセキュリティを強化し、不正アクセスのリスクを軽減します。組織内の別のネットワークで侵害が発生した場合、Machine Learning ワークスペースの分離されたネットワークは影響を受けず、機械学習ワークロードが保護されます。",
+ "guid": "01b471f4-3d3d-498c-86b2-9b1b0ef458e3",
+ "service": "Azure Machine Learning",
+ "text": "マネージド仮想ネットワークの分離: Machine Learning のマネージド仮想ネットワークの分離を構成します。マネージド仮想ネットワークの分離を有効にすると、ワークスペースのマネージド仮想ネットワークが作成されます。ワークスペース用に作成したマネージド コンピューティング リソースでは、このマネージド仮想ネットワークが自動的に使用されます。マネージド仮想ネットワークの分離を実装できない場合は、ネットワーク トポロジの推奨事項に従って、コンピューティングをソリューション内の他のリソース (ワークスペース リソースのプライベート エンドポイントを含む) から離れた専用サブネットに分離する必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Machine Learning ネットワークの分離により、ワークスペースへのアクセスが安全で制御されることで、セキュリティが強化されます。ワークスペースにプライベート エンドポイントを構成すると、ワークスペースへのアクセスをプライベート IP アドレス経由でのみ行われるように制限できます。",
+ "guid": "001f1a80-6e4e-432d-a762-34ff31ae0a5b",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning ネットワークの分離: Machine Learning ワークスペースのプライベート エンドポイントを構成し、そのプライベート エンドポイント経由でワークスペースに接続します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この構成により、データ流出のリスクが最小限に抑えられ、データのセキュリティが向上します。この設定を有効にすると、システムにアクセスした悪意のあるアクターは、承認されていない外部の宛先にデータを送信できなくなります。",
+ "guid": "fb08378f-3b8a-4991-bb1f-f7c3a026fecf",
+ "service": "Azure Machine Learning",
+ "text": "承認された送信アクセスのみを許可する: データ流出のリスクを最小限に抑えるために、Machine Learning ワークスペースのマネージド アウトバウンド アクセスの送信モードを [承認されたアウトバウンドのみを許可する] に構成します。アクセスする必要があるリソースのプライベートエンドポイント、サービスタグ、または完全修飾ドメイン名(FQDN)を設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワークの分離により、Azure のサービスとしてのプラットフォーム (PaaS) ソリューションへのアクセスをプライベート IP アドレスのみに制限することで、セキュリティが強化されます。",
+ "guid": "a426e1df-08ed-43b8-ae7b-35d4833bc516",
+ "service": "Azure Machine Learning",
+ "text": "依存サービスの仮想ネットワーク分離: Storage、Key Vault、Container Registry などの依存サービスをプライベート エンドポイントで構成し、パブリック アクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "マネージド ID は、資格情報を保存し、サービス プリンシパルを手動で管理およびローテーションする必要をなくすことで、セキュリティを向上させます。",
+ "guid": "70a7a786-d676-42a3-8513-5ce0c9ceeb50",
+ "service": "Azure Machine Learning",
+ "text": "マネージド ID: Machine Learning と他のサービスとの間の認証にマネージド ID を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ローカル認証を無効にすると、Machine Learning コンピューティングのセキュリティが向上し、ID とリソース資格情報の一元的な制御と管理が可能になります。",
+ "guid": "50500732-feb1-42a7-a5ce-271443cd7eeb",
+ "service": "Azure Machine Learning",
+ "text": "ローカル認証を無効にする: Machine Learning コンピューティング クラスターとインスタンスのローカル認証を無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SSHアクセスを無効にすると、権限のない個人がアクセスを取得してシステムに害を及ぼす可能性を防ぎ、ブルートフォース攻撃から保護できます。",
+ "guid": "3e537535-ca7e-4669-a580-92819410e4d4",
+ "service": "Azure Machine Learning",
+ "text": "パブリック SSH ポートを無効にする: 'remoteLoginPortPublicAccess' を 'Disabled' に設定して、Machine Learning コンピューティング クラスターでパブリック Secure Shell (SSH) ポートが閉じていることを確認します。別のコンピューティングを使用する場合は、同様の構成を適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "パブリックIPアドレスのプロビジョニングは控えて、コンピュート・インスタンスまたはクラスタへの不正アクセスの可能性を制限することでセキュリティを強化します。",
+ "guid": "4ed5455d-c887-4075-9f11-16408abdffd9",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning コンピューティングのパブリック IP アドレスをプロビジョニングしない: Machine Learning コンピューティング クラスターまたはコンピューティング インスタンスをプロビジョニングするときは、enableNodePublicIp を 'false' に設定します。別のコンピューティングを使用する場合は、同様の構成を適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最新のイメージを使用することで、最新のセキュリティパッチを確実に適用するなど、一貫性があり、安定した、安全な環境を維持できます。",
+ "guid": "9772d2de-8ffe-4918-88d3-4385c6f3b852",
+ "service": "Azure Machine Learning",
+ "text": "最新のオペレーティング・システム・イメージの取得: コンピュート・インスタンスを再作成して、最新のオペレーティング・システム・イメージを取得します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "厳格なワークスペースアクセス制御により、各個人が自分の役割に必要な権限のみを持つようにすることで、セキュリティを強化します。たとえば、データ サイエンティストは、実験を実行するためのアクセス権はあるが、セキュリティ設定を変更するためのアクセス権は持たない場合があるため、潜在的なセキュリティ リスクを最小限に抑えることができます。",
+ "guid": "6d277dc0-7569-4ef5-b7b5-3958e102ef3b",
+ "service": "Azure Machine Learning",
+ "text": "厳格な Machine Learning ワークスペースのアクセス制御: Microsoft Entra ID グループを使用してワークスペースのアクセスを管理し、RBAC の最小特権の原則に従います。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "モデルカタログからのデプロイメントを特定のレジストリに制限すると、承認されたレジストリにのみモデルをデプロイできます。このアプローチは、オープンソースの基本モデルへのアクセスを規制するのに役立ちます。",
+ "guid": "1245aca7-0f54-4c03-8a85-f7da745385e6",
+ "service": "Azure Machine Learning",
+ "text": "モデル・カタログ・デプロイメントの制限: モデル・デプロイメントを特定のレジストリに制限します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保存データを暗号化すると、直接管理されるキーを使用して機密データが暗号化されるため、データのセキュリティが強化されます。独自の暗号化キーを管理する規制要件がある場合は、この機能を使用してその要件に準拠します。",
+ "guid": "44edeb32-99a9-4c6b-a941-2c4bf8e815ac",
+ "service": "Azure Machine Learning",
+ "text": "保存データを暗号化する: Machine Learning でカスタマー マネージド キーを使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "データ流出のリスクを最小限に抑えるには、受信と送信の要件を制限します。",
+ "guid": "0dd2a6df-26e0-4999-92d3-414bd5b29901",
+ "service": "Azure Machine Learning",
+ "text": "データ流出のリスクを最小限に抑える: データ流出防止を実装します。たとえば、エグレス仮想ネットワーク トラフィックをフィルター処理し、特定の Azure Storage アカウントに対してのみデータ流出を許可するサービス エンドポイント ポリシーを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "適切なコンピューティングを選択することは、ワークロードの実行コストに直接影響するため、非常に重要です。適切な使用をせずに GPU や高パフォーマンスの SKU を選択すると、無駄な支出につながる可能性があり、サイズが小さいコンピューティングを選択すると、トレーニング時間が法外に長くなり、パフォーマンスの問題が発生する可能性があります。",
+ "guid": "04967265-74a1-4b44-a559-a2b64ab9b67b",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティングリソースの最適化: ワークロードの要件に基づいてコンピューティングリソースを最適化します。ワークロードに最適なSKUを選択してください:
- 汎用 – バランスの取れたCPUとメモリの比率で、すべての目的に適しています。
- コンピューティング最適化 – CPU とメモリの比率が高く、数学を多用する計算に適しています。
- メモリ最適化 – CPU に対するメモリ容量が多く、メモリ内計算やデータベース アプリケーションに適しています。
- Mシリーズ – 大量のメモリとCPUを搭載した非常に大きなマシン。
- GPU – 変数の数が多く、より高い並列処理と特殊なコア命令の恩恵を受けることができるモデルに適しています。一般的なアプリケーションは、ディープラーニング、画像またはビデオ処理、科学シミュレーション、データマイニング、およびGPU開発フレームワークの活用です。複数のファミリーでテストし、結果をベースラインとして文書化します。モデルとデータが進化するにつれて、最適なコンピューティング リソースが変わる可能性があります。実行時間を監視し、必要に応じて再評価します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コンピューティング クラスターの自動スケールを構成して、使用量が少ないときにスケールダウンします。 ノードの最小数を 0 に設定して、トレーニング クラスターが使用されていないときに 0 にスケールダウンします。",
+ "guid": "052b07f8-ae5a-4425-8c1c-7b2eda14d127",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティングのスケーリングを最適化する: コンピューティング クラスターを自動スケーリング用に構成して、必要なものだけを使用するようにします。トレーニング クラスターの場合は、ノードの最小数を 0 に設定し、ノードがアイドル状態になる時間を適切な時間に構成します。反復的な実験を減らすには、時間を短縮してコストを節約します。より反復的な実験を行うには、変更のたびにスケールアップまたはスケールダウンにかかる費用が発生しないように、時間を長くします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "終了ポリシーを設定すると、不良実行を早期に停止することでコストを節約できます。",
+ "guid": "84efffef-23ff-465c-bb2a-f01d88e73c7e",
+ "service": "Azure Machine Learning",
+ "text": "トレーニング終了ポリシーを設定する: トレーニング実行の期間を制限するか、早期に終了するために、早期終了ポリシーを設定します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "低優先度の仮想マシンを使用すると、大量のコンピューティング能力を低コストで使用できます。Azure の余剰容量を利用します。",
+ "guid": "dc2f2c28-1da5-4b18-9ffc-69ebc766d184",
+ "service": "Azure Machine Learning",
+ "text": "バッチ ワークロードに低優先度の仮想マシンを使用する: 時間に敏感ではなく、中断が回復可能なバッチ ワークロードには、低優先度の仮想マシンを使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "デフォルトでは、コンピュート・インスタンスは使用可能であり、コストが発生します。アイドル状態のときにシャットダウンするようにコンピュート・インスタンスを構成するか、それらのスケジュールを構成すると、使用されていないときのコストを節約できます。",
+ "guid": "379134e1-c92f-4b18-9a3e-0f944a973aa4",
+ "service": "Azure Machine Learning",
+ "text": "コンピュート・インスタンスのアイドル・シャットダウンの有効化: コンピュート・インスタンスのアイドル・シャットダウンを有効にするか、使用時間がわかっている場合は開始時間と停止時間をスケジュールします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "並列ワークロードは、複数の小さなインスタンスで実行できるため、コストを節約できる可能性があります。",
+ "guid": "df1f64ad-5d9c-40dd-9943-a0e06ee7891f",
+ "service": "Azure Machine Learning",
+ "text": "トレーニング ワークロードを並列化する: トレーニング ワークロードを並列化することを検討してください。Machine Learning の並列コンポーネントを使用して、それらを実行してテストします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Reserved VM Instances を購入して、仮想マシンの使用料金を前払いし、従量課金制の価格で割引を提供します。割引は、予約に一致する仮想マシンの使用量に自動的に適用されます。",
+ "guid": "da87b89e-6218-4bf7-8d4b-b988fd2b3156",
+ "service": "Azure Machine Learning",
+ "text": "Azure 予約 VM インスタンス: 今後 1 年から 3 年間の使用量の見積もりが適切である場合は、Azure 予約 VM インスタンスを購入します。サービスの予約容量オプションは、使用量の見積もりが適切である場合は、活用してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ワークスペースの数を制限することで、メンテナンスの労力と運用コストが削減されます。セキュリティなどの要件については、複数の個別のワークスペースが必要になる場合があります。可能な限り、ワークスペースの数を最小限に抑えます。",
+ "guid": "e8d7df42-a0cf-49ea-9f9a-d01849c92a2b",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning ワークスペース インスタンスを最小限に抑える: 可能であれば、ワークスペースの数を最小限に抑えて、メンテナンスを減らします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Machine Learning モデル レジストリを使用して、機械学習モデルを格納およびバージョン管理し、変更を追跡し、トレーニングに使用されるジョブとデータセットの系列を維持します。機械学習モデル カタログを使用すると、データ サイエンス チームは、事前トレーニング済みの基本的な機械学習モデルを検出、評価、微調整できます。バージョン管理されたモデルを Machine Learning モデル レジストリに格納すると、A/B リリース、カナリア リリース、ロールバックなどのデプロイ戦略がサポートされます。",
+ "guid": "796e23ec-1071-4131-b0d3-77121aae8e33",
+ "service": "Azure Machine Learning",
+ "text": "モデル カタログとレジストリを活用する: Machine Learning モデル カタログとレジストリを利用して、機械学習資産を格納、バージョン管理、共有します。Machine Learning モデル カタログを使用して、モデルの A/B テストとデプロイを実装します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "デプロイされたモデルを監視することで、モデルがパフォーマンス要件を満たしていることを確認できます。データ ドリフトを監視すると、モデルのパフォーマンスの低下につながる可能性のある入力データの変化を検出するのに役立ちます。データ ドリフトを管理すると、モデルが時間の経過と共に正確な結果を提供することを確認できます。",
+ "guid": "295dae47-5380-41c6-b1bd-bfa3605a4e10",
+ "service": "Azure Machine Learning",
+ "text": "モデルのパフォーマンスの監視: デプロイされたモデルのパフォーマンスを監視し、データセットのデータ ドリフトを検出します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "エンドポイントを監視すると、リクエストのレイテンシーや 1 分あたりのリクエスト数などのメトリクスを可視化できます。パフォーマンスとベースラインを比較し、この情報を使用してコンピューティング リソースに変更を加えることができます。ネットワーク バイト数などのメトリクスを監視することで、クォータ制限に近づいている場合にアラートを発し、スロットリングを防ぐことができます。同様に、トレーニング環境を監視すると、トレーニング環境に変更を加えるための情報が得られます。その情報を使用して、スケールインまたはスケールアウト、さまざまなパフォーマンスの高い SKU でのスケールアップまたはスケールダウン、または CPU と GPU の選択を決定します。",
+ "guid": "1d6384f8-a394-46f3-acf0-caf1f82b15c0",
+ "service": "Azure Machine Learning",
+ "text": "インフラストラクチャの監視: モデルがオンライン エンドポイントにデプロイされている場合は、Application Insights を有効にしてオンライン エンドポイントとデプロイを監視します。トレーニング インフラストラクチャを監視して、ベースライン要件を満たしていることを確認します。Machine Learning のリソース ログを収集していることを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "キュレーションされた環境は、Machine Learning によって提供される事前に作成された環境であり、デプロイ時間を短縮し、デプロイとトレーニングの待機時間を短縮します。キュレーションされた環境を使用すると、トレーニングとデプロイの成功率が向上し、不要なイメージ ビルドが回避されます。Azure Container for PyTorch などのキュレーションされた環境は、Machine Learning で大規模なモデルをトレーニングするために最適化することもできます。",
+ "guid": "ed696d41-009b-47b5-9ae1-16b2ac09a83b",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニング環境をキュレーションする: 機械学習用に最適化されたキュレーションされた環境 (使用可能な場合) を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "適切なコンピューティングを選択することは、トレーニング時間に直接影響するため、非常に重要です。適切な SKU と CPU と GPU を選択することで、モデル トレーニングが要件とパフォーマンス目標を確実に満たすことができます。過度に使用される低パフォーマンスの SKU を選択すると、トレーニング時間が非常に長くなり、パフォーマンスの問題が発生する可能性があります。コンピューティングクラスターは、水平スケーリングをサポートするワークロードをスケールアウトすることでパフォーマンスを向上させる機能を提供します。この方法では、さまざまな要求を持つワークロードを柔軟に処理でき、必要に応じてマシンを追加または削除できます。",
+ "guid": "7ff0753e-559c-4872-9b46-056600d393b9",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニングに適したコンピューティング サービスを選択する: 自動スケールが必要な場合は、モデル トレーニングのコンピューティング インスタンスよりも Machine Learning コンピューティング クラスターを検討してください。トレーニング要件に基づいてコンピューティング リソースを最適化します。まず、CPUとGPUのどちらかを選択します。デフォルトでは CPU を使用しますが、ディープラーニング、画像やビデオの処理、大量のデータなどのワークロードには GPU を検討してください。次に、ワークロードに最適なイメージ SKU を選択します。テストを使用して、ベースラインを決定する際にトレーニング時間に対してコストを最適化するコンピューティング オプションを選択します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "自動スケールは、デプロイされたモデルのインスタンスの数を需要に合わせて調整します。",
+ "guid": "d1e94aee-19e1-4888-9220-6d0c7e351971",
+ "service": "Azure Machine Learning",
+ "text": "モデル デプロイ環境のスケーリング: デプロイ環境の自動スケーリング機能を使用します。AKS デプロイ環境の場合は、クラスター オートスケーラーを使用して、需要に合わせてスケーリングします。オンライン エンドポイントの場合は、Azure Monitor 自動スケール機能との統合により、自動的にスケーリングされます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "本番環境でのモデルのパフォーマンスを追跡すると、データドリフト、予測ドリフト、データ品質、特徴属性ドリフトなどの潜在的な問題が警告されます。データ ドリフトを監視すると、モデルのパフォーマンスの低下につながる可能性のある入力データの変化を検出するのに役立ちます。データ ドリフトを管理すると、モデルが時間の経過と共に正確な結果を提供することを確認できます。",
+ "guid": "c1d46066-94b8-4482-800d-1c9f7f5704ad",
+ "service": "Azure Machine Learning",
+ "text": "モデルのパフォーマンスの監視: デプロイされたモデルのパフォーマンスを監視します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "エンドポイントを監視すると、リクエストのレイテンシーや 1 分あたりのリクエスト数などのメトリクスを可視化できます。パフォーマンスとベースラインを比較し、この情報を使用してコンピューティング リソースに変更を加えることができます。ネットワーク バイト数などのメトリクスを監視することで、クォータ制限に近づいている場合にアラートを発し、スロットリングを防ぐことができます。同様に、トレーニング環境を監視すると、トレーニング環境に変更を加えるための情報が得られます。その情報を使用して、スケールインまたはスケールアウト、さまざまなパフォーマンスの高い SKU でのスケールアップまたはスケールダウン、または CPU と GPU の選択を決定します。",
+ "guid": "60fc9cf9-8eec-422c-9894-70a364e63ece",
+ "service": "Azure Machine Learning",
+ "text": "インフラストラクチャの監視: オンライン エンドポイントを監視し、監視と統合して、適切なメトリックとログを追跡および監視します。オンライン デプロイを作成するときに Application Insights を有効にします。トレーニング インフラストラクチャを監視し、モデルをトレーニングするときにメモリや CPU または GPU の使用量などのリソース使用量を確認して、ベースライン要件を満たしていることを確認します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Machine Learning Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.ko.json b/checklists-ext/azuremachinelearning_sg_checklist.ko.json
new file mode 100644
index 000000000..cefcf8ace
--- /dev/null
+++ b/checklists-ext/azuremachinelearning_sg_checklist.ko.json
@@ -0,0 +1,338 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "다중 지역 배포는 한 지역에서 중단이 발생하더라도 Machine Learning 워크로드가 계속 실행되도록 합니다. 다중 지역 배포는 지역 간 부하 분산을 개선하여 서로 다른 지리적 영역에 있는 사용자의 성능을 향상시킬 수 있습니다. 자세한 내용은 비즈니스 연속성 및 재해 복구를 위한 장애 조치(failover)를 참조하세요.",
+ "guid": "f0411b34-73cc-4026-a3e0-495204a7f02b",
+ "service": "Azure Machine Learning",
+ "text": "다중 지역 모델 배포: 안정성과 가용성을 향상시키려면 가능한 경우 다중 지역 배포 환경을 고려합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "모델 체크포인트는 훈련 중에 기계 학습 모델의 상태를 주기적으로 저장하므로 중단, 실패 또는 종료 시 복원할 수 있습니다. 자세한 내용은 Boost checkpoint speed and reduce cost with Nebula를 참조하십시오.",
+ "guid": "2d3126b3-dae2-4938-b558-9fbb05ec6342",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습 복원력: Azure Container for PyTorch, TensorFlow Estimator 클래스 또는 모델 검사점을 지원하는 Run 개체 및 FileDataset 클래스를 포함하여 Machine Learning에서 지원하는 검사점 지정 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "우선 순위가 낮은 가상 머신은 할인된 가격으로 제공되지만 선점할 수 있습니다. 전용 가상 머신 계층을 사용하는 클러스터는 선점되지 않습니다.",
+ "guid": "d9a0f9e6-a89c-4516-83ec-6f22ae29aaaf",
+ "service": "Azure Machine Learning",
+ "text": "계산 클러스터에 전용 가상 머신 계층 사용: 일괄 처리 유추를 위해 계산 클러스터에 전용 가상 머신 계층을 사용하여 일괄 처리 작업이 선점되지 않도록 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "보안 기준은 네트워크 보안, ID 관리, 데이터 보호 및 권한 있는 액세스와 같은 중요한 보안 측면에 대한 맞춤형 지침을 제공합니다. 최적의 보안을 위해 클라우드용 Microsoft Defender 사용하여 이러한 측면을 모니터링합니다.",
+ "guid": "9195a712-feaf-4aa9-ac8e-6cfe01423d34",
+ "service": "Azure Machine Learning",
+ "text": "보안 기준: Machine Learning Service의 보안 및 규정 준수를 강화하려면 Machine Learning에 대한 Azure 보안 기준을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "관리형 가상 네트워크 격리는 작업 영역을 다른 네트워크로부터 격리하여 무단 액세스의 위험을 줄여 보안을 강화합니다. 조직 내의 다른 네트워크에서 위반이 발생하는 시나리오에서 Machine Learning 작업 영역의 격리된 네트워크는 영향을 받지 않고 유지되어 기계 학습 워크로드를 보호합니다.",
+ "guid": "01b471f4-3d3d-498c-86b2-9b1b0ef458e3",
+ "service": "Azure Machine Learning",
+ "text": "관리형 가상 네트워크 격리: Machine Learning에 대한 관리형 가상 네트워크 격리를 구성합니다. 관리되는 가상 네트워크 격리를 사용하도록 설정하면 작업 영역에 대한 관리되는 가상 네트워크가 만들어집니다. 작업 영역에 대해 만드는 관리형 컴퓨팅 리소스는 이 관리형 가상 네트워크를 자동으로 사용합니다. 관리되는 가상 네트워크 격리를 구현할 수 없는 경우 네트워크 토폴로지 권장 사항에 따라 작업 영역 리소스에 대한 프라이빗 엔드포인트를 포함하여 솔루션의 나머지 리소스와 떨어진 전용 서브넷으로 컴퓨팅을 분리해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Machine Learning 네트워크 격리는 작업 영역에 대한 액세스가 안전하고 제어되도록 하여 보안을 강화합니다. 작업 영역에 대해 구성된 프라이빗 엔드포인트를 사용하면 개인 IP 주소를 통해서만 작업 영역에 대한 액세스를 제한할 수 있습니다.",
+ "guid": "001f1a80-6e4e-432d-a762-34ff31ae0a5b",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 네트워크 격리: Machine Learning 작업 영역에 대한 프라이빗 엔드포인트를 구성하고 해당 프라이빗 엔드포인트를 통해 작업 영역에 연결합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 구성은 데이터 반출 위험을 최소화하여 데이터 보안을 향상시킵니다. 이 구성을 사용하도록 설정하면 시스템에 대한 액세스 권한을 얻은 악의적인 행위자가 승인되지 않은 외부 대상으로 데이터를 보낼 수 없습니다.",
+ "guid": "fb08378f-3b8a-4991-bb1f-f7c3a026fecf",
+ "service": "Azure Machine Learning",
+ "text": "승인된 아웃바운드 액세스만 허용: Machine Learning 작업 영역 관리 아웃바운드 액세스에서 아웃바운드 모드를 '승인된 아웃바운드만 허용'으로 구성하여 데이터 반출 위험을 최소화합니다. 액세스해야 하는 리소스에 대한 프라이빗 엔드포인트, 서비스 태그 또는 FQDN(정규화된 도메인 이름)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 격리는 Azure PaaS(Platform as a Service) 솔루션에 대한 액세스를 개인 IP 주소로만 제한하여 보안을 강화합니다.",
+ "guid": "a426e1df-08ed-43b8-ae7b-35d4833bc516",
+ "service": "Azure Machine Learning",
+ "text": "종속 서비스에 대한 가상 네트워크 격리: 프라이빗 엔드포인트를 사용하여 Storage, Key Vault 및 Container Registry와 같은 종속 서비스를 구성하고 공용 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "관리 ID는 자격 증명을 저장하고 서비스 주체를 수동으로 관리 및 회전할 필요성을 제거하여 보안을 향상시킵니다.",
+ "guid": "70a7a786-d676-42a3-8513-5ce0c9ceeb50",
+ "service": "Azure Machine Learning",
+ "text": "관리 ID: Machine Learning과 다른 서비스 간의 인증에 관리 ID를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "로컬 인증을 사용하지 않도록 설정하면 Machine Learning 컴퓨팅의 보안이 강화되고 ID 및 리소스 자격 증명에 대한 중앙 집중식 제어 및 관리가 제공됩니다.",
+ "guid": "50500732-feb1-42a7-a5ce-271443cd7eeb",
+ "service": "Azure Machine Learning",
+ "text": "로컬 인증 사용 안 함: Machine Learning 컴퓨팅 클러스터 및 인스턴스에 대한 로컬 인증을 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SSH 액세스를 비활성화하면 권한이 없는 개인이 액세스 권한을 얻어 잠재적으로 시스템에 해를 끼치는 것을 방지하고 무차별 암호 대입 공격으로부터 사용자를 보호할 수 있습니다.",
+ "guid": "3e537535-ca7e-4669-a580-92819410e4d4",
+ "service": "Azure Machine Learning",
+ "text": "공용 SSH 포트 사용 안 함: 'remoteLoginPortPublicAccess'를 '사용 안 함'으로 설정하여 Machine Learning 컴퓨팅 클러스터에서 공용 SSH(Secure Shell) 포트가 닫혀 있는지 확인합니다. 다른 컴퓨팅을 사용하는 경우 유사한 구성을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "컴퓨팅 인스턴스 또는 클러스터에 대한 무단 액세스 가능성을 제한하여 보안을 강화하기 위해 공용 IP 주소를 프로비저닝하지 마십시오.",
+ "guid": "4ed5455d-c887-4075-9f11-16408abdffd9",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 컴퓨팅에 대한 공용 IP 주소를 프로비전하지 않음: Machine Learning 컴퓨팅 클러스터 또는 컴퓨팅 인스턴스를 프로비전할 때 enableNodePublicIp를 'false'로 설정합니다. 다른 컴퓨팅을 사용하는 경우 유사한 구성을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "최신 이미지를 사용하면 최신 보안 패치를 포함하여 일관되고 안정적이며 안전한 환경을 유지할 수 있습니다.",
+ "guid": "9772d2de-8ffe-4918-88d3-4385c6f3b852",
+ "service": "Azure Machine Learning",
+ "text": "최신 운영 체제 이미지 가져오기: 컴퓨팅 인스턴스를 다시 만들어 최신 운영 체제 이미지를 가져옵니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "엄격한 작업 영역 액세스 제어는 개인이 자신의 역할에 필요한 권한만 갖도록 하여 보안을 강화합니다. 예를 들어 데이터 사이언티스트는 실험을 실행할 수 있는 액세스 권한이 있지만 보안 설정을 수정할 수는 없으므로 잠재적인 보안 위험을 최소화할 수 있습니다.",
+ "guid": "6d277dc0-7569-4ef5-b7b5-3958e102ef3b",
+ "service": "Azure Machine Learning",
+ "text": "엄격한 Machine Learning 작업 영역 액세스 제어: Microsoft Entra ID 그룹을 사용하여 작업 영역 액세스를 관리하고 RBAC에 대한 최소 권한 원칙을 준수합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "모델 카탈로그에서 특정 레지스트리로 배포를 제한하면 승인된 레지스트리에만 모델을 배포할 수 있습니다. 이 접근 방식은 오픈 소스 기본 모델에 대한 액세스를 규제하는 데 도움이 됩니다.",
+ "guid": "1245aca7-0f54-4c03-8a85-f7da745385e6",
+ "service": "Azure Machine Learning",
+ "text": "모델 카탈로그 배포 제한: 모델 배포를 특정 레지스트리로 제한합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "미사용 데이터를 암호화하면 사용자가 직접 관리하는 키를 사용하여 중요한 데이터를 암호화하여 데이터 보안을 강화할 수 있습니다. 자체 암호화 키를 관리하기 위한 규정 요구 사항이 있는 경우 이 기능을 사용하여 해당 요구 사항을 준수합니다.",
+ "guid": "44edeb32-99a9-4c6b-a941-2c4bf8e815ac",
+ "service": "Azure Machine Learning",
+ "text": "미사용 데이터 암호화: Machine Learning에서 고객 관리형 키를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "인바운드 및 아웃바운드 요구 사항을 제한하여 데이터 반출 위험을 최소화합니다.",
+ "guid": "0dd2a6df-26e0-4999-92d3-414bd5b29901",
+ "service": "Azure Machine Learning",
+ "text": "데이터 반출 위험 최소화: 데이터 반출 방지를 구현합니다. 예를 들어 송신 가상 네트워크 트래픽을 필터링하고 특정 Azure Storage 계정으로만 데이터 반출을 허용하는 서비스 엔드포인트 정책을 만듭니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "올바른 컴퓨팅을 선택하는 것은 워크로드 실행 비용에 직접적인 영향을 미치므로 매우 중요합니다. 적절한 사용 없이 GPU 또는 고성능 SKU를 선택하면 낭비적인 지출이 발생할 수 있으며, 크기가 작은 컴퓨팅을 선택하면 훈련 시간이 엄청나게 길어지고 성능 문제가 발생할 수 있습니다.",
+ "guid": "04967265-74a1-4b44-a559-a2b64ab9b67b",
+ "service": "Azure Machine Learning",
+ "text": "Optimize compute resources(계산 리소스 최적화): 워크로드의 요구 사항에 따라 계산 리소스를 최적화합니다. 워크로드에 가장 적합한 SKU 선택:
- 범용 – 균형 잡힌 CPU 대 메모리 비율, 모든 용도에 적합합니다.
- 컴퓨팅 최적화 – CPU 대 메모리 비율이 높아 수학이 많이 필요한 계산에 적합합니다.
- 메모리 최적화 – CPU 대비 메모리가 높아 메모리 내 계산 또는 데이터베이스 애플리케이션에 적합합니다.
- M 시리즈 – 엄청난 양의 메모리와 CPU를 가진 매우 큰 컴퓨터.
- GPU – 더 높은 병렬 처리와 전문화된 핵심 명령의 이점을 누릴 수 있는 변수 수가 많은 모델에 더 좋습니다. 일반적인 응용 분야는 딥 러닝, 이미지 또는 비디오 처리, 과학 시뮬레이션, 데이터 마이닝, GPU 개발 프레임워크 활용 등입니다. 여러 패밀리로 테스트하고 결과를 기준선으로 문서화합니다. 모델과 데이터가 발전함에 따라 가장 적절한 컴퓨팅 리소스가 변경될 수 있습니다. 실행 시간을 모니터링하고 필요에 따라 다시 평가합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "사용량이 적을 때 컴퓨팅 클러스터가 축소되도록 자동 크기 조정을 구성합니다. 학습 클러스터가 사용하지 않을 때 0으로 축소할 수 있도록 최소 노드 수를 0으로 설정합니다.",
+ "guid": "052b07f8-ae5a-4425-8c1c-7b2eda14d127",
+ "service": "Azure Machine Learning",
+ "text": "컴퓨팅 크기 조정 최적화: 필요한 항목만 사용하도록 자동 크기 조정을 위해 컴퓨팅 클러스터를 구성합니다. 학습 클러스터의 경우 최소 노드 수를 0으로 설정하고 노드가 유휴 상태인 시간을 적절한 시간으로 구성합니다. 반복적인 실험을 줄이려면 시간을 줄여 비용을 절감하십시오. 더 반복적인 실험의 경우 각 변경 후 확장 또는 축소에 대한 비용을 지불하지 않도록 더 많은 시간을 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "종료 정책을 설정하면 부실 실행을 조기에 중지하여 비용을 절감할 수 있습니다.",
+ "guid": "84efffef-23ff-465c-bb2a-f01d88e73c7e",
+ "service": "Azure Machine Learning",
+ "text": "교육 종료 정책 설정: 조기 종료 정책을 설정하여 교육 실행 기간을 제한하거나 조기에 종료합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "우선 순위가 낮은 가상 머신을 사용하면 저렴한 비용으로 많은 양의 컴퓨팅 성능을 사용할 수 있습니다. Azure의 잉여 용량을 활용합니다.",
+ "guid": "dc2f2c28-1da5-4b18-9ffc-69ebc766d184",
+ "service": "Azure Machine Learning",
+ "text": "일괄 처리 워크로드에 우선 순위가 낮은 가상 머신 사용: 시간에 민감하지 않고 중단을 복구할 수 있는 일괄 처리 워크로드에 우선 순위가 낮은 가상 머신을 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "기본적으로 컴퓨트 인스턴스를 사용할 수 있으며 비용이 발생합니다. 유휴 상태일 때 종료되도록 컴퓨트 인스턴스를 구성하거나 스케줄을 구성하면 사용하지 않을 때 비용이 절감됩니다.",
+ "guid": "379134e1-c92f-4b18-9a3e-0f944a973aa4",
+ "service": "Azure Machine Learning",
+ "text": "컴퓨트 인스턴스에 대해 유휴 종료 사용: 컴퓨트 인스턴스에 대해 유휴 종료를 활성화하거나 사용 시간이 알려진 경우 시작 및 중지 시간을 예약합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "병렬 워크로드는 여러 개의 더 작은 인스턴스에서 실행할 수 있으므로 잠재적으로 비용을 절감할 수 있습니다.",
+ "guid": "df1f64ad-5d9c-40dd-9943-a0e06ee7891f",
+ "service": "Azure Machine Learning",
+ "text": "학습 워크로드 병렬화: 학습 워크로드를 병렬화하는 것이 좋습니다. Machine Learning의 병렬 구성 요소를 사용하여 실행을 테스트합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Reserved VM Instances를 구매하여 가상 머신 사용량을 선불로 지불하고 종량제 가격으로 할인을 제공하세요. 할인은 예약과 일치하는 가상 머신 사용량에 자동으로 적용됩니다.",
+ "guid": "da87b89e-6218-4bf7-8d4b-b988fd2b3156",
+ "service": "Azure Machine Learning",
+ "text": "Azure Reserved VM Instances: 향후 1년에서 3년 동안의 사용량을 잘 예측한 경우 Azure Reserved VM Instances를 구매합니다. 사용량을 잘 예측할 수 있는 경우 서비스에 대한 예약된 용량 옵션을 활용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "작업 공간 수를 제한하면 유지 관리 노력과 운영 비용이 절감됩니다. 보안과 같은 요구 사항의 경우 여러 개의 개별 작업 영역이 필요할 수 있습니다. 가능한 경우 작업 영역의 수를 최소화합니다.",
+ "guid": "e8d7df42-a0cf-49ea-9f9a-d01849c92a2b",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 작업 영역 인스턴스 최소화: 가능한 경우 작업 영역 수를 최소화하여 유지 관리를 줄입니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Machine Learning 모델 레지스트리를 사용하여 기계 학습 모델을 저장하고 버전을 관리하여 변경 사항을 추적하고 교육에 사용되는 작업 및 데이터 세트와의 계보를 유지 관리합니다. Machine Learning 모델 카탈로그를 사용하면 데이터 과학 팀이 사전 훈련된 기본 기계 학습 모델을 검색, 평가 및 미세 조정할 수 있습니다. 버전이 지정된 모델을 Machine Learning 모델 레지스트리에 저장하면 A/B 릴리스, 카나리아 릴리스 및 롤백과 같은 배포 전략이 지원됩니다.",
+ "guid": "796e23ec-1071-4131-b0d3-77121aae8e33",
+ "service": "Azure Machine Learning",
+ "text": "모델 카탈로그 및 레지스트리 활용: Machine Learning 모델 카탈로그 및 레지스트리를 활용하여 Machine Learning 자산을 저장, 버전 관리 및 공유합니다. Machine Learning 모델 카탈로그를 사용하여 A/B 테스트 및 모델 배포를 구현할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "배포된 모델을 모니터링하면 모델이 성능 요구 사항을 충족하는지 확인할 수 있습니다. 데이터 드리프트를 모니터링하면 모델 성능 저하로 이어질 수 있는 입력 데이터의 변경 사항을 감지하는 데 도움이 됩니다. 데이터 드리프트를 관리하면 모델이 시간이 지남에 따라 정확한 결과를 제공하는지 확인할 수 있습니다.",
+ "guid": "295dae47-5380-41c6-b1bd-bfa3605a4e10",
+ "service": "Azure Machine Learning",
+ "text": "모델 성능 모니터링: 배포된 모델의 성능을 모니터링하고 데이터 세트에서 데이터 드리프트를 감지합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "엔드포인트를 모니터링하면 요청 대기 시간 및 분당 요청 수와 같은 지표에 대한 가시성을 얻을 수 있습니다. 성능과 기준을 비교하고 이 정보를 사용하여 그에 따라 컴퓨팅 리소스를 변경할 수 있습니다. 네트워크 바이트와 같은 메트릭을 모니터링하면 할당량 한도에 가까워지고 있는 경우 경고하고 제한을 방지할 수 있습니다. 마찬가지로, 학습 환경을 모니터링하면 학습 환경을 변경할 수 있는 정보를 얻을 수 있습니다. 해당 정보를 사용하여 축소 또는 축소하거나, 다양한 성능의 SKU로 확장 또는 축소하거나, CPU 또는 GPU 중에서 선택할 수 있습니다.",
+ "guid": "1d6384f8-a394-46f3-acf0-caf1f82b15c0",
+ "service": "Azure Machine Learning",
+ "text": "인프라 모니터링: 모델이 온라인 엔드포인트에 배포된 경우 Application Insights를 사용하여 온라인 엔드포인트 및 배포를 모니터링할 수 있습니다. 교육 인프라를 모니터링하여 기준 요구 사항을 충족하고 있는지 확인합니다. Machine Learning에 대한 리소스 로그를 수집하고 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "큐레이팅된 환경은 Machine Learning에서 제공하는 미리 만들어진 환경으로, 배포 시간을 단축하고 배포 및 학습 대기 시간을 줄입니다. 선별된 환경을 사용하면 교육 및 배포 성공률이 향상되고 불필요한 이미지 빌드를 방지할 수 있습니다. Azure Container for PyTorch와 같은 큐레이팅된 환경은 Machine Learning에서 대규모 모델을 학습시키는 데 최적화할 수도 있습니다.",
+ "guid": "ed696d41-009b-47b5-9ae1-16b2ac09a83b",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습 환경 큐레이팅: 사용 가능한 경우 Machine Learning에 최적화된 큐레이팅된 환경을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "올바른 컴퓨팅을 선택하는 것은 학습 시간에 직접적인 영향을 미치므로 매우 중요합니다. 올바른 SKU 및 CPU와 GPU를 선택하면 모델 학습이 요구 사항 및 성능 목표를 충족할 수 있습니다. 과도하게 사용되는 저성능 SKU를 선택하면 학습 시간이 엄청나게 길어지고 성능 문제가 발생할 수 있습니다. 컴퓨팅 클러스터는 수평적 확장을 지원하는 워크로드를 확장하여 성능을 향상시킬 수 있는 기능을 제공합니다. 이 방법은 다양한 요구 사항이 있는 워크로드를 유연하게 처리할 수 있으며 필요에 따라 컴퓨터를 추가하거나 제거할 수 있습니다.",
+ "guid": "7ff0753e-559c-4872-9b46-056600d393b9",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습에 적합한 컴퓨팅 서비스 선택: 자동 크기 조정이 필요한 경우 모델 학습을 위해 컴퓨팅 인스턴스보다 Machine Learning 컴퓨팅 클러스터를 고려합니다. 학습 요구 사항에 따라 컴퓨팅 리소스를 최적화합니다. 먼저 CPU와 GPU 중에서 선택합니다. 기본적으로 CPU를 사용하지만 딥 러닝, 이미지 또는 비디오 처리 또는 대용량 데이터와 같은 워크로드에는 GPU를 사용하는 것이 좋습니다. 다음으로, 워크로드에 가장 적합한 이미지 SKU를 선택합니다. 테스트를 사용하여 기준선을 결정할 때 훈련 시간에 대한 비용을 최적화하는 컴퓨팅 옵션을 선택합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "자동 크기 조정은 수요에 맞게 배포된 모델의 인스턴스 수를 조정합니다.",
+ "guid": "d1e94aee-19e1-4888-9220-6d0c7e351971",
+ "service": "Azure Machine Learning",
+ "text": "모델 배포 환경 크기 조정: 배포 환경의 자동 크기 조정 기능을 사용합니다. AKS 배포 환경의 경우 클러스터 자동 크기 조정기를 사용하여 수요에 맞게 크기를 조정합니다. 온라인 엔드포인트의 경우 Azure Monitor 자동 크기 조정 기능과의 통합을 통해 자동으로 크기를 조정합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "프로덕션에서 모델의 성능을 추적하면 데이터 드리프트, 예측 드리프트, 데이터 품질 및 기능 속성 드리프트와 같은 잠재적인 문제에 대한 경고를 받을 수 있습니다. 데이터 드리프트를 모니터링하면 모델 성능 저하로 이어질 수 있는 입력 데이터의 변경 사항을 감지하는 데 도움이 됩니다. 데이터 드리프트를 관리하면 모델이 시간이 지남에 따라 정확한 결과를 제공하는지 확인할 수 있습니다.",
+ "guid": "c1d46066-94b8-4482-800d-1c9f7f5704ad",
+ "service": "Azure Machine Learning",
+ "text": "모델 성능 모니터링: 배포된 모델의 성능을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "엔드포인트를 모니터링하면 요청 대기 시간 및 분당 요청 수와 같은 지표에 대한 가시성을 얻을 수 있습니다. 성능과 기준을 비교하고 이 정보를 사용하여 그에 따라 컴퓨팅 리소스를 변경할 수 있습니다. 네트워크 바이트와 같은 메트릭을 모니터링하면 할당량 한도에 가까워지고 있는 경우 경고하고 제한을 방지할 수 있습니다. 마찬가지로, 학습 환경을 모니터링하면 학습 환경을 변경할 수 있는 정보를 얻을 수 있습니다. 해당 정보를 사용하여 축소 또는 축소하거나, 다양한 성능의 SKU로 확장 또는 축소하거나, CPU 또는 GPU 중에서 선택할 수 있습니다.",
+ "guid": "60fc9cf9-8eec-422c-9894-70a364e63ece",
+ "service": "Azure Machine Learning",
+ "text": "인프라 모니터링: 온라인 엔드포인트를 모니터링하고 Monitor와 통합하여 적절한 메트릭 및 로그를 추적하고 모니터링합니다. 온라인 배포를 만들 때 Application Insights를 사용하도록 설정합니다. 학습 인프라를 모니터링하고 모델을 학습할 때 메모리 및 CPU 또는 GPU 사용량과 같은 리소스 사용량을 검토하여 기준 요구 사항을 충족하고 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Machine Learning Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.pt.json b/checklists-ext/azuremachinelearning_sg_checklist.pt.json
new file mode 100644
index 000000000..65e02fbbf
--- /dev/null
+++ b/checklists-ext/azuremachinelearning_sg_checklist.pt.json
@@ -0,0 +1,338 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Uma implantação de várias regiões garante que suas cargas de trabalho do Machine Learning continuem a ser executadas mesmo que uma região sofra uma interrupção. A implantação multirregional melhora a distribuição de carga entre regiões, potencialmente melhorando o desempenho para usuários localizados em diferentes áreas geográficas. Para obter mais informações, consulte Failover para continuidade dos negócios e recuperação de desastres.",
+ "guid": "f0411b34-73cc-4026-a3e0-495204a7f02b",
+ "service": "Azure Machine Learning",
+ "text": "Implantação de modelo multirregional: para maior confiabilidade e disponibilidade, considere um ambiente de implantação multirregional quando possível.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O ponto de verificação do modelo salva periodicamente o estado do modelo de aprendizado de máquina durante o treinamento, para que ele possa ser restaurado em caso de interrupção, falha ou encerramento. Para obter mais informações, consulte Aumente a velocidade do ponto de verificação e reduza o custo com o Nebula.",
+ "guid": "2d3126b3-dae2-4938-b558-9fbb05ec6342",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência de treinamento de modelo: use recursos de ponto de verificação compatíveis com o Machine Learning, incluindo o Contêiner do Azure para PyTorch, a classe TensorFlow Estimator ou o objeto Run e a classe FileDataset que dão suporte ao ponto de verificação do modelo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As máquinas virtuais de baixa prioridade têm um preço reduzido, mas são preemptivas. Os clusters que usam a camada de máquina virtual dedicada não são preemptados.",
+ "guid": "d9a0f9e6-a89c-4516-83ec-6f22ae29aaaf",
+ "service": "Azure Machine Learning",
+ "text": "Usar a camada de máquina virtual dedicada para clusters de computação: use a camada de máquina virtual dedicada para clusters de computação para inferência em lote para garantir que o trabalho em lote não seja preemptado.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A linha de base de segurança fornece orientação personalizada sobre aspectos cruciais de segurança, como segurança de rede, gerenciamento de identidade, proteção de dados e acesso privilegiado. Para obter a segurança ideal, use o Microsoft Defender para Nuvem para monitorar esses aspectos.",
+ "guid": "9195a712-feaf-4aa9-ac8e-6cfe01423d34",
+ "service": "Azure Machine Learning",
+ "text": "Linha de base de segurança: para aprimorar a segurança e a conformidade do Serviço de Machine Learning, aplique a linha de base de segurança do Azure para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede virtual gerenciado aumenta a segurança isolando seu workspace de outras redes, reduzindo o risco de acesso não autorizado. Em um cenário em que ocorre uma violação em outra rede dentro de sua organização, a rede isolada do workspace do Machine Learning permanece inalterada, protegendo suas cargas de trabalho de machine learning.",
+ "guid": "01b471f4-3d3d-498c-86b2-9b1b0ef458e3",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede virtual gerenciada: configure o isolamento de rede virtual gerenciada para Machine Learning. Quando você habilita o isolamento de rede virtual gerenciada, uma rede virtual gerenciada é criada para o workspace. Os recursos de computação gerenciados que você cria para o workspace usam automaticamente essa rede virtual gerenciada. Se você não puder implementar o isolamento de rede virtual gerenciada, deverá seguir as recomendações de topologia de rede para separar a computação em uma sub-rede dedicada longe do restante dos recursos da solução, incluindo os pontos de extremidade privados para recursos de workspace.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede do Machine Learning aumenta a segurança, garantindo que o acesso ao workspace seja seguro e controlado. Com um ponto de extremidade privado configurado para seu workspace, você pode limitar o acesso ao workspace para ocorrer apenas nos endereços IP privados.",
+ "guid": "001f1a80-6e4e-432d-a762-34ff31ae0a5b",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede do Machine Learning: configure um ponto de extremidade privado para seu workspace do Machine Learning e conecte-se ao workspace por meio desse ponto de extremidade privado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Essa configuração minimiza o risco de exfiltração de dados, melhorando a segurança dos dados. Com essa configuração habilitada, um agente mal-intencionado que obtém acesso ao seu sistema não pode enviar seus dados para um destino externo não aprovado.",
+ "guid": "fb08378f-3b8a-4991-bb1f-f7c3a026fecf",
+ "service": "Azure Machine Learning",
+ "text": "Permitir apenas acesso de saída aprovado: configure o modo de saída no acesso de saída gerenciado do workspace do Machine Learning como \"Permitir apenas saída aprovada\" para minimizar o risco de exfiltração de dados. Configure pontos de extremidade privados, marcas de serviço ou FQDNs (nomes de domínio totalmente qualificados) para recursos que você precisa acessar.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede reforça a segurança restringindo o acesso às soluções de PaaS (plataforma como serviço) do Azure apenas a endereços IP privados.",
+ "guid": "a426e1df-08ed-43b8-ae7b-35d4833bc516",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede virtual para serviços dependentes: configure serviços dependentes, como Armazenamento, Key Vault e Registro de Contêiner com pontos de extremidade privados e desabilite o acesso público.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As identidades gerenciadas melhoram a segurança, eliminando a necessidade de armazenar credenciais e gerenciar e alternar manualmente as entidades de serviço.",
+ "guid": "70a7a786-d676-42a3-8513-5ce0c9ceeb50",
+ "service": "Azure Machine Learning",
+ "text": "Identidade gerenciada: use identidades gerenciadas para autenticação entre o Machine Learning e outros serviços.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar a autenticação local aumenta a segurança da computação do Machine Learning e fornece controle e gerenciamento centralizados de identidades e credenciais de recursos.",
+ "guid": "50500732-feb1-42a7-a5ce-271443cd7eeb",
+ "service": "Azure Machine Learning",
+ "text": "Desabilitar autenticação local: desabilite a autenticação local para clusters e instâncias de computação do Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar o acesso SSH ajuda a impedir que indivíduos não autorizados obtenham acesso e potencialmente causem danos ao seu sistema e protege você contra ataques de força bruta.",
+ "guid": "3e537535-ca7e-4669-a580-92819410e4d4",
+ "service": "Azure Machine Learning",
+ "text": "Desabilitar a porta SSH pública: verifique se a porta pública do Secure Shell (SSH) está fechada no cluster de computação do Machine Learning definindo 'remoteLoginPortPublicAccess' como 'Desabilitado'. Aplique uma configuração semelhante se você usar uma computação diferente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Evite provisionar endereços IP públicos para aumentar a segurança, limitando o potencial de acesso não autorizado à sua instância de computação ou clusters.",
+ "guid": "4ed5455d-c887-4075-9f11-16408abdffd9",
+ "service": "Azure Machine Learning",
+ "text": "Não provisionar endereços IP públicos para computação do Machine Learning: defina enableNodePublicIp como 'false' ao provisionar clusters de computação ou instâncias de computação do Machine Learning. Aplique uma configuração semelhante se você usar uma computação diferente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso das imagens mais recentes garante que você mantenha um ambiente consistente, estável e seguro, incluindo a garantia de que você tenha os patches de segurança mais recentes.",
+ "guid": "9772d2de-8ffe-4918-88d3-4385c6f3b852",
+ "service": "Azure Machine Learning",
+ "text": "Obter a imagem mais recente do sistema operacional: recrie instâncias de computação para obter a imagem mais recente do sistema operacional.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Controles rígidos de acesso ao espaço de trabalho aumentam a segurança, garantindo que os indivíduos tenham apenas as permissões necessárias para sua função. Um cientista de dados, por exemplo, pode ter acesso para executar experimentos, mas não para modificar as configurações de segurança, minimizando possíveis riscos de segurança.",
+ "guid": "6d277dc0-7569-4ef5-b7b5-3958e102ef3b",
+ "service": "Azure Machine Learning",
+ "text": "Controles rígidos de acesso ao workspace do Machine Learning: use grupos de ID do Microsoft Entra para gerenciar o acesso ao workspace e aderir ao princípio de privilégios mínimos para RBAC.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Restringir as implantações do catálogo de modelos a registros específicos garante que você implante apenas modelos em registros aprovados. Essa abordagem ajuda a regular o acesso aos modelos fundamentais de software livre.",
+ "guid": "1245aca7-0f54-4c03-8a85-f7da745385e6",
+ "service": "Azure Machine Learning",
+ "text": "Restringir implantações de catálogo de modelos: restrinja as implantações de modelos a registros específicos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A criptografia de dados em repouso aumenta a segurança dos dados, garantindo que os dados confidenciais sejam criptografados usando chaves gerenciadas diretamente por você. Se você tiver um requisito regulatório para gerenciar suas próprias chaves de criptografia, use esse recurso para cumprir esse requisito.",
+ "guid": "44edeb32-99a9-4c6b-a941-2c4bf8e815ac",
+ "service": "Azure Machine Learning",
+ "text": "Criptografar dados em repouso: considere usar chaves gerenciadas pelo cliente com o Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Minimize o risco de exfiltração de dados limitando os requisitos de entrada e saída.",
+ "guid": "0dd2a6df-26e0-4999-92d3-414bd5b29901",
+ "service": "Azure Machine Learning",
+ "text": "Minimize o risco de exfiltração de dados: implemente a prevenção de exfiltração de dados. Por exemplo, crie uma política de ponto de extremidade de serviço para filtrar o tráfego de rede virtual de saída e permitir a exfiltração de dados somente para contas específicas do Armazenamento do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Selecionar a computação certa é fundamental, pois afeta diretamente o custo de execução de sua carga de trabalho. Escolher uma GPU ou um SKU de alto desempenho sem o uso adequado pode levar a gastos desnecessários, enquanto a escolha de computação subdimensionada pode levar a tempos de treinamento proibitivamente longos e problemas de desempenho.",
+ "guid": "04967265-74a1-4b44-a559-a2b64ab9b67b",
+ "service": "Azure Machine Learning",
+ "text": "Otimize os recursos de computação: otimize seus recursos de computação com base nos requisitos de sua carga de trabalho. Escolha o SKU que melhor se adapta à sua carga de trabalho:
- Uso geral – Proporção balanceada de CPU para memória, boa para todos os fins.
- Otimizado para computação – Alta proporção de CPU para memória, boa para cálculos pesados em matemática.
- Memória otimizada – Alta memória para CPU, boa para cálculos na memória ou aplicativos de banco de dados.
- Série M – Máquinas muito grandes que possuem grandes quantidades de memória e CPU.
- GPU – Melhor para modelos com um alto número de variáveis que podem se beneficiar de maior paralelismo e instruções de núcleo especializadas. As aplicações típicas são aprendizado profundo, processamento de imagem ou vídeo, simulações científicas, mineração de dados e aproveitamento de estruturas de desenvolvimento de GPU. Teste com várias famílias e documente os resultados como sua linha de base. À medida que seu modelo e dados evoluem, o recurso de computação mais adequado pode mudar. Monitore os tempos de execução e reavalie conforme necessário.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Configure o dimensionamento automático para clusters de computação para reduzir verticalmente quando seu uso for baixo. Defina o número mínimo de nós como 0 para que os clusters de treinamento sejam reduzidos verticalmente para 0 quando não estiverem em uso.",
+ "guid": "052b07f8-ae5a-4425-8c1c-7b2eda14d127",
+ "service": "Azure Machine Learning",
+ "text": "Otimizar o dimensionamento de computação: configure seus clusters de computação para dimensionamento automático para garantir que você use apenas o que precisa. Para clusters de treinamento, defina o número mínimo de nós como 0 e configure a quantidade de tempo que o nó fica ocioso para um tempo apropriado. Para uma experimentação menos iterativa, reduza o tempo para economizar custos. Para uma experimentação mais iterativa, use um tempo maior para evitar o pagamento de escalonamento vertical ou reduzido após cada alteração.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A definição de políticas de encerramento pode ajudá-lo a economizar custos interrompendo as execuções inexecutadas antecipadamente.",
+ "guid": "84efffef-23ff-465c-bb2a-f01d88e73c7e",
+ "service": "Azure Machine Learning",
+ "text": "Definir políticas de encerramento de treinamento: defina políticas de encerramento antecipado para limitar a duração das execuções de treinamento ou encerrá-las antecipadamente.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As máquinas virtuais de baixa prioridade permitem que uma grande quantidade de poder de computação seja usada por um custo baixo. Eles aproveitam a capacidade excedente no Azure.",
+ "guid": "dc2f2c28-1da5-4b18-9ffc-69ebc766d184",
+ "service": "Azure Machine Learning",
+ "text": "Usar máquinas virtuais de baixa prioridade para cargas de trabalho em lotes: considere usar máquinas virtuais de baixa prioridade para cargas de trabalho em lotes que não são sensíveis ao tempo e nas quais as interrupções são recuperáveis.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Por padrão, as instâncias de computação estão disponíveis para você, acumulando custos. Configurar instâncias de computação para desligar quando ociosas ou configurar um agendamento para elas economiza custos quando não estão em uso.",
+ "guid": "379134e1-c92f-4b18-9a3e-0f944a973aa4",
+ "service": "Azure Machine Learning",
+ "text": "Habilitar o desligamento ocioso para instâncias de computação: habilite o desligamento ocioso para instâncias de computação ou programe um horário de início e término se o tempo de uso for conhecido.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Cargas de trabalho paralelas podem ser executadas em várias instâncias menores, potencialmente gerando economia de custos.",
+ "guid": "df1f64ad-5d9c-40dd-9943-a0e06ee7891f",
+ "service": "Azure Machine Learning",
+ "text": "Paralelizar cargas de trabalho de treinamento: considere paralelizar cargas de trabalho de treinamento. Teste a execução deles com a ajuda dos componentes paralelos no Machine Learning.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Compre Instâncias de VM Reservadas do Azure para pagar antecipadamente pelo uso da máquina virtual e fornecer descontos com preços pagos conforme o uso. O desconto é aplicado automaticamente para o uso da máquina virtual que corresponde à reserva.",
+ "guid": "da87b89e-6218-4bf7-8d4b-b988fd2b3156",
+ "service": "Azure Machine Learning",
+ "text": "Instâncias de VM Reservadas do Azure: compre Instâncias de VM Reservadas do Azure se você tiver uma boa estimativa de uso nos próximos um a três anos. Aproveite as opções de capacidade reservada para serviços quando tiver boas estimativas de uso.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Limitar o número de espaços de trabalho reduz o esforço de manutenção e o custo de operação. Para requisitos, como segurança, talvez você precise de vários workspaces separados. Minimize o número de espaços de trabalho quando possível.",
+ "guid": "e8d7df42-a0cf-49ea-9f9a-d01849c92a2b",
+ "service": "Azure Machine Learning",
+ "text": "Minimizar instâncias de workspace do Machine Learning: minimize o número de workspaces, quando possível, para reduzir a manutenção.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Use registros de modelo de aprendizado de máquina para armazenar e controlar a versão de seus modelos de aprendizado de máquina para acompanhar as alterações e manter a linhagem com o trabalho e os conjuntos de dados usados para treinamento. Com os catálogos de modelos de Machine Learning, suas equipes de ciência de dados podem descobrir, avaliar e ajustar modelos de machine learning básicos pré-treinados. O armazenamento de modelos com versão em registros de modelo do Machine Learning dá suporte a estratégias de implantação, como versões A/B, versões canário e reversões.",
+ "guid": "796e23ec-1071-4131-b0d3-77121aae8e33",
+ "service": "Azure Machine Learning",
+ "text": "Aproveite os catálogos e registros de modelos: aproveite os catálogos e registros de modelos do Machine Learning para armazenar, controlar a versão e compartilhar ativos de aprendizado de máquina. Use catálogos de modelos do Machine Learning para ajudá-lo a implementar testes A/B e implantação de modelos.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento de modelos implantados garante que seus modelos atendam aos requisitos de desempenho. O monitoramento de descompasso de dados ajuda a detectar alterações nos dados de entrada que podem levar a um declínio no desempenho do modelo. O gerenciamento de descompasso de dados ajuda a garantir que seu modelo forneça resultados precisos ao longo do tempo.",
+ "guid": "295dae47-5380-41c6-b1bd-bfa3605a4e10",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar o desempenho do modelo: monitore o desempenho de seus modelos implantados e detecte descompassos de dados em conjuntos de dados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento de endpoints oferece visibilidade de métricas como latência de solicitação e solicitações por minuto. Você pode comparar seu desempenho com sua linha de base e usar essas informações para fazer alterações nos recursos de computação de acordo. Métricas de monitoramento, como bytes de rede, podem alertá-lo se você estiver se aproximando dos limites de cota e evitar a limitação. Da mesma forma, monitorar seu ambiente de treinamento fornece as informações para fazer alterações em seu ambiente de treinamento. Use essas informações para decidir aumentar ou diminuir a escala, aumentar ou diminuir com SKUs de desempenho diferente ou escolher entre CPUs ou GPUs.",
+ "guid": "1d6384f8-a394-46f3-acf0-caf1f82b15c0",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar a infraestrutura: se seus modelos forem implantados em pontos de extremidade online, habilite o Application Insights para monitorar pontos de extremidade e implantações online. Monitore a infraestrutura de treinamento para garantir que você esteja atendendo aos seus requisitos básicos. Verifique se você está coletando logs de recursos para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Ambientes coletados são ambientes pré-criados fornecidos pelo Machine Learning que aceleram o tempo de implantação e reduzem a latência de implantação e treinamento. O uso de ambientes coletados melhora as taxas de sucesso de treinamento e implantação e evita compilações de imagem desnecessárias. Ambientes coletados, como o Contêiner do Azure para PyTorch, também podem ser otimizados para treinar modelos grandes no Machine Learning.",
+ "guid": "ed696d41-009b-47b5-9ae1-16b2ac09a83b",
+ "service": "Azure Machine Learning",
+ "text": "Preparar ambientes de treinamento de modelo: use ambientes coletados otimizados para Machine Learning, quando disponíveis.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Selecionar a computação certa é fundamental, pois afeta diretamente o tempo de treinamento. Escolher o SKU e a CPU corretos em vez de GPU garante que o treinamento do modelo possa atender aos seus requisitos e metas de desempenho. Escolher um SKU de baixo desempenho que é usado em excesso pode levar a tempos de treinamento proibitivamente longos e problemas de desempenho. Os clusters de computação fornecem a capacidade de melhorar o desempenho escalando horizontalmente as cargas de trabalho que dão suporte ao dimensionamento horizontal. Esse método fornece flexibilidade para lidar com cargas de trabalho com diferentes demandas e permite adicionar ou remover máquinas conforme necessário.",
+ "guid": "7ff0753e-559c-4872-9b46-056600d393b9",
+ "service": "Azure Machine Learning",
+ "text": "Selecione os serviços de computação apropriados para treinamento de modelo: considere clusters de computação do Machine Learning em instâncias de computação para treinamento de modelo se você precisar de dimensionamento automático. Otimize seus recursos de computação com base nos requisitos de treinamento. Primeiro escolha entre CPUs e GPUs. O padrão é CPUs, mas considere GPUs para cargas de trabalho como aprendizado profundo, processamento de imagem ou vídeo ou grandes quantidades de dados. Em seguida, escolha o SKU de imagem que melhor se adapta à sua carga de trabalho. Use o teste para escolher a opção de computação que otimiza o custo em relação ao tempo de treinamento ao determinar sua linha de base.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O dimensionamento automático ajusta o número de instâncias do modelo implantado para corresponder à demanda.",
+ "guid": "d1e94aee-19e1-4888-9220-6d0c7e351971",
+ "service": "Azure Machine Learning",
+ "text": "Dimensionamento do ambiente de implantação do modelo: use os recursos de dimensionamento automático do ambiente de implantação. Para ambientes de implantação do AKS, use o dimensionador automático de cluster para dimensionar para atender à demanda. Para pontos de extremidade online, dimensione automaticamente por meio da integração com o recurso de dimensionamento automático do Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Acompanhar o desempenho de modelos em produção alerta você sobre possíveis problemas, como desvio de dados, desvio de previsão, qualidade de dados e desvio de atribuição de recursos. O monitoramento de descompasso de dados ajuda a detectar alterações nos dados de entrada que podem levar a um declínio no desempenho do modelo. O gerenciamento de descompasso de dados ajuda a garantir que seu modelo forneça resultados precisos ao longo do tempo.",
+ "guid": "c1d46066-94b8-4482-800d-1c9f7f5704ad",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar o desempenho do modelo: monitore o desempenho de seus modelos implantados.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O monitoramento de endpoints oferece visibilidade de métricas como latência de solicitação e solicitações por minuto. Você pode comparar seu desempenho com sua linha de base e usar essas informações para fazer alterações nos recursos de computação de acordo. Métricas de monitoramento, como bytes de rede, podem alertá-lo se você estiver se aproximando dos limites de cota e evitar a limitação. Da mesma forma, monitorar seu ambiente de treinamento fornece as informações para fazer alterações em seu ambiente de treinamento. Use essas informações para decidir aumentar ou diminuir a escala, aumentar ou diminuir com SKUs de desempenho diferente ou escolher entre CPUs ou GPUs.",
+ "guid": "60fc9cf9-8eec-422c-9894-70a364e63ece",
+ "service": "Azure Machine Learning",
+ "text": "Monitore a infraestrutura: monitore endpoints online e integre-se ao Monitor para rastrear e monitorar as métricas e os logs apropriados. Habilite o Application Insights ao criar implantações online. Monitore a infraestrutura de treinamento e examine o uso de recursos, como memória e uso de CPU ou GPU, ao treinar modelos para garantir que você esteja atendendo aos requisitos de linha de base.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Machine Learning Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azuremachinelearning_sg_checklist.zh-Hant.json b/checklists-ext/azuremachinelearning_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..4804e33c1
--- /dev/null
+++ b/checklists-ext/azuremachinelearning_sg_checklist.zh-Hant.json
@@ -0,0 +1,338 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "多區域部署可確保機器學習工作負載繼續運行,即使一個區域發生中斷也是如此。多區域部署改善了跨區域的負載分佈,從而有可能提高位於不同地理區域的使用者的性能。有關詳細資訊,請參閱用於業務連續性和災難恢復的故障轉移。",
+ "guid": "f0411b34-73cc-4026-a3e0-495204a7f02b",
+ "service": "Azure Machine Learning",
+ "text": "多區域模型部署:為了增強可靠性和可用性,請盡可能考慮使用多區域部署環境。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "模型檢查點會在訓練期間定期保存機器學習模型的狀態,以便在發生中斷、失敗或終止時可以恢復該模型。更多資訊,請參見使用 Nebula 提升檢查點速度並降低成本。",
+ "guid": "2d3126b3-dae2-4938-b558-9fbb05ec6342",
+ "service": "Azure Machine Learning",
+ "text": "模型訓練復原能力:使用機器學習支援的檢查點功能,包括用於 PyTorch 的 Azure 容器、TensorFlow Estimator 類或支援模型檢查點的 Run 物件和 FileDataset 類。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "低優先順序虛擬機的價格較低,但可以搶佔。使用專用虛擬機層的群集不會被搶佔。",
+ "guid": "d9a0f9e6-a89c-4516-83ec-6f22ae29aaaf",
+ "service": "Azure Machine Learning",
+ "text": "將專用虛擬機層用於計算群集:將專用虛擬機層用於計算群集進行批量推理,以確保批處理作業不會被搶佔。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "安全基線為網路安全、身份管理、數據保護和特權訪問等關鍵安全方面提供量身定製的指導。為了獲得最佳安全性,請使用 Microsoft Defender for Cloud 來監視這些方面。",
+ "guid": "9195a712-feaf-4aa9-ac8e-6cfe01423d34",
+ "service": "Azure Machine Learning",
+ "text": "安全基線:若要增強機器學習服務的安全性和合規性,請應用機器學習的 Azure 安全基線。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "託管虛擬網路隔離通過將工作區與其他網路隔離來增強安全性,從而降低未經授權訪問的風險。如果組織內的另一個網路發生違規,則機器學習工作區的隔離網路不受影響,從而保護機器學習工作負載。",
+ "guid": "01b471f4-3d3d-498c-86b2-9b1b0ef458e3",
+ "service": "Azure Machine Learning",
+ "text": "託管虛擬網路隔離:為機器學習配置託管虛擬網路隔離。啟用託管虛擬網路隔離時,將為工作區創建託管虛擬網路。為工作區創建的託管計算資源會自動使用此託管虛擬網路。如果無法實現託管虛擬網路隔離,則必須按照網路拓撲建議將計算分離到專用子網中,遠離解決方案中的其他資源,包括工作區資源的專用終結點。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "機器學習網路隔離可確保對工作區的訪問安全且受控,從而增強安全性。為工作區配置專用終結點后,可以將對工作區的訪問限製為僅通過專用IP位址進行。",
+ "guid": "001f1a80-6e4e-432d-a762-34ff31ae0a5b",
+ "service": "Azure Machine Learning",
+ "text": "機器學習網路隔離:為機器學習工作區配置專用終結點,並通過該專用終結點連接到工作區。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "這種配置將數據外泄的風險降到最低,提高了數據的安全性。啟用此配置后,獲得系統訪問許可權的惡意參與者無法將您的數據發送到未經批准的外部目標。",
+ "guid": "fb08378f-3b8a-4991-bb1f-f7c3a026fecf",
+ "service": "Azure Machine Learning",
+ "text": "僅允許已批准的出站訪問:將機器學習工作區託管的出站訪問上的出站模式配置為「僅允許已批准的出站」,以最大程度地降低數據外泄的風險。為需要訪問的資源配置專用終結點、服務標記或完全限定的功能變數名稱 (FQDN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路隔離通過將對 Azure 平臺即服務 (PaaS) 解決方案的訪問限制為僅私有 IP 位址來增強安全性。",
+ "guid": "a426e1df-08ed-43b8-ae7b-35d4833bc516",
+ "service": "Azure Machine Learning",
+ "text": "依賴服務的虛擬網路隔離:使用專用終結點配置依賴服務(例如存儲、Key Vault 和容器註冊表),並禁用公共訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "託管標識通過消除存儲憑據以及手動管理和輪換服務主體的需要來提高安全性。",
+ "guid": "70a7a786-d676-42a3-8513-5ce0c9ceeb50",
+ "service": "Azure Machine Learning",
+ "text": "託管標識:使用託管標識在機器學習和其他服務之間進行身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用本地身份驗證可提高機器學習計算的安全性,並提供對身份和資源憑據的集中控制和管理。",
+ "guid": "50500732-feb1-42a7-a5ce-271443cd7eeb",
+ "service": "Azure Machine Learning",
+ "text": "禁用本地身份驗證:禁用機器學習計算群集和實例的本地身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用 SSH 訪問有助於防止未經授權的個人獲得訪問許可權並可能對您的系統造成損害,並保護您免受暴力攻擊。",
+ "guid": "3e537535-ca7e-4669-a580-92819410e4d4",
+ "service": "Azure Machine Learning",
+ "text": "禁用公共 SSH 埠:通過將“remoteLoginPortPublicAccess”設置為“Disabled”,確保在機器學習計算群集上關閉公共安全外殼 (SSH) 埠。如果使用不同的計算,請應用類似的配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "避免預配公共IP位址,通過限制未經授權訪問計算實例或集群的可能性來增強安全性。",
+ "guid": "4ed5455d-c887-4075-9f11-16408abdffd9",
+ "service": "Azure Machine Learning",
+ "text": "不要為機器學習計算預配公共IP位址:在預配機器學習計算群集或計算實例時,將 enableNodePublicIp 設置為“false”。如果使用不同的計算,請應用類似的配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用最新的映像可確保您保持一致、穩定和安全的環境,包括確保您擁有最新的安全補丁。",
+ "guid": "9772d2de-8ffe-4918-88d3-4385c6f3b852",
+ "service": "Azure Machine Learning",
+ "text": "獲取最新的作業系統映像:重新創建計算實例以獲取最新的操作系統映像。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "嚴格的工作區訪問控制可確保個人僅擁有其角色所需的許可權,從而增強安全性。例如,數據科學家可能有權運行實驗,但無權修改安全設置,從而最大程度地降低潛在的安全風險。",
+ "guid": "6d277dc0-7569-4ef5-b7b5-3958e102ef3b",
+ "service": "Azure Machine Learning",
+ "text": "嚴格的機器學習工作區訪問控制:使用 Microsoft Entra ID 組管理工作區訪問,並遵循 RBAC 的最小特權原則。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "將模型目錄中的部署限制為特定註冊表可確保僅將模型部署到已批准的註冊表。這種方法有助於規範對開源基礎模型的訪問。",
+ "guid": "1245aca7-0f54-4c03-8a85-f7da745385e6",
+ "service": "Azure Machine Learning",
+ "text": "限制模型目錄部署:將模型部署限制為特定註冊表。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "對靜態數據進行加密可確保使用由您直接管理的密鑰對敏感數據進行加密,從而增強數據安全性。如果您有管理自己的加密密鑰的法規要求,請使用此功能來滿足該要求。",
+ "guid": "44edeb32-99a9-4c6b-a941-2c4bf8e815ac",
+ "service": "Azure Machine Learning",
+ "text": "加密靜態數據:考慮將客戶管理的密鑰與機器學習結合使用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "通過限制入站和出站要求,最大限度地降低數據外泄的風險。",
+ "guid": "0dd2a6df-26e0-4999-92d3-414bd5b29901",
+ "service": "Azure Machine Learning",
+ "text": "最大程度地降低數據外泄風險:實施數據外洩防護。例如,創建一個服務終結點策略來篩選出口虛擬網路流量,並僅允許數據外洩到特定的 Azure 儲存帳戶。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "選擇正確的計算至關重要,因為它直接影響運行工作負載的成本。在沒有正確使用的情況下選擇 GPU 或高性能 SKU 可能會導致浪費性支出,而選擇容量過小的計算可能會導致訓練時間過長和性能問題。",
+ "guid": "04967265-74a1-4b44-a559-a2b64ab9b67b",
+ "service": "Azure Machine Learning",
+ "text": "優化計算資源:根據工作負載的要求優化計算資源。選擇最適合您的工作負載的 SKU:
- 通用 – 平衡的 CPU 與記憶體比率,適用於所有用途。
- 計算優化 – 高 CPU 與記憶體比率,適用於數學密集型計算。
- 記憶體優化 – 高記憶體到CPU,適用於記憶體計算或資料庫應用程式。
- M 系列 – 具有大量記憶體和 CPU 的超大型機器。
- GPU – 更適合具有大量變數的模型,這些變數可以從更高的並行度和專門的核心指令中受益。典型應用包括深度學習、圖像或視頻處理、科學類比、數據挖掘以及利用 GPU 開發框架。使用多個系列進行測試,並將結果記錄為基線。隨著模型和數據的發展,最合適的計算資源可能會發生變化。監控執行時間,並根據需要重新評估。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "為計算群集配置自動縮放,以便在其使用率較低時進行縮減。 將最小節點數設置為0,以便訓練集群在不使用時縮減為0。",
+ "guid": "052b07f8-ae5a-4425-8c1c-7b2eda14d127",
+ "service": "Azure Machine Learning",
+ "text": "優化計算縮放:將計算群集配置為自動縮放,以確保僅使用所需的內容。對於訓練集群,請將最小節點數設置為 0,並將節點空閑的時間配置為適當的時間。對於反覆運算次數較少的實驗,減少時間以節省成本。對於更多反覆運算實驗,請使用更長的時間,以防止在每次更改後為擴大或縮小規模付費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "設置終止策略可以通過提前停止不良運行來説明您節省成本。",
+ "guid": "84efffef-23ff-465c-bb2a-f01d88e73c7e",
+ "service": "Azure Machine Learning",
+ "text": "設置培訓終止策略:設置提前終止策略以限制培訓運行的持續時間或提前終止訓練。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "低優先順序虛擬機允許以低成本使用大量計算能力。他們利用 Azure 中的剩餘容量。",
+ "guid": "dc2f2c28-1da5-4b18-9ffc-69ebc766d184",
+ "service": "Azure Machine Learning",
+ "text": "將低優先順序虛擬機用於批處理工作負載:請考慮將低優先順序虛擬機用於對時間不敏感且中斷可恢復的批處理工作負載。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "默認情況下,計算實例可供您使用,但會產生成本。將計算實例配置為在空閒時關閉或為它們配置計劃,可以在不使用它們時節省成本。",
+ "guid": "379134e1-c92f-4b18-9a3e-0f944a973aa4",
+ "service": "Azure Machine Learning",
+ "text": "為計算實例啟用空閒關閉:為計算實例啟用空閒關閉,或計劃在使用時間已知的情況下啟動和停止時間。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "並行工作負載可以在多個較小的實例上運行,從而可能節省成本。",
+ "guid": "df1f64ad-5d9c-40dd-9943-a0e06ee7891f",
+ "service": "Azure Machine Learning",
+ "text": "並行化訓練工作負載:考慮並行化訓練工作負載。在機器學習中的並行元件的説明下測試運行它們。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "購買 Azure 虛擬機預留實例以預付虛擬機使用費,並通過即用即付定價提供折扣。折扣將自動應用於與預留匹配的虛擬機使用量。",
+ "guid": "da87b89e-6218-4bf7-8d4b-b988fd2b3156",
+ "service": "Azure Machine Learning",
+ "text": "Azure 虛擬機預留實例:如果對未來一到三年的使用方式有很好的估計,請購買 Azure 虛擬機預留實例。當您對使用方式有良好的估計時,請利用服務的預留容量選項。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "限制工作區的數量可以減少維護工作量和運營成本。對於安全性等要求,可能需要多個單獨的工作區。盡可能減少工作區的數量。",
+ "guid": "e8d7df42-a0cf-49ea-9f9a-d01849c92a2b",
+ "service": "Azure Machine Learning",
+ "text": "最小化機器學習工作區實例:盡可能減少工作區的數量,以減少維護。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "使用機器學習模型註冊表來存儲機器學習模型並對其進行版本控制,以跟蹤更改並維護與用於訓練的作業和數據集的世系。借助機器學習模型目錄,數據科學團隊可以發現、評估和微調預訓練的基礎機器學習模型。在機器學習模型註冊表中存儲版本化模型支援 A/B 版本、金絲雀版本和回滾等部署策略。",
+ "guid": "796e23ec-1071-4131-b0d3-77121aae8e33",
+ "service": "Azure Machine Learning",
+ "text": "利用模型目錄和註冊表:利用機器學習模型目錄和註冊表來存儲、版本控制和共用機器學習資產。使用機器學習模型目錄來幫助你實現模型的 A/B 測試和部署。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監視已部署的模型可確保模型滿足性能要求。監視數據偏移可説明您檢測輸入數據中可能導致模型性能下降的更改。管理數據偏移有助於確保模型隨著時間的推移提供準確的結果。",
+ "guid": "295dae47-5380-41c6-b1bd-bfa3605a4e10",
+ "service": "Azure Machine Learning",
+ "text": "監視模型性能:監視已部署模型的性能,並檢測數據集上的數據偏移。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "通過監控端點,您可以查看請求延遲和每分鐘請求數等指標。您可以將性能與基線進行比較,並使用此資訊對計算資源進行相應的更改。監視指標(如網路位元組數)可以在接近配額限制時發出警報,並防止限制。同樣,監控您的培訓環境可為您提供更改培訓環境的資訊。使用該資訊來決定是縱向擴展還是縮減,使用不同的高性能 SKU 進行縱向擴展或縮減,或者在 CPU 或 GPU 之間進行選擇。",
+ "guid": "1d6384f8-a394-46f3-acf0-caf1f82b15c0",
+ "service": "Azure Machine Learning",
+ "text": "監視基礎結構:如果模型部署到連線終結點,請啟用Application Insights以監視連線終結點和部署。監控培訓基礎設施,確保您滿足基線要求。確保收集用於機器學習的資源日誌。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "特選環境是由機器學習提供的預創建環境,可加快部署時間並減少部署和訓練延遲。使用特選環境可以提高訓練和部署成功率,並避免不必要的映像構建。特選環境(例如用於 PyTorch 的 Azure 容器)也可以進行優化,以便在機器學習上訓練大型模型。",
+ "guid": "ed696d41-009b-47b5-9ae1-16b2ac09a83b",
+ "service": "Azure Machine Learning",
+ "text": "策展模型訓練環境:使用針對機器學習優化的策展環境(如果可用)。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "選擇正確的計算至關重要,因為它直接影響訓練時間。選擇正確的 SKU 和 CPU 而不是 GPU 可確保您的模型訓練能夠滿足您的要求和性能目標。選擇過度使用的低性能 SKU 可能會導致訓練時間過長和性能問題。計算集群通過橫向擴展支援水平擴展的工作負載來提高性能。此方法為處理具有不同需求的工作負載提供了靈活性,並允許您根據需要添加或刪除計算機。",
+ "guid": "7ff0753e-559c-4872-9b46-056600d393b9",
+ "service": "Azure Machine Learning",
+ "text": "為模型訓練選擇適當的計算服務:如果需要自動縮放,請考慮使用機器學習計算集群而不是計算實例進行模型訓練。根據訓練要求優化計算資源。首先在 CPU 和 GPU 之間進行選擇。默認使用 CPU,但請考慮將 GPU 用於深度學習、圖像或視頻處理或大量數據等工作負載。接下來,選擇最適合您的工作負載的映射 SKU。使用測試來選擇計算選項,該選項在確定基線時根據訓練時間優化成本。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "自動縮放會調整已部署模型的實例數以滿足需求。",
+ "guid": "d1e94aee-19e1-4888-9220-6d0c7e351971",
+ "service": "Azure Machine Learning",
+ "text": "模型部署環境縮放:使用部署環境的自動縮放功能。對於 AKS 部署環境,請使用群集自動縮放程式進行縮放以滿足需求。對於連線終結點,通過與 Azure Monitor 自動縮放功能集成自動縮放。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "在生產環境中跟蹤模型的性能會提醒您注意潛在問題,例如數據漂移、預測漂移、數據品質和特徵歸因漂移。監視數據偏移可説明您檢測輸入數據中可能導致模型性能下降的更改。管理數據偏移有助於確保模型隨著時間的推移提供準確的結果。",
+ "guid": "c1d46066-94b8-4482-800d-1c9f7f5704ad",
+ "service": "Azure Machine Learning",
+ "text": "監視模型性能:監視已部署模型的性能。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "通過監控端點,您可以查看請求延遲和每分鐘請求數等指標。您可以將性能與基線進行比較,並使用此資訊對計算資源進行相應的更改。監視指標(如網路位元組數)可以在接近配額限制時發出警報,並防止限制。同樣,監控您的培訓環境可為您提供更改培訓環境的資訊。使用該資訊來決定是縱向擴展還是縮減,使用不同的高性能 SKU 進行縱向擴展或縮減,或者在 CPU 或 GPU 之間進行選擇。",
+ "guid": "60fc9cf9-8eec-422c-9894-70a364e63ece",
+ "service": "Azure Machine Learning",
+ "text": "監控基礎結構:監控在線端點並與 Monitor 集成,以跟蹤和監控適當的指標和日誌。在創建連線部署時啟用ApplicationInsights。在訓練模型時,監控訓練基礎結構並查看資源使用方式,例如記憶體和 CPU 或 GPU 使用方式,以確保滿足基線要求。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Machine Learning Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.en.json b/checklists-ext/azureopenai_sg_checklist.en.json
index 2636c7de7..12d9418d4 100644
--- a/checklists-ext/azureopenai_sg_checklist.en.json
+++ b/checklists-ext/azureopenai_sg_checklist.en.json
@@ -108,35 +108,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -173,6 +173,6 @@
"name": "Azure Openai Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.es.json b/checklists-ext/azureopenai_sg_checklist.es.json
new file mode 100644
index 000000000..5cdcdacea
--- /dev/null
+++ b/checklists-ext/azureopenai_sg_checklist.es.json
@@ -0,0 +1,178 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Esta importante información de rendimiento proporciona la información necesaria para asegurarse de que asigna suficiente TPM de la cuota para satisfacer la demanda de las implementaciones. La asignación de una cuota suficiente evita la limitación de las llamadas a los modelos implementados.",
+ "guid": "58d920a1-7482-4367-aa69-c5326bcfd33d",
+ "service": "Azure Openai",
+ "text": "Supervise los límites de frecuencia para el pago por uso: si usa el enfoque de pago por uso, administre los límites de tarifa para las implementaciones del modelo y supervise el uso de tokens por minuto (TPM) y solicitudes por minuto (RPM).",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Es importante supervisar el uso administrado por aprovisionamiento para asegurarse de que no supera el 100 % para evitar la limitación de las llamadas a los modelos implementados.",
+ "guid": "ff8fe762-af8f-464b-aed5-95fed612d087",
+ "service": "Azure Openai",
+ "text": "Supervisión del uso administrado por aprovisionamiento para el rendimiento aprovisionado: si usa el modelo de pago por rendimiento aprovisionado, supervise el uso administrado por aprovisionamiento.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los filtros de contenido bloquean las solicitudes o finalizaciones en función de un análisis de riesgos opaco. Asegúrese de que los filtros de contenido estén ajustados para permitir el uso esperado de la carga de trabajo.",
+ "guid": "2c498456-15f9-4893-b9c2-310b37bee2c3",
+ "service": "Azure Openai",
+ "text": "Ajustar los filtros de contenido: Ajuste los filtros de contenido para minimizar los falsos positivos de filtros demasiado agresivos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Separar los secretos del código almacenándolos en Key Vault reduce la posibilidad de que se filtren secretos. La separación también facilita la gestión centralizada de secretos, lo que facilita responsabilidades como la rotación de claves.",
+ "guid": "77aaf205-389f-49ae-bd15-00b46c95b6c2",
+ "service": "Azure Openai",
+ "text": "Claves seguras: si su arquitectura requiere autenticación basada en claves de Azure OpenAI, almacene esas claves en Azure Key Vault, no en el código de la aplicación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Controlar el acceso a Azure OpenAI ayuda a evitar ataques de usuarios no autorizados. El uso de puntos de conexión privados garantiza que el tráfico de red permanezca privado entre la aplicación y la plataforma.",
+ "guid": "1a5c78fc-0890-4caf-af0f-ce85ad0fc659",
+ "service": "Azure Openai",
+ "text": "Restringir el acceso: deshabilite el acceso público a Azure OpenAI a menos que la carga de trabajo lo requiera. Cree puntos de conexión privados si se conecta desde consumidores en una red virtual de Azure.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de Microsoft Entra ID centraliza el componente de administración de identidades y elimina el uso de claves de API. El uso de RBAC con Microsoft Entra ID garantiza que los usuarios o grupos tengan exactamente los permisos que necesitan para realizar su trabajo. Este tipo de control de acceso detallado no es posible con las claves de API de Azure OpenAI.",
+ "guid": "703ee553-e905-4797-8999-a5d724c1f860",
+ "service": "Azure Openai",
+ "text": "Id. de Microsoft Entra: use el identificador de Microsoft Entra para la autenticación y para autorizar el acceso a Azure OpenAI mediante el control de acceso basado en roles (RBAC). Deshabilite la autenticación local en Azure AI Services y establezca 'disableLocalAuth' en 'true'. Otorgue a las identidades que realicen finalizaciones o generación de imágenes el rol de usuario de OpenAI de Cognitive Services. Conceda canalizaciones de automatización de modelos y acceso de ciencia de datos ad-hoc a un rol como Colaborador de OpenAI de Cognitive Services.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de claves administradas por el cliente le ofrece una mayor flexibilidad para crear, rotar, deshabilitar y revocar controles de acceso.",
+ "guid": "6d20b136-61df-4267-9578-d6045f452937",
+ "service": "Azure Openai",
+ "text": "Use claves administradas por el cliente: use claves administradas por el cliente para los modelos optimizados y los datos de entrenamiento que se cargan en Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Detecte los intentos de jailbreak para identificar y bloquear los mensajes que intentan eludir los mecanismos de seguridad de las implementaciones de Azure OpenAI.",
+ "guid": "d3a276d5-c58e-49b7-a00c-23198d8dc3e7",
+ "service": "Azure Openai",
+ "text": "Protéjase contra ataques de jailbreak: use Azure AI Content Safety Studio para detectar riesgos de jailbreak.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de las funciones de la API para restringir el uso alinea el consumo del servicio con las necesidades del cliente. Esto ahorra dinero al garantizar que el modelo no genere una respuesta demasiado larga que consuma más tokens de los necesarios.",
+ "guid": "24b4af01-d5e7-4812-8d67-3cc69082a03e",
+ "service": "Azure Openai",
+ "text": "Diseño del código de cliente para establecer límites: los clientes personalizados deben usar las características de límite de la API de finalizaciones de Azure OpenAI, como el límite máximo en el número de tokens por modelo ('max_tokens') o el número de finalizaciones hasta la generación ('n'). Establecer límites garantiza que el servidor no produzca más de lo que el cliente necesita.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión continua de TPM y RPM proporciona métricas relevantes para optimizar el costo de los modelos de Azure OpenAI. Puede combinar esta supervisión con las características del modelo y los precios del modelo para optimizar el uso del modelo. También puede utilizar esta supervisión para optimizar el tamaño de las solicitudes.",
+ "guid": "e433c93a-83ae-434a-8e3e-d39ccf4999a9",
+ "service": "Azure Openai",
+ "text": "Supervise el uso de pago por uso: si usa el enfoque de pago por uso, supervise el uso de TPM y RPM. Utilice esa información para tomar decisiones informadas sobre el diseño arquitectónico, como qué modelos utilizar, y para optimizar los tamaños de las solicitudes.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión continua de la utilización administrada por provisiones le proporciona la información que necesita para comprender si está infrautilizando el rendimiento aprovisionado.",
+ "guid": "e3a2b9f2-71b7-4fc4-8653-d34e51f97600",
+ "service": "Azure Openai",
+ "text": "Supervise el uso del rendimiento aprovisionado: si utiliza el rendimiento aprovisionado, supervise el uso administrado por el aprovisionamiento para asegurarse de que no está infrautilizando el rendimiento aprovisionado que compró.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión de costos, el establecimiento de presupuestos y la configuración de alertas proporcionan a la gobernanza los procesos de responsabilidad adecuados.",
+ "guid": "bc568726-91cc-4397-8121-a6c7cc0ea3d2",
+ "service": "Azure Openai",
+ "text": "Gestión de costes: Utilice las funciones de gestión de costes con OpenAI para supervisar los costes, establecer presupuestos para gestionar los costes y crear alertas para notificar a las partes interesadas sobre riesgos o anomalías.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Diagnósticos recopila y analiza métricas y registros, lo que le ayuda a supervisar la disponibilidad, el rendimiento y el funcionamiento de Azure OpenAI.",
+ "guid": "b2b0ff3d-4e03-4d68-9389-7d29ebeb8710",
+ "service": "Azure Openai",
+ "text": "Habilitación y configuración de Azure Diagnostics: habilite y configure Diagnostics para el servicio Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Openai Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.ja.json b/checklists-ext/azureopenai_sg_checklist.ja.json
new file mode 100644
index 000000000..cef62469a
--- /dev/null
+++ b/checklists-ext/azureopenai_sg_checklist.ja.json
@@ -0,0 +1,178 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "この重要なスループット情報は、デプロイの需要を満たすためにクォータから十分な TPM を割り当てるために必要な情報を提供します。十分なクォータを割り当てると、デプロイされたモデルへの呼び出しの調整が防止されます。",
+ "guid": "58d920a1-7482-4367-aa69-c5326bcfd33d",
+ "service": "Azure Openai",
+ "text": "従量課金制のレート制限を監視する: 従量課金制のアプローチを使用している場合は、モデル デプロイのレート制限を管理し、1 分あたりのトークン (TPM) と 1 分あたりの要求 (RPM) の使用状況を監視します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "プロビジョニング管理された使用率を監視して 100% を超えないようにし、デプロイされたモデルへの呼び出しの調整を防ぐことが重要です。",
+ "guid": "ff8fe762-af8f-464b-aed5-95fed612d087",
+ "service": "Azure Openai",
+ "text": "プロビジョニングされたスループットのプロビジョニング管理された使用率をモニタリングする: プロビジョニングされたスループット支払いモデルを使用している場合は、プロビジョニング管理された使用状況をモニタリングします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテンツ フィルターは、不透明なリスク分析に基づいてプロンプトまたは完了をブロックします。コンテンツフィルターが、ワークロードで予想される使用量を許容するように調整されていることを確認します。",
+ "guid": "2c498456-15f9-4893-b9c2-310b37bee2c3",
+ "service": "Azure Openai",
+ "text": "コンテンツ フィルターの調整: コンテンツ フィルターを調整して、過度に攻撃的なフィルターによる誤検知を最小限に抑えます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "シークレットを Key Vault に格納してコードから分離すると、シークレットが漏洩する可能性が低くなります。また、分離により、シークレットの一元管理が容易になり、キーのローテーションなどの責任が軽減されます。",
+ "guid": "77aaf205-389f-49ae-bd15-00b46c95b6c2",
+ "service": "Azure Openai",
+ "text": "セキュリティで保護されたキー: アーキテクチャで Azure OpenAI キーベースの認証が必要な場合は、それらのキーをアプリケーション コードではなく Azure Key Vault に格納します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure OpenAI へのアクセスを制御すると、承認されていないユーザーからの攻撃を防ぐのに役立ちます。プライベートエンドポイントを使用すると、アプリケーションとプラットフォーム間のネットワークトラフィックのプライベートが保たれます。",
+ "guid": "1a5c78fc-0890-4caf-af0f-ce85ad0fc659",
+ "service": "Azure Openai",
+ "text": "アクセスを制限する: ワークロードで必要とされない限り、Azure OpenAI へのパブリック アクセスを無効にします。Azure 仮想ネットワーク内のコンシューマーから接続する場合は、プライベート エンドポイントを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Microsoft Entra ID を使用すると、ID 管理コンポーネントが一元化され、API キーの使用がなくなります。RBAC を Microsoft Entra ID と共に使用すると、ユーザーまたはグループがジョブを実行するために必要なアクセス許可を正確に持つことができます。このようなきめ細かなアクセス制御は、Azure OpenAI API キーでは実現できません。",
+ "guid": "703ee553-e905-4797-8999-a5d724c1f860",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID: Microsoft Entra ID を使用して、認証を行い、ロールベースのアクセス制御 (RBAC) を使用して Azure OpenAI へのアクセスを承認します。Azure AI Services でローカル認証を無効にし、'disableLocalAuth' を 'true' に設定します。入力候補または画像生成を実行する ID に Cognitive Services OpenAI ユーザー ロールを付与します。モデル自動化パイプラインとアドホック データ サイエンス アクセスに、Cognitive Services OpenAI Contributor のようなロールを付与します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタマー管理キーを使用すると、アクセス制御の作成、ローテーション、無効化、取り消しを柔軟に行うことができます。",
+ "guid": "6d20b136-61df-4267-9578-d6045f452937",
+ "service": "Azure Openai",
+ "text": "カスタマー マネージド キーを使用する: Azure OpenAI にアップロードされる微調整されたモデルとトレーニング データには、カスタマー マネージド キーを使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "脱獄の試みを検出して、Azure OpenAI デプロイの安全メカニズムを回避しようとするプロンプトを特定してブロックします。",
+ "guid": "d3a276d5-c58e-49b7-a00c-23198d8dc3e7",
+ "service": "Azure Openai",
+ "text": "脱獄攻撃から保護する: Azure AI Content Safety Studio を使用して、脱獄のリスクを検出します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "API 機能を使用して使用を制限すると、サービスの使用がクライアントのニーズに合わせて調整されます。これにより、モデルが必要以上にトークンを消費する過度に長い応答を生成しないようにすることで、コストを節約できます。",
+ "guid": "24b4af01-d5e7-4812-8d67-3cc69082a03e",
+ "service": "Azure Openai",
+ "text": "制限を設定するクライアント コードを設計する: カスタム クライアントでは、モデルあたりのトークン数の上限 ('max_tokens') や生成までの完了数 ('n') など、Azure OpenAI 入力候補 API の制限機能を使用する必要があります。制限を設定すると、サーバーが必要以上に生成されなくなります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "TPM と RPM を継続的に監視することで、Azure OpenAI モデルのコストを最適化するための関連メトリックが得られます。この監視をモデルの特徴およびモデルの価格設定と組み合わせて、モデルの使用を最適化できます。このモニタリングを使用して、プロンプトのサイズを最適化することもできます。",
+ "guid": "e433c93a-83ae-434a-8e3e-d39ccf4999a9",
+ "service": "Azure Openai",
+ "text": "従量課金制の使用状況を監視する: 従量課金制のアプローチを使用する場合は、TPM と RPM の使用状況を監視します。その情報を使用して、使用するモデルなどのアーキテクチャ設計の決定を通知し、プロンプト サイズを最適化します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "プロビジョニング管理された使用率を継続的にモニタリングすることで、プロビジョニングされたスループットが十分に活用されていないかどうかを理解するために必要な情報が得られます。",
+ "guid": "e3a2b9f2-71b7-4fc4-8653-d34e51f97600",
+ "service": "Azure Openai",
+ "text": "プロビジョニングされたスループットの使用状況を監視する: プロビジョニングされたスループットを使用する場合は、プロビジョニング管理された使用状況を監視して、購入したプロビジョニングされたスループットが十分に活用されていないことを確認します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コストの監視、予算の設定、アラートの設定により、ガバナンスに適切な説明責任プロセスが提供されます。",
+ "guid": "bc568726-91cc-4397-8121-a6c7cc0ea3d2",
+ "service": "Azure Openai",
+ "text": "コスト管理: OpenAI のコスト管理機能を使用して、コストを監視し、コストを管理するための予算を設定し、リスクや異常を利害関係者に通知するアラートを作成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "診断では、メトリックとログが収集および分析され、Azure OpenAI の可用性、パフォーマンス、操作の監視に役立ちます。",
+ "guid": "b2b0ff3d-4e03-4d68-9389-7d29ebeb8710",
+ "service": "Azure Openai",
+ "text": "Azure 診断を有効にして構成する: Azure OpenAI Service の診断を有効にして構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Openai Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.ko.json b/checklists-ext/azureopenai_sg_checklist.ko.json
new file mode 100644
index 000000000..0d272dfe7
--- /dev/null
+++ b/checklists-ext/azureopenai_sg_checklist.ko.json
@@ -0,0 +1,178 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "이 중요한 처리량 정보는 배포 수요를 충족하기 위해 할당량에서 충분한 TPM을 할당하는 데 필요한 정보를 제공합니다. 충분한 할당량을 할당하면 배포된 모델에 대한 호출 제한을 방지할 수 있습니다.",
+ "guid": "58d920a1-7482-4367-aa69-c5326bcfd33d",
+ "service": "Azure Openai",
+ "text": "종량제에 대한 속도 제한 모니터링: 종량제 방식을 사용하는 경우 모델 배포에 대한 속도 제한을 관리하고 TPM(분당 토큰) 및 RPM(분당 요청 수)의 사용량을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "프로비저닝 관리 사용률을 모니터링하여 100%를 초과하지 않도록 하여 배포된 모델에 대한 호출 제한을 방지하는 것이 중요합니다.",
+ "guid": "ff8fe762-af8f-464b-aed5-95fed612d087",
+ "service": "Azure Openai",
+ "text": "프로비저닝된 처리량에 대한 프로비저닝 관리 사용률 모니터링: 프로비저닝된 처리량 결제 모델을 사용하는 경우 프로비저닝 관리 사용률을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "콘텐츠 필터는 불투명한 위험 분석을 기반으로 프롬프트 또는 완료를 차단합니다. 워크로드에 대한 예상 사용량을 허용하도록 콘텐츠 필터가 조정되었는지 확인합니다.",
+ "guid": "2c498456-15f9-4893-b9c2-310b37bee2c3",
+ "service": "Azure Openai",
+ "text": "콘텐츠 필터 조정: 콘텐츠 필터를 조정하여 과도하게 공격적인 필터로 인한 오탐을 최소화합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Key Vault에 저장하여 코드에서 비밀을 분리하면 비밀이 유출될 가능성이 줄어듭니다. 또한 분리는 비밀의 중앙 관리를 용이하게 하여 키 회전과 같은 책임을 완화합니다.",
+ "guid": "77aaf205-389f-49ae-bd15-00b46c95b6c2",
+ "service": "Azure Openai",
+ "text": "보안 키: 아키텍처에 Azure OpenAI 키 기반 인증이 필요한 경우 해당 키를 애플리케이션 코드가 아닌 Azure Key Vault에 저장합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure OpenAI에 대한 액세스를 제어하면 권한이 없는 사용자의 공격을 방지할 수 있습니다. 프라이빗 엔드포인트를 사용하면 애플리케이션과 플랫폼 간에 네트워크 트래픽이 비공개로 유지됩니다.",
+ "guid": "1a5c78fc-0890-4caf-af0f-ce85ad0fc659",
+ "service": "Azure Openai",
+ "text": "액세스 제한: 워크로드에 필요한 경우가 아니면 Azure OpenAI에 대한 공용 액세스를 사용하지 않도록 설정합니다. Azure 가상 네트워크의 소비자에서 연결하는 경우 프라이빗 엔드포인트를 만듭니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Microsoft Entra ID를 사용하면 ID 관리 구성 요소가 중앙 집중화되고 API 키를 사용할 필요가 없습니다. Microsoft Entra ID와 함께 RBAC를 사용하면 사용자 또는 그룹이 작업을 수행하는 데 필요한 권한을 정확히 가질 수 있습니다. 이러한 종류의 세분화된 액세스 제어는 Azure OpenAI API 키로는 불가능합니다.",
+ "guid": "703ee553-e905-4797-8999-a5d724c1f860",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID: Microsoft Entra ID를 사용하여 인증하고 RBAC(역할 기반 액세스 제어)를 사용하여 Azure OpenAI에 대한 액세스 권한을 부여합니다. Azure AI Services에서 로컬 인증을 사용하지 않도록 설정하고 'disableLocalAuth'를 'true'로 설정합니다. 완성 또는 이미지 생성을 수행하는 ID에 Cognitive Services OpenAI 사용자 역할을 부여합니다. 모델 자동화 파이프라인 및 임시 데이터 과학 액세스 권한에 Cognitive Services OpenAI Contributor와 같은 역할을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "고객 관리형 키를 사용하면 액세스 제어를 만들고, 회전하고, 사용하지 않도록 설정하고, 취소할 수 있는 더 큰 유연성을 얻을 수 있습니다.",
+ "guid": "6d20b136-61df-4267-9578-d6045f452937",
+ "service": "Azure Openai",
+ "text": "고객 관리형 키 사용: Azure OpenAI에 업로드되는 미세 조정된 모델 및 학습 데이터에 고객 관리형 키를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure OpenAI 배포의 안전 메커니즘을 우회하려는 프롬프트를 식별하고 차단하려는 탈옥 시도를 감지합니다.",
+ "guid": "d3a276d5-c58e-49b7-a00c-23198d8dc3e7",
+ "service": "Azure Openai",
+ "text": "탈옥 공격으로부터 보호: Azure AI Content Safety Studio를 사용하여 탈옥 위험을 감지합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "API 기능을 사용하여 사용을 제한하면 서비스 사용량이 클라이언트 요구 사항에 맞게 조정됩니다. 이렇게 하면 모델이 필요한 것보다 더 많은 토큰을 사용하는 지나치게 긴 응답을 생성하지 않도록 하여 비용을 절약할 수 있습니다.",
+ "guid": "24b4af01-d5e7-4812-8d67-3cc69082a03e",
+ "service": "Azure Openai",
+ "text": "제한을 설정하도록 클라이언트 코드 설계: 사용자 지정 클라이언트는 모델당 토큰 수에 대한 최대 제한('max_tokens') 또는 생성 완료 수('n')와 같은 Azure OpenAI 완성 API의 제한 기능을 사용해야 합니다. 제한을 설정하면 서버가 클라이언트가 필요로 하는 것보다 더 많이 생성하지 않도록 합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "TPM 및 RPM을 지속적으로 모니터링하면 Azure OpenAI 모델의 비용을 최적화할 수 있는 관련 메트릭을 얻을 수 있습니다. 이 모니터링을 모델 기능 및 모델 가격 책정과 결합하여 모델 사용을 최적화할 수 있습니다. 이 모니터링을 사용하여 프롬프트 크기를 최적화할 수도 있습니다.",
+ "guid": "e433c93a-83ae-434a-8e3e-d39ccf4999a9",
+ "service": "Azure Openai",
+ "text": "종량제 사용량 모니터링: 종량제 방식을 사용하는 경우 TPM 및 RPM의 사용량을 모니터링합니다. 이 정보를 사용하여 사용할 모델과 같은 아키텍처 설계 결정을 알리고 프롬프트 크기를 최적화할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "프로비저닝 관리 사용률을 지속적으로 모니터링하면 프로비저닝된 처리량을 충분히 활용하지 못하고 있는지 파악하는 데 필요한 정보를 얻을 수 있습니다.",
+ "guid": "e3a2b9f2-71b7-4fc4-8653-d34e51f97600",
+ "service": "Azure Openai",
+ "text": "프로비저닝된 처리량 사용량 모니터링: 프로비저닝된 처리량을 사용하는 경우 프로비저닝 관리 사용률을 모니터링하여 구매한 프로비저닝된 처리량을 과소 활용하고 있지 않은지 확인합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 모니터링, 예산 설정 및 경고 설정은 적절한 책임 프로세스를 통해 거버넌스를 제공합니다.",
+ "guid": "bc568726-91cc-4397-8121-a6c7cc0ea3d2",
+ "service": "Azure Openai",
+ "text": "비용 관리: OpenAI와 함께 비용 관리 기능을 사용하여 비용을 모니터링하고, 비용 관리를 위한 예산을 설정하고, 이해 관계자에게 위험 또는 이상 징후를 알리는 경고를 생성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "진단은 메트릭 및 로그를 수집하고 분석하여 Azure OpenAI의 가용성, 성능 및 작업을 모니터링하는 데 도움이 됩니다.",
+ "guid": "b2b0ff3d-4e03-4d68-9389-7d29ebeb8710",
+ "service": "Azure Openai",
+ "text": "Azure 진단 사용 및 구성: Azure OpenAI 서비스에 대한 진단을 사용하도록 설정하고 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Openai Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.pt.json b/checklists-ext/azureopenai_sg_checklist.pt.json
new file mode 100644
index 000000000..21aa577fe
--- /dev/null
+++ b/checklists-ext/azureopenai_sg_checklist.pt.json
@@ -0,0 +1,178 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Essas informações importantes de taxa de transferência fornecem as informações necessárias para garantir que você atribua TPM suficiente de sua cota para atender à demanda por suas implantações. Atribuir cota suficiente evita a limitação de chamadas para seus modelos implantados.",
+ "guid": "58d920a1-7482-4367-aa69-c5326bcfd33d",
+ "service": "Azure Openai",
+ "text": "Monitorar limites de taxa para pagamento conforme o uso: se você estiver usando a abordagem de pagamento conforme o uso, gerencie os limites de taxa para suas implantações de modelo e monitore o uso de tokens por minuto (TPM) e solicitações por minuto (RPM).",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "É importante monitorar a utilização gerenciada por provisionamento para garantir que ela não exceda 100%, para evitar a limitação de chamadas para seus modelos implantados.",
+ "guid": "ff8fe762-af8f-464b-aed5-95fed612d087",
+ "service": "Azure Openai",
+ "text": "Monitorar a utilização gerenciada por provisionamento para taxa de transferência provisionada: se você estiver usando o modelo de pagamento de taxa de transferência provisionada, monitore a utilização gerenciada por provisionamento.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os filtros de conteúdo bloqueiam prompts ou conclusões com base em uma análise de risco opaca. Verifique se os filtros de conteúdo estão ajustados para permitir o uso esperado para sua carga de trabalho.",
+ "guid": "2c498456-15f9-4893-b9c2-310b37bee2c3",
+ "service": "Azure Openai",
+ "text": "Ajustar filtros de conteúdo: ajuste os filtros de conteúdo para minimizar falsos positivos de filtros excessivamente agressivos.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Separar segredos do código armazenando-os no Key Vault reduz a chance de vazamento de segredos. A separação também facilita o gerenciamento central de segredos, facilitando responsabilidades como a rotação de chaves.",
+ "guid": "77aaf205-389f-49ae-bd15-00b46c95b6c2",
+ "service": "Azure Openai",
+ "text": "Chaves seguras: se sua arquitetura exigir autenticação baseada em chave OpenAI do Azure, armazene essas chaves no Azure Key Vault, não no código do aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Controlar o acesso ao Azure OpenAI ajuda a evitar ataques de usuários não autorizados. O uso de pontos de extremidade privados garante que o tráfego de rede permaneça privado entre o aplicativo e a plataforma.",
+ "guid": "1a5c78fc-0890-4caf-af0f-ce85ad0fc659",
+ "service": "Azure Openai",
+ "text": "Restringir o acesso: desabilite o acesso público ao Azure OpenAI, a menos que sua carga de trabalho exija isso. Crie pontos de extremidade privados se você estiver se conectando de consumidores em uma rede virtual do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso do Microsoft Entra ID centraliza o componente de gerenciamento de identidade e elimina o uso de chaves de API. O uso do RBAC com a ID do Microsoft Entra garante que os usuários ou grupos tenham exatamente as permissões necessárias para realizar seu trabalho. Esse tipo de controle de acesso refinado não é possível com chaves de API do OpenAI do Azure.",
+ "guid": "703ee553-e905-4797-8999-a5d724c1f860",
+ "service": "Azure Openai",
+ "text": "ID do Microsoft Entra: use a ID do Microsoft Entra para autenticação e autorize o acesso ao Azure OpenAI usando o RBAC (controle de acesso baseado em função). Desabilite a autenticação local nos Serviços de IA do Azure e defina 'disableLocalAuth' como 'true'. Conceda identidades que executam conclusões ou geração de imagens à função de Usuário OpenAI dos Serviços Cognitivos. Conceda pipelines de automação de modelos e acesso ad hoc à ciência de dados de uma função como Colaborador OpenAI dos Serviços Cognitivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso de chaves gerenciadas pelo cliente oferece maior flexibilidade para criar, girar, desabilitar e revogar controles de acesso.",
+ "guid": "6d20b136-61df-4267-9578-d6045f452937",
+ "service": "Azure Openai",
+ "text": "Usar chaves gerenciadas pelo cliente: use chaves gerenciadas pelo cliente para modelos ajustados e dados de treinamento carregados no Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Detecte tentativas de jailbreak para identificar e bloquear prompts que tentam ignorar os mecanismos de segurança de suas implantações do OpenAI do Azure.",
+ "guid": "d3a276d5-c58e-49b7-a00c-23198d8dc3e7",
+ "service": "Azure Openai",
+ "text": "Proteja-se contra ataques de jailbreak: use o Azure AI Content Safety Studio para detectar riscos de jailbreak.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso de recursos de API para restringir o uso alinha o consumo do serviço com as necessidades do cliente. Isso economiza dinheiro, garantindo que o modelo não gere uma resposta excessivamente longa que consuma mais tokens do que o necessário.",
+ "guid": "24b4af01-d5e7-4812-8d67-3cc69082a03e",
+ "service": "Azure Openai",
+ "text": "Crie o código do cliente para definir limites: seus clientes personalizados devem usar os recursos de limite da API de conclusões do OpenAI do Azure, como limite máximo no número de tokens por modelo ('max_tokens') ou número de conclusões para geração ('n'). A configuração de limites garante que o servidor não produza mais do que o cliente precisa.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento contínuo do TPM e do RPM fornece métricas relevantes para otimizar o custo dos modelos do OpenAI do Azure. Você pode acoplar esse monitoramento aos recursos do modelo e aos preços do modelo para otimizar o uso do modelo. Você também pode usar esse monitoramento para otimizar os tamanhos dos prompts.",
+ "guid": "e433c93a-83ae-434a-8e3e-d39ccf4999a9",
+ "service": "Azure Openai",
+ "text": "Monitore o uso pago conforme o uso: se você usar a abordagem paga conforme o uso, monitore o uso do TPM e do RPM. Use essas informações para informar as decisões de projeto de arquitetura, como quais modelos usar e para otimizar os tamanhos dos prompts.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento contínuo da utilização gerenciada por provisionamento fornece as informações necessárias para entender se você está subutilizando sua taxa de transferência provisionada.",
+ "guid": "e3a2b9f2-71b7-4fc4-8653-d34e51f97600",
+ "service": "Azure Openai",
+ "text": "Monitorar o uso da taxa de transferência provisionada: se você usar a taxa de transferência provisionada, monitore a utilização gerenciada por provisionamento para garantir que você não esteja subutilizando a taxa de transferência provisionada adquirida.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento de custos, a definição de orçamentos e a definição de alertas fornecem à governança os processos de responsabilidade apropriados.",
+ "guid": "bc568726-91cc-4397-8121-a6c7cc0ea3d2",
+ "service": "Azure Openai",
+ "text": "Gerenciamento de custos: use recursos de gerenciamento de custos com o OpenAI para monitorar custos, definir orçamentos para gerenciar custos e criar alertas para notificar as partes interessadas sobre riscos ou anomalias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Diagnóstico coleta e analisa métricas e logs, ajudando você a monitorar a disponibilidade, o desempenho e a operação do OpenAI do Azure.",
+ "guid": "b2b0ff3d-4e03-4d68-9389-7d29ebeb8710",
+ "service": "Azure Openai",
+ "text": "Habilitar e configurar o Diagnóstico do Azure: habilite e configure o Diagnóstico para o Serviço OpenAI do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Openai Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/azureopenai_sg_checklist.zh-Hant.json b/checklists-ext/azureopenai_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..7c39bbbd1
--- /dev/null
+++ b/checklists-ext/azureopenai_sg_checklist.zh-Hant.json
@@ -0,0 +1,178 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "這些重要的輸送量資訊提供了確保從配額分配足夠的 TPM 以滿足部署需求所需的資訊。分配足夠的配額可以防止對已部署模型的調用受到限制。",
+ "guid": "58d920a1-7482-4367-aa69-c5326bcfd33d",
+ "service": "Azure Openai",
+ "text": "監視即用即付的速率限制:如果使用即用即付方法,請管理模型部署的速率限制,並監視每分鐘令牌數 (TPM) 和每分鐘請求數 (RPM) 的使用方式。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "請務必監視預配管理的利用率,以確保其不超過 100%,以防止對已部署模型的調用受到限制。",
+ "guid": "ff8fe762-af8f-464b-aed5-95fed612d087",
+ "service": "Azure Openai",
+ "text": "監視預置輸送量的預置託管利用率:如果使用預置輸送量付款模型,請監視預置託管的利用率。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "內容過濾器根據不透明的風險分析阻止提示或完成。確保對內容過濾器進行調整,以允許工作負載的預期使用量。",
+ "guid": "2c498456-15f9-4893-b9c2-310b37bee2c3",
+ "service": "Azure Openai",
+ "text": "調整內容過濾器:調整內容過濾器,以最大程度地減少過於激進的篩檢程式造成的誤報。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過將機密存儲在 Key Vault 中來將機密與代碼分離,可以減少洩露機密的機會。分離還有助於對機密進行集中管理,從而減輕密鑰輪換等職責。",
+ "guid": "77aaf205-389f-49ae-bd15-00b46c95b6c2",
+ "service": "Azure Openai",
+ "text": "安全密鑰:如果體系結構需要基於 Azure OpenAI 金鑰的身份驗證,請將這些密鑰存儲在 Azure Key Vault 中,而不是應用程式代碼中。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "控制對 Azure OpenAI 的訪問有助於防止來自未經授權用戶的攻擊。使用專用終結點可確保網路流量在應用程式和平台之間保持私密。",
+ "guid": "1a5c78fc-0890-4caf-af0f-ce85ad0fc659",
+ "service": "Azure Openai",
+ "text": "限制訪問:禁用對 Azure OpenAI 的公共訪問,除非工作負載需要。如果從 Azure 虛擬網路中的使用者進行連接,請創建專用終結點。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Microsoft Entra ID 可以集中標識管理元件,並消除 API 金鑰的使用。將 RBAC 與 Microsoft Entra ID 結合使用可確保使用者或組具有完成工作所需的許可權。使用 Azure OpenAI API 金鑰無法實現這種精細的存取控制。",
+ "guid": "703ee553-e905-4797-8999-a5d724c1f860",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID:使用 Microsoft Entra ID 進行身份驗證,並使用基於角色的訪問控制 (RBAC) 授權訪問 Azure OpenAI。在 Azure AI 服務中禁用本地身份驗證,並將“disableLocalAuth”設置為“true”。向執行完成或圖像生成的標識授予認知服務 OpenAI 使用者角色。授予模型自動化管道和臨時數據科學訪問許可權,例如認知服務 OpenAI 貢獻者。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用客戶管理的金鑰可以更靈活地創建、輪換、禁用和撤銷訪問控制。",
+ "guid": "6d20b136-61df-4267-9578-d6045f452937",
+ "service": "Azure Openai",
+ "text": "使用客戶管理的金鑰:使用客戶管理的金鑰進行微調的模型和上傳到 Azure OpenAI 的訓練數據。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "檢測越獄嘗試,以識別和阻止試圖繞過 Azure OpenAI 部署的安全機制的提示。",
+ "guid": "d3a276d5-c58e-49b7-a00c-23198d8dc3e7",
+ "service": "Azure Openai",
+ "text": "防範越獄攻擊:使用 Azure AI 內容安全工作室檢測越獄風險。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 API 功能來限制使用可以使服務使用與客戶需求保持一致。這通過確保模型不會生成消耗過多代幣的過長回應來節省資金。",
+ "guid": "24b4af01-d5e7-4812-8d67-3cc69082a03e",
+ "service": "Azure Openai",
+ "text": "設計用戶端代碼以設置限制:自定義用戶端應使用 Azure OpenAI 完成 API 的限制功能,例如每個模型的令牌數 (“max_tokens”) 或生成完成數 (“n”) 的最大限制。設置限制可確保伺服器產生的產品不會超過用戶端的需求。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "持續監視 TPM 和 RPM 可提供相關指標,以優化 Azure OpenAI 模型的成本。您可以將此監視與模型功能和模型定價相結合,以優化模型使用。您還可以使用此監視來優化提示大小。",
+ "guid": "e433c93a-83ae-434a-8e3e-d39ccf4999a9",
+ "service": "Azure Openai",
+ "text": "監視即用即付使用方式:如果使用即用即付方法,請監視 TPM 和 RPM 的使用方式。使用該資訊為架構設計決策提供資訊,例如要使用的模型,並優化提示大小。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "持續監控預置管理的利用率可為您提供所需的資訊,以便在您未充分利用預置輸送量時瞭解。",
+ "guid": "e3a2b9f2-71b7-4fc4-8653-d34e51f97600",
+ "service": "Azure Openai",
+ "text": "監視預設輸送量使用方式:如果使用預設輸送量,請監視預設管理的利用率,以確保不會未充分利用所購買的預設輸送量。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "成本監視、設置預算和設置警報為治理提供了適當的問責流程。",
+ "guid": "bc568726-91cc-4397-8121-a6c7cc0ea3d2",
+ "service": "Azure Openai",
+ "text": "成本管理:使用 OpenAI 的成本管理功能來監控成本,設置預算以管理成本,並創建警報以通知利益相關者風險或異常情況。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "診斷收集和分析指標和日誌,説明你監視 Azure OpenAI 的可用性、性能和操作。",
+ "guid": "b2b0ff3d-4e03-4d68-9389-7d29ebeb8710",
+ "service": "Azure Openai",
+ "text": "啟用和配置 Azure 診斷:為 Azure OpenAI 服務啟用和配置診斷。",
+ "type": "recommendation",
+ "waf": "操作"
+ }
+ ],
+ "metadata": {
+ "name": "Azure Openai Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/fullwaf_checklist.en.json b/checklists-ext/fullwaf_checklist.en.json
index 4b4656928..c9bd293fb 100644
--- a/checklists-ext/fullwaf_checklist.en.json
+++ b/checklists-ext/fullwaf_checklist.en.json
@@ -1,10402 +1,8716 @@
{
"items": [
{
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Implement an error handling policy at the global level",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use one Entra tenant for managing your Azure resources, unless you have a clear regulatory or business requirement for multi-tenants.",
+ "text": "Ensure all APIs policies include a element.",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "Low",
- "text": "Use Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"severity": "High",
- "text": "If you give a partner access to administer your tenant, use Azure Lighthouse.",
- "waf": "Cost"
+ "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
- "severity": "High",
- "text": "Enforce a RBAC model that aligns to your cloud operating model. Scope and Assign across Management Groups and Subscriptions.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Reliability"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Enable Application Insights for more detailed telemetry",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
"severity": "High",
- "text": "Only use the authentication type Work or school account for all account types. Avoid using the Microsoft account",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Reliability"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
- "severity": "Medium",
- "text": "Only use groups to assign permissions. Add on-premises groups to the Entra ID only group if a group management system is already in place.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
+ "text": "Configure alerts on the most critical metrics",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
"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/",
+ "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"severity": "High",
- "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/",
+ "text": "Protect incoming requests to APIs (data plane) with Azure AD",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "Create appropriate groups to control the visibility of the products",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"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.",
- "waf": "Reliability"
- },
- {
- "ammp": true,
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
- "severity": "High",
- "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": "Reliability"
+ "text": "Use Backends feature to eliminate redundant API backend configurations",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "Medium",
- "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": "Reliability"
+ "text": "Use Named Values to store common values that can be used in policies",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
- "severity": "High",
- "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"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
"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/",
+ "text": "Ensure there is an automated backup routine",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
"severity": "Medium",
- "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance.",
+ "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
"severity": "Low",
- "text": "If you need transit between ExpressRoute and VPN gateways in hub and spoke scenarios, use Azure Route Server.",
- "waf": "Reliability"
+ "text": "If you need to log at high performance levels, consider Event Hubs policy",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
- "severity": "Low",
- "text": "If using Route Server, use a /27 prefix for the Route Server subnet.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Apply throttling policies to control the number of requests per second",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"severity": "Medium",
- "text": "For network architectures with multiple hub-and-spoke topologies across Azure regions, use global virtual network peerings between the hub VNets to connect the regions to each other.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "text": "Configure autoscaling to scale out the number of instances when the load increases",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Monitor for Networks to monitor the end-to-end state of the networks on Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Operations"
+ "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"severity": "Medium",
- "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).",
+ "text": "Use the premium tier for production workloads.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
- "severity": "Medium",
- "text": "Limit the number of routes per route table to 400.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "High",
- "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings.",
+ "text": "Be aware of APIM's limits",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
- "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.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
+ "severity": "High",
+ "text": "Ensure that the self-hosted gateway deployments are resilient.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
"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": "Reliability"
+ "text": "Use Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "High",
- "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/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Deploy the service within a Virtual Network (VNet)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
"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/",
+ "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
- "severity": "High",
- "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"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "Medium",
+ "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "High",
- "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/",
+ "text": "Disable Public Network Access",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"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').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "text": "Simplify management with PowerShell automation scripts",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "Medium",
- "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": "Reliability"
+ "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
- "severity": "Low",
- "text": "Special workloads that require and deploy their own DNS (such as Red Hat OpenShift) should use their preferred DNS solution.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Implement DevOps and CI/CD in your workflow",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Bastion to securely connect to your network.",
+ "text": "Secure APIs using client certificate authentication",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Bastion in a subnet /26 or larger.",
+ "text": "Secure backend services using client certificate authentication",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"severity": "High",
- "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/",
+ "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"severity": "High",
- "text": "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
- "severity": "High",
- "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.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use managed identities to authenticate to other Azure resources whenever possible",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
"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/",
+ "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
- "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.",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
+ "severity": "Medium",
+ "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
"severity": "Medium",
- "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"
+ "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "description": "You can use AS-path prepending and connection weights to influence traffic from Azure to on-premises, and the full range of BGP attributes in your own routers to influence traffic from on-premises to Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"severity": "Medium",
- "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/",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
"severity": "Medium",
- "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"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
- "severity": "High",
- "text": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost.",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
- "severity": "High",
- "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"
+ "text": "Use more than 1 app instance for your apps",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "For scenarios that require bandwidth higher than 10 Gbps or dedicated 10/100-Gbps ports, use ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "text": "Set up autoscaling in Spring Cloud Gateway",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
- "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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "Low",
+ "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
- "severity": "Medium",
- "text": "Use redundant VPN appliances on-premises (active/active or active/passive).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"severity": "High",
- "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"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
- "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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"severity": "Medium",
- "text": "Monitor ExpressRoute availability and utilization using built-in Express Route Insights.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Use Connection Monitor for connectivity monitoring across the network, especially between on-premises and Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use ExpressRoute circuits from different peering locations for redundancy.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use site-to-site VPN as failover of ExpressRoute, if only using a single ExpressRoute circuit.",
+ "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
"severity": "High",
- "text": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated.",
+ "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Has an RBAC model been created for use within VMware vSphere",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "Medium",
- "text": "Ensure the two physical links of your ExpressRoute circuit are connected to two distinct edge devices in your network.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Ensure Bidirectional Forwarding Detection (BFD) is enabled and configured on customer or provider edge routing devices.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
+ "severity": "High",
+ "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
"severity": "High",
- "text": "Connect the ExpressRoute Gateway to two or more circuits from different peering locations for higher resiliency.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Configure diagnostic logs and alerts for ExpressRoute virtual network gateway.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
+ "waf": "Performance"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"severity": "Medium",
- "text": "Do not use ExpressRoute circuits for VNet-to-VNet communication.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "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",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "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.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
"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).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Reliability"
+ "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).",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
- "severity": "High",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
+ "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)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"severity": "High",
- "text": "Use Azure Firewall Premium to enable additional security features.",
+ "text": "Limit use of CloudAdmin account to emergency access only",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
- "severity": "High",
- "text": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
- "severity": "High",
- "text": "Configure Azure Firewall IDPS mode to Deny for additional protection.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"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": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"severity": "Medium",
- "text": "Add diagnostic settings to save logs, using the Resource Specific destination table, for all Azure Firewall deployments.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operations"
+ "text": "Is East-West traffic filtering implemented within NSX-T",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "Important",
- "text": "Migrate from Azure Firewall Classic rules (if exist) to Firewall Policy.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"severity": "High",
- "text": "Use a /26 prefix for your Azure Firewall subnets.",
+ "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"severity": "Medium",
- "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use.",
- "waf": "Performance"
+ "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use IP Groups or IP prefixes to reduce number of IP table rules.",
- "waf": "Performance"
+ "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
"severity": "Medium",
- "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"
+ "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"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.",
- "waf": "Performance"
+ "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
- "severity": "High",
- "text": "If you are using Azure Firewall Premium, enable TLS Inspection.",
- "waf": "Performance"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
+ "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)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
"severity": "Low",
- "text": "Use web categories to allow or deny outbound access to specific topics.",
- "waf": "Performance"
+ "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)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
- "severity": "Medium",
- "text": "As part of your TLS inspection, plan for receiving traffic from Azure App Gateways for inspection.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
- "severity": "Medium",
- "text": "Enable Azure Firewall DNS proxy configuration.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
- "severity": "High",
- "text": "Integrate Azure Firewall with Azure Monitor and enable diagnostic logging to store and analyze firewall logs.",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
"severity": "Low",
- "text": "Implement backups for your firewall rules",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "AppGW",
- "severity": "High",
- "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",
+ "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"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": "Reliability"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
"severity": "High",
- "text": "Use at least a /27 prefix for your Gateway subnets.",
+ "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "High",
- "text": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity.",
+ "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use NSGs to help protect traffic across subnets, as well as east/west traffic across the platform (traffic between landing zones).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Reliability"
+ "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Reliability"
+ "text": "Ensure that you have a policy around ESXi host density and efficiency, keeping in mind the lead time for requesting new nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "Medium",
- "text": "Enable VNet Flow Logs and feed them into Traffic Analytics to gain insights into internal and external traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Reliability"
+ "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
- "severity": "Medium",
- "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"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"severity": "Medium",
- "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"
+ "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure all required resource reside within the same Azure availability zone(s)",
"waf": "Performance"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "Medium",
- "text": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "Medium",
- "text": "Ensure that your virtual WAN network architecture aligns to an identified architecture scenario.",
+ "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"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.",
+ "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"severity": "Medium",
- "text": "Do not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.",
- "waf": "Reliability"
+ "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use AS-Path as hub routing preference, since it is more flexible than ExpressRoute or VPN.",
+ "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"severity": "Medium",
- "text": "Configure label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.",
+ "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"severity": "High",
- "text": "Assign at least a /23 prefix to virtual hubs to ensure enough IP space is available.",
+ "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"severity": "High",
- "text": "Leverage Azure Policy strategically, define controls for your environment, using Policy Initiatives to group related policies.",
+ "text": "Are data processing implications (service provider / service consumer model) clear and documented",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "Medium",
- "text": "Map regulatory and compliance requirements to Azure Policy definitions and Azure role assignments.",
+ "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Medium",
- "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
"severity": "High",
- "text": "Manage policy assignments at the highest appropriate level with exclusions at bottom levels, if required.",
- "waf": "Reliability"
+ "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "Low",
- "text": "Use Azure Policy to control which services users can provision at the subscription/management group level.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"severity": "High",
- "text": "Use built-in policies where possible to minimize operational overhead.",
- "waf": "Reliability"
+ "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "description": "Assigning the Resource Policy Contributor role to specific scopes allows you to delegate policy management to relevant teams. For instance, a central IT team may oversee management group-level policies, while application teams handle policies for their subscriptions, enabling distributed governance with adherence to organizational standards.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"severity": "Medium",
- "text": "Assign the built-in Resource Policy Contributor role at a particular scope to enable application-level governance.",
- "waf": "Reliability"
+ "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "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.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
- "severity": "Medium",
- "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": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, deploy sovereignty policy baseline and assign at correct management group level.",
- "waf": "Reliability"
+ "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, document Sovereign Control objectives to policy mapping.",
- "waf": "Reliability"
+ "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, ensure process is in place for management of 'Sovereign Control objectives to policy mapping'.",
- "waf": "Reliability"
+ "text": "Ensure workloads running on Azure VMware Solution are hybrid managed using Azure Arc for Servers (Arc for Azure VMware Solution is in preview)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
- "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/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs in Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs outside of Azure using Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/networkWatchers",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Network Watcher to proactively monitor traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Operations"
+ "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Monitor Logs for insights and reporting.",
- "waf": "Operations"
+ "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "Medium",
- "text": "Use Azure Monitor alerts for the generation of operational alerts.",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"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.",
- "waf": "Operations"
+ "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "Low",
- "text": "When using Azure Backup, use the correct backup types (GRS, ZRS & LRS) for your backup, as the default setting is GRS.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure guest policies to automatically deploy software configurations through VM extensions and enforce a compliant baseline VM configuration.",
+ "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?",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"severity": "Medium",
- "text": "Monitor VM security configuration drift via Azure Policy.",
+ "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Site Recovery for Azure-to-Azure Virtual Machines disaster recovery scenarios. This enables you to replicate workloads across regions.",
- "waf": "Operations"
+ "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure-native backup capabilities, or an Azure-compatible, 3rd-party backup solution.",
+ "text": "Deploy your backup solution outside of vSan, on Azure native components",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For manual deployments, all configuration and deployments must be documented",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
- "severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployments, request or reserve quota prior to starting the deployment",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Use different Azure Key Vaults for different applications and regions to avoid transaction scale limits and restrict access to secrets.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Follow a least privilege model by limiting authorization to permanently delete keys, secrets, and certificates to specialized custom Microsoft Entra ID roles.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Automate the certificate management and renewal process with public certificate authorities to ease administration.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Establish an automated process for key and certificate rotation.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"severity": "Medium",
- "text": "Enable firewall and virtual network service endpoint or private endpoint on the vault to control access to the key vault.",
- "waf": "Reliability"
+ "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",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use the platform-central Azure Monitor Log Analytics workspace to audit key, certificate, and secret usage within each instance of Key Vault.",
- "waf": "Reliability"
+ "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
"severity": "Medium",
- "text": "Delegate Key Vault instantiation and privileged access and use Azure Policy to enforce a consistent compliant configuration.",
- "waf": "Reliability"
+ "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"severity": "Medium",
- "text": "If you want to bring your own keys, this might not be supported across all considered services. Implement relevant mitigation so that inconsistencies don't hinder desired outcomes. Choose appropriate region pairs and disaster recovery regions that minimize latency.",
- "waf": "Reliability"
+ "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, use Azure Key Vault managed HSM to store your secrets and credentials.",
- "waf": "Reliability"
+ "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "waf": "Performance"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Microsoft Entra ID reporting capabilities to generate access control audit reports.",
- "waf": "Reliability"
+ "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "High",
- "text": "Enable Defender Cloud Security Posture Management for all subscriptions.",
+ "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "High",
- "text": "Enable a Defender Cloud Workload Protection Plan for Servers on all subscriptions.",
+ "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
- "severity": "High",
- "text": "Enable Defender Cloud Workload Protection Plans for Azure Resources on all subscriptions.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "severity": "High",
- "text": "Enable Endpoint Protection on IaaS Servers.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"severity": "Medium",
- "text": "Monitor base operating system patching drift via Azure Monitor Logs and Defender for Cloud.",
+ "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"severity": "Medium",
- "text": "Connect default resource configurations to a centralized Azure Monitor Log Analytics workspace.",
+ "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.",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, enable transparancy logs on the Entra ID tenant.",
+ "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, enable customer Lockbox on the Entra ID tenant.",
+ "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
"severity": "High",
- "text": "Enable secure transfer to storage accounts.",
+ "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"severity": "High",
- "text": "Enable container soft delete for the storage account to recover a deleted container and its contents.",
+ "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
"severity": "High",
- "text": "Use Key Vault secrets to avoid hard-coding sensitive information such as credentials (virtual machines user passwords), certificates or keys.",
- "waf": "Operations"
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
"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.",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
- "severity": "Medium",
- "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
- "severity": "Medium",
- "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
+ "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
+ "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Disable Azure Container Registry image export",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
- "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.",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
+ "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Enable Azure Policies for Azure Container Registry",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT Hub",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
+ "guid": "d345293c-7639-4637-a551-c5c04e401955",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
+ "service": "ACR",
"severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
+ "text": "Sign and Verify containers with notation (Notary v2)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT Hub",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
+ "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
+ "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
+ "service": "ACR",
"severity": "Medium",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
+ "text": "Encrypt registry with a customer managed key",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT Hub",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
+ "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "Use Managed Identities to connect instead of Service Principals",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT Hub",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
+ "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"severity": "High",
- "text": "Learn how to trigger a manual failover.",
+ "text": "Disable local authentication for management plane access",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT Hub",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
+ "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
+ "service": "ACR",
"severity": "High",
- "text": "Learn how to fail back after a failover.",
+ "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Service",
- "severity": "Low",
- "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Service",
- "severity": "Medium",
- "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Service",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable anonymous pull/push access",
+ "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
+ "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
+ "service": "ACR",
"severity": "Medium",
- "text": "Implement health checks",
+ "text": "Disable Anonymous pull access",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
+ "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
+ "service": "ACR",
"severity": "High",
- "text": "Refer to backup and restore best practices for Azure App Service",
+ "text": "Disable repository-scoped access tokens",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
+ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
+ "service": "ACR",
"severity": "High",
- "text": "Implement Azure App Service reliability best practices",
+ "text": "Deploy images from a trusted environment",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Service",
- "severity": "Low",
- "text": "Familiarize with how to move an App Service app to another region During a disaster",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
+ "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Disable Azure ARM audience tokens for authentication",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Service",
- "severity": "High",
- "text": "Familiarize with reliability support in Azure App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
+ "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
+ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Enable diagnostics logging",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
+ "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "service": "ACR",
"severity": "Medium",
- "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "text": "Control inbound network access with Private Link",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable public network access if inbound network access is secured using Private Link",
+ "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
+ "service": "ACR",
"severity": "Medium",
- "text": "Monitor App Service instances using Health checks",
+ "text": "Disable Public Network access",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only the ACR Premium SKU supports Private Link access",
+ "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
+ "service": "ACR",
"severity": "Medium",
- "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
+ "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "service": "ACR",
"severity": "Low",
- "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Service",
- "severity": "High",
- "text": "Use Key Vault to store secrets",
+ "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Service",
- "severity": "High",
- "text": "Use Managed Identity to connect to Key Vault",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Deploy validated container images",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Store the App Service TLS certificate in Key Vault.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Service",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
+ "service": "ACR",
"severity": "High",
- "text": "Use Key Vault to store TLS certificate.",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Service",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
"severity": "Medium",
- "text": "Isolate systems that process sensitive information",
+ "text": "Follow reliability support recommendations in Azure Bot Service",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Service",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
"severity": "Medium",
- "text": "Do not store sensitive data on local disk",
+ "text": "Deploying bots with local data residency and regional compliance",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Service",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
"severity": "Medium",
- "text": "Use an established Identity Provider for authentication",
+ "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Service",
- "severity": "High",
- "text": "Deploy from a trusted environment",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
+ "service": "Service Bus",
+ "severity": "Low",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Service",
- "severity": "High",
- "text": "Disable basic authentication",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
+ "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Service",
- "severity": "High",
- "text": "Use Managed Identity to connect to resources",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Service",
- "severity": "High",
- "text": "Pull containers using a Managed Identity",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Service",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
+ "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Send App Service runtime logs to Log Analytics",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Service",
- "severity": "Medium",
- "text": "Send App Service activity logs to Log Analytics",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
+ "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
+ "service": "Service Bus",
+ "severity": "High",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Service",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
+ "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Outbound network access should be controlled",
+ "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Service",
- "severity": "Low",
- "text": "Ensure a stable IP for outbound communications towards internet addresses",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Service",
- "severity": "High",
- "text": "Inbound network access should be controlled",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Functions",
"severity": "High",
- "text": "Use a WAF in front of App Service",
+ "text": "Select the right Function hosting plan based on your business & SLO requirements",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Functions",
"severity": "High",
- "text": "Avoid for WAF to be bypassed",
+ "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Functions",
"severity": "Medium",
- "text": "Set minimum TLS policy to 1.2",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Service",
- "severity": "High",
- "text": "Use HTTPS only",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Functions",
"severity": "High",
- "text": "Wildcards must not be used for CORS",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Functions",
"severity": "High",
- "text": "Turn off remote debugging",
+ "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Functions",
"severity": "Medium",
- "text": "Enable Defender for Cloud - Defender for App Service",
+ "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Service",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Functions",
"severity": "Medium",
- "text": "Enable DDOS Protection Standard on the WAF VNet",
- "waf": "Reliability"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Service",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
+ "service": "Cognitive Services",
"severity": "Medium",
- "text": "Pull containers over a Virtual Network",
+ "text": "Leverage FTA HandBook for Cognitive Services",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Service",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
+ "service": "Cognitive Services",
"severity": "Medium",
- "text": "Conduct a penetration test",
+ "text": "Backup Your Prompts",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Service",
- "severity": "Medium",
- "text": "Deploy validated code",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
+ "service": "Cognitive Services",
+ "severity": "High",
+ "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Service",
- "severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
+ "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
+ "service": "Cognitive Services",
+ "severity": "Medium",
+ "text": "Backup Your ChatGPT conversations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
+ "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
+ "service": "Cognitive Services",
"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",
+ "text": "CI/CD for custom speech",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "3687a046-7a1f-4893-9bda-43324f248116",
+ "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
+ "service": "Cognitive Services",
+ "severity": "Low",
+ "text": "Move a knowledge base using export-import",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Service",
+ "severity": "Low",
+ "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Service",
"severity": "Medium",
- "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
+ "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
- "severity": "Medium",
- "text": "Has an RBAC model been created for use within VMware vSphere",
+ "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Service",
"severity": "Medium",
- "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
+ "text": "Implement health checks",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Service",
"severity": "High",
- "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
+ "text": "Refer to backup and restore best practices for Azure App Service",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
+ "text": "Implement Azure App Service reliability best practices",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "severity": "High",
- "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
- "waf": "Performance"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Service",
+ "severity": "Low",
+ "text": "Familiarize with how to move an App Service app to another region During a disaster",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
- "waf": "Operations"
+ "text": "Familiarize with reliability support in Azure App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Service",
"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",
- "waf": "Operations"
+ "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Service",
"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",
- "waf": "Operations"
+ "text": "Monitor App Service instances using Health checks",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
- "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).",
- "waf": "Operations"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Service",
+ "severity": "Medium",
+ "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
- "severity": "High",
- "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Service",
+ "severity": "Low",
+ "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Service",
"severity": "High",
- "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
+ "text": "Use Key Vault to store secrets",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
- "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)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Service",
+ "severity": "High",
+ "text": "Use Managed Identity to connect to Key Vault",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Store the App Service TLS certificate in Key Vault.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Service",
"severity": "High",
- "text": "Limit use of CloudAdmin account to emergency access only",
+ "text": "Use Key Vault to store TLS certificate.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Service",
"severity": "Medium",
- "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
+ "text": "Isolate systems that process sensitive information",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Service",
"severity": "Medium",
- "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
+ "text": "Do not store sensitive data on local disk",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Service",
+ "severity": "Medium",
+ "text": "Use an established Identity Provider for authentication",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Service",
"severity": "High",
- "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
+ "text": "Deploy from a trusted environment",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
- "severity": "Medium",
- "text": "Is East-West traffic filtering implemented within NSX-T",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Service",
+ "severity": "High",
+ "text": "Disable basic authentication",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Service",
"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",
+ "text": "Use Managed Identity to connect to resources",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Service",
"severity": "High",
- "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
+ "text": "Pull containers using a Managed Identity",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Service",
"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",
+ "text": "Send App Service runtime logs to Log Analytics",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Service",
"severity": "Medium",
- "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
+ "text": "Send App Service activity logs to Log Analytics",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Service",
"severity": "Medium",
- "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
+ "text": "Outbound network access should be controlled",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
- "severity": "Medium",
- "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Service",
+ "severity": "Low",
+ "text": "Ensure a stable IP for outbound communications towards internet addresses",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
- "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)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Service",
+ "severity": "High",
+ "text": "Inbound network access should be controlled",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
- "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)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Service",
+ "severity": "High",
+ "text": "Use a WAF in front of App Service",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
- "severity": "Low",
- "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Service",
+ "severity": "High",
+ "text": "Avoid for WAF to be bypassed",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Service",
"severity": "Medium",
- "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
+ "text": "Set minimum TLS policy to 1.2",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
+ "text": "Use HTTPS only",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
+ "text": "Wildcards must not be used for CORS",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
+ "text": "Turn off remote debugging",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Service",
"severity": "Medium",
- "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
- "waf": "Operations"
+ "text": "Enable Defender for Cloud - Defender for App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Service",
"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",
- "waf": "Operations"
+ "text": "Enable DDOS Protection Standard on the WAF VNet",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Service",
"severity": "Medium",
- "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
- "waf": "Cost"
+ "text": "Pull containers over a Virtual Network",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
- "severity": "Low",
- "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
- "waf": "Cost"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Service",
+ "severity": "Medium",
+ "text": "Conduct a penetration test",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Service",
"severity": "Medium",
- "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "text": "Deploy validated code",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Service",
"severity": "High",
- "text": "Ensure all required resource reside within the same Azure availability zone(s)",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
- "severity": "Medium",
- "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Storage",
"severity": "Medium",
- "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
+ "text": "Consider the 'Azure security baseline for storage'",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Storage",
"severity": "High",
- "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
- "severity": "Medium",
- "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
- "waf": "Operations"
+ "text": "Consider using private endpoints for Azure Storage",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Storage",
"severity": "Medium",
- "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
- "waf": "Operations"
+ "text": "Ensure older storage accounts are not using 'classic deployment model'",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
- "severity": "Medium",
- "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Enable Microsoft Defender for all of your storage accounts",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Storage",
"severity": "Medium",
- "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
+ "text": "Enable 'soft delete' for blobs",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
- "severity": "High",
- "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Disable 'soft delete' for blobs",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Storage",
"severity": "High",
- "text": "Are data processing implications (service provider / service consumer model) clear and documented",
+ "text": "Enable 'soft delete' for containers",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Storage",
"severity": "Medium",
- "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
+ "text": "Disable 'soft delete' for containers",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Storage",
"severity": "High",
- "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
- "waf": "Operations"
+ "text": "Enable resource locks on storage accounts",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Storage",
"severity": "High",
- "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
- "waf": "Operations"
+ "text": "Consider immutable blobs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
"severity": "High",
- "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
- "waf": "Operations"
+ "text": "Require HTTPS, i.e. disable port 80 on the storage account",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Storage",
"severity": "High",
- "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
- "waf": "Operations"
+ "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Storage",
"severity": "Medium",
- "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
- "waf": "Operations"
+ "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "Low",
- "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "AAD tokens should be favored over shared access signatures, wherever possible",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Least privilege in IaM permissions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json#best-practices-when-using-sas",
+ "service": "Storage",
+ "severity": "High",
+ "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
- "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)",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Storage",
"severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
- "waf": "Operations"
+ "text": "When using storage account keys, consider enabling a 'key expiration policy'",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Storage",
"severity": "Medium",
- "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
- "waf": "Operations"
+ "text": "Consider configuring an SAS expiration policy",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Storage",
"severity": "Medium",
- "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
- "waf": "Operations"
+ "text": "Consider linking SAS to a stored access policy",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Storage",
"severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
+ "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
- "severity": "Medium",
- "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Strive for short validity periods for ad-hoc SAS",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Storage",
"severity": "Medium",
- "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "text": "Apply a narrow scope to a SAS",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
- "severity": "High",
- "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Consider scoping SAS to a specific client IP address, wherever possible",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "Medium",
- "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Storage",
+ "severity": "Low",
+ "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Storage",
"severity": "High",
- "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
+ "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Storage",
"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?",
+ "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
- "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/�. ]",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Avoid overly broad CORS policies",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
- "severity": "Medium",
- "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Storage",
"severity": "Medium",
- "text": "Deploy your backup solution outside of vSan, on Azure native components",
+ "text": "Determine which/if platform encryption should be used.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "Low",
- "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Determine which/if client-side encryption should be used.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "Low",
- "text": "For manual deployments, all configuration and deployments must be documented",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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": "Storage",
+ "severity": "High",
+ "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "Low",
- "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Leverage a storagev2 account type for better performance and reliability",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Storage",
+ "severity": "High",
+ "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployments, request or reserve quota prior to starting the deployment",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "For write operation after failover, use customer-Managed Failover ",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Understand Microsoft-Managed Failover details",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "Low",
- "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Enable Soft Delete",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
"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",
- "waf": "Operations"
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
- "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.",
- "waf": "Operations"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "Low",
- "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
- "waf": "Operations"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
"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",
- "waf": "Performance"
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
- "severity": "Medium",
- "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
- "waf": "Performance"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
+ "service": "Event Hubs",
+ "severity": "High",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
- "waf": "Performance"
+ "text": "Enable logging for security investigation. Use Azure Monitor to captured metrics and logs such as resource logs, runtime audit logs and Kafka logs",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
- "waf": "Performance"
+ "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
- "waf": "Performance"
+ "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
- "waf": "Operations"
+ "text": "Leverage FTA Resillency HandBook",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"severity": "High",
- "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
- "severity": "High",
- "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Use the Premium or Dedicated SKUs for predicable performance",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
- "severity": "Medium",
- "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
- "waf": "Performance"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
+ "severity": "High",
+ "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
- "waf": "Performance"
+ "text": "For Business Critical Applications, use Active Active configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
+ "text": "Design Resilient Event Hubs",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"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.",
+ "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Ensure you are using Application Gateway v2 SKU",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "Medium",
- "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
+ "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
"severity": "Medium",
- "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
+ "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "AppGW",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Configure autoscaling with a minimum amount of instances of two.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "severity": "High",
- "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Deploy Application Gateway across Availability Zones",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "High",
- "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"severity": "High",
- "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
- "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",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "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)?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"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",
+ "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
- "severity": "Medium",
- "text": "Use Azure Traffic Manager to coordinate requests",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
"severity": "High",
- "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
+ "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Data Factory",
- "severity": "Medium",
- "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Data Factory",
- "severity": "High",
- "text": "Use zone redundant pipelines in regions that support Availability Zones",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Data Factory",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
+ "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Data Factory",
- "severity": "Medium",
- "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Data Factory",
- "severity": "Medium",
- "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
+ "severity": "High",
+ "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Data Factory",
- "severity": "Low",
- "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
- "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
- "service": "Data Explorer",
- "text": "Leverage External Tables and Continuous data export overview to reduce costs",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
- "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
- "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
- "service": "Data Explorer",
- "text": "To share data, explore Leader-follower cluster configuration",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
- "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
- "service": "Data Explorer",
- "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
- "service": "Data Explorer",
- "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
- "service": "Data Explorer",
- "text": "Ingest data into each cluster in parallel",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Tune the Azure Front Door WAF for your workload by configuring the WAF in Detection mode to reduce and fix false positive detections.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
- "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
- "service": "Data Explorer",
- "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
- "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
- "service": "Data Explorer",
- "text": "For critical applications, create Active-Active configuration in two paired regions",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
- "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
- "service": "Data Explorer",
- "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
- "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
- "service": "Data Explorer",
- "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
- "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Data Explorer",
- "text": "Wrap DevOps and source control around all your code",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Data Explorer",
- "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Data Explorer",
- "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Use a high threshold for Azure Front Door 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. ",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "High",
- "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
+ "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "AppGW",
+ "severity": "High",
+ "text": "Enable the Azure Application Gateway WAF bot protection rule set. The bot rules detect good and bad bots.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
- "service": "Key Vault",
- "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.",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "AppGW",
+ "severity": "High",
+ "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
- "service": "Key Vault",
- "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.",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "AppGW",
+ "severity": "High",
+ "text": "Tune the Azure Application Gateway WAF in detection mode for your workload. Reduce false positive detections.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AppGW",
"severity": "High",
- "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
+ "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
- "severity": "Low",
- "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "AppGW",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
- "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.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "AppGW",
+ "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. ",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "AppGW",
"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.",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "AppGW",
"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.",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "AppGW",
"severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "AppGW",
"severity": "Medium",
- "text": "Leverage Data-in replication for cross-region DR scenarios",
- "waf": "Reliability"
+ "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "Front Door",
"severity": "Medium",
- "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
"waf": "Operations"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
"service": "AppGW",
"severity": "Medium",
- "text": "Ensure you are using Application Gateway v2 SKU",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
- "severity": "Medium",
- "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
- "waf": "Reliability"
+ "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
- "waf": "Reliability"
+ "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
"service": "AppGW",
"severity": "Medium",
- "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "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.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
"service": "AppGW",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "text": "Use WAF Policies instead of the legacy WAF configuration.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
"service": "AppGW",
"severity": "Medium",
- "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
"waf": "Reliability"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
"service": "AppGW",
- "severity": "Medium",
- "text": "Configure autoscaling with a minimum amount of instances of two.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "High",
+ "text": "You should encrypt traffic to the backend servers.",
"waf": "Reliability"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
"service": "AppGW",
- "severity": "Medium",
- "text": "Deploy Application Gateway across Availability Zones",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "High",
+ "text": "You should use a Web Application Firewall.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "AppGW",
"severity": "Medium",
- "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Redirect HTTP to HTTPS",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "AppGW",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Reliability"
+ "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "AppGW",
"severity": "High",
- "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Enable connection draining during planned service updates to prevent connection loss to existing members of the backend pool",
"waf": "Reliability"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "AppGW",
"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)?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Reliability"
+ "text": "Create custom error pages to display a personalized user experience",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "AppGW",
"severity": "Medium",
- "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
"waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "High",
- "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
- "waf": "Reliability"
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "waf": "Performance"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
- "severity": "High",
- "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
- "waf": "Reliability"
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Use transport layer load balancing",
+ "waf": "Performance"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "High",
- "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "AppGW",
+ "severity": "Medium",
+ "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
- "severity": "Low",
- "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "AppGW",
"severity": "Medium",
- "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
+ "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "AppGW",
"severity": "Low",
- "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
- "waf": "Performance"
+ "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"severity": "High",
- "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
"waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
"severity": "High",
- "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
- "waf": "Operations"
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
"severity": "High",
- "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"severity": "Medium",
- "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
- "waf": "Reliability"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
+ "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": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
- "waf": "Reliability"
+ "text": "Follow Metaprompting guardrails for resonsible AI",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
+ "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": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
- "waf": "Reliability"
+ "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
+ "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 request body inspection feature enabled in Azure Front Door WAF policy.",
- "waf": "Reliability"
+ "text": "Enable monitoring for your AOAI instances",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
+ "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": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
- "waf": "Reliability"
+ "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"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
+ "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": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
- "waf": "Reliability"
+ "text": "Monitor token usage to prevent service disruptions due to capacity",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "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": "Use a high threshold for Azure Front Door 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. ",
- "waf": "Reliability"
+ "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
+ "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 you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Reliability"
+ "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
- "waf": "Reliability"
+ "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"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "AppGW",
+ "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": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
+ "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key",
"waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "AppGW",
+ "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": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
- "waf": "Reliability"
+ "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": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "AppGW",
+ "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": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
- "waf": "Reliability"
+ "text": "Evaluate usage of Provisioned throughput model ",
+ "waf": "Performance"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AppGW",
+ "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": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
- "waf": "Reliability"
+ "text": "Review and implement Azure AI content safety",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "AppGW",
- "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.",
- "waf": "Reliability"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "AppGW",
+ "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": "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. ",
- "waf": "Reliability"
+ "text": "Improve latency of the system by limiting token sizes, streaming options",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "AppGW",
- "severity": "Low",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Reliability"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "AppGW",
- "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.",
- "waf": "Reliability"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "AppGW",
+ "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": "Use the latest Azure Application Gateway WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
- "waf": "Reliability"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
- "waf": "Operations"
+ "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
+ "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": "Add diagnostic settings to save your Azure Front Door WAF logs.",
- "waf": "Operations"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "AppGW",
+ "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": "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.",
- "waf": "Operations"
+ "text": "Ensure having adequate quotas of TPM & RPM for the workload",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "AppGW",
+ "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": "Use WAF Policies instead of the legacy WAF configuration.",
+ "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "AppGW",
+ "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": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
+ "text": "Deploy separate fine tuned models across regions if finetuning is employed",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
+ "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": "Make sure your origins only take traffic from your Azure Front Door instance.",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "AppGW",
+ "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": "You should encrypt traffic to the backend servers.",
+ "text": "Azure AI search service tiers should be choosen to have a SLA ",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "AppGW",
- "severity": "High",
- "text": "You should use a Web Application Firewall.",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Redirect HTTP to HTTPS",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
- "waf": "Operations"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "AppGW",
+ "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": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "AppGW",
- "severity": "Low",
- "text": "Create custom error pages to display a personalized user experience",
- "waf": "Operations"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "AppGW",
+ "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": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
- "waf": "Performance"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Use transport layer load balancing",
- "waf": "Performance"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "AppGW",
- "severity": "Medium",
- "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "AppGW",
- "severity": "Low",
- "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "OpenAI",
"severity": "Medium",
- "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "OpenAI",
"severity": "Medium",
- "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
- "severity": "Medium",
- "text": "Custom brand assets should be hosted on a CDN",
- "waf": "Performance"
- },
- {
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
- "severity": "Low",
- "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "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)",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "Medium",
- "text": "Don't replicate! Replication can create issues with directory synchronization",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "Medium",
- "text": "Have active-active for multi-regions",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
- "severity": "Medium",
- "text": "Add Azure AD Domain service stamps to additional regions and locations",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "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 Replica Sets for DR",
- "waf": "Reliability"
+ "text": "Use prompt compression tools like LLMLingua or gprtrim",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
- "service": "Service Bus",
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
- "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
- "service": "Service Bus",
+ "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 a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
- "service": "Service Bus",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "OpenAI",
"severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
- "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
- "service": "Service Bus",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
+ "service": "OpenAI",
"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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
- "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
- "service": "Service Bus",
+ "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": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
- "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
- "service": "Service Bus",
- "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)",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
- "service": "Service Bus",
- "severity": "Medium",
- "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
- "service": "Service Bus",
- "severity": "Medium",
- "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
+ "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": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "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": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "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.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
+ "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": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "Setup a process to regularly update and patch the LLM libraries and other system components",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
+ "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": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
- "severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachineScaleSets",
- "checklist": "Resiliency Review",
- "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
- "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
- "service": "VMSS",
- "severity": "Low",
- "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
- "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
- "service": "VM",
+ "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": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
- "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "VM",
- "severity": "High",
- "text": "Use Premium or Ultra disks for production VMs",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
- "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
- "service": "VM",
- "severity": "High",
- "text": "Ensure Managed Disks are used for all VMs",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
- "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
- "service": "VM",
+ "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": "Do not use the Temp disk for anything that is not acceptable to be lost",
- "waf": "Reliability"
+ "text": "Review the guidance provided on setting up AI search for Reliability",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
- "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "VM",
+ "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": "Leverage Availability Zones for your VMs in regions where they are supported",
- "waf": "Reliability"
+ "text": "Plan and manage AI Search Vector storage",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
- "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "VM",
+ "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": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
- "waf": "Reliability"
+ "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
- "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "VM",
+ "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": "Avoid running a production workload on a single VM",
- "waf": "Reliability"
+ "text": "Evaluate usage of billing models - PAYG vs PTU",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
- "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
- "severity": "High",
- "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
- "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
- "service": "VM",
- "severity": "Low",
- "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
- "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
- "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
- "service": "VM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
+ "service": "OpenAI",
"severity": "Medium",
- "text": "Increase quotas in DR region before testing failover with ASR",
- "waf": "Reliability"
+ "text": "Evaluate your Azure AI Search results based on different search parameters",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
- "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
- "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
- "service": "VM",
- "severity": "Low",
- "text": "Utilize Scheduled Events to prepare for VM maintenance",
- "waf": "Reliability"
- },
+ "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.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
- "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Storage",
+ "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": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
- "waf": "Reliability"
+ "text": "Use prompt engineering techniques to improve the accuracy of LLM responses",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
- "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Storage",
- "severity": "Low",
- "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "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.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
- "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Storage",
- "severity": "Low",
- "text": "Enable soft delete for Storage Account Containers",
- "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.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
- "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Storage",
- "severity": "Low",
- "text": "Enable soft delete for blobs",
- "waf": "Reliability"
+ "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.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
- "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
- "service": "Backup",
+ "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": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
- "waf": "Reliability"
+ "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
- "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
- "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
- "service": "Backup",
- "severity": "Low",
- "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT Hub",
+ "severity": "High",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
- "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
- "service": "Backup",
- "severity": "Low",
- "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT Hub",
+ "severity": "Medium",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Resiliency Review",
- "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
- "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
- "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
- "service": "DNS",
- "severity": "Low",
- "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT Hub",
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.PowerBI/gateways",
- "checklist": "Resiliency Review",
- "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
- "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
- "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
- "service": "Data Gateways",
- "severity": "Medium",
- "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT Hub",
+ "severity": "High",
+ "text": "Learn how to trigger a manual failover.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
- "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT Hub",
"severity": "High",
- "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
+ "text": "Learn how to fail back after a failover.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "FTA Resiliency Playbook",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
+ "service": "Container Apps",
+ "severity": "High",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
+ "service": "Container Apps",
"severity": "High",
- "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
+ "text": "Use more than one replica and enable Zone Redundancy.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Run multiple replicas of the database (>1 ) in Prod",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Container Apps",
+ "severity": "High",
+ "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
- "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Leverage Multi-Region Writes",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Container Apps",
+ "severity": "High",
+ "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Span Cosmos account across two or more regions with multi-region writes",
- "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
+ "service": "PostgreSQL",
"severity": "Medium",
- "text": "Distribute your data globally",
+ "text": "Leverage Flexible Server",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
- "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
- "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
- "service": "CosmosDB",
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
+ "service": "PostgreSQL",
"severity": "High",
- "text": "Choose from several well-defined consistency models",
+ "text": "Leverage Availability Zones where regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
- "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
- "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
- "service": "CosmosDB",
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "31b67c67-be59-4519-8083-845d587cb391",
+ "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
+ "service": "PostgreSQL",
"severity": "Medium",
- "text": "Enable Service managed failover",
+ "text": "Leverage cross-region read replicas for BCDR",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
- "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
- "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Enable Automatic Backups",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required for AKS Windows workloads HostProcess containers can be used",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
- "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
- "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Perform Periodic Backups",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use KEDA if running event-driven workloads",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
- "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
- "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use Dapr to ease microservice development",
+ "waf": "Operations"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"severity": "High",
- "text": "Follow Metaprompting guardrails for resonsible AI",
- "waf": "Operations"
+ "text": "Use the SLA-backed AKS offering",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use Disruption Budgets in your pod and deployment definitions",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "High",
- "text": "Enable monitoring for your AOAI instances",
- "waf": "Operations"
+ "text": "If using a private registry, configure region replication to store images in multiple regions",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use an external application such as kubecost to allocate costs to different users",
+ "waf": "Cost"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use scale down mode to delete/deallocate nodes",
+ "waf": "Cost"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"severity": "Medium",
- "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
- "waf": "Operations"
+ "text": "When required use multi-instance partitioning GPU on AKS Clusters",
+ "waf": "Cost"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
"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"
+ "text": "If running a Dev/Test cluster use NodePool Start/Stop",
+ "waf": "Cost"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Separate applications from the control plane with user/system node pools",
"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": "Operations"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Add taint to your system nodepool to make it dedicated",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use a private registry for your images, such as ACR",
+ "waf": "Reliability"
},
{
- "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.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Scan your images for vulnerabilities",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"severity": "High",
- "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements",
- "waf": "Performance"
+ "text": "Define app separation requirements (namespace/nodepool/cluster)",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"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"
+ "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"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"
+ "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"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"
+ "text": "If required add Key Management Service etcd encryption",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required consider using Confidential Compute for AKS",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"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",
+ "text": "Consider using Defender for Containers",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "High",
- "text": "Implement retry & healthchecks with Gateway pattern like APIM",
+ "text": "Use managed identities instead of Service Principals",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "Medium",
- "text": "Ensure having adequate quotas of TPM & RPM for the workload",
+ "text": "Integrate authentication with AAD (using the managed integration)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "Medium",
- "text": "Deploy separate fine tuned models across regions if finetuning is employed",
+ "text": "Limit access to admin kubeconfig (get-credentials --admin)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"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.",
+ "text": "Integrate authorization with AAD RBAC",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"severity": "High",
- "text": "Azure AI search service tiers should be choosen to have a SLA ",
+ "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For AKS non-interactive logins use kubelogin (preview)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Disable AKS local accounts",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Configure if required Just-in-time cluster access",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Configure if required AAD conditional access for AKS",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required for Windows AKS workloads configure gMSA ",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"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",
+ "text": "For finer control consider using a managed Kubelet Identity",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If using AGIC, do not share an AppGW across clusters",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876",
- "link": "https://learn.microsoft.com/azure/compliance/",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
"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.",
+ "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"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"
+ "text": "For Windows workloads use Accelerated Networking",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"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.",
+ "text": "Use the standard ALB (as opposed to the basic one)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"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",
+ "text": "If using Azure CNI, consider using different Subnets for NodePools",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"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",
+ "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"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",
+ "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "High",
- "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements",
- "waf": "Reliability"
+ "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
+ "waf": "Performance"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "High",
- "text": "Configure private endpoint for AI services to restrict service access within your network",
- "waf": "Reliability"
+ "text": "If using Azure CNI, check the maximum pods/node (default 30)",
+ "waf": "Performance"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"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",
+ "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required add your own CNI plugin",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required configure Public IP per node in AKS",
+ "waf": "Performance"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"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",
+ "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
"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",
+ "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If using a public API endpoint, restrict the IP addresses that can access it",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"severity": "High",
- "text": "Diagnostic logs in Azure AI services resources should be enabled",
- "waf": "Operations"
+ "text": "Use private clusters if your requirements mandate it",
+ "waf": "Reliability"
},
{
- "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. ",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"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",
+ "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "High",
- "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.",
+ "text": "Use Kubernetes network policies to increase intra-cluster security",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "High",
- "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations",
+ "text": "Use a WAF for web workloads (UIs or APIs)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use DDoS Standard in the AKS Virtual Network",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required add company HTTP Proxy",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "Medium",
- "text": "Understand difference in cost of base models and fine tuned models and token step sizes",
- "waf": "Cost"
+ "text": "Consider using a service mesh for advanced microservice communication management",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
"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"
+ "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
+ "waf": "Operations"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Check regularly Azure Advisor for recommendations on your cluster",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Enable AKS auto-certificate rotation",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
"severity": "High",
- "text": "Evaluate usage of billing models - PAYG vs PTU",
- "waf": "Cost"
+ "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
+ "waf": "Operations"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
"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, �",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider using AKS command invoke on private clusters",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "For planned events consider using Node Auto Drain",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use custom Node RG (aka 'Infra RG') name",
+ "waf": "Operations"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "Medium",
- "text": "Provide end users with scoring options for LLM responses and track these scores. ",
+ "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Taint Windows nodes",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Keep windows containers patch level in sync with host patch level",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Via Diagnostic Settings at the cluster level",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required use nodePool snapshots",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider spot node pools for non time-sensitive workloads",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
- "service": "Cognitive Services",
- "severity": "Medium",
- "text": "Leverage FTA HandBook for Cognitive Services",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider AKS virtual node for quick bursting",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
- "service": "Cognitive Services",
- "severity": "Medium",
- "text": "Backup Your Prompts",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
- "service": "Cognitive Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "High",
- "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
- "waf": "Reliability"
+ "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
- "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
- "service": "Cognitive Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
"severity": "Medium",
- "text": "Backup Your ChatGPT conversations",
- "waf": "Reliability"
+ "text": "Monitor CPU and memory utilization of the nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
- "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
- "service": "Cognitive Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Medium",
- "text": "CI/CD for custom speech",
- "waf": "Reliability"
+ "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "3687a046-7a1f-4893-9bda-43324f248116",
- "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
- "service": "Cognitive Services",
- "severity": "Low",
- "text": "Move a knowledge base using export-import",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Monitor OS disk queue depth in nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
- "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "Medium",
- "text": "Leverage FTA Resillency Handbook",
- "waf": "Reliability"
+ "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Subscribe to resource health notifications for your AKS cluster",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "High",
- "text": "Plan for Data Center level outage",
- "waf": "Reliability"
+ "text": "Configure requests and limits in your pod specs",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
- "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "Medium",
- "text": "Practice Failover for BCDR",
- "waf": "Reliability"
+ "text": "Enforce resource quotas for namespaces",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
"severity": "High",
- "text": "Plan a backup strategy and take regular backups",
- "waf": "Reliability"
+ "text": "Ensure your subscription has enough quota to scale out your nodepools",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
- "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
- "service": "Purview",
- "severity": "Low",
- "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
+ "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Configure Liveness and Readiness probes for all deployments",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
- "link": "https://learn.microsoft.com/purview/deployment-best-practices",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medium",
- "text": "Follow Purview accounts architectures and deployment best practices",
- "waf": "Reliability"
+ "text": "Use the Cluster Autoscaler",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Collection Architectures and best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Customize node configuration for AKS node pools",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medium",
- "text": "Follow Assest lifecycle best practices",
- "waf": "Reliability"
+ "text": "Use the Horizontal Pod Autoscaler when required",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow automation best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Consider an appropriate node size, not too large or too small",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Backup and Migration Best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview Glossary Best Practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider subscribing to EventGrid Events for AKS automation",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
- "link": "https://learn.microsoft.com/purview/concept-workflow",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
"severity": "Low",
- "text": "Leverage Workflows ",
- "waf": "Reliability"
+ "text": "For long running operation on an AKS cluster consider event termination",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview Security Best Practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview Data Lineage Best Practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Use ephemeral OS disks",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Best Practices for Scanning Registered Sources",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
+ "severity": "High",
+ "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Classification Best Practices in Governance Portal",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "For hyper performance storage option use Ultra Disks on AKS",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
- "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
"severity": "Medium",
- "text": "Perform Sensitivity Labelling in the Purview Data Map",
- "waf": "Reliability"
+ "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
- "link": "https://learn.microsoft.com/purview/concept-data-share",
- "service": "Purview",
- "severity": "Low",
- "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
- "severity": "Low",
- "text": "Leverage Data Estate Insights",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
- "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
- "service": "Purview",
- "severity": "Low",
- "text": "Use Data stewardship and Catalog adoption",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Monitor",
+ "severity": "Medium",
+ "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
- "severity": "Low",
- "text": "Use Inventory and Ownership",
- "waf": "Reliability"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Backup",
+ "severity": "Medium",
+ "text": "check backup instances with the underlying datasource not found",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
- "link": "https://learn.microsoft.com/purview/glossary-insights",
- "service": "Purview",
- "severity": "Low",
- "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
- "link": "https://learn.microsoft.com/purview/compliance-manager",
- "service": "Purview",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Backup",
"severity": "Medium",
- "text": "Generate assessment scores",
- "waf": "Reliability"
+ "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
- "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
- "service": "Purview",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Monitor",
"severity": "Medium",
- "text": "Profiling- get summaries of data content",
- "waf": "Reliability"
+ "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 ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
- "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
- "service": "Purview",
- "severity": "Low",
- "text": "Follow Microsoft Purview Data Owner access policies",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Monitor",
+ "severity": "Medium",
+ "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
- "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
- "service": "Purview",
- "severity": "Low",
- "text": "Follow Self-service access policies",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
- "link": "https://learn.microsoft.com/purview/concept-policies-devops",
- "service": "Purview",
- "severity": "Low",
- "text": "Follow DevOps policies",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
"severity": "Medium",
- "text": "Follow reliability support recommendations in Azure Bot Service",
- "waf": "Reliability"
+ "text": "Make sure advisor is configured for VM right sizing ",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "check by searching the Meter Category Licenses in the Cost analysys",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
"severity": "Medium",
- "text": "Deploying bots with local data residency and regional compliance",
- "waf": "Reliability"
+ "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
"severity": "Medium",
- "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
- "waf": "Reliability"
+ "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
- "service": "PostgreSQL",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
"severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
+ "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
- "service": "PostgreSQL",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "31b67c67-be59-4519-8083-845d587cb391",
- "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
- "service": "PostgreSQL",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
"severity": "Medium",
- "text": "Leverage cross-region read replicas for BCDR",
- "waf": "Reliability"
+ "text": "Only larger disks can be reserved => 1 TiB -",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
- "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
- "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
- "service": "ACR",
- "severity": "High",
- "text": "Disable Azure Container Registry image export",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "After the right-sizing optimization",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
- "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
- "service": "ACR",
- "severity": "High",
- "text": "Enable Azure Policies for Azure Container Registry",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "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",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
- "guid": "d345293c-7639-4637-a551-c5c04e401955",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
- "service": "ACR",
- "severity": "High",
- "text": "Sign and Verify containers with notation (Notary v2)",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
- "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
- "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
- "service": "ACR",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
"severity": "Medium",
- "text": "Encrypt registry with a customer managed key",
- "waf": "Reliability"
+ "text": "Consider using a VMSS to match demand rather than flat sizing",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
- "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "severity": "High",
- "text": "Use Managed Identities to connect instead of Service Principals",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
- "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "severity": "High",
- "text": "Disable local authentication for management plane access",
- "waf": "Reliability"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Backup",
+ "severity": "Medium",
+ "text": "Move recovery points to vault-archive where applicable (Validate)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
- "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
- "service": "ACR",
- "severity": "High",
- "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "severity": "Medium",
+ "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable anonymous pull/push access",
- "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
- "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
- "service": "ACR",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Functions",
"severity": "Medium",
- "text": "Disable Anonymous pull access",
- "waf": "Reliability"
+ "text": "Functions - Reuse connections",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
- "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
- "service": "ACR",
- "severity": "High",
- "text": "Disable repository-scoped access tokens",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Functions",
+ "severity": "Medium",
+ "text": "Functions - Cache data locally",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
- "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
- "service": "ACR",
- "severity": "High",
- "text": "Deploy images from a trusted environment",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Functions",
+ "severity": "Medium",
+ "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
- "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
- "service": "ACR",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Functions",
"severity": "Medium",
- "text": "Disable Azure ARM audience tokens for authentication",
- "waf": "Reliability"
+ "text": "Functions - Keep your functions warm",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
- "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
- "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
- "service": "ACR",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Functions",
"severity": "Medium",
- "text": "Enable diagnostics logging",
- "waf": "Reliability"
+ "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
- "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
- "service": "ACR",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Functions",
"severity": "Medium",
- "text": "Control inbound network access with Private Link",
- "waf": "Reliability"
+ "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable public network access if inbound network access is secured using Private Link",
- "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
- "service": "ACR",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Functions",
"severity": "Medium",
- "text": "Disable Public Network access",
- "waf": "Reliability"
+ "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only the ACR Premium SKU supports Private Link access",
- "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
- "service": "ACR",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
- "waf": "Reliability"
+ "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
- "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
- "service": "ACR",
- "severity": "Low",
- "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
- "service": "ACR",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
"severity": "Medium",
- "text": "Deploy validated container images",
- "waf": "Reliability"
+ "text": "Consider archiving tiers for less used data",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
- "service": "ACR",
- "severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Consider using standard SSD rather than Premium or Ultra where possible",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
- "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
- "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",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Leverage FTA Resillency HandBook",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Use the Premium or Dedicated SKUs for predicable performance",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "For Business Critical Applications, use Active Active configuration",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
"severity": "Medium",
- "text": "Design Resilient Event Hubs",
- "waf": "Reliability"
+ "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Monitor",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
"severity": "Medium",
- "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
+ "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Backup",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
"severity": "Medium",
- "text": "check backup instances with the underlying datasource not found",
+ "text": "Storage accounts: check hot tier and/or GRS necessary",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
"service": "VM",
"severity": "Medium",
- "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
+ "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Backup",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
+ "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Monitor",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
"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 ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "text": "Export cost data to a storage account for additional data analysis.",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Monitor",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "text": "Create multiple Apache Spark pool definitions of various sizes.",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Make sure advisor is configured for VM right sizing ",
+ "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "description": "check by searching the Meter Category Licenses in the Cost analysys",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
"service": "VM",
"severity": "Medium",
- "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "VM",
"severity": "Medium",
- "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "text": "Right-sizing all VMs",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
"service": "VM",
"severity": "Medium",
- "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "text": "Swap VM sized with normalized and most recent sizes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access#prerequisites-for-a-landing-zone---design-recommendations",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "VM",
"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.",
+ "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "VM",
"severity": "Medium",
- "text": "Only larger disks can be reserved => 1 TiB -",
+ "text": "Containerizing an application can improve VM density and save money on scaling it",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Cost"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "severity": "Medium",
- "text": "After the right-sizing optimization",
- "waf": "Cost"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"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",
- "waf": "Cost"
+ "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "severity": "Medium",
- "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
- "waf": "Cost"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Consider using a VMSS to match demand rather than flat sizing",
- "waf": "Cost"
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
- "waf": "Cost"
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Backup",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Move recovery points to vault-archive where applicable (Validate)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
+ "text": "Use Azure Traffic Manager to coordinate requests",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "severity": "Medium",
- "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
- "waf": "Cost"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Functions",
- "severity": "Medium",
- "text": "Functions - Reuse connections",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
+ "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
+ "service": "Data Explorer",
+ "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Functions",
- "severity": "Medium",
- "text": "Functions - Cache data locally",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
+ "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
+ "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
+ "service": "Data Explorer",
+ "text": "To share data, explore Leader-follower cluster configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Functions",
- "severity": "Medium",
- "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
+ "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
+ "service": "Data Explorer",
+ "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Functions",
- "severity": "Medium",
- "text": "Functions - Keep your functions warm",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
+ "service": "Data Explorer",
+ "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Functions",
- "severity": "Medium",
- "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
+ "service": "Data Explorer",
+ "text": "Ingest data into each cluster in parallel",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Functions",
- "severity": "Medium",
- "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
+ "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
+ "service": "Data Explorer",
+ "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Functions",
- "severity": "Medium",
- "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
+ "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
+ "service": "Data Explorer",
+ "text": "For critical applications, create Active-Active configuration in two paired regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
+ "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
+ "service": "Data Explorer",
+ "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
+ "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
+ "service": "Data Explorer",
+ "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider archiving tiers for less used data",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
+ "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Data Explorer",
+ "text": "Wrap DevOps and source control around all your code",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "severity": "Medium",
- "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Data Explorer",
+ "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider using standard SSD rather than Premium or Ultra where possible",
- "waf": "Cost"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Data Explorer",
+ "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
"severity": "Medium",
- "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
- "waf": "Cost"
+ "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"severity": "Medium",
- "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
- "waf": "Cost"
+ "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
"severity": "Medium",
- "text": "Storage accounts: check hot tier and/or GRS necessary",
- "waf": "Cost"
+ "text": "Custom brand assets should be hosted on a CDN",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
- "waf": "Cost"
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
+ "severity": "Low",
+ "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"severity": "Medium",
- "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
- "waf": "Cost"
+ "text": "Follow VM rules for high availability on the VM level (premium disks, two or more in a region, in different availability zones)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"severity": "Medium",
- "text": "Export cost data to a storage account for additional data analysis.",
- "waf": "Cost"
+ "text": "Don't replicate! Replication can create issues with directory synchronization",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"severity": "Medium",
- "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
- "waf": "Cost"
+ "text": "Have active-active for multi-regions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "Medium",
- "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
- "waf": "Cost"
+ "text": "Add Azure AD Domain service stamps to additional regions and locations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "Medium",
- "text": "Create multiple Apache Spark pool definitions of various sizes.",
- "waf": "Cost"
+ "text": "Use Replica Sets for DR",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "FTA Resiliency Playbook",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
+ "severity": "High",
+ "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Right-sizing all VMs",
- "waf": "Cost"
+ "text": "Run multiple replicas of the database (>1 ) in Prod",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
+ "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Swap VM sized with normalized and most recent sizes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "Leverage Multi-Region Writes",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Span Cosmos account across two or more regions with multi-region writes",
+ "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "Distribute your data globally",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Containerizing an application can improve VM density and save money on scaling it",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Cost"
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
+ "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
+ "service": "CosmosDB",
+ "severity": "High",
+ "text": "Choose from several well-defined consistency models",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
+ "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Implement an error handling policy at the global level",
- "waf": "Operations"
+ "text": "Enable Service managed failover",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
+ "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Ensure all APIs policies include a element.",
- "waf": "Operations"
+ "text": "Enable Automatic Backups",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
+ "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
- "waf": "Operations"
+ "text": "Perform Periodic Backups",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
+ "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
- "waf": "Operations"
+ "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
- "severity": "High",
- "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"severity": "Medium",
- "text": "Enable Application Insights for more detailed telemetry",
+ "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.",
+ "training": "https://github.com/Azure/sap-automation",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "severity": "High",
- "text": "Configure alerts on the most critical metrics",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
- "severity": "High",
- "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
"severity": "High",
- "text": "Protect incoming requests to APIs (data plane) with Azure AD",
+ "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.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "severity": "Medium",
- "text": "Create appropriate groups to control the visibility of the products",
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Backends feature to eliminate redundant API backend configurations",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Named Values to store common values that can be used in policies",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"severity": "Medium",
- "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "Medium",
- "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "High",
- "text": "Ensure there is an automated backup routine",
+ "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
+ "severity": "High",
+ "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "Low",
- "text": "If you need to log at high performance levels, consider Event Hubs policy",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
- "severity": "Medium",
- "text": "Apply throttling policies to control the number of requests per second",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
- "severity": "Medium",
- "text": "Configure autoscaling to scale out the number of instances when the load increases",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
- "severity": "Medium",
- "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use the premium tier for production workloads.",
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
+ "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).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
- "severity": "Medium",
- "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
"severity": "High",
- "text": "Be aware of APIM's limits",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "High",
- "text": "Ensure that the self-hosted gateway deployments are resilient.",
+ "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Azure Front Door in front of APIM for multi-region deployment",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "severity": "Medium",
- "text": "Deploy the service within a Virtual Network (VNet)",
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
- "severity": "Medium",
- "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
- "severity": "Medium",
- "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
"severity": "High",
- "text": "Disable Public Network Access",
+ "text": "Make sure the Floating IP is enabled on the Load balancer",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "severity": "Medium",
- "text": "Simplify management with PowerShell automation scripts",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "Medium",
- "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
- "severity": "Medium",
- "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"severity": "Medium",
- "text": "Implement DevOps and CI/CD in your workflow",
- "waf": "Operations"
+ "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "severity": "Medium",
- "text": "Secure APIs using client certificate authentication",
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
- "severity": "Medium",
- "text": "Secure backend services using client certificate authentication",
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
- "severity": "Medium",
- "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "severity": "High",
- "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
- "severity": "High",
- "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use managed identities to authenticate to other Azure resources whenever possible",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
- "severity": "High",
- "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider the 'Azure security baseline for storage'",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Storage",
- "severity": "High",
- "text": "Consider using private endpoints for Azure Storage",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Storage",
- "severity": "Medium",
- "text": "Ensure older storage accounts are not using 'classic deployment model'",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Storage",
- "severity": "High",
- "text": "Enable Microsoft Defender for all of your storage accounts",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Storage",
- "severity": "Medium",
- "text": "Enable 'soft delete' for blobs",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Storage",
- "severity": "Medium",
- "text": "Disable 'soft delete' for blobs",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Storage",
- "severity": "High",
- "text": "Enable 'soft delete' for containers",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Storage",
- "severity": "Medium",
- "text": "Disable 'soft delete' for containers",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Storage",
- "severity": "High",
- "text": "Enable resource locks on storage accounts",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Storage",
- "severity": "High",
- "text": "Consider immutable blobs",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
- "severity": "High",
- "text": "Require HTTPS, i.e. disable port 80 on the storage account",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Storage",
- "severity": "High",
- "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Storage",
- "severity": "Medium",
- "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "AAD tokens should be favored over shared access signatures, wherever possible",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Storage",
- "severity": "High",
- "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Storage",
- "severity": "Medium",
- "text": "Least privilege in IaM permissions",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json#best-practices-when-using-sas",
- "service": "Storage",
- "severity": "High",
- "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Storage",
- "severity": "High",
- "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Storage",
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"severity": "High",
- "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
+ "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Storage",
- "severity": "Medium",
- "text": "When using storage account keys, consider enabling a 'key expiration policy'",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider configuring an SAS expiration policy",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider linking SAS to a stored access policy",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Storage",
- "severity": "High",
- "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Storage",
- "severity": "High",
- "text": "Strive for short validity periods for ad-hoc SAS",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Storage",
- "severity": "Medium",
- "text": "Apply a narrow scope to a SAS",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider scoping SAS to a specific client IP address, wherever possible",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Storage",
- "severity": "Low",
- "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Storage",
- "severity": "High",
- "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Storage",
- "severity": "Medium",
- "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Storage",
- "severity": "High",
- "text": "Avoid overly broad CORS policies",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Storage",
- "severity": "High",
- "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Storage",
- "severity": "Medium",
- "text": "Determine which/if platform encryption should be used.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Storage",
- "severity": "Medium",
- "text": "Determine which/if client-side encryption should be used.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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": "Storage",
- "severity": "High",
- "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
- "service": "Storage",
- "severity": "High",
- "text": "Leverage a storagev2 account type for better performance and reliability",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Storage",
- "severity": "High",
- "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
- "service": "Storage",
- "severity": "Medium",
- "text": "For write operation after failover, use customer-Managed Failover ",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
- "service": "Storage",
- "severity": "Medium",
- "text": "Understand Microsoft-Managed Failover details",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
- "service": "Storage",
- "severity": "Medium",
- "text": "Enable Soft Delete",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "Low",
- "text": "If required for AKS Windows workloads HostProcess containers can be used",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "Low",
- "text": "Use KEDA if running event-driven workloads",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Dapr to ease microservice development",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
- "severity": "High",
- "text": "Use the SLA-backed AKS offering",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Disruption Budgets in your pod and deployment definitions",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
- "severity": "High",
- "text": "If using a private registry, configure region replication to store images in multiple regions",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "Low",
- "text": "Use an external application such as kubecost to allocate costs to different users",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "Low",
- "text": "Use scale down mode to delete/deallocate nodes",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
- "severity": "Medium",
- "text": "When required use multi-instance partitioning GPU on AKS Clusters",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "Low",
- "text": "If running a Dev/Test cluster use NodePool Start/Stop",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Medium",
- "text": "Separate applications from the control plane with user/system node pools",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Low",
- "text": "Add taint to your system nodepool to make it dedicated",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use a private registry for your images, such as ACR",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
- "severity": "Medium",
- "text": "Scan your images for vulnerabilities",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
- "severity": "High",
- "text": "Define app separation requirements (namespace/nodepool/cluster)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
- "severity": "Medium",
- "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
- "severity": "High",
- "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
- "severity": "Medium",
- "text": "If required add Key Management Service etcd encryption",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "Low",
- "text": "If required consider using Confidential Compute for AKS",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
- "severity": "Medium",
- "text": "Consider using Defender for Containers",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
- "severity": "High",
- "text": "Use managed identities instead of Service Principals",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
- "severity": "Medium",
- "text": "Integrate authentication with AAD (using the managed integration)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
- "severity": "Medium",
- "text": "Limit access to admin kubeconfig (get-credentials --admin)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
- "severity": "Medium",
- "text": "Integrate authorization with AAD RBAC",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
- "severity": "High",
- "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
- "severity": "Medium",
- "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
- "severity": "Medium",
- "text": "For AKS non-interactive logins use kubelogin (preview)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
- "severity": "Medium",
- "text": "Disable AKS local accounts",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Configure if required Just-in-time cluster access",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Configure if required AAD conditional access for AKS",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "Low",
- "text": "If required for Windows AKS workloads configure gMSA ",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
- "severity": "Medium",
- "text": "For finer control consider using a managed Kubelet Identity",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using AGIC, do not share an AppGW across clusters",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
- "severity": "High",
- "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
- "severity": "Medium",
- "text": "For Windows workloads use Accelerated Networking",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
- "severity": "High",
- "text": "Use the standard ALB (as opposed to the basic one)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using Azure CNI, consider using different Subnets for NodePools",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "High",
- "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "High",
- "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "High",
- "text": "If using Azure CNI, check the maximum pods/node (default 30)",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "Low",
- "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "High",
- "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "Low",
- "text": "If required add your own CNI plugin",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "Low",
- "text": "If required configure Public IP per node in AKS",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
- "severity": "High",
- "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using a public API endpoint, restrict the IP addresses that can access it",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
- "severity": "High",
- "text": "Use private clusters if your requirements mandate it",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "Medium",
- "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "High",
- "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "High",
- "text": "Use Kubernetes network policies to increase intra-cluster security",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "High",
- "text": "Use a WAF for web workloads (UIs or APIs)",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use DDoS Standard in the AKS Virtual Network",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "Low",
- "text": "If required add company HTTP Proxy",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
- "severity": "Medium",
- "text": "Consider using a service mesh for advanced microservice communication management",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
- "severity": "High",
- "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "Low",
- "text": "Check regularly Azure Advisor for recommendations on your cluster",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "Low",
- "text": "Enable AKS auto-certificate rotation",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
- "severity": "High",
- "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "High",
- "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
- "severity": "High",
- "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider using AKS command invoke on private clusters",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "Low",
- "text": "For planned events consider using Node Auto Drain",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
- "severity": "High",
- "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "Low",
- "text": "Use custom Node RG (aka 'Infra RG') name",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
- "severity": "Medium",
- "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "Low",
- "text": "Taint Windows nodes",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "severity": "Low",
- "text": "Keep windows containers patch level in sync with host patch level",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Via Diagnostic Settings at the cluster level",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "Low",
- "text": "If required use nodePool snapshots",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider spot node pools for non time-sensitive workloads",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider AKS virtual node for quick bursting",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "High",
- "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "High",
- "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
- "severity": "Medium",
- "text": "Monitor CPU and memory utilization of the nodes",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "Medium",
- "text": "Monitor OS disk queue depth in nodes",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"severity": "Medium",
- "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
- "waf": "Operations"
+ "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"severity": "Medium",
- "text": "Subscribe to resource health notifications for your AKS cluster",
- "waf": "Operations"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"severity": "High",
- "text": "Configure requests and limits in your pod specs",
- "waf": "Operations"
+ "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Medium",
- "text": "Enforce resource quotas for namespaces",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
"severity": "High",
- "text": "Ensure your subscription has enough quota to scale out your nodepools",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
- "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"severity": "High",
- "text": "Configure Liveness and Readiness probes for all deployments",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
"severity": "Medium",
- "text": "Use the Cluster Autoscaler",
- "waf": "Performance"
+ "text": "Automate SAP System Start-Stop to manage costs.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
"severity": "Low",
- "text": "Customize node configuration for AKS node pools",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use the Horizontal Pod Autoscaler when required",
- "waf": "Performance"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "High",
- "text": "Consider an appropriate node size, not too large or too small",
- "waf": "Performance"
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
"severity": "Low",
- "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
- "waf": "Performance"
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider subscribing to EventGrid Events for AKS automation",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "Low",
- "text": "For long running operation on an AKS cluster consider event termination",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "Low",
- "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "High",
- "text": "Use ephemeral OS disks",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
- "severity": "High",
- "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
- "severity": "Low",
- "text": "For hyper performance storage option use Ultra Disks on AKS",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
"severity": "Medium",
- "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
- "waf": "Performance"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
"severity": "Medium",
- "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
- "waf": "Performance"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
"severity": "Medium",
- "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
- "waf": "Performance"
+ "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
+ "text": "Implement SSO to SAP HANA",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
"severity": "Medium",
- "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
+ "text": "Consider Azure AD an identity provider for SAP systems hosted on RISE. For more information, see Integrating the Service with Azure AD.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
"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.",
+ "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use more than 1 app instance for your apps",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
+ "text": "Implement SSO to SAP BTP",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Set up autoscaling in Spring Cloud Gateway",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "enforce existing Management Group policies to SAP Subscriptions",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
"severity": "Low",
- "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
- "waf": "Reliability"
+ "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
+ "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.",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
- "waf": "Reliability"
+ "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Functions",
+ "checklist": "SAP Checklist",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"severity": "High",
- "text": "Select the right Function hosting plan based on your business & SLO requirements",
+ "text": "Help protect your HANA database by using the Azure Backup service.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Functions",
+ "checklist": "SAP Checklist",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
+ "text": "Ensure time-zone matches between the operating system and the SAP system.",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Functions",
- "severity": "Medium",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
+ "waf": "Cost"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
+ "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.",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Functions",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Functions",
+ "checklist": "SAP Checklist",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
"severity": "High",
- "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Functions",
+ "checklist": "SAP Checklist",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
"severity": "Medium",
- "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
- "waf": "Reliability"
+ "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. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Functions",
+ "checklist": "SAP Checklist",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
- "severity": "High",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "High",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "Reliability"
+ "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.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "checklist": "SAP Checklist",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "checklist": "SAP Checklist",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
- "service": "Container Apps",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
- "service": "Container Apps",
- "severity": "High",
- "text": "Use more than one replica and enable Zone Redundancy.",
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
- "severity": "High",
- "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "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.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
- "severity": "High",
- "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operations"
+ "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
"service": "SAP",
"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.",
- "training": "https://github.com/Azure/sap-automation",
+ "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.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "Performance"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "SAP",
"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",
+ "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Reliability"
+ "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
"service": "SAP",
- "severity": "Low",
- "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"severity": "High",
- "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "text": "Public IP assignment to VM running SAP Workload is not recommended.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"service": "SAP",
"severity": "High",
- "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Reliability"
+ "text": "Consider reserving IP address on DR side when configuring ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"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).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "text": "Avoid using overlapping IP address ranges for production and DR sites.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "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)",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
"service": "SAP",
- "severity": "High",
- "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "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.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "severity": "Medium",
+ "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "SAP",
- "severity": "High",
- "text": "Make sure the Floating IP is enabled on the Load balancer",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
"service": "SAP",
- "severity": "High",
- "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
"service": "SAP",
- "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",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "severity": "Medium",
+ "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"service": "SAP",
"severity": "Medium",
- "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
"link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
"service": "SAP",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "High",
- "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "High",
- "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Medium",
- "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
"service": "SAP",
- "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).",
+ "severity": "High",
+ "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
"training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
"service": "SAP",
- "severity": "High",
- "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "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",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Reliability"
+ "text": "Review SAP HANA database backups for Azure VMs.",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Review Site Recovery built-in monitoring, where used for SAP.",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/optimize-your-azure-costs-by-automating-sap-system-start-stop/ba-p/2120675",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
"service": "SAP",
"severity": "Medium",
- "text": "Automate SAP System Start-Stop to manage costs.",
- "waf": "Cost"
+ "text": "Review Oracle Database in Azure Linux VM backup strategies.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
"service": "SAP",
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
"service": "SAP",
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Review the use of Automated Backup v2 for Azure VMs.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
"service": "SAP",
"severity": "High",
- "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Reliability"
+ "text": "Enabling Write accelerator for M series when using premium disks(V1)",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
"service": "SAP",
"severity": "Medium",
- "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "Reliability"
+ "text": "Test availability zone latency.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Activate SAP EarlyWatch Alert for all SAP components.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Reliability"
+ "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Reliability"
+ "text": "Review SQL Server performance monitoring using CCMS.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
"service": "SAP",
"severity": "Medium",
- "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Reliability"
+ "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Reliability"
+ "text": "Review SAP HANA studio alerts.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP HANA",
+ "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.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
- "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.",
+ "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.",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
- "severity": "Medium",
- "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
+ "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.",
+ "training": "https://me.sap.com/notes/3019299/E",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "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.",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP BTP",
+ "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
"service": "SAP",
- "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.",
+ "severity": "High",
+ "text": "Use Azure Key Vault to store your secrets and credentials",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
"service": "SAP",
"severity": "Medium",
- "text": "enforce existing Management Group policies to SAP Subscriptions",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "Operations"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
"service": "SAP",
- "severity": "High",
- "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
"service": "SAP",
"severity": "High",
- "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "Operations"
+ "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"severity": "High",
- "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
- "severity": "Low",
- "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
- "waf": "Operations"
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
"service": "SAP",
"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.",
- "waf": "Operations"
+ "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "severity": "High",
- "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
- "waf": "Operations"
+ "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",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
"service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
"service": "SAP",
"severity": "High",
- "text": "Help protect your HANA database by using the Azure Backup service.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "text": "Use an Azure Key Vault per application per environment per region.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
"service": "SAP",
- "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.",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
"service": "SAP",
"severity": "High",
- "text": "Ensure time-zone matches between the operating system and the SAP system.",
- "waf": "Operations"
+ "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
"service": "SAP",
- "severity": "Medium",
- "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "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",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
"service": "SAP",
"severity": "Low",
- "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
- "waf": "Cost"
+ "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
"service": "SAP",
- "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.",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
"service": "SAP",
"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.",
+ "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.",
"training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Operations"
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
"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. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operations"
+ "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operations"
+ "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
"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.",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
- "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.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "Performance"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Data Factory",
"severity": "Medium",
- "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Data Factory",
+ "severity": "High",
+ "text": "Use zone redundant pipelines in regions that support Availability Zones",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Data Factory",
"severity": "Medium",
- "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
- "severity": "Low",
- "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
- "waf": "Performance"
+ "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Data Factory",
"severity": "Medium",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Data Factory",
"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.",
- "waf": "Performance"
+ "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Data Factory",
"severity": "Low",
- "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
- "waf": "Performance"
+ "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "Medium",
- "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Performance"
+ "text": "Leverage Flexible Server",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
+ "severity": "High",
+ "text": "Leverage Availability Zones where regionally applicable",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"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.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Performance"
+ "text": "Leverage Data-in replication for cross-region DR scenarios",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "High",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operations"
+ "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Key Vault",
"severity": "Medium",
- "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
+ "service": "Key Vault",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
+ "service": "Key Vault",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
+ "service": "Key Vault",
"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",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "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.",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"severity": "High",
- "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "Performance"
+ "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "Operations"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
+ "severity": "Low",
+ "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "Operations"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
+ "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.",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
+ "service": "Key Vault",
"severity": "Medium",
- "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachineScaleSets",
+ "checklist": "Resiliency Review",
+ "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
+ "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
+ "service": "VMSS",
+ "severity": "Low",
+ "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
+ "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
+ "service": "VM",
"severity": "High",
- "text": "Public IP assignment to VM running SAP Workload is not recommended.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
+ "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "VM",
"severity": "High",
- "text": "Consider reserving IP address on DR side when configuring ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Operations"
+ "text": "Use Premium or Ultra disks for production VMs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
+ "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
+ "service": "VM",
"severity": "High",
- "text": "Avoid using overlapping IP address ranges for production and DR sites.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operations"
+ "text": "Ensure Managed Disks are used for all VMs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
+ "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
+ "service": "VM",
"severity": "Medium",
- "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operations"
+ "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
+ "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
+ "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "VM",
"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)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
+ "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
- "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.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
+ "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "VM",
+ "severity": "High",
+ "text": "Avoid running a production workload on a single VM",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
+ "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
+ "severity": "High",
+ "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
+ "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
+ "service": "VM",
+ "severity": "Low",
+ "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
+ "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
+ "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
+ "service": "VM",
"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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "text": "Increase quotas in DR region before testing failover with ASR",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Performance"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
+ "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
+ "service": "VM",
+ "severity": "Low",
+ "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
+ "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Storage",
"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.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
- "severity": "High",
- "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Performance"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
+ "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Storage",
+ "severity": "Low",
+ "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
- "severity": "Medium",
- "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Storage",
+ "severity": "Low",
+ "text": "Enable soft delete for Storage Account Containers",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Storage",
+ "severity": "Low",
+ "text": "Enable soft delete for blobs",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
+ "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
+ "service": "Backup",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "High",
- "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
+ "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
+ "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
+ "service": "Backup",
+ "severity": "Low",
+ "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Medium",
- "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Performance"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
+ "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
+ "service": "Backup",
+ "severity": "Low",
+ "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Resiliency Review",
+ "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
+ "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
+ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
+ "service": "DNS",
+ "severity": "Low",
+ "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Cost"
+ "arm-service": "Microsoft.PowerBI/gateways",
+ "checklist": "Resiliency Review",
+ "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
+ "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
+ "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
+ "service": "Data Gateways",
+ "severity": "Medium",
+ "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
+ "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"severity": "High",
- "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Performance"
+ "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
+ "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
+ "service": "Purview",
"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",
+ "text": "Leverage FTA Resillency Handbook",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "High",
- "text": "Review SAP HANA database backups for Azure VMs.",
- "waf": "Cost"
+ "text": "Plan for Data Center level outage",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
+ "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review Site Recovery built-in monitoring, where used for SAP.",
- "waf": "Cost"
+ "text": "Practice Failover for BCDR",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "High",
- "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
- "waf": "Operations"
+ "text": "Plan a backup strategy and take regular backups",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
- "severity": "Medium",
- "text": "Review Oracle Database in Azure Linux VM backup strategies.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
+ "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
+ "link": "https://learn.microsoft.com/purview/deployment-best-practices",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
- "waf": "Operations"
+ "text": "Follow Purview accounts architectures and deployment best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review the use of Automated Backup v2 for Azure VMs.",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
- "severity": "High",
- "text": "Enabling Write accelerator for M series when using premium disks(V1)",
- "waf": "Operations"
+ "text": "Follow Collection Architectures and best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
+ "service": "Purview",
"severity": "Medium",
- "text": "Test availability zone latency.",
- "waf": "Performance"
+ "text": "Follow Assest lifecycle best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
+ "service": "Purview",
"severity": "Medium",
- "text": "Activate SAP EarlyWatch Alert for all SAP components.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "Performance"
+ "text": "Follow automation best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Performance"
+ "text": "Follow Backup and Migration Best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review SQL Server performance monitoring using CCMS.",
- "waf": "Performance"
+ "text": "Follow Purview Glossary Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
- "severity": "Medium",
- "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "Performance"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
+ "link": "https://learn.microsoft.com/purview/concept-workflow",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Workflows ",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review SAP HANA studio alerts.",
- "waf": "Performance"
+ "text": "Follow Purview Security Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
+ "service": "Purview",
"severity": "Medium",
- "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
- "waf": "Performance"
+ "text": "Follow Purview Data Lineage Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
+ "service": "Purview",
"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.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "text": "Follow Best Practices for Scanning Registered Sources",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
+ "service": "Purview",
"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.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
+ "text": "Follow Classification Best Practices in Governance Portal",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "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.",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
+ "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
+ "service": "Purview",
+ "severity": "Medium",
+ "text": "Perform Sensitivity Labelling in the Purview Data Map",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "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.",
- "training": "https://me.sap.com/notes/3019299/E",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
+ "link": "https://learn.microsoft.com/purview/concept-data-share",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Data Estate Insights",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
- "severity": "Medium",
- "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
+ "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Data stewardship and Catalog adoption",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
- "severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Inventory and Ownership",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
+ "link": "https://learn.microsoft.com/purview/glossary-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
+ "link": "https://learn.microsoft.com/purview/compliance-manager",
+ "service": "Purview",
"severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Reliability"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
- "severity": "High",
- "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "text": "Generate assessment scores",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
+ "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
+ "service": "Purview",
+ "severity": "Medium",
+ "text": "Profiling- get summaries of data content",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
- "severity": "High",
- "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
+ "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Follow Microsoft Purview Data Owner access policies",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
+ "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
+ "service": "Purview",
"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",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "text": "Follow Self-service access policies",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
- "severity": "Medium",
- "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
+ "link": "https://learn.microsoft.com/purview/concept-policies-devops",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Follow DevOps policies",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"severity": "High",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Device Update for IoT Hub",
"severity": "High",
- "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Device Update for IoT Hub",
"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",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
- "severity": "Low",
- "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "severity": "Low",
- "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Reliability"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "waf": "Operations"
},
{
"aprlGuid": "bb6deb9d-24fa-4ee8-bc23-ac3ebc7fdf8e",
@@ -20974,7 +19288,7 @@
},
{
"description": "Plan enough time for updates before accessing Application Gateway or making further changes. For example, removing servers from backend pool might take some time because they have to drain existing connections.",
- "guid": "84e9e05f-2ab2-4087-8c5a-f1ae29768a58",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
"service": "AppGW",
"text": "Plan for rule updates",
"type": "recommendation",
@@ -20982,7 +19296,7 @@
},
{
"description": "If Application Gateway is used to load balance incoming traffic over multiple backend instances, we recommend the use of health probes. These will ensure that traffic is not routed to backends that are unable to handle the traffic.",
- "guid": "8947f1ed-79a0-428f-8c2a-66ba0aba1069",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
"service": "AppGW",
"text": "Use health probes to detect backend unavailability",
"type": "recommendation",
@@ -20990,7 +19304,7 @@
},
{
"description": "The health probe sends requests to the configured endpoint at a set interval. Also, there's a threshold of failed requests that will be tolerated before the backend is marked unhealthy. These numbers present a trade-off.- Setting a higher interval puts a higher load on your service. Each Application Gateway instance sends its own health probes, so 100 instances every 30 seconds means 100 requests per 30 seconds.- Setting a lower interval leaves more time before an outage is detected.- Setting a low unhealthy threshold might mean that short, transient failures might take down a backend. - Setting a high threshold it can take longer to take a backend out of rotation.",
- "guid": "57a75825-4393-4411-a927-51c45e2c197e",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
"service": "AppGW",
"text": "Review the impact of the interval and threshold settings on health probes",
"type": "recommendation",
@@ -20998,7 +19312,7 @@
},
{
"description": "Suppose each backend has its own dependencies to ensure failures are isolated. For example, an application hosted behind Application Gateway might have multiple backends, each connected to a different database (replica). When such a dependency fails, the application might be working but won't return valid results. For that reason, the health endpoint should ideally validate all dependencies. Keep in mind that if each call to the health endpoint has a direct dependency call, that database would receive 100 queries every 30 seconds instead of 1. To avoid this, the health endpoint should cache the state of the dependencies for a short period of time.",
- "guid": "18a6131e-128d-4b71-8daa-1c0beab8e7a5",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
"service": "AppGW",
"text": "Verify downstream dependencies through health endpoints",
"type": "recommendation",
@@ -21078,7 +19392,7 @@
},
{
"description": "Set up a TLS policy for extra security. Ensure you're always using the latest TLS policy version available. This enforces TLS 1.2 and stronger ciphers.",
- "guid": "494320e9-b38c-4370-959d-094a44094864",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
"service": "AppGW",
"text": "Set up a TLS policy for enhanced security",
"type": "recommendation",
@@ -21086,7 +19400,7 @@
},
{
"description": "There are advantages of using Application Gateway for TLS termination:- Performance improves because requests going to different backends to have to re-authenticate to each backend.- Better utilization of backend servers because they don't have to perform TLS processing- Intelligent routing by accessing the request content.- Easier certificate management because the certificate only needs to be installed on Application Gateway.",
- "guid": "8df6ae56-3bfc-4244-81d6-9a725b5ed412",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
"service": "AppGW",
"text": "Use AppGateway for TLS termination",
"type": "recommendation",
@@ -21094,7 +19408,7 @@
},
{
"description": "Application Gateway can be integrated with Key Vault. This provides stronger security, easier separation of roles and responsibilities, support for managed certificates, and an easier certificate renewal and rotation process.",
- "guid": "8b6244e7-e6ed-4eab-927c-ddbd506a87cf",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
"service": "AppGW",
"text": "Use Azure Key Vault to store TLS certificates",
"type": "recommendation",
@@ -21102,7 +19416,7 @@
},
{
"description": "A TLS certificate of the backend server must be issued by a well-known CA. If the certificate was not issued by a trusted CA, the Application Gateway checks if the certificate was issued by a trusted CA, and so on, until a trusted CA certificate is found. Only then a secure connection is established. Otherwise, Application Gateway marks the backend as unhealthy.",
- "guid": "d91bace4-beb9-4644-b8bc-f6565a84109b",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
"service": "AppGW",
"text": "When re-encrypting backend traffic, ensure the backend server certificate contains both the root and intermediate Certificate Authorities (CAs)",
"type": "recommendation",
@@ -21110,7 +19424,7 @@
},
{
"description": "When the backend pool contains a resolvable FQDN, the DNS resolution is based on a private DNS zone or custom DNS server (if configured on the VNet), or it uses the default Azure-provided DNS.",
- "guid": "12e3495d-cedc-48c3-9f80-6d61f4409aec",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
"service": "AppGW",
"text": "Use an appropriate DNS server for backend pool resources",
"type": "recommendation",
@@ -21118,7 +19432,7 @@
},
{
"description": "NSGs are supported on Application Gateway subnet, but there are some restrictions. For instance, some communication with certain port ranges is prohibited. Make sure you understand the implications of those restrictions. For details, see Network security groups.",
- "guid": "7367ddbb-675a-4f67-8341-0ae2614fb35b",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
"service": "AppGW",
"text": "Comply with all NSG restrictions for Application Gateway",
"type": "recommendation",
@@ -21134,7 +19448,7 @@
},
{
"description": "When WAF is enabled, every request must be buffered by the Application Gateway until it fully arrives, checks if the request matches with any rule violation in its core rule set, and then forwards the packet to the backend instances. When there are large file uploads (30MB+ in size), it can result in a significant latency. Because Application Gateway capacity requirements are different with WAF, we do not recommend enabling WAF on Application Gateway without proper testing and validation.",
- "guid": "5e2a741b-2faa-4fce-b04f-656985ca8bca",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
"service": "AppGW",
"text": "Be aware of Application Gateway capacity changes when enabling WAF",
"type": "recommendation",
@@ -21182,7 +19496,7 @@
},
{
"description": "For information about Application Gateway pricing, see Understanding Pricing for Azure Application Gateway and Web Application Firewall. You can also leverage the Pricing calculator.Ensure that the options are adequately sized to meet the capacity demand and deliver expected performance without wasting resources.",
- "guid": "167eeaec-1064-4598-a4c8-db6255140d52",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
"service": "AppGW",
"text": "Familiarize yourself with Application Gateway pricing",
"type": "recommendation",
@@ -21190,7 +19504,7 @@
},
{
"description": "Identify and delete Application Gateway instances with empty backend pools to avoid unnecessary costs.",
- "guid": "5a3afdb7-3da6-400c-9761-822fdcc4c1f3",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
"service": "AppGW",
"text": "Review underutilized resources",
"type": "recommendation",
@@ -21206,7 +19520,7 @@
},
{
"description": "A scale-out policy ensures that there will be enough instances to handle incoming traffic and spikes. Also, have a scale-in policy that makes sure the number of instances are reduced when demand drops. Consider the choice of instance size. The size can significantly impact the cost. Some considerations are described in the Estimate the Application Gateway instance count.For more information, see What is Azure Application Gateway v2?",
- "guid": "48d3c23e-76e5-43c7-83c9-6cc79abe08e0",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
"service": "AppGW",
"text": "Have a scale-in and scale-out policy",
"type": "recommendation",
@@ -21214,7 +19528,7 @@
},
{
"description": "You're billed based on metered instances of Application Gateway based on the metrics tracked by Azure. Evaluate the various metrics and capacity units and determine the cost drivers. For more information, see Microsoft Cost Management and Billing. The following metrics are key for Application Gateway. This information can be used to validate that the provisioned instance count matches the amount of incoming traffic.- Estimated Billed Capacity Units- Fixed Billable Capacity Units- Current Capacity UnitsFor more information, see Application Gateway metrics.Make sure you account for bandwidth costs.",
- "guid": "bc2c5670-3d5d-40bb-a600-0de389c60eb3",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
"service": "AppGW",
"text": "Review consumption metrics across different parameters",
"type": "recommendation",
@@ -21278,7 +19592,7 @@
},
{
"description": "Use these metrics as indicators of utilization of the provisioned Application Gateway capacity. We strongly recommend setting up alerts on capacity. For details, see Application Gateway high traffic support.",
- "guid": "cd9a502b-e1a0-4e5a-934a-ecd1bfdef9fc",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
"service": "AppGW",
"text": "Monitor capacity metrics",
"type": "recommendation",
@@ -21294,7 +19608,7 @@
},
{
"description": "Diagnostic logs allow you to view firewall logs, performance logs, and access logs. Use these logs to manage and troubleshoot issues with Application Gateway instances. For more information, see Back-end health and diagnostic logs for Application Gateway.",
- "guid": "85525215-51d6-4ed6-8206-2a0871054288",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
"service": "AppGW",
"text": "Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
"type": "recommendation",
@@ -21302,7 +19616,7 @@
},
{
"description": "Azure Monitor Network Insights provides a comprehensive view of health and metrics for network resources, including Application Gateway. For additional details and supported capabilities for Application Gateway, see Azure Monitor Network insights.",
- "guid": "5eaa9827-d3b5-4be9-a0d4-4838a2ff255b",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
"service": "AppGW",
"text": "Use Azure Monitor Network Insights",
"type": "recommendation",
@@ -21310,7 +19624,7 @@
},
{
"description": "Ensure you have configured the IdleTimeout settings to match the listener and traffic characteristics of the backend application. The default value is set to four minutes and can be configured to a maximum of 30. For more information, see Load Balancer TCP Reset and Idle Timeout.For workload considerations, see Monitoring application health for reliability.",
- "guid": "fc7095dc-d1e1-473c-8eac-17cde3631926",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
"service": "AppGW",
"text": "Match timeout settings with the backend application",
"type": "recommendation",
@@ -21318,7 +19632,7 @@
},
{
"description": "Application Gateway checks for the renewed certificate version in the linked Key Vault at every 4-hour interval. If it is inaccessible due to any incorrect Key Vault configuration, it logs that error and pushes a corresponding Advisor recommendation. You must configure the Advisor alerts to stay updated and fix such issues immediately to avoid any Control or Data plane related problems. For more information, see Investigating and resolving key vault errors. To set an alert for this specific case, use the Recommendation Type as Resolve Azure Key Vault issue for your Application Gateway.",
- "guid": "926a13b1-2678-47b0-bacf-ffa0a459c2d8",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
"service": "AppGW",
"text": "Monitor Key Vault configuration issues using Azure Advisor",
"type": "recommendation",
@@ -21326,7 +19640,7 @@
},
{
"description": "SNAT port limitations are important for backend connections on the Application Gateway. There are separate factors that affect how Application Gateway reaches the SNAT port limit. For example, if the backend is a public IP address, it will require its own SNAT port. In order to avoid SNAT port limitations, you can increase the number of instances per Application Gateway, scale out the backends to have more IP addresses, or move your backends into the same virtual network and use private IP addresses for the backends.Requests per second (RPS) on the Application Gateway will be affected if the SNAT port limit is reached. For example, if an Application Gateway reaches the SNAT port limit, then it won't be able to open a new connection to the backend, and the request will fail.",
- "guid": "2c659b9a-c873-4274-ba4f-752f8f44e31c",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
"service": "AppGW",
"text": "Consider SNAT port limitations in your design",
"type": "recommendation",
@@ -21374,7 +19688,7 @@
},
{
"description": "For Application Gateway v2 SKU, autoscaling takes some time (approximately six to seven minutes) before the additional set of instances is ready to serve traffic. During that time, if there are short spikes in traffic, expect transient latency or loss of traffic.We recommend that you set your minimum instance count to an optimal level. After you estimate the average instance count and determine your Application Gateway autoscaling trends, define the minimum instance count based on your application patterns. For information, see Application Gateway high traffic support.Check the Current Compute Units for the past one month. This metric represents the gateway's CPU utilization. To define the minimum instance count, divide the peak usage by 10. For example, if your average Current Compute Units in the past month is 50, set the minimum instance count to five.",
- "guid": "ce9ccebe-833d-425d-ad18-75b2674c5852",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
"service": "AppGW",
"text": "Define the minimum instance count",
"type": "recommendation",
@@ -21382,7 +19696,7 @@
},
{
"description": "We recommend 125 as the maximum autoscale instance count. Make sure the subnet that has the Application Gateway has sufficient available IP addresses to support the scale-up set of instances.Setting the maximum instance count to 125 has no cost implications because you're billed only for the consumed capacity.",
- "guid": "cf5545a9-617c-41b4-be24-364c29921643",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
"service": "AppGW",
"text": "Define the maximum instance count",
"type": "recommendation",
@@ -21390,7 +19704,7 @@
},
{
"description": "Application Gateway needs a dedicated subnet within a virtual network. The subnet can have multiple instances of the deployed Application Gateway resource. You can also deploy other Application Gateway resources in that subnet, v1 or v2 SKU.Here are some considerations for defining the subnet size:- Application Gateway uses one private IP address per instance and another private IP address if a private front-end IP is configured.- Azure reserves five IP addresses in each subnet for internal use.- Application Gateway (Standard or WAF SKU) can support up to 32 instances. Taking 32 instance IP addresses + 1 private front-end IP + 5 Azure reserved, a minimum subnet size of /26 is recommended. Because the Standard_v2 or WAF_v2 SKU can support up to 125 instances, using the same calculation, a subnet size of /24 is recommended.- If you want to deploy additional Application Gateway resources in the same subnet, consider the additional IP addresses that will be required for their maximum instance count for both, Standard and Standard v2.",
- "guid": "f84de96e-5a5f-4977-b349-c78ec00f7086",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
"service": "AppGW",
"text": "Define Application Gateway subnet size",
"type": "recommendation",
@@ -22286,7 +20600,7 @@
},
{
"description": "Use Azure Connectivity Toolkit to test performance across your ExpressRoute circuit to understand bandwidth capacity and latency of your network connection.",
- "guid": "587ddb10-bc25-40df-8133-61172142bbfe",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
"service": "ExpressRoute",
"text": "Test ExpressRoute gateway performance to meet work load requirements.",
"type": "recommendation",
@@ -22294,7 +20608,7 @@
},
{
"description": "Upgrade to a higher gateway SKU for improved throughput performance between on-premises and Azure environment.",
- "guid": "095083c6-98ff-40ad-ac52-f87b1adaa800",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
"service": "ExpressRoute",
"text": "Increase the size of the ExpressRoute gateway.",
"type": "recommendation",
@@ -22342,7 +20656,7 @@
},
{
"description": "",
- "guid": "d4d81d5e-7082-4cd2-8198-52f388cafdd8",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
"service": "File Storage",
"text": "Configure data redundancy: For maximum durability, choose a configuration that copies data across availability zones or global regions. For maximum availability, choose a configuration that allows clients to read data from the secondary region during an outage of the primary region.",
"type": "checklist",
@@ -22366,7 +20680,7 @@
},
{
"description": "",
- "guid": "a2ff95c9-d626-4081-9263-9cf69bdad742",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
"service": "File Storage",
"text": "Create a recovery plan: Consider data protection features, backup and restore operations, or failover procedures. Prepare for potential data loss and data inconsistencies and the time and cost of failing over. For more information, see Recommendations for designing a disaster recovery strategy.",
"type": "checklist",
@@ -22710,7 +21024,7 @@
},
{
"description": "",
- "guid": "9255b4bb-6217-43e4-84ee-4fc892c834c0",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
"service": "File Storage",
"text": "Create maintenance and emergency recovery plans: Consider data protection features, backup and restore operations, and failover procedures. Prepare for potential data loss and data inconsistencies and the time and cost of failing over.",
"type": "checklist",
@@ -22734,7 +21048,7 @@
},
{
"description": "You can use your existing DevOps processes to deploy new storage accounts, and use Azure Policy to enforce their configuration.",
- "guid": "357d0398-f29a-4041-b9b5-1caf52e2e9da",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
"service": "File Storage",
"text": "Use infrastructure as code (IaC) to define the details of your storage accounts in Azure Resource Manager templates (ARM templates), Bicep, or Terraform.",
"type": "recommendation",
@@ -22742,7 +21056,7 @@
},
{
"description": "You can track the health and operation of each of your accounts. Easily create dashboards and reports that stakeholders can use to track the health of your storage accounts.",
- "guid": "68d10f36-7a7f-46fd-a722-69fc489e4df6",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
"service": "File Storage",
"text": "Use Storage insights to track the health and performance of your storage accounts. Storage insights provides a unified view of the failures, performance, availability, and capacity for all your storage accounts.",
"type": "recommendation",
@@ -24078,7 +22392,7 @@
},
{
"description": "To scan incoming traffic for potential attacks, use a web application firewall such as Azure Web Application Firewall (WAF) on Azure Application Gateway or Azure Front Door.",
- "guid": "57f972b6-5cb8-4041-a171-2f74e0fc3fdc",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
"service": "AKS",
"text": "Workload architecture: Use a Web Application Firewall to secure HTTP(S) traffic.",
"type": "recommendation",
@@ -24350,7 +22664,7 @@
},
{
"description": "Container insights help monitor the performance of containers by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API and container logs.",
- "guid": "0e96c4ea-2e5d-4890-acaf-bfed9976c3e5",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
"service": "AKS",
"text": "Cluster and workload architectures: Configure monitoring of cluster with Container insights.",
"type": "recommendation",
@@ -24374,7 +22688,7 @@
},
{
"description": "Internet facing workloads should leverage Azure Front Door or Azure Traffic Manager to route traffic globally across AKS clusters.",
- "guid": "c7f704cc-a8fc-418f-bd82-454ea7c4c891",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
"service": "AKS",
"text": "Cluster architecture: Adopt a multiregion strategy by deploying AKS clusters deployed across different Azure regions to maximize availability and provide business continuity.",
"type": "recommendation",
@@ -25991,7 +24305,7 @@
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/checklists-ext/virtualmachines_sg_checklist.en.json b/checklists-ext/virtualmachines_sg_checklist.en.json
index ed27db4ac..9f391f969 100644
--- a/checklists-ext/virtualmachines_sg_checklist.en.json
+++ b/checklists-ext/virtualmachines_sg_checklist.en.json
@@ -228,35 +228,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -293,6 +293,6 @@
"name": "Virtual Machines Service Guide",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/virtualmachines_sg_checklist.es.json b/checklists-ext/virtualmachines_sg_checklist.es.json
new file mode 100644
index 000000000..7a1d35240
--- /dev/null
+++ b/checklists-ext/virtualmachines_sg_checklist.es.json
@@ -0,0 +1,298 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Prepare su aplicación para el futuro para el escalado y aproveche las garantías de alta disponibilidad que distribuyen las máquinas virtuales a través de dominios de error en una región o una zona de disponibilidad.",
+ "guid": "68d4b0a3-7b56-45fa-a80e-5f0f1dba68ff",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Use conjuntos de escalado de máquinas virtuales en modo de orquestación flexible para implementar máquinas virtuales.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Mantenga la disponibilidad incluso si se considera que una instancia está en mal estado. Las reparaciones automáticas inician la recuperación mediante el reemplazo de la instancia defectuosa. Establecer una ventana de tiempo puede evitar operaciones de reparación inadvertidas o prematuras.",
+ "guid": "fac87b55-eeaa-47d4-99fc-05bf5e220e3e",
+ "service": "Virtual Machines",
+ "text": "(VMs) Implemente puntos de conexión de estado que emitan estados de mantenimiento de instancias en máquinas virtuales. (Conjunto de escalas) Habilite las reparaciones automáticas en el conjunto de báscula especificando la acción de reparación preferida. Considere la posibilidad de establecer un período de tiempo durante el cual las reparaciones automáticas se detengan si cambia el estado de la máquina virtual.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El sobreaprovisionamiento reduce los tiempos de implementación y tiene un beneficio en cuanto a costos, ya que no se facturan las máquinas virtuales adicionales.",
+ "guid": "6f9864f6-415a-40eb-be9d-328d66a1a313",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Habilite el sobreaprovisionamiento en conjuntos de escalado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta opción aísla los dominios de error. Durante los períodos de mantenimiento, cuando se actualiza un dominio de error, las instancias de VM están disponibles en los demás dominios de error.",
+ "guid": "075a75c0-2abd-43cd-ae87-8b82751ef983",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Permita que la orquestación flexible distribuya las instancias de VM en tantos dominios de error como sea posible.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las instancias de máquina virtual se aprovisionan en ubicaciones físicamente separadas dentro de cada región de Azure que son tolerantes a errores locales. Tenga en cuenta que, en función de la disponibilidad de recursos, puede haber un número impar de instancias en todas las zonas. El equilibrio de zona admite la disponibilidad al asegurarse de que, si una zona está inactiva, las otras zonas tengan suficientes instancias. Dos instancias en cada zona proporcionan un búfer durante las actualizaciones.",
+ "guid": "1602d5e4-e1cb-4e3a-b74e-1636b8e789cd",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Implemente en zonas de disponibilidad en conjuntos de escalado. Configure al menos dos instancias en cada zona. El equilibrio de zonas distribuye equitativamente las instancias entre zonas.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La capacidad está reservada para su uso y está disponible dentro del alcance de los SLA aplicables. Puede eliminar reservas de capacidad cuando ya no las necesite, y la facturación se basa en el consumo.",
+ "guid": "3d22dcd5-106f-4e67-8ee3-693decf769af",
+ "service": "Virtual Machines",
+ "text": "(VMs) Aproveche la función de reservas de capacidad.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Cuando las máquinas virtuales se comunican con otros recursos, cruzan un límite de confianza. Los conjuntos de escalado y las máquinas virtuales deben autenticar su identidad antes de permitir la comunicación. Microsoft Entra ID controla esa autenticación mediante identidades administradas.",
+ "guid": "840b1969-10ac-466a-b41e-adbe7195d0c9",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Asigne una identidad administrada a conjuntos de escalado. Todas las máquinas virtuales del conjunto de escalado obtienen la misma identidad a través del perfil de máquina virtual especificado. (VMs) También puede asignar una identidad administrada a máquinas virtuales individuales al crearlas y, a continuación, agregarla a un conjunto de escalado si es necesario.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las características proporcionadas por Azure se basan en señales que se capturan en muchos inquilinos y pueden proteger los recursos mejor que los controles personalizados. También puede usar directivas para aplicar esos controles.",
+ "guid": "f82d63a6-accd-4021-8ff3-4774c4c4510d",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Elija SKU de máquina virtual con características de seguridad. Por ejemplo, algunas SKU admiten el cifrado de BitLocker y la informática confidencial proporciona el cifrado de los datos en uso. Revise las características para comprender las limitaciones.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El etiquetado es una forma común de segmentar y organizar recursos y puede ser crucial durante la gestión de incidentes. Para obtener más información, consulte Propósito de la nomenclatura y el etiquetado.",
+ "guid": "59f8b29d-53e3-44f4-aa87-b1be2379746c",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Aplique las etiquetas recomendadas por la organización en los recursos aprovisionados.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las características del perfil de seguridad se habilitan automáticamente cuando se crea la máquina virtual. Para más información, consulte Línea base de seguridad de Azure para conjuntos de escalado de máquinas virtuales.",
+ "guid": "b3e98269-3ffc-4326-abff-769fc46efd63",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca un perfil de seguridad con las características de seguridad que desea habilitar en la configuración de la máquina virtual. Por ejemplo, cuando se especifica el cifrado en el host del perfil, los datos almacenados en el host de la máquina virtual se cifran en reposo y los flujos se cifran en el servicio de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede establecer controles de segmentación en el perfil de red. Los atacantes analizan las direcciones IP públicas, lo que hace que las máquinas virtuales sean vulnerables a las amenazas.",
+ "guid": "15f0aff4-216c-4900-af7d-a5e43796590b",
+ "service": "Virtual Machines",
+ "text": "(VMs) Elija opciones de red seguras para el perfil de red de la máquina virtual. No asocie directamente direcciones IP públicas a las máquinas virtuales y no habilite el reenvío de IP. Asegúrese de que todas las interfaces de red virtual tengan un grupo de seguridad de red asociado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Deshabilitar el acceso a la red pública ayuda a evitar el acceso no autorizado a sus datos y recursos.",
+ "guid": "6b28e9c9-1329-4b28-bb31-ad5642f86914",
+ "service": "Virtual Machines",
+ "text": "(VMs) Elija opciones de almacenamiento seguro para el perfil de almacenamiento de su máquina virtual. Habilite el cifrado de disco y el cifrado de datos en reposo de forma predeterminada. Deshabilite el acceso de red pública a los discos de la máquina virtual.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las extensiones se usan para arrancar las máquinas virtuales con el software adecuado que protege el acceso hacia y desde las máquinas virtuales. Las extensiones proporcionadas por Microsoft se actualizan con frecuencia para mantenerse al día con la evolución de los estándares de seguridad.",
+ "guid": "07666c40-3a2e-4c2d-b9f3-5f626ad5882d",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Incluya extensiones en las máquinas virtuales que protejan contra las amenazas. Por ejemplo, - Extensión de Key Vault para Windows y Linux - Autenticación de identificador de Microsoft Entra - Microsoft Antimalware para Azure Cloud Services y Virtual Machines - Extensión de Azure Disk Encryption para Windows y Linux.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los SKU tienen un precio de acuerdo con las capacidades que ofrecen. Si no necesitas capacidades avanzadas, no gastes de más en SKU. Las máquinas virtuales de acceso puntual aprovechan la capacidad excedente de Azure a un costo menor.",
+ "guid": "29588a06-72af-40ba-892d-df8b05f2e2e1",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Elija el tamaño del plan de máquina virtual y la SKU adecuados. Identifique los mejores tamaños de máquina virtual para su carga de trabajo. Utilice el selector de máquina virtual para identificar la mejor máquina virtual para su carga de trabajo. Consulta los precios de Windows y Linux. En el caso de cargas de trabajo, como trabajos de procesamiento por lotes muy paralelos que pueden tolerar algunas interrupciones, considere la posibilidad de usar Azure Spot Virtual Machines. Las máquinas virtuales puntuales son buenas para experimentar, desarrollar y probar soluciones a gran escala.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Algunos tipos de discos de alto rendimiento ofrecen funciones y estrategias de optimización de costos adicionales. La capacidad de ajuste del disco SSD prémium v2 puede reducir los costos, ya que proporciona un alto rendimiento sin sobreaprovisionamiento, lo que de otro modo podría conducir a recursos infrautilizados.",
+ "guid": "184fb2f7-0386-4a88-8487-95623a412bec",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Evalúe las opciones de disco asociadas a las SKU de la máquina virtual. Determine sus necesidades de rendimiento teniendo en cuenta sus necesidades de capacidad de almacenamiento y teniendo en cuenta los patrones de carga de trabajo fluctuantes. Por ejemplo, el disco SSD v2 de Azure Premium permite ajustar de forma granular el rendimiento independientemente del tamaño del disco.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Reduzca los costos de infraestructura informática aplicando los grandes descuentos de las máquinas virtuales puntuales.",
+ "guid": "b1fdfb60-31c8-4ab9-8106-f62e863f6d31",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Combine máquinas virtuales normales con máquinas virtuales de acceso puntual. La orquestación flexible le permite distribuir máquinas virtuales de acceso puntual en función de un porcentaje especificado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El escalado vertical o la detención de recursos cuando no están en uso reduce el número de máquinas virtuales que se ejecutan en el conjunto de escalado, lo que ahorra costos. La función Start/Stop es una opción de automatización de bajo costo.",
+ "guid": "99a9ab5e-e84d-493d-854b-40eca32360ce",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Reduzca el número de instancias de VM cuando disminuya la demanda. Establezca una política de reducción horizontal basada en criterios. Detenga las máquinas virtuales durante las horas de inactividad. Puede usar la característica Inicio/detención de Azure Automation y configurarla según las necesidades de su empresa.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede maximizar sus licencias locales mientras obtiene los beneficios de la nube.",
+ "guid": "1c6503e1-16f5-4ef8-9515-68d5c7747f0d",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Aproveche la movilidad de licencias mediante la Ventaja híbrida de Azure. Las máquinas virtuales tienen una opción de licencia que le permite traer sus propias licencias locales del SO de servidor Windows a Azure. La Ventaja híbrida de Azure también le permite incorporar determinadas suscripciones de Linux a Azure.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La orquestación flexible puede administrar instancias de VM a escala. La entrega de máquinas virtuales individuales agrega sobrecarga operativa. Por ejemplo, cuando se eliminan instancias de VM, los discos y las NIC asociados también se eliminan automáticamente. Las instancias de VM se distribuyen en varios dominios de error para que las operaciones de actualización no interrumpan el servicio.",
+ "guid": "a2dbf398-1751-4efb-98aa-8ab3694ff096",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Los conjuntos de escalado de máquinas virtuales en modo de orquestación flexible pueden ayudar a simplificar la implementación y la administración de la carga de trabajo. Por ejemplo, puede administrar fácilmente la autorreparación mediante el uso de reparaciones automáticas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La seguridad es la razón principal de las actualizaciones. Las garantías de seguridad de las instancias no deben deteriorarse con el tiempo. Las actualizaciones graduales se realizan en lotes, lo que garantiza que todas las instancias no estén inactivas al mismo tiempo.",
+ "guid": "62e3e643-0661-4c0d-aa35-9066eb12e56e",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Mantenga sus máquinas virtuales actualizadas mediante la configuración de una directiva de actualización. Recomendamos actualizaciones continuas. Sin embargo, si necesita un control granular, elija actualizar manualmente. Para la orquestación flexible, puede usar Azure Update Manager.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se crean las máquinas virtuales del conjunto de escalado y se preinstalan las aplicaciones especificadas, lo que facilita la administración.",
+ "guid": "36a103b1-2888-4150-bebb-de8e8ba2a1d8",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Implemente automáticamente aplicaciones de máquina virtual desde Azure Compute Gallery definiendo las aplicaciones en el perfil.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las extensiones pueden ayudar a simplificar la instalación de software a escala sin tener que instalarlo, configurarlo o actualizarlo manualmente en cada máquina virtual.",
+ "guid": "7177b0fd-461c-49e1-9183-f1ee9986c5b6",
+ "service": "Virtual Machines",
+ "text": "Instale componentes de software precompilados como extensiones como parte del arranque. Azure admite muchas extensiones que se pueden usar para configurar, supervisar, proteger y proporcionar aplicaciones de utilidad para las máquinas virtuales. Habilite las actualizaciones automáticas en las extensiones.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los datos es el núcleo de la resolución de incidentes. Una pila de supervisión completa proporciona información sobre el rendimiento de las máquinas virtuales y su estado. Al monitorear continuamente las instancias, puede estar preparado para errores o prevenirlos, como la sobrecarga de rendimiento y los problemas de confiabilidad.",
+ "guid": "4d2f720c-f0d3-4d39-9258-b212ca1c8a99",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Supervise y mida el estado de las instancias de VM. Implemente la extensión del agente Monitor en las máquinas virtuales para recopilar datos de supervisión del sistema operativo invitado con reglas de recopilación de datos específicas del sistema operativo. Habilite la información de VM para supervisar el estado y el rendimiento, y para ver tendencias a partir de los datos recopilados. Use los diagnósticos de arranque para obtener información a medida que arrancan las máquinas virtuales. Los diagnósticos de arranque también diagnostican errores de arranque.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "El redimensionamiento de las máquinas virtuales es una decisión fundamental que afecta significativamente al rendimiento de la carga de trabajo. Sin el conjunto adecuado de máquinas virtuales, es posible que experimente problemas de rendimiento y acumule costos innecesarios.",
+ "guid": "e6e6f3f5-7632-4f17-975e-7b35d09b38b4",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Elija SKU para máquinas virtuales que se alineen con su planificación de capacidad. Comprenda bien los requisitos de su carga de trabajo, incluido el número de núcleos, la memoria, el almacenamiento y el ancho de banda de red para que pueda filtrar las SKU inadecuadas.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Los grupos de selección de ubicación por proximidad reducen la distancia física entre los recursos de proceso de Azure, lo que puede mejorar el rendimiento y reducir la latencia de red entre máquinas virtuales independientes, máquinas virtuales de varios conjuntos de disponibilidad o máquinas virtuales de varios conjuntos de escalado.",
+ "guid": "07d79869-9589-4d6a-9e5b-cb0f27cf4b48",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Implemente máquinas virtuales de carga de trabajo sensibles a la latencia en grupos de selección de ubicación por proximidad.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Las SSD prémium ofrecen máquinas virtuales compatibles con discos de alto rendimiento y baja latencia con cargas de trabajo intensivas en E/S. SSD prémium v2 no requiere cambiar el tamaño del disco, lo que permite un alto rendimiento sin un sobreaprovisionamiento excesivo y minimiza el costo de la capacidad no utilizada. Cuando están disponibles en SKU de máquina virtual, NVMe conectado localmente o dispositivos similares pueden ofrecer un alto rendimiento, especialmente para casos de uso que requieren altas operaciones de entrada/salida por segundo (IOPS) y baja latencia.",
+ "guid": "e0902a54-a13c-4831-8dbe-c013010044f4",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca el perfil de almacenamiento analizando el rendimiento del disco de las cargas de trabajo existentes y la SKU de la máquina virtual. Use SSD prémium para máquinas virtuales de producción. Ajuste el rendimiento de los discos con SSD prémium v2. Utilice dispositivos NVMe conectados localmente.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Permite la virtualización de E/S de raíz única (SR-IOV) en una máquina virtual, lo que mejora en gran medida el rendimiento de su red.",
+ "guid": "6118c905-4ae3-4a5d-918f-16c2b268934c",
+ "service": "Virtual Machines",
+ "text": "(VMs) Considere la posibilidad de habilitar las redes aceleradas.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si aumenta la demanda de la aplicación, aumenta la carga en las instancias de máquina virtual del conjunto de escalado. Las reglas de escalado automático garantizan que tenga suficientes recursos para satisfacer la demanda.",
+ "guid": "e4ade8bb-7114-4d3f-9cba-8784905b707b",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca reglas de escalado automático para aumentar o disminuir el número de instancias de máquina virtual en el conjunto de escalado en función de la demanda.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "Virtual Machines Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/virtualmachines_sg_checklist.ja.json b/checklists-ext/virtualmachines_sg_checklist.ja.json
new file mode 100644
index 000000000..7a68c57fe
--- /dev/null
+++ b/checklists-ext/virtualmachines_sg_checklist.ja.json
@@ -0,0 +1,298 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "アプリケーションのスケーリングを将来にわたって保証し、リージョンまたは可用性ゾーン内の障害ドメインに VM を分散する高可用性保証を活用します。",
+ "guid": "68d4b0a3-7b56-45fa-a80e-5f0f1dba68ff",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)Virtual Machine Scale Sets をフレキシブル オーケストレーション モードにして VM をデプロイします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "インスタンスが異常であると見なされた場合でも可用性を維持します。自動修復は、障害のあるインスタンスを置き換えることによって回復を開始します。時間枠を設定すると、不注意による修復操作や時期尚早な修復操作を防ぐことができます。",
+ "guid": "fac87b55-eeaa-47d4-99fc-05bf5e220e3e",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM でインスタンスの正常性状態を出力する正常性エンドポイントを実装します。 (スケールセット)スケール セットで自動修復を有効にするには、優先する修復アクションを指定します。 VM の状態が変化した場合に自動修復が一時停止する時間枠を設定することを検討してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "オーバープロビジョニングにより、デプロイ時間が短縮され、追加の VM は課金されないため、コスト面でのメリットがあります。",
+ "guid": "6f9864f6-415a-40eb-be9d-328d66a1a313",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)スケール セットでオーバープロビジョニングを有効にします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このオプションは、障害ドメインを分離します。メンテナンス期間中、1つのフォルト・ドメインが更新されると、VMインスタンスは他のフォルト・ドメインで使用できます。",
+ "guid": "075a75c0-2abd-43cd-ae87-8b82751ef983",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)フレキシブル オーケストレーションにより、VM インスタンスをできるだけ多くの障害ドメインに分散できます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "VM インスタンスは、各 Azure リージョン内の物理的に分離された場所にプロビジョニングされ、ローカルの障害に対して耐性があります。 リソースの可用性によっては、ゾーン間でインスタンスの数が不均一になる場合があることに注意してください。ゾーン バランシングは、1 つのゾーンがダウンした場合に、他のゾーンに十分なインスタンスがあることを確認することで可用性をサポートします。 各ゾーンの 2 つのインスタンスは、アップグレード中にバッファーを提供します。",
+ "guid": "1602d5e4-e1cb-4e3a-b74e-1636b8e789cd",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)スケール セットの可用性ゾーン全体にデプロイします。各ゾーンに少なくとも 2 つのインスタンスを設定します。ゾーンバランシングは、インスタンスをゾーン間で均等に分散します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "容量はお客様専用に予約されており、適用される SLA の範囲内で利用できます。キャパシティーの予約は不要になったときに削除でき、請求は使用量ベースです。",
+ "guid": "3d22dcd5-106f-4e67-8ee3-693decf769af",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)キャパシティーの予約機能を活用してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "VM が他のリソースと通信する場合、VM は信頼境界を越えます。スケール セットと VM は、通信を許可する前に ID を認証する必要があります。Microsoft Entra ID は、マネージド ID を使用してその認証を処理します。",
+ "guid": "840b1969-10ac-466a-b41e-adbe7195d0c9",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)マネージド ID をスケール セットに割り当てます。スケール セット内のすべての VM は、指定された VM プロファイルを通じて同じ ID を取得します。 (仮想マシン)また、個々の VM を作成するときにマネージド ID を割り当て、必要に応じてスケール セットに追加することもできます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure が提供する機能は、多くのテナント間でキャプチャされるシグナルに基づいており、カスタム コントロールよりもリソースをより適切に保護できます。ポリシーを使用して、これらの制御を適用することもできます。",
+ "guid": "f82d63a6-accd-4021-8ff3-4774c4c4510d",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)セキュリティ機能を備えた VM SKU を選択します。たとえば、一部の SKU では BitLocker 暗号化がサポートされており、コンフィデンシャル コンピューティングでは使用中のデータの暗号化が提供されます。 機能を確認して、制限事項を理解してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "タグ付けは、リソースをセグメント化して整理する一般的な方法であり、インシデント管理中に重要になる場合があります。詳細については、「名前付けとタグ付けの目的」を参照してください。",
+ "guid": "59f8b29d-53e3-44f4-aa87-b1be2379746c",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)プロビジョニングされたリソースに組織が推奨するタグを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティ プロファイルの機能は、VM の作成時に自動的に有効になります。 詳細については、「Virtual Machine Scale Sets の Azure セキュリティ ベースライン」を参照してください。",
+ "guid": "b3e98269-3ffc-4326-abff-769fc46efd63",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM 構成で有効にするセキュリティ機能を使用して、セキュリティ プロファイルを設定します。 たとえば、プロファイルでホストでの暗号化を指定すると、VM ホストに格納されているデータは保存時に暗号化され、フローはストレージ サービスに暗号化されます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セグメンテーション制御は、ネットワーキングプロファイルで設定できます。 攻撃者はパブリック IP アドレスをスキャンするため、VM は脅威に対して脆弱になります。",
+ "guid": "15f0aff4-216c-4900-af7d-a5e43796590b",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM のネットワーク プロファイルのセキュリティで保護されたネットワーク オプションを選択します。 パブリック IP アドレスを VM に直接関連付けたり、IP 転送を有効にしたりしないでください。 すべての仮想ネットワーク インターフェイスにネットワーク セキュリティ グループが関連付けられていることを確認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "パブリックネットワークアクセスを無効にすると、データやリソースへの不正アクセスを防ぐことができます。",
+ "guid": "6b28e9c9-1329-4b28-bb31-ad5642f86914",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM のストレージ プロファイルの安全なストレージ オプションを選択します。 ディスクの暗号化と保存データの暗号化をデフォルトで有効にします。VM ディスクへのパブリック ネットワーク アクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "拡張機能は、VM へのアクセスと VM からのアクセスを保護する適切なソフトウェアを使用して VM をブートストラップするために使用されます。 Microsoft が提供する拡張機能は、進化するセキュリティ標準に対応するために頻繁に更新されます。",
+ "guid": "07666c40-3a2e-4c2d-b9f3-5f626ad5882d",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)脅威から保護する拡張機能を VM に含めます。 たとえば、Windows と Linux 用の Key Vault 拡張機能 - Microsoft Entra ID 認証 - Azure Cloud Services と Virtual Machines 用の Microsoft マルウェア対策 - Windows と Linux 用の Azure Disk Encryption 拡張機能です。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SKU は、提供する機能に応じて価格が設定されます。高度な機能が必要ない場合は、SKU に過剰に費やさないでください。 スポット仮想マシンは、Azure の余剰容量を低コストで活用できます。",
+ "guid": "29588a06-72af-40ba-892d-df8b05f2e2e1",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)適切な VM プランのサイズと SKU を選択します。ワークロードに最適な VM サイズを特定します。 VM セレクターを使用して、ワークロードに最適な VM を特定します。「Windows と Linux の価格」を参照してください。 多少の中断を許容できる高並列バッチ処理ジョブなどのワークロードの場合は、Azure Spot Virtual Machines の使用を検討してください。スポット仮想マシンは、大規模なソリューションの実験、開発、テストに適しています。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "一部の高パフォーマンス ディスク タイプには、追加のコスト最適化機能と戦略が用意されています。 Premium SSD v2 ディスクの調整機能は、オーバープロビジョニングなしで高いパフォーマンスを提供するため、コストを削減できます。これにより、リソースが十分に活用されない可能性があります。",
+ "guid": "184fb2f7-0386-4a88-8487-95623a412bec",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM の SKU に関連付けられているディスク オプションを評価します。 ストレージ容量のニーズを念頭に置き、変動するワークロードパターンを考慮しながら、パフォーマンスのニーズを決定します。 たとえば、Azure Premium SSD v2 ディスクを使用すると、ディスクのサイズに関係なく、パフォーマンスをきめ細かく調整できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スポット仮想マシンの大幅な割引を適用することで、コンピューティング インフラストラクチャのコストを削減します。",
+ "guid": "b1fdfb60-31c8-4ab9-8106-f62e863f6d31",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)通常の VM とスポット仮想マシンを混在させます。 柔軟なオーケストレーションにより、指定した割合に基づいてスポット仮想マシンを分散できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "使用されていないリソースをスケールインまたは停止すると、スケール セットで実行されている VM の数が減り、コストが節約されます。 スタート/ストップ機能は、低コストの自動化オプションです。",
+ "guid": "99a9ab5e-e84d-493d-854b-40eca32360ce",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)需要が減少した場合は、VM インスタンスの数を減らします。条件に基づいてスケールインポリシーを設定します。 営業時間外に VM を停止します。Azure Automation の開始/停止機能を使用して、ビジネス ニーズに応じて構成できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "オンプレミスのライセンスを最大限に活用しながら、クラウドのメリットを享受できます。",
+ "guid": "1c6503e1-16f5-4ef8-9515-68d5c7747f0d",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)Azure ハイブリッド特典を使用して、ライセンス モビリティを活用します。VM には、オンプレミスの Windows Server OS ライセンスを Azure に持ち込むことができるライセンス オプションがあります。 Azure ハイブリッド特典では、特定の Linux サブスクリプションを Azure に持ち込むこともできます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "柔軟なオーケストレーションにより、VMインスタンスを大規模に管理できます。個々の VM を処理すると、運用上のオーバーヘッドが増加します。 たとえば、VM インスタンスを削除すると、関連付けられているディスクと NIC も自動的に削除されます。VM インスタンスは複数の障害ドメインに分散されるため、更新操作によってサービスが中断されることはありません。",
+ "guid": "a2dbf398-1751-4efb-98aa-8ab3694ff096",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)フレキシブル オーケストレーション モードの Virtual Machine Scale Sets は、ワークロードのデプロイと管理を簡略化するのに役立ちます。たとえば、自動修復を使用して自己修復を簡単に管理できます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "セキュリティは、アップグレードの主な理由です。インスタンスのセキュリティ保証は、時間の経過とともに衰えてはなりません。 ローリングアップグレードはバッチで行われるため、すべてのインスタンスが同時にダウンすることはありません。",
+ "guid": "62e3e643-0661-4c0d-aa35-9066eb12e56e",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)アップグレード ポリシーを設定して、VM を最新の状態に保ちます。ローリングアップグレードをお勧めします。ただし、きめ細かな制御が必要な場合は、手動でアップグレードすることを選択します。 柔軟なオーケストレーションの場合は、Azure Update Manager を使用できます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "スケール セット内の VM が作成され、指定したアプリがプレインストールされるため、管理が容易になります。",
+ "guid": "36a103b1-2888-4150-bebb-de8e8ba2a1d8",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)プロファイルでアプリケーションを定義することにより、Azure Compute Gallery から VM アプリケーションを自動的にデプロイします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "拡張機能を使用すると、各 VM でソフトウェアを手動でインストール、構成、またはアップグレードすることなく、大規模なソフトウェアのインストールを簡略化できます。",
+ "guid": "7177b0fd-461c-49e1-9183-f1ee9986c5b6",
+ "service": "Virtual Machines",
+ "text": "ブートストラップの一部として、ビルド済みのソフトウェアコンポーネントを拡張機能としてインストールします。 Azure では、VM のユーティリティ アプリケーションを構成、監視、セキュリティ保護、提供するために使用できる多くの拡張機能がサポートされています。 拡張機能の自動アップグレードを有効にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "データの監視は、インシデント解決の中核をなすものです。包括的な監視スタックは、VM のパフォーマンスとその正常性に関する情報を提供します。インスタンスを継続的に監視することで、パフォーマンスの過負荷や信頼性の問題などの障害に備えたり、防止したりできます。",
+ "guid": "4d2f720c-f0d3-4d39-9258-b212ca1c8a99",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM インスタンスの正常性を監視および測定します。 Monitor エージェント拡張機能を VM にデプロイして、OS 固有のデータ収集ルールを使用してゲスト OS から監視データを収集します。 VM insights を有効にして、正常性とパフォーマンスを監視し、収集されたデータから傾向を表示します。ブート診断を使用して、VM のブート時に情報を取得します。ブート診断では、ブート障害も診断されます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "VM の適切なサイズ設定は、ワークロードのパフォーマンスに大きく影響する基本的な決定事項です。適切な VM のセットがないと、パフォーマンスの問題が発生し、不要なコストが発生する可能性があります。",
+ "guid": "e6e6f3f5-7632-4f17-975e-7b35d09b38b4",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)容量計画に適した VM の SKU を選択します。コア数、メモリ、ストレージ、ネットワーク帯域幅など、ワークロードの要件を十分に理解して、不適切な SKU を除外できるようにします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "近接通信配置グループを使用すると、Azure コンピューティング リソース間の物理的な距離が短縮されるため、スタンドアロン VM、複数の可用性セット内の VM、または複数のスケール セット内の VM 間のパフォーマンスが向上し、ネットワーク待機時間を短縮できます。",
+ "guid": "07d79869-9589-4d6a-9e5b-cb0f27cf4b48",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)待機時間の影響を受けやすいワークロード VM を近接配置グループにデプロイします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Premium SSD は、I/O 集中型のワークロードを備えた高パフォーマンスで低遅延のディスク サポート VM を提供します。 Premium SSD v2 ではディスクのサイズを変更する必要がないため、過剰なオーバープロビジョニングを行わずに高パフォーマンスを実現し、未使用の容量のコストを最小限に抑えます。 VM SKU で使用できる場合、ローカルに接続された NVMe または同様のデバイスは、特に高い 1 秒あたりの入出力操作 (IOPS) と低待機時間を必要とするユース ケースで、高いパフォーマンスを提供できます。",
+ "guid": "e0902a54-a13c-4831-8dbe-c013010044f4",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット) 既存のワークロードと VM SKU のディスク パフォーマンスを分析して、ストレージ プロファイルを設定します。 運用 VM には Premium SSD を使用します。Premium SSD v2 を使用してディスクのパフォーマンスを調整します。ローカルに接続された NVMe デバイスを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "これにより、VM へのシングル ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワーク パフォーマンスが大幅に向上します。",
+ "guid": "6118c905-4ae3-4a5d-918f-16c2b268934c",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)高速ネットワークを有効にすることを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "アプリケーションの需要が増加すると、スケール セット内の VM インスタンスの負荷が増加します。自動スケール ルールにより、需要を満たすのに十分なリソースが確保されます。",
+ "guid": "e4ade8bb-7114-4d3f-9cba-8784905b707b",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)自動スケール ルールを設定して、需要に基づいてスケール セット内の VM インスタンスの数を増減します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "Virtual Machines Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/virtualmachines_sg_checklist.ko.json b/checklists-ext/virtualmachines_sg_checklist.ko.json
new file mode 100644
index 000000000..a71c731e4
--- /dev/null
+++ b/checklists-ext/virtualmachines_sg_checklist.ko.json
@@ -0,0 +1,298 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "확장을 위해 애플리케이션의 미래를 보장하고 지역 또는 가용성 영역의 장애 도메인 간에 VM을 분산하는 고가용성 보장을 활용하세요.",
+ "guid": "68d4b0a3-7b56-45fa-a80e-5f0f1dba68ff",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션 모드에서 Virtual Machine Scale Sets 사용하여 VM을 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "인스턴스가 비정상으로 간주되는 경우에도 가용성을 유지합니다. 자동 복구는 결함이 있는 인스턴스를 교체하여 복구를 시작합니다. 시간 창을 설정하면 부주의하거나 조기 수리 작업을 방지할 수 있습니다.",
+ "guid": "fac87b55-eeaa-47d4-99fc-05bf5e220e3e",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM에서 인스턴스 상태를 내보내는 heath 엔드포인트를 구현합니다. (확장 집합) 선호하는 복구 작업을 지정하여 확장 집합에서 자동 복구를 사용하도록 설정합니다. VM의 상태가 변경되는 경우 자동 복구가 일시 중지되는 시간 프레임을 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "오버프로비저닝은 배포 시간을 줄이고 추가 VM에 대한 요금이 청구되지 않기 때문에 비용 이점이 있습니다.",
+ "guid": "6f9864f6-415a-40eb-be9d-328d66a1a313",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합에서 오버프로비저닝을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 옵션은 장애 도메인을 격리합니다. 유지 보수 기간 동안 하나의 장애 도메인이 업데이트되면 다른 장애 도메인에서 VM 인스턴스를 사용할 수 있습니다.",
+ "guid": "075a75c0-2abd-43cd-ae87-8b82751ef983",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션을 통해 VM 인스턴스를 가능한 한 많은 장애 도메인에 분산할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "VM 인스턴스는 로컬 오류에 대한 내성이 있는 각 Azure 지역 내에서 물리적으로 분리된 위치에 프로비전됩니다. 리소스 가용성에 따라 영역 간에 균일하지 않은 수의 인스턴스가 있을 수 있음을 명심하십시오. 영역 분산은 한 영역이 다운된 경우 다른 영역에 충분한 인스턴스를 갖도록 하여 가용성을 지원합니다. 각 영역에 있는 두 개의 인스턴스는 업그레이드 중에 버퍼를 제공합니다.",
+ "guid": "1602d5e4-e1cb-4e3a-b74e-1636b8e789cd",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합의 가용성 영역에 배포합니다. 각 영역에 두 개 이상의 인스턴스를 설정합니다. 영역 분산은 인스턴스를 영역 간에 균등하게 분산합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "용량은 사용자가 사용하도록 예약되어 있으며 해당 SLA의 범위 내에서 사용할 수 있습니다. 용량 예약은 더 이상 필요하지 않을 때 삭제할 수 있으며 청구는 사용량을 기반으로 합니다.",
+ "guid": "3d22dcd5-106f-4e67-8ee3-693decf769af",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) 용량 예약 기능을 활용하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "VM은 다른 리소스와 통신할 때 신뢰 경계를 넘습니다. 확장 집합 및 VM은 통신이 허용되기 전에 해당 ID를 인증해야 합니다. Microsoft Entra ID는 관리 ID를 사용하여 해당 인증을 처리합니다.",
+ "guid": "840b1969-10ac-466a-b41e-adbe7195d0c9",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합에 관리 ID를 할당합니다. 확장 집합의 모든 VM은 지정된 VM 프로필을 통해 동일한 ID를 가져옵니다. (가상 머신) 개별 VM을 만들 때 관리 ID를 할당한 다음, 필요한 경우 확장 집합에 추가할 수도 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure에서 제공하는 기능은 여러 테넌트에서 캡처된 신호를 기반으로 하며 사용자 지정 컨트롤보다 리소스를 더 잘 보호할 수 있습니다. 정책을 사용하여 이러한 제어를 적용할 수도 있습니다.",
+ "guid": "f82d63a6-accd-4021-8ff3-4774c4c4510d",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 보안 기능이 있는 VM SKU를 선택합니다. 예를 들어 일부 SKU는 BitLocker 암호화를 지원하고 기밀 컴퓨팅은 사용 중인 데이터의 암호화를 제공합니다. 기능을 검토하여 제한 사항을 이해합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "태그 지정은 리소스를 분류하고 구성하는 일반적인 방법이며 인시던트 관리 중에 중요할 수 있습니다. 자세한 내용은 이름 지정 및 태그 지정의 목적을 참조하십시오.",
+ "guid": "59f8b29d-53e3-44f4-aa87-b1be2379746c",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 프로비저닝된 리소스에 organization-recommended 태그를 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "보안 프로필의 기능은 VM이 생성될 때 자동으로 활성화됩니다. 자세한 내용은 Virtual Machine Scale Sets 대한 Azure 보안 기준을 참조하세요.",
+ "guid": "b3e98269-3ffc-4326-abff-769fc46efd63",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM 구성에서 사용하도록 설정하려는 보안 기능을 사용하여 보안 프로필을 설정합니다. 예를 들어 프로필에서 호스트에서 암호화를 지정하면 VM 호스트에 저장된 데이터는 미사용 시 암호화되고 흐름은 스토리지 서비스로 암호화됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워킹 프로필에서 세그멘테이션 컨트롤을 설정할 수 있습니다. 공격자는 공용 IP 주소를 검사하므로 VM이 위협에 취약해집니다.",
+ "guid": "15f0aff4-216c-4900-af7d-a5e43796590b",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM의 네트워크 프로필에 대한 보안 네트워킹 옵션을 선택합니다. 공용 IP 주소를 VM에 직접 연결하지 말고 IP 전달을 사용하도록 설정하지 마세요. 모든 가상 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공용 네트워크 액세스를 사용하지 않도록 설정하면 데이터 및 리소스에 대한 무단 액세스를 방지할 수 있습니다.",
+ "guid": "6b28e9c9-1329-4b28-bb31-ad5642f86914",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM의 스토리지 프로필에 대한 보안 스토리지 옵션을 선택합니다. 기본적으로 디스크 암호화 및 미사용 데이터 암호화를 사용하도록 설정합니다. VM 디스크에 대한 공용 네트워크 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "확장은 VM에 대한 액세스를 보호하는 올바른 소프트웨어로 VM을 부트스트랩하는 데 사용됩니다. Microsoft에서 제공하는 확장은 진화하는 보안 표준을 따라잡기 위해 자주 업데이트됩니다.",
+ "guid": "07666c40-3a2e-4c2d-b9f3-5f626ad5882d",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 위협으로부터 보호하는 확장을 VM에 포함합니다. 예를 들어 - Windows 및 Linux용 Key Vault 확장 - Microsoft Entra ID 인증 - Azure Cloud Services 및 Virtual Machines용 Microsoft Antimalware - Windows 및 Linux용 Azure Disk Encryption 확장입니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SKU는 제공하는 기능에 따라 가격이 책정됩니다. 고급 기능이 필요하지 않은 경우 SKU에 과도하게 지출하지 마세요. 스폿 가상 머신은 더 저렴한 비용으로 Azure의 잉여 용량을 활용합니다.",
+ "guid": "29588a06-72af-40ba-892d-df8b05f2e2e1",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 올바른 VM 플랜 크기 및 SKU를 선택합니다. 워크로드에 가장 적합한 VM 크기를 식별합니다. VM 선택기를 사용하여 워크로드에 가장 적합한 VM을 식별합니다. Windows 및 Linux 가격 책정을 참조하세요. 일부 중단을 허용할 수 있는 고도의 병렬 일괄 처리 작업과 같은 워크로드의 경우 Azure Spot Virtual Machines를 사용하는 것이 좋습니다. 스폿 가상 머신은 대규모 솔루션을 실험, 개발 및 테스트하는 데 적합합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "일부 고성능 디스크 유형은 추가 비용 최적화 기능 및 전략을 제공합니다. 프리미엄 SSD v2 디스크의 조정 기능은 과도하게 프로비전하지 않고 고성능을 제공하기 때문에 비용을 절감할 수 있으며, 그렇지 않으면 리소스가 충분히 활용되지 않을 수 있습니다.",
+ "guid": "184fb2f7-0386-4a88-8487-95623a412bec",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM의 SKU와 연결된 디스크 옵션을 평가합니다. 성능 요구 사항을 결정하는 동시에 스토리지 용량 요구 사항을 염두에 두고 변동하는 작업 패턴에 대해 설명합니다. 예를 들어 Azure Premium SSD v2 디스크를 사용하면 디스크 크기에 관계없이 성능을 세부적으로 조정할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스폿 가상 머신의 대폭 할인을 적용하여 컴퓨팅 인프라 비용을 줄입니다.",
+ "guid": "b1fdfb60-31c8-4ab9-8106-f62e863f6d31",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 일반 VM을 스폿 가상 머신과 혼합합니다. 유연한 오케스트레이션을 사용하면 지정된 비율에 따라 스폿 가상 머신을 배포할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "리소스를 사용하지 않을 때 규모를 축소하거나 중지하면 확장 집합에서 실행되는 VM 수가 줄어들어 비용이 절감됩니다. 시작/중지 기능은 저렴한 자동화 옵션입니다.",
+ "guid": "99a9ab5e-e84d-493d-854b-40eca32360ce",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 수요가 감소할 때 VM 인스턴스의 수를 줄입니다. 기준에 따라 축소 정책을 설정합니다. 업무 외 시간에는 VM을 중지합니다. Azure Automation 시작/중지 기능을 사용하여 비즈니스 요구 사항에 따라 구성할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "온-프레미스 라이선스를 최대화하는 동시에 클라우드의 이점을 활용할 수 있습니다.",
+ "guid": "1c6503e1-16f5-4ef8-9515-68d5c7747f0d",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) Azure 하이브리드 혜택을 사용하여 라이선스 이동성을 활용하세요. VM에는 사용자 고유의 온-프레미스 Windows Server OS 라이선스를 Azure로 가져올 수 있는 라이선스 옵션이 있습니다. 또한 Azure 하이브리드 혜택을 통해 특정 Linux 구독을 Azure로 가져올 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "유연한 오케스트레이션은 VM 인스턴스를 대규모로 관리할 수 있습니다. 개별 VM을 처리하면 운영 오버헤드가 추가됩니다. 예를 들어 VM 인스턴스를 삭제하면 연결된 디스크와 NIC도 자동으로 삭제됩니다. VM 인스턴스는 업데이트 작업으로 인해 서비스가 중단되지 않도록 여러 장애 도메인에 분산되어 있습니다.",
+ "guid": "a2dbf398-1751-4efb-98aa-8ab3694ff096",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션 모드의 Virtual Machine Scale Sets 워크로드의 배포 및 관리를 간소화하는 데 도움이 될 수 있습니다. 예를 들어 자동 복구를 사용하여 자체 복구를 쉽게 관리할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "보안은 업그레이드의 주된 이유입니다. 인스턴스에 대한 보안 보증은 시간이 지남에 따라 감소해서는 안 됩니다. 롤링 업그레이드는 일괄적으로 수행되므로 모든 인스턴스가 동시에 다운되지 않습니다.",
+ "guid": "62e3e643-0661-4c0d-aa35-9066eb12e56e",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 업그레이드 정책을 설정하여 VM을 최신 상태로 유지합니다. 롤링 업그레이드를 권장합니다. 그러나 세부적인 제어가 필요한 경우 수동으로 업그레이드하도록 선택합니다. 유연한 오케스트레이션의 경우 Azure Update Manager를 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "확장 집합의 VM이 만들어지고 지정된 앱이 미리 설치되어 관리가 더 쉬워집니다.",
+ "guid": "36a103b1-2888-4150-bebb-de8e8ba2a1d8",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 프로필에서 응용 프로그램을 정의하여 Azure Compute Gallery에서 VM 응용 프로그램을 자동으로 배포합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "확장은 각 VM에서 수동으로 설치, 구성 또는 업그레이드할 필요 없이 대규모로 소프트웨어 설치를 간소화하는 데 도움이 될 수 있습니다.",
+ "guid": "7177b0fd-461c-49e1-9183-f1ee9986c5b6",
+ "service": "Virtual Machines",
+ "text": "사전 구축된 소프트웨어 구성 요소를 부트스트래핑의 일부로 확장으로 설치합니다. Azure는 VM에 대한 유틸리티 애플리케이션을 구성, 모니터링, 보안 및 제공하는 데 사용할 수 있는 많은 확장을 지원합니다. 확장에서 자동 업그레이드를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "데이터 모니터링은 인시던트 해결의 핵심입니다. 포괄적인 모니터링 스택은 VM의 성능 및 상태에 대한 정보를 제공합니다. 인스턴스를 지속적으로 모니터링하면 성능 과부하 및 안정성 문제와 같은 오류에 대비하거나 예방할 수 있습니다.",
+ "guid": "4d2f720c-f0d3-4d39-9258-b212ca1c8a99",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM 인스턴스의 상태를 모니터링하고 측정합니다. 모니터 에이전트 확장을 VM에 배포하여 OS별 데이터 수집 규칙을 사용하여 게스트 OS에서 모니터링 데이터를 수집합니다. VM 인사이트를 사용하여 상태 및 성능을 모니터링하고 수집된 데이터에서 추세를 볼 수 있습니다. 부팅 진단을 사용하여 VM이 부팅될 때 정보를 가져옵니다. 부팅 진단은 부팅 실패도 진단합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "VM의 크기를 적절하게 조정하는 것은 워크로드의 성능에 큰 영향을 미치는 기본적인 결정입니다. 올바른 VM 집합이 없으면 성능 문제가 발생하고 불필요한 비용이 발생할 수 있습니다.",
+ "guid": "e6e6f3f5-7632-4f17-975e-7b35d09b38b4",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 용량 계획에 맞는 VM에 대한 SKU를 선택합니다. 부적합한 SKU를 필터링할 수 있도록 코어 수, 메모리, 스토리지 및 네트워크 대역폭을 포함한 워크로드 요구 사항을 잘 이해해야 합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "근접 배치 그룹은 Azure 컴퓨팅 리소스 간의 물리적 거리를 줄여 성능을 향상시키고 독립 실행형 VM, 여러 가용성 집합의 VM 또는 여러 확장 집합의 VM 간의 네트워크 대기 시간을 줄일 수 있습니다.",
+ "guid": "07d79869-9589-4d6a-9e5b-cb0f27cf4b48",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 대기 시간에 민감한 워크로드 VM을 근접 배치 그룹에 배포합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "프리미엄 SSD는 I/O 집약적 워크로드가 있는 고성능 및 짧은 대기 시간 디스크 지원 VM을 제공합니다. 프리미엄 SSD v2는 디스크 크기 조정이 필요하지 않으므로 과도한 오버 프로비저닝 없이 고성능을 가능하게 하고 사용되지 않는 용량의 비용을 최소화합니다. VM SKU에서 사용할 수 있는 경우 로컬로 연결된 NVMe 또는 유사한 디바이스는 특히 높은 IOPS(초당 입력/출력 작업 수)와 짧은 대기 시간이 필요한 사용 사례에 높은 성능을 제공할 수 있습니다.",
+ "guid": "e0902a54-a13c-4831-8dbe-c013010044f4",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 기존 워크로드 및 VM SKU의 디스크 성능을 분석하여 스토리지 프로필을 설정합니다. 프로덕션 VM에 프리미엄 SSD를 사용합니다. 프리미엄 SSD v2를 사용하여 디스크의 성능을 조정합니다. 로컬로 연결된 NVMe 장치를 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "VM에 대한 SR-IOV(단일 루트 I/O 가상화)를 통해 네트워킹 성능을 크게 향상시킬 수 있습니다.",
+ "guid": "6118c905-4ae3-4a5d-918f-16c2b268934c",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) 가속화된 네트워킹을 사용하도록 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "응용 프로그램 수요가 증가하면 확장 집합의 VM 인스턴스에 대한 부하가 증가합니다. 자동 크기 조정 규칙은 수요를 충족할 수 있는 충분한 리소스가 있는지 확인합니다.",
+ "guid": "e4ade8bb-7114-4d3f-9cba-8784905b707b",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 자동 크기 조정 규칙을 설정하여 수요에 따라 확장 집합의 VM 인스턴스 수를 늘리거나 줄입니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "Virtual Machines Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/virtualmachines_sg_checklist.pt.json b/checklists-ext/virtualmachines_sg_checklist.pt.json
new file mode 100644
index 000000000..959631efb
--- /dev/null
+++ b/checklists-ext/virtualmachines_sg_checklist.pt.json
@@ -0,0 +1,298 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "Prepare seu aplicativo para o futuro para dimensionamento e aproveite as garantias de alta disponibilidade que distribuem VMs entre domínios de falha em uma região ou zona de disponibilidade.",
+ "guid": "68d4b0a3-7b56-45fa-a80e-5f0f1dba68ff",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Use Conjuntos de Dimensionamento de Máquinas Virtuais no modo de orquestração flexível para implantar VMs.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Mantenha a disponibilidade mesmo que uma instância seja considerada não íntegra. Os reparos automáticos iniciam a recuperação substituindo a instância defeituosa. Definir uma janela de tempo pode evitar operações de reparo inadvertidas ou prematuras.",
+ "guid": "fac87b55-eeaa-47d4-99fc-05bf5e220e3e",
+ "service": "Virtual Machines",
+ "text": "(VMs) Implemente pontos de extremidade de integridade que emitem status de integridade da instância em VMs. (Conjunto de escalas) Habilite reparos automáticos no conjunto de dimensionamento especificando a ação de reparo preferencial. Considere definir um período de tempo durante o qual os reparos automáticos serão pausados se o estado da VM for alterado.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O provisionamento excessivo reduz os tempos de implantação e tem um custo-benefício porque as VMs extras não são cobradas.",
+ "guid": "6f9864f6-415a-40eb-be9d-328d66a1a313",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Habilite o provisionamento excessivo em conjuntos de dimensionamento.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa opção isola os domínios de falha. Durante os períodos de manutenção, quando um domínio de falha é atualizado, as instâncias de VM ficam disponíveis nos outros domínios de falha.",
+ "guid": "075a75c0-2abd-43cd-ae87-8b82751ef983",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Permitir que a orquestração flexível distribua as instâncias de VM pelo maior número possível de domínios de falha.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As instâncias de VM são provisionadas em locais fisicamente separados em cada região do Azure que são tolerantes a falhas locais. Lembre-se de que, dependendo da disponibilidade de recursos, pode haver um número ímpar de instâncias entre as zonas. O balanceamento de zona oferece suporte à disponibilidade, certificando-se de que, se uma zona estiver inativa, as outras zonas tenham instâncias suficientes. Duas instâncias em cada zona fornecem um buffer durante as atualizações.",
+ "guid": "1602d5e4-e1cb-4e3a-b74e-1636b8e789cd",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Implante em zonas de disponibilidade em conjuntos de dimensionamento. Configure pelo menos duas instâncias em cada zona. O balanceamento de zona distribui igualmente as instâncias entre as zonas.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A capacidade é reservada para seu uso e está disponível dentro do escopo dos SLAs aplicáveis. Você pode excluir reservas de capacidade quando não precisar mais delas e a cobrança for baseada no consumo.",
+ "guid": "3d22dcd5-106f-4e67-8ee3-693decf769af",
+ "service": "Virtual Machines",
+ "text": "(VMs) Aproveite o recurso de reservas de capacidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Quando as VMs se comunicam com outros recursos, elas cruzam um limite de confiança. Os conjuntos de dimensionamento e as VMs devem autenticar sua identidade antes que a comunicação seja permitida. A ID do Microsoft Entra lida com essa autenticação usando identidades gerenciadas.",
+ "guid": "840b1969-10ac-466a-b41e-adbe7195d0c9",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Atribua uma identidade gerenciada a conjuntos de dimensionamento. Todas as VMs no conjunto de dimensionamento obtêm a mesma identidade por meio do perfil de VM especificado. (VMs) Você também pode atribuir uma identidade gerenciada a VMs individuais ao criá-las e, em seguida, adicioná-la a um conjunto de dimensionamento, se necessário.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os recursos fornecidos pelo Azure são baseados em sinais capturados em muitos locatários e podem proteger os recursos melhor do que os controles personalizados. Você também pode usar políticas para impor esses controles.",
+ "guid": "f82d63a6-accd-4021-8ff3-4774c4c4510d",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Escolha SKUs de VM com recursos de segurança. Por exemplo, alguns SKUs dão suporte à criptografia do BitLocker e a computação confidencial fornece criptografia de dados em uso. Revise os recursos para entender as limitações.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A marcação é uma maneira comum de segmentar e organizar recursos e pode ser crucial durante o gerenciamento de incidentes. Para obter mais informações, consulte Finalidade de nomear e marcar.",
+ "guid": "59f8b29d-53e3-44f4-aa87-b1be2379746c",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Aplique tags recomendadas pela organização nos recursos provisionados.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os recursos no perfil de segurança são habilitados automaticamente quando a VM é criada. Para obter mais informações, consulte Linha de base de segurança do Azure para Conjuntos de Dimensionamento de Máquinas Virtuais.",
+ "guid": "b3e98269-3ffc-4326-abff-769fc46efd63",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina um perfil de segurança com os recursos de segurança que você deseja habilitar na configuração da VM. Por exemplo, quando você especifica a criptografia no host no perfil, os dados armazenados no host da VM são criptografados em repouso e os fluxos são criptografados para o serviço de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode definir controles de segmentação no perfil de rede. Os invasores verificam endereços IP públicos, o que torna as VMs vulneráveis a ameaças.",
+ "guid": "15f0aff4-216c-4900-af7d-a5e43796590b",
+ "service": "Virtual Machines",
+ "text": "(VMs) Escolha opções de rede segura para o perfil de rede da sua VM. Não associe diretamente endereços IP públicos às suas VMs e não habilite o encaminhamento de IP. Verifique se todos os adaptadores de rede virtual têm um grupo de segurança de rede associado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar o acesso à rede pública ajuda a impedir o acesso não autorizado aos seus dados e recursos.",
+ "guid": "6b28e9c9-1329-4b28-bb31-ad5642f86914",
+ "service": "Virtual Machines",
+ "text": "(VMs) Escolha opções de armazenamento seguro para o perfil de armazenamento da VM. Habilite a criptografia de disco e a criptografia de dados em repouso por padrão. Desabilite o acesso à rede pública aos discos da VM.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As extensões são usadas para inicializar as VMs com o software certo que protege o acesso de e para as VMs. As extensões fornecidas pela Microsoft são atualizadas com frequência para acompanhar os padrões de segurança em evolução.",
+ "guid": "07666c40-3a2e-4c2d-b9f3-5f626ad5882d",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Inclua extensões em suas VMs que protegem contra ameaças. Por exemplo, - Extensão do Key Vault para Windows e Linux - Autenticação de ID do Microsoft Entra - Microsoft Antimalware para Serviços de Nuvem e Máquinas Virtuais do Azure - Extensão do Azure Disk Encryption para Windows e Linux.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os SKUs são precificados de acordo com os recursos que oferecem. Se você não precisar de recursos avançados, não gaste demais em SKUs. As máquinas virtuais spot aproveitam a capacidade excedente no Azure a um custo menor.",
+ "guid": "29588a06-72af-40ba-892d-df8b05f2e2e1",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Escolha o tamanho e o SKU do plano de VM corretos. Identifique os melhores tamanhos de VM para sua carga de trabalho. Use o seletor de VM para identificar a melhor VM para sua carga de trabalho. Consulte os preços do Windows e do Linux. Para cargas de trabalho como trabalhos de processamento em lotes altamente paralelos que podem tolerar algumas interrupções, considere usar Máquinas Virtuais Spot do Azure. As máquinas virtuais spot são boas para experimentar, desenvolver e testar soluções em grande escala.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Alguns tipos de disco de alto desempenho oferecem recursos e estratégias extras de otimização de custos. A capacidade de ajuste do disco SSD Premium v2 pode reduzir custos porque fornece alto desempenho sem superprovisionamento, o que poderia levar a recursos subutilizados.",
+ "guid": "184fb2f7-0386-4a88-8487-95623a412bec",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Avalie as opções de disco associadas aos SKUs da VM. Determine suas necessidades de desempenho, tendo em mente suas necessidades de capacidade de armazenamento e levando em conta os padrões flutuantes de carga de trabalho. Por exemplo, o disco SSD Premium v2 do Azure permite que você ajuste granularmente seu desempenho, independentemente do tamanho do disco.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduza os custos de infraestrutura de computação aplicando os grandes descontos das máquinas virtuais spot.",
+ "guid": "b1fdfb60-31c8-4ab9-8106-f62e863f6d31",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Combine VMs regulares com máquinas virtuais spot. A orquestração flexível permite distribuir máquinas virtuais spot com base em uma porcentagem especificada.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduzir ou interromper recursos quando eles não estão em uso reduz o número de VMs em execução no conjunto de dimensionamento, o que economiza custos. O recurso Start/Stop é uma opção de automação de baixo custo.",
+ "guid": "99a9ab5e-e84d-493d-854b-40eca32360ce",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Reduza o número de instâncias de VM quando a demanda diminuir. Defina uma política de redução horizontal com base em critérios. Pare as VMs fora do horário comercial. Você pode usar o recurso Iniciar/Parar da Automação do Azure e configurá-lo de acordo com suas necessidades de negócios.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode maximizar suas licenças locais enquanto obtém os benefícios da nuvem.",
+ "guid": "1c6503e1-16f5-4ef8-9515-68d5c7747f0d",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Aproveite a mobilidade de licenças usando o Benefício Híbrido do Azure. As VMs têm uma opção de licenciamento que permite que você traga suas próprias licenças do sistema operacional Windows Server local para o Azure. O Benefício Híbrido do Azure também permite que você traga determinadas assinaturas do Linux para o Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A orquestração flexível pode gerenciar instâncias de VM em escala. Entregar VMs individuais adiciona sobrecarga operacional. Por exemplo, quando você exclui instâncias de VM, os discos e NICs associados também são excluídos automaticamente. As instâncias de VM são distribuídas em vários domínios de falha para que as operações de atualização não interrompam o serviço.",
+ "guid": "a2dbf398-1751-4efb-98aa-8ab3694ff096",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Os Conjuntos de Dimensionamento de Máquinas Virtuais no modo de orquestração flexível podem ajudar a simplificar a implantação e o gerenciamento de sua carga de trabalho. Por exemplo, você pode gerenciar facilmente a autocorreção usando reparos automáticos.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A segurança é o principal motivo para atualizações. As garantias de segurança para as instâncias não devem diminuir com o tempo. As atualizações contínuas são feitas em lotes, o que garante que todas as instâncias não fiquem inativas ao mesmo tempo.",
+ "guid": "62e3e643-0661-4c0d-aa35-9066eb12e56e",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Mantenha suas VMs atualizadas definindo uma política de atualização. Recomendamos atualizações contínuas. No entanto, se você precisar de controle granular, opte por atualizar manualmente. Para orquestração flexível, você pode usar o Azure Update Manager.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As VMs no conjunto de dimensionamento são criadas e os aplicativos especificados são pré-instalados, o que facilita o gerenciamento.",
+ "guid": "36a103b1-2888-4150-bebb-de8e8ba2a1d8",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Implante automaticamente aplicativos de VM da Galeria de Computação do Azure definindo os aplicativos no perfil.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As extensões podem ajudar a simplificar a instalação do software em escala sem que você precise instalá-lo, configurá-lo ou atualizá-lo manualmente em cada VM.",
+ "guid": "7177b0fd-461c-49e1-9183-f1ee9986c5b6",
+ "service": "Virtual Machines",
+ "text": "Instale componentes de software pré-construídos como extensões como parte da inicialização. O Azure dá suporte a muitas extensões que podem ser usadas para configurar, monitorar, proteger e fornecer aplicativos utilitários para suas VMs. Habilite atualizações automáticas em extensões.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os dados de monitoramento estão no centro da resolução de incidentes. Uma pilha de monitoramento abrangente fornece informações sobre o desempenho das VMs e sua integridade. Ao monitorar continuamente as instâncias, você pode estar pronto ou evitar falhas como sobrecarga de desempenho e problemas de confiabilidade.",
+ "guid": "4d2f720c-f0d3-4d39-9258-b212ca1c8a99",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Monitore e meça a integridade das instâncias de VM. Implante a extensão do agente do Monitor em suas VMs para coletar dados de monitoramento do sistema operacional convidado com regras de coleta de dados específicas do sistema operacional. Habilite os insights da VM para monitorar a integridade e o desempenho e exibir tendências dos dados coletados. Use o diagnóstico de inicialização para obter informações à medida que as VMs são inicializadas. O diagnóstico de inicialização também diagnostica falhas de inicialização.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O dimensionamento correto de suas VMs é uma decisão fundamental que afeta significativamente o desempenho de sua carga de trabalho. Sem o conjunto certo de VMs, você pode ter problemas de desempenho e acumular custos desnecessários.",
+ "guid": "e6e6f3f5-7632-4f17-975e-7b35d09b38b4",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Escolha SKUs para VMs que se alinham ao seu planejamento de capacidade. Tenha uma boa compreensão de seus requisitos de carga de trabalho, incluindo o número de núcleos, memória, armazenamento e largura de banda de rede para que você possa filtrar SKUs inadequados.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Os grupos de posicionamento por proximidade reduzem a distância física entre os recursos de computação do Azure, o que pode melhorar o desempenho e reduzir a latência de rede entre VMs autônomas, VMs em vários conjuntos de disponibilidade ou VMs em vários conjuntos de dimensionamento.",
+ "guid": "07d79869-9589-4d6a-9e5b-cb0f27cf4b48",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Implante VMs de carga de trabalho sensíveis à latência em grupos de posicionamento por proximidade.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Os SSDs Premium oferecem VMs de suporte a disco de alto desempenho e baixa latência com cargas de trabalho com uso intensivo de E/S. O SSD Premium v2 não requer redimensionamento de disco, o que permite alto desempenho sem provisionamento excessivo e minimiza o custo da capacidade não utilizada. Quando disponível em SKUs de VM, o NVMe conectado localmente ou dispositivos semelhantes podem oferecer alto desempenho, especialmente para casos de uso que exigem altas operações de entrada/saída por segundo (IOPS) e baixa latência.",
+ "guid": "e0902a54-a13c-4831-8dbe-c013010044f4",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina o perfil de armazenamento analisando o desempenho do disco das cargas de trabalho existentes e o SKU da VM. Use SSDs Premium para VMs de produção. Ajuste o desempenho dos discos com o SSD Premium v2. Use dispositivos NVMe conectados localmente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ele permite a virtualização de E/S de raiz única (SR-IOV) para uma VM, o que melhora muito seu desempenho de rede.",
+ "guid": "6118c905-4ae3-4a5d-918f-16c2b268934c",
+ "service": "Virtual Machines",
+ "text": "(VMs) Considere habilitar a rede acelerada.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se a demanda do aplicativo aumentar, a carga nas instâncias de VM no conjunto de dimensionamento aumentará. As regras de dimensionamento automático garantem que você tenha recursos suficientes para atender à demanda.",
+ "guid": "e4ade8bb-7114-4d3f-9cba-8784905b707b",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina regras de dimensionamento automático para aumentar ou diminuir o número de instâncias de VM em seu conjunto de dimensionamento com base na demanda.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "Virtual Machines Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/virtualmachines_sg_checklist.zh-Hant.json b/checklists-ext/virtualmachines_sg_checklist.zh-Hant.json
new file mode 100644
index 000000000..b644bb63a
--- /dev/null
+++ b/checklists-ext/virtualmachines_sg_checklist.zh-Hant.json
@@ -0,0 +1,298 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "讓您的應用程式經得起未來擴展的考驗,並利用高可用性保證,將 VM 分佈在區域或可用性區域中的容錯域中。",
+ "guid": "68d4b0a3-7b56-45fa-a80e-5f0f1dba68ff",
+ "service": "Virtual Machines",
+ "text": "(規模集)在靈活業務流程模式下使用虛擬機規模集來部署 VM。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "即使實例被認為運行狀況不佳,也能保持可用性。自動修復通過替換故障實例來啟動恢復。設置時間視窗可以防止無意或過早的修復操作。",
+ "guid": "fac87b55-eeaa-47d4-99fc-05bf5e220e3e",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)實施在 VM 上發出實例運行狀況的運行狀況終結點。 (規模集)通過指定首選修復操作,在規模集上啟用自動修復。 請考慮設置一個時間範圍,在此期間,如果 VM 的狀態發生變化,自動修復將暫停。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "過度預配可縮短部署時間,並具有成本效益,因為不會對額外的 VM 進行計費。",
+ "guid": "6f9864f6-415a-40eb-be9d-328d66a1a313",
+ "service": "Virtual Machines",
+ "text": "(規模集)在規模集上啟用預留超額預配。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此選項隔離容錯域。在維護期間,當一個容錯域更新時,VM 實例在其他容錯域中可用。",
+ "guid": "075a75c0-2abd-43cd-ae87-8b82751ef983",
+ "service": "Virtual Machines",
+ "text": "(規模集)允許靈活業務流程將 VM 實例分佈在盡可能多的容錯域中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "VM 實例預配在每個 Azure 區域中物理上獨立的位置,這些位置可以容忍本地故障。 請記住,根據資源可用性,區域之間的實例數量可能會不均勻。區域均衡通過確保如果一個區域關閉,其他區域具有足夠的實例來支援可用性。 每個區域中的兩個實例在升級期間提供緩衝區。",
+ "guid": "1602d5e4-e1cb-4e3a-b74e-1636b8e789cd",
+ "service": "Virtual Machines",
+ "text": "(規模集)在規模集上跨可用性區域進行部署。在每個區域中至少設置兩個實例。區域均衡將實例平均分佈在各個區域中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容量預留供您使用,並在適用的 SLA 範圍內可用。當您不再需要容量預留時,您可以刪除它們,並且計費基於使用量。",
+ "guid": "3d22dcd5-106f-4e67-8ee3-693decf769af",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)利用容量預留功能。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當 VM 與其他資源通信時,它們會跨越信任邊界。規模集和 VM 應先驗證其身份,然後才能允許通信。Microsoft Entra ID 使用託管標識處理該身份驗證。",
+ "guid": "840b1969-10ac-466a-b41e-adbe7195d0c9",
+ "service": "Virtual Machines",
+ "text": "(規模集)將託管標識分配給規模集。規模集中的所有 VM 都通過指定的 VM 配置檔獲取相同的標識。 (虛擬機)還可以在創建單個 VM 時將託管標識分配給它們,然後根據需要將其添加到規模集。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 提供的功能基於在許多租戶中捕獲的信號,與自定義控件相比,它可以更好地保護資源。您還可以使用策略來實施這些控制。",
+ "guid": "f82d63a6-accd-4021-8ff3-4774c4c4510d",
+ "service": "Virtual Machines",
+ "text": "(規模集)選擇具有安全功能的 VM SKU。例如,某些 SKU 支援 BitLocker 加密,機密計算提供對使用中的數據的加密。 查看功能以瞭解限制。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "標記是分割和組織資源的常用方法,在事件管理過程中可能至關重要。有關詳細資訊,請參閱命名和標記的目的。",
+ "guid": "59f8b29d-53e3-44f4-aa87-b1be2379746c",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在預置的資源中應用組織推薦的標籤。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "創建 VM 時,將自動啟用安全設定檔中的功能。 有關詳細資訊,請參閱虛擬機規模集的 Azure 安全基線。",
+ "guid": "b3e98269-3ffc-4326-abff-769fc46efd63",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)使用要在 VM 設定中啟用的安全功能設置安全設定檔。 例如,在配置檔中指定主機加密時,存儲在 VM 主機上的數據將靜態加密,流將加密到存儲服務。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "您可以在網路設定檔中設定分段控制。 攻擊者掃描公共IP位址,這使得VM容易受到威脅。",
+ "guid": "15f0aff4-216c-4900-af7d-a5e43796590b",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)為 VM 的網路設定檔選擇安全網路選項。 請勿將公共IP位址直接關聯到VM,也不要啟用IP轉發。 確保所有虛擬網路介面都具有關聯的網路安全組。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用公共網路訪問有助於防止未經授權訪問您的數據和資源。",
+ "guid": "6b28e9c9-1329-4b28-bb31-ad5642f86914",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)為 VM 的儲存設定檔選擇安全儲存選項。 默認情況下,啟用磁碟加密和靜態數據加密。禁用對 VM 磁碟的公用網路訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "這些擴展用於使用正確的軟體引導 VM,以保護對 VM 的訪問和從 VM 的訪問。 Microsoft 提供的擴展會經常更新,以跟上不斷發展的安全標準。",
+ "guid": "07666c40-3a2e-4c2d-b9f3-5f626ad5882d",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在 VM 中包含可抵禦威脅的擴展。 例如, - 適用於 Windows 和 Linux 的 Key Vault 擴展 - Microsoft Entra ID 身份驗證 - 適用於 Azure 雲服務和虛擬機的 Microsoft 反惡意軟體 - 適用於 Windows 和 Linux 的 Azure 磁碟加密擴展。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SKU 根據其提供的功能進行定價。如果您不需要高級功能,請不要在 SKU 上超支。 現成虛擬機以較低的成本利用 Azure 中的剩餘容量。",
+ "guid": "29588a06-72af-40ba-892d-df8b05f2e2e1",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)選擇正確的 VM 計劃大小和 SKU。確定工作負載的最佳 VM 大小。 使用 VM 選擇器確定最適合您的工作負載的 VM。請參閱 Windows 和 Linux 定價。 對於可以容忍某些中斷的高度並行批處理作業等工作負載,請考慮使用 Azure 現成虛擬機。現成虛擬機非常適合試驗、開發和測試大規模解決方案。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "一些高性能磁碟類型提供額外的成本優化功能和策略。 高級 SSD v2 磁碟的調整功能可以降低成本,因為它提供高性能,而不會過度預配,否則可能會導致資源未得到充分利用。",
+ "guid": "184fb2f7-0386-4a88-8487-95623a412bec",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)評估與 VM 的 SKU 關聯的磁碟選項。 確定您的性能需求,同時牢記您的儲存容量需求,並考慮波動的工作負載模式。 例如,使用 Azure 高級 SSD v2 磁碟,可以不受磁碟大小的影響,精細調整性能。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過應用現成虛擬機的大幅折扣來降低計算基礎設施成本。",
+ "guid": "b1fdfb60-31c8-4ab9-8106-f62e863f6d31",
+ "service": "Virtual Machines",
+ "text": "(規模集)將常規 VM 與現成虛擬機混合使用。 通過靈活的編排,您可以根據指定的百分比分配現成虛擬機。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "在不使用資源時縮減或停止資源可以減少規模集中運行的 VM 數量,從而節省成本。 啟動/停止功能是一種低成本的自動化選項。",
+ "guid": "99a9ab5e-e84d-493d-854b-40eca32360ce",
+ "service": "Virtual Machines",
+ "text": "(規模集)當需求減少時,減少 VM 實例的數量。根據條件設置縮減策略。 在空閒時間停止 VM。可以使用 Azure 自動化啟動/停止功能,並根據業務需求進行配置。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以最大限度地利用本地許可證,同時獲得雲的優勢。",
+ "guid": "1c6503e1-16f5-4ef8-9515-68d5c7747f0d",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)使用 Azure 混合權益來利用許可證行動性。VM 具有許可選項,允許將自己的本地 Windows Server OS 許可證引入 Azure。 Azure 混合權益還允許將某些 Linux 訂閱引入 Azure。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "靈活的編排可以大規模管理 VM 實例。處理單個 VM 會增加運營開銷。 例如,當您刪除 VM 實例時,關聯的磁碟和 NIC 也會自動刪除。VM 實例分佈在多個容錯域中,因此更新操作不會中斷服務。",
+ "guid": "a2dbf398-1751-4efb-98aa-8ab3694ff096",
+ "service": "Virtual Machines",
+ "text": "(規模集)靈活業務流程模式下的虛擬機規模集有助於簡化工作負載的部署和管理。例如,您可以通過使用自動修復輕鬆管理自我修復。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "安全性是升級的主要原因。實例的安全保證不應隨著時間的推移而衰減。 滾動升級是分批完成的,可確保所有實例不會同時關閉。",
+ "guid": "62e3e643-0661-4c0d-aa35-9066eb12e56e",
+ "service": "Virtual Machines",
+ "text": "(規模集)通過設置升級策略使 VM 保持最新狀態。我們建議滾動升級。但是,如果您需要精細控制,請選擇手動升級。 對於靈活業務流程,可以使用 Azure Update Manager。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "將創建規模集中的 VM,並預安裝指定的應用,從而簡化管理。",
+ "guid": "36a103b1-2888-4150-bebb-de8e8ba2a1d8",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)通過在配置檔中定義應用程式,自動部署 Azure Compute Gallery 中的 VM 應用程式。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "擴展可以幫助簡化大規模的軟體安裝,而無需在每個 VM 上手動安裝、配置或升級它。",
+ "guid": "7177b0fd-461c-49e1-9183-f1ee9986c5b6",
+ "service": "Virtual Machines",
+ "text": "在引導過程中將預構建的軟體元件作為擴展進行安裝。 Azure 支援許多擴展,這些擴展可用於為 VM 配置、監視、保護和提供實用工具應用程式。 在擴展上啟用自動升級。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監控數據是事件解決的核心。全面的監控堆疊提供有關虛擬機的性能及其運行狀況的資訊。通過持續監控實例,您可以為性能過載和可靠性問題等故障做好準備或防止故障。",
+ "guid": "4d2f720c-f0d3-4d39-9258-b212ca1c8a99",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)監視和測量 VM 實例的運行狀況。 將 Monitor 代理擴展部署到 VM,以使用特定於 OS 的數據收集規則從來賓 OS 收集監視數據。 啟用 VM 見解以監視運行狀況和性能,並查看收集的數據中的趨勢。使用啟動診斷在 VM 啟動時獲取資訊。啟動診斷還會診斷啟動失敗。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "合理調整 VM 大小是一項基本決策,會顯著影響工作負載的性能。如果沒有正確的 VM 集,您可能會遇到性能問題併產生不必要的成本。",
+ "guid": "e6e6f3f5-7632-4f17-975e-7b35d09b38b4",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)為 VM 選擇符合容量規劃的 SKU。充分瞭解工作負載要求,包括核心數、記憶體、存儲和網路頻寬,以便篩選出不合適的SKU。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "鄰近放置組可縮短 Azure 計算資源之間的物理距離,從而提高性能並減少獨立 VM、多個可用性集中的 VM 或多個規模集中的 VM 之間的網路延遲。",
+ "guid": "07d79869-9589-4d6a-9e5b-cb0f27cf4b48",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在鄰近放置組中部署對延遲敏感的工作負載 VM。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "高級 SSD 提供高性能和低延遲的磁碟支援,可處理 I/O 密集型工作負載。 高級 SSD v2 不需要調整磁碟大小,從而在不過度預留空間的情況下實現高性能,並最大限度地降低未使用容量的成本。 如果在 VM SKU 上可用,本地連接的 NVMe 或類似設備可以提供高性能,尤其是對於需要每秒輸入/輸出操作數 (IOPS) 和低延遲的用例。",
+ "guid": "e0902a54-a13c-4831-8dbe-c013010044f4",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集) 通過分析現有工作負載的磁碟性能和 VM SKU 來設置存儲配置檔。 將高級 SSD 用於生產 VM。 使用進階 SSD v2 調整磁碟的效能。使用本地連接的NVMe設備。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "它支援對 VM 的單根 I/O 虛擬化 (SR-IOV),從而大大提高了其網路性能。",
+ "guid": "6118c905-4ae3-4a5d-918f-16c2b268934c",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)請考慮啟用加速網路。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果應用程式需求增加,則規模集中的 VM 實例上的負載也會增加。自動縮放規則可確保你有足夠的資源來滿足需求。",
+ "guid": "e4ade8bb-7114-4d3f-9cba-8784905b707b",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)設置自動縮放規則,根據需求增加或減少規模集中的 VM 實例數。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "Virtual Machines Service Guide",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.en.json b/checklists-ext/wafsg_checklist.en.json
index 5221b8214..7dd6e3a5f 100644
--- a/checklists-ext/wafsg_checklist.en.json
+++ b/checklists-ext/wafsg_checklist.en.json
@@ -535,7 +535,7 @@
"text": "Plan for rule updates",
"description": "Plan enough time for updates before accessing Application Gateway or making further changes. For example, removing servers from backend pool might take some time because they have to drain existing connections.",
"type": "recommendation",
- "guid": "84e9e05f-2ab2-4087-8c5a-f1ae29768a58"
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc"
},
{
"waf": "Reliability",
@@ -543,7 +543,7 @@
"text": "Use health probes to detect backend unavailability",
"description": "If Application Gateway is used to load balance incoming traffic over multiple backend instances, we recommend the use of health probes. These will ensure that traffic is not routed to backends that are unable to handle the traffic.",
"type": "recommendation",
- "guid": "8947f1ed-79a0-428f-8c2a-66ba0aba1069"
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc"
},
{
"waf": "Reliability",
@@ -551,7 +551,7 @@
"text": "Review the impact of the interval and threshold settings on health probes",
"description": "The health probe sends requests to the configured endpoint at a set interval. Also, there's a threshold of failed requests that will be tolerated before the backend is marked unhealthy. These numbers present a trade-off.- Setting a higher interval puts a higher load on your service. Each Application Gateway instance sends its own health probes, so 100 instances every 30 seconds means 100 requests per 30 seconds.- Setting a lower interval leaves more time before an outage is detected.- Setting a low unhealthy threshold might mean that short, transient failures might take down a backend. - Setting a high threshold it can take longer to take a backend out of rotation.",
"type": "recommendation",
- "guid": "57a75825-4393-4411-a927-51c45e2c197e"
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425"
},
{
"waf": "Reliability",
@@ -559,7 +559,7 @@
"text": "Verify downstream dependencies through health endpoints",
"description": "Suppose each backend has its own dependencies to ensure failures are isolated. For example, an application hosted behind Application Gateway might have multiple backends, each connected to a different database (replica). When such a dependency fails, the application might be working but won't return valid results. For that reason, the health endpoint should ideally validate all dependencies. Keep in mind that if each call to the health endpoint has a direct dependency call, that database would receive 100 queries every 30 seconds instead of 1. To avoid this, the health endpoint should cache the state of the dependencies for a short period of time.",
"type": "recommendation",
- "guid": "18a6131e-128d-4b71-8daa-1c0beab8e7a5"
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed"
},
{
"waf": "Reliability",
@@ -639,7 +639,7 @@
"text": "Set up a TLS policy for enhanced security",
"description": "Set up a TLS policy for extra security. Ensure you're always using the latest TLS policy version available. This enforces TLS 1.2 and stronger ciphers.",
"type": "recommendation",
- "guid": "494320e9-b38c-4370-959d-094a44094864"
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32"
},
{
"waf": "Security",
@@ -647,7 +647,7 @@
"text": "Use AppGateway for TLS termination",
"description": "There are advantages of using Application Gateway for TLS termination:- Performance improves because requests going to different backends to have to re-authenticate to each backend.- Better utilization of backend servers because they don't have to perform TLS processing- Intelligent routing by accessing the request content.- Easier certificate management because the certificate only needs to be installed on Application Gateway.",
"type": "recommendation",
- "guid": "8df6ae56-3bfc-4244-81d6-9a725b5ed412"
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05"
},
{
"waf": "Security",
@@ -655,7 +655,7 @@
"text": "Use Azure Key Vault to store TLS certificates",
"description": "Application Gateway can be integrated with Key Vault. This provides stronger security, easier separation of roles and responsibilities, support for managed certificates, and an easier certificate renewal and rotation process.",
"type": "recommendation",
- "guid": "8b6244e7-e6ed-4eab-927c-ddbd506a87cf"
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5"
},
{
"waf": "Security",
@@ -663,7 +663,7 @@
"text": "When re-encrypting backend traffic, ensure the backend server certificate contains both the root and intermediate Certificate Authorities (CAs)",
"description": "A TLS certificate of the backend server must be issued by a well-known CA. If the certificate was not issued by a trusted CA, the Application Gateway checks if the certificate was issued by a trusted CA, and so on, until a trusted CA certificate is found. Only then a secure connection is established. Otherwise, Application Gateway marks the backend as unhealthy.",
"type": "recommendation",
- "guid": "d91bace4-beb9-4644-b8bc-f6565a84109b"
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed"
},
{
"waf": "Security",
@@ -671,7 +671,7 @@
"text": "Use an appropriate DNS server for backend pool resources",
"description": "When the backend pool contains a resolvable FQDN, the DNS resolution is based on a private DNS zone or custom DNS server (if configured on the VNet), or it uses the default Azure-provided DNS.",
"type": "recommendation",
- "guid": "12e3495d-cedc-48c3-9f80-6d61f4409aec"
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43"
},
{
"waf": "Security",
@@ -679,7 +679,7 @@
"text": "Comply with all NSG restrictions for Application Gateway",
"description": "NSGs are supported on Application Gateway subnet, but there are some restrictions. For instance, some communication with certain port ranges is prohibited. Make sure you understand the implications of those restrictions. For details, see Network security groups.",
"type": "recommendation",
- "guid": "7367ddbb-675a-4f67-8341-0ae2614fb35b"
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c"
},
{
"waf": "Security",
@@ -695,7 +695,7 @@
"text": "Be aware of Application Gateway capacity changes when enabling WAF",
"description": "When WAF is enabled, every request must be buffered by the Application Gateway until it fully arrives, checks if the request matches with any rule violation in its core rule set, and then forwards the packet to the backend instances. When there are large file uploads (30MB+ in size), it can result in a significant latency. Because Application Gateway capacity requirements are different with WAF, we do not recommend enabling WAF on Application Gateway without proper testing and validation.",
"type": "recommendation",
- "guid": "5e2a741b-2faa-4fce-b04f-656985ca8bca"
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f"
},
{
"waf": "cost",
@@ -743,7 +743,7 @@
"text": "Familiarize yourself with Application Gateway pricing",
"description": "For information about Application Gateway pricing, see Understanding Pricing for Azure Application Gateway and Web Application Firewall. You can also leverage the Pricing calculator.Ensure that the options are adequately sized to meet the capacity demand and deliver expected performance without wasting resources.",
"type": "recommendation",
- "guid": "167eeaec-1064-4598-a4c8-db6255140d52"
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c"
},
{
"waf": "Cost",
@@ -751,7 +751,7 @@
"text": "Review underutilized resources",
"description": "Identify and delete Application Gateway instances with empty backend pools to avoid unnecessary costs.",
"type": "recommendation",
- "guid": "5a3afdb7-3da6-400c-9761-822fdcc4c1f3"
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a"
},
{
"waf": "Cost",
@@ -767,7 +767,7 @@
"text": "Have a scale-in and scale-out policy",
"description": "A scale-out policy ensures that there will be enough instances to handle incoming traffic and spikes. Also, have a scale-in policy that makes sure the number of instances are reduced when demand drops. Consider the choice of instance size. The size can significantly impact the cost. Some considerations are described in the Estimate the Application Gateway instance count.For more information, see What is Azure Application Gateway v2?",
"type": "recommendation",
- "guid": "48d3c23e-76e5-43c7-83c9-6cc79abe08e0"
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315"
},
{
"waf": "Cost",
@@ -775,7 +775,7 @@
"text": "Review consumption metrics across different parameters",
"description": "You're billed based on metered instances of Application Gateway based on the metrics tracked by Azure. Evaluate the various metrics and capacity units and determine the cost drivers. For more information, see Microsoft Cost Management and Billing. The following metrics are key for Application Gateway. This information can be used to validate that the provisioned instance count matches the amount of incoming traffic.- Estimated Billed Capacity Units- Fixed Billable Capacity Units- Current Capacity UnitsFor more information, see Application Gateway metrics.Make sure you account for bandwidth costs.",
"type": "recommendation",
- "guid": "bc2c5670-3d5d-40bb-a600-0de389c60eb3"
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b"
},
{
"waf": "operations",
@@ -839,7 +839,7 @@
"text": "Monitor capacity metrics",
"description": "Use these metrics as indicators of utilization of the provisioned Application Gateway capacity. We strongly recommend setting up alerts on capacity. For details, see Application Gateway high traffic support.",
"type": "recommendation",
- "guid": "cd9a502b-e1a0-4e5a-934a-ecd1bfdef9fc"
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4"
},
{
"waf": "Operations",
@@ -855,7 +855,7 @@
"text": "Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
"description": "Diagnostic logs allow you to view firewall logs, performance logs, and access logs. Use these logs to manage and troubleshoot issues with Application Gateway instances. For more information, see Back-end health and diagnostic logs for Application Gateway.",
"type": "recommendation",
- "guid": "85525215-51d6-4ed6-8206-2a0871054288"
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca"
},
{
"waf": "Operations",
@@ -863,7 +863,7 @@
"text": "Use Azure Monitor Network Insights",
"description": "Azure Monitor Network Insights provides a comprehensive view of health and metrics for network resources, including Application Gateway. For additional details and supported capabilities for Application Gateway, see Azure Monitor Network insights.",
"type": "recommendation",
- "guid": "5eaa9827-d3b5-4be9-a0d4-4838a2ff255b"
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd"
},
{
"waf": "Operations",
@@ -871,7 +871,7 @@
"text": "Match timeout settings with the backend application",
"description": "Ensure you have configured the IdleTimeout settings to match the listener and traffic characteristics of the backend application. The default value is set to four minutes and can be configured to a maximum of 30. For more information, see Load Balancer TCP Reset and Idle Timeout.For workload considerations, see Monitoring application health for reliability.",
"type": "recommendation",
- "guid": "fc7095dc-d1e1-473c-8eac-17cde3631926"
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c"
},
{
"waf": "Operations",
@@ -879,7 +879,7 @@
"text": "Monitor Key Vault configuration issues using Azure Advisor",
"description": "Application Gateway checks for the renewed certificate version in the linked Key Vault at every 4-hour interval. If it is inaccessible due to any incorrect Key Vault configuration, it logs that error and pushes a corresponding Advisor recommendation. You must configure the Advisor alerts to stay updated and fix such issues immediately to avoid any Control or Data plane related problems. For more information, see Investigating and resolving key vault errors. To set an alert for this specific case, use the Recommendation Type as Resolve Azure Key Vault issue for your Application Gateway.",
"type": "recommendation",
- "guid": "926a13b1-2678-47b0-bacf-ffa0a459c2d8"
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca"
},
{
"waf": "Operations",
@@ -887,7 +887,7 @@
"text": "Consider SNAT port limitations in your design",
"description": "SNAT port limitations are important for backend connections on the Application Gateway. There are separate factors that affect how Application Gateway reaches the SNAT port limit. For example, if the backend is a public IP address, it will require its own SNAT port. In order to avoid SNAT port limitations, you can increase the number of instances per Application Gateway, scale out the backends to have more IP addresses, or move your backends into the same virtual network and use private IP addresses for the backends.Requests per second (RPS) on the Application Gateway will be affected if the SNAT port limit is reached. For example, if an Application Gateway reaches the SNAT port limit, then it won't be able to open a new connection to the backend, and the request will fail.",
"type": "recommendation",
- "guid": "2c659b9a-c873-4274-ba4f-752f8f44e31c"
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084"
},
{
"waf": "performance",
@@ -935,7 +935,7 @@
"text": "Define the minimum instance count",
"description": "For Application Gateway v2 SKU, autoscaling takes some time (approximately six to seven minutes) before the additional set of instances is ready to serve traffic. During that time, if there are short spikes in traffic, expect transient latency or loss of traffic.We recommend that you set your minimum instance count to an optimal level. After you estimate the average instance count and determine your Application Gateway autoscaling trends, define the minimum instance count based on your application patterns. For information, see Application Gateway high traffic support.Check the Current Compute Units for the past one month. This metric represents the gateway's CPU utilization. To define the minimum instance count, divide the peak usage by 10. For example, if your average Current Compute Units in the past month is 50, set the minimum instance count to five.",
"type": "recommendation",
- "guid": "ce9ccebe-833d-425d-ad18-75b2674c5852"
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1"
},
{
"waf": "Performance",
@@ -943,7 +943,7 @@
"text": "Define the maximum instance count",
"description": "We recommend 125 as the maximum autoscale instance count. Make sure the subnet that has the Application Gateway has sufficient available IP addresses to support the scale-up set of instances.Setting the maximum instance count to 125 has no cost implications because you're billed only for the consumed capacity.",
"type": "recommendation",
- "guid": "cf5545a9-617c-41b4-be24-364c29921643"
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366"
},
{
"waf": "Performance",
@@ -951,7 +951,7 @@
"text": "Define Application Gateway subnet size",
"description": "Application Gateway needs a dedicated subnet within a virtual network. The subnet can have multiple instances of the deployed Application Gateway resource. You can also deploy other Application Gateway resources in that subnet, v1 or v2 SKU.Here are some considerations for defining the subnet size:- Application Gateway uses one private IP address per instance and another private IP address if a private front-end IP is configured.- Azure reserves five IP addresses in each subnet for internal use.- Application Gateway (Standard or WAF SKU) can support up to 32 instances. Taking 32 instance IP addresses + 1 private front-end IP + 5 Azure reserved, a minimum subnet size of /26 is recommended. Because the Standard_v2 or WAF_v2 SKU can support up to 125 instances, using the same calculation, a subnet size of /24 is recommended.- If you want to deploy additional Application Gateway resources in the same subnet, consider the additional IP addresses that will be required for their maximum instance count for both, Standard and Standard v2.",
"type": "recommendation",
- "guid": "f84de96e-5a5f-4977-b349-c78ec00f7086"
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a"
},
{
"waf": "Performance",
@@ -1847,7 +1847,7 @@
"text": "Test ExpressRoute gateway performance to meet work load requirements.",
"description": "Use Azure Connectivity Toolkit to test performance across your ExpressRoute circuit to understand bandwidth capacity and latency of your network connection.",
"type": "recommendation",
- "guid": "587ddb10-bc25-40df-8133-61172142bbfe"
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd"
},
{
"waf": "Performance",
@@ -1855,7 +1855,7 @@
"text": "Increase the size of the ExpressRoute gateway.",
"description": "Upgrade to a higher gateway SKU for improved throughput performance between on-premises and Azure environment.",
"type": "recommendation",
- "guid": "095083c6-98ff-40ad-ac52-f87b1adaa800"
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa"
},
{
"waf": "Performance",
@@ -1903,7 +1903,7 @@
"text": "Configure data redundancy: For maximum durability, choose a configuration that copies data across availability zones or global regions. For maximum availability, choose a configuration that allows clients to read data from the secondary region during an outage of the primary region.",
"description": "",
"type": "checklist",
- "guid": "d4d81d5e-7082-4cd2-8198-52f388cafdd8"
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23"
},
{
"waf": "reliability",
@@ -1927,7 +1927,7 @@
"text": "Create a recovery plan: Consider data protection features, backup and restore operations, or failover procedures. Prepare for potential data loss and data inconsistencies and the time and cost of failing over. For more information, see Recommendations for designing a disaster recovery strategy.",
"description": "",
"type": "checklist",
- "guid": "a2ff95c9-d626-4081-9263-9cf69bdad742"
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1"
},
{
"waf": "reliability",
@@ -2271,7 +2271,7 @@
"text": "Create maintenance and emergency recovery plans: Consider data protection features, backup and restore operations, and failover procedures. Prepare for potential data loss and data inconsistencies and the time and cost of failing over.",
"description": "",
"type": "checklist",
- "guid": "9255b4bb-6217-43e4-84ee-4fc892c834c0"
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1"
},
{
"waf": "operations",
@@ -2295,7 +2295,7 @@
"text": "Use infrastructure as code (IaC) to define the details of your storage accounts in Azure Resource Manager templates (ARM templates), Bicep, or Terraform.",
"description": "You can use your existing DevOps processes to deploy new storage accounts, and use Azure Policy to enforce their configuration.",
"type": "recommendation",
- "guid": "357d0398-f29a-4041-b9b5-1caf52e2e9da"
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1"
},
{
"waf": "Operations",
@@ -2303,7 +2303,7 @@
"text": "Use Storage insights to track the health and performance of your storage accounts. Storage insights provides a unified view of the failures, performance, availability, and capacity for all your storage accounts.",
"description": "You can track the health and operation of each of your accounts. Easily create dashboards and reports that stakeholders can use to track the health of your storage accounts.",
"type": "recommendation",
- "guid": "68d10f36-7a7f-46fd-a722-69fc489e4df6"
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9"
},
{
"waf": "Operations",
@@ -3639,7 +3639,7 @@
"text": "Workload architecture: Use a Web Application Firewall to secure HTTP(S) traffic.",
"description": "To scan incoming traffic for potential attacks, use a web application firewall such as Azure Web Application Firewall (WAF) on Azure Application Gateway or Azure Front Door.",
"type": "recommendation",
- "guid": "57f972b6-5cb8-4041-a171-2f74e0fc3fdc"
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea"
},
{
"waf": "Security",
@@ -3911,7 +3911,7 @@
"text": "Cluster and workload architectures: Configure monitoring of cluster with Container insights.",
"description": "Container insights help monitor the performance of containers by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API and container logs.",
"type": "recommendation",
- "guid": "0e96c4ea-2e5d-4890-acaf-bfed9976c3e5"
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03"
},
{
"waf": "Operations",
@@ -3935,7 +3935,7 @@
"text": "Cluster architecture: Adopt a multiregion strategy by deploying AKS clusters deployed across different Azure regions to maximize availability and provide business continuity.",
"description": "Internet facing workloads should leverage Azure Front Door or Azure Traffic Manager to route traffic globally across AKS clusters.",
"type": "recommendation",
- "guid": "c7f704cc-a8fc-418f-bd82-454ea7c4c891"
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c"
},
{
"waf": "Operations",
@@ -5548,35 +5548,35 @@
],
"categories": [],
"waf": [
- {
- "name": "Performance"
- },
{
"name": "security"
},
{
- "name": "Security"
+ "name": "Cost"
},
{
- "name": "operations"
+ "name": "cost"
},
{
"name": "Reliability"
},
{
- "name": "Cost"
+ "name": "reliability"
},
{
- "name": "performance"
+ "name": "Security"
},
{
- "name": "reliability"
+ "name": "performance"
},
{
"name": "Operations"
},
{
- "name": "cost"
+ "name": "operations"
+ },
+ {
+ "name": "Performance"
}
],
"yesno": [
@@ -5613,6 +5613,6 @@
"name": "WAF Service Guides",
"waf": "all",
"state": "preview",
- "timestamp": "July 14, 2024"
+ "timestamp": "August 05, 2024"
}
}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.es.json b/checklists-ext/wafsg_checklist.es.json
new file mode 100644
index 000000000..daf6596ce
--- /dev/null
+++ b/checklists-ext/wafsg_checklist.es.json
@@ -0,0 +1,5618 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "",
+ "guid": "a549f1f2-55ec-4094-b8c5-1be6fd4f4d38",
+ "service": "App Service Web Apps",
+ "text": "Priorizar los flujos de usuarios: No todos los flujos son igual de críticos. Asigne prioridades a cada flujo para guiar sus decisiones de diseño. El diseño del flujo de usuario puede influir en los niveles de servicio y el número de instancias que elija para un plan y una configuración de App Service.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "a67a6739-c1af-48d6-a3d1-001fb5105139",
+ "service": "App Service Web Apps",
+ "text": "Anticipe posibles errores: planifique estrategias de mitigación para posibles errores. En la tabla siguiente se muestran ejemplos de análisis de modo de error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "b47d664a-75c8-4739-80d8-6cf9f60abb56",
+ "service": "App Service Web Apps",
+ "text": "Cree redundancia: cree redundancia en la aplicación y en la infraestructura de soporte. Distribuya las instancias entre las zonas de disponibilidad para mejorar la tolerancia a errores. El tráfico se enruta a otras zonas si se produce un error en una zona. Implemente su aplicación en varias regiones para asegurarse de que su aplicación permanezca disponible, incluso si una región completa experimenta una interrupción.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "6b8fa1ed-cfa0-4435-9146-b3d1a8edb432",
+ "service": "App Service Web Apps",
+ "text": "Tenga una estrategia de escalado confiable: la carga inesperada en una aplicación puede hacer que no sea confiable. Considere el enfoque de escalado adecuado en función de las características de su carga de trabajo. A veces se puede escalar verticalmente para controlar la carga. Sin embargo, si la carga sigue aumentando, escale horizontalmente a nuevas instancias. Prefiera el escalado automático en lugar de los enfoques manuales. Mantenga siempre un búfer de capacidad adicional durante las operaciones de escalado para evitar la degradación del rendimiento.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "ac7f205b-9117-4b49-8f22-9f31528dfdbd",
+ "service": "App Service Web Apps",
+ "text": "Planifique su capacidad de recuperación: La redundancia es crucial para la continuidad del negocio. Conmutación por error a otra instancia si no se puede acceder a una instancia. Explore las capacidades de recuperación automática de App Service, como la reparación automática de instancias.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "55917a7d-4410-45fc-bba7-42e64d85c9cd",
+ "service": "App Service Web Apps",
+ "text": "Realice pruebas de confiabilidad: realice pruebas de carga para evaluar la confiabilidad y el rendimiento de su aplicación bajo carga. Los planes de prueba deben incluir escenarios que validen las operaciones de recuperación automatizadas.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "dcceb232-19d6-48dc-a91f-5b4907cc3dda",
+ "service": "App Service Web Apps",
+ "text": "Uso de sondeos de estado para identificar a los trabajadores que no responden: App Service tiene funcionalidades integradas que hacen ping periódicamente a una ruta de acceso específica de la aplicación web. Las instancias que no responden se eliminan del equilibrador de carga y se reemplazan por una nueva instancia.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Un plan premium de App Service ofrece características de escalado avanzadas y garantiza la redundancia si se producen errores.",
+ "guid": "696fd187-e2a8-45e8-bbe7-a6d3cb1fca62",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Elija el nivel Premium de un plan de App Service para cargas de trabajo de producción. Establezca el número máximo y mínimo de trabajadores de acuerdo con su planificación de capacidad. Para obtener más información, consulte Introducción al plan de App Service.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La aplicación puede soportar errores en una sola zona cuando hay varias instancias distribuidas entre zonas. El tráfico cambia automáticamente a instancias en buen estado en otras zonas y mantiene la confiabilidad de la aplicación si una zona no está disponible.",
+ "guid": "830faa5e-7767-4526-8550-547a345dd398",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite la redundancia de zona. Considere la posibilidad de aprovisionar más de tres instancias para mejorar la tolerancia a errores. Compruebe la compatibilidad regional con la redundancia de zona, ya que no todas las regiones ofrecen esta función.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las solicitudes entrantes se distribuyen uniformemente entre todos los nodos disponibles cuando se deshabilita la afinidad de ARR. Las solicitudes distribuidas uniformemente evitan que el tráfico abrume a un solo nodo. Las solicitudes se pueden redirigir sin problemas a otros nodos en buen estado si un nodo no está disponible. Evite la afinidad de sesión para asegurarse de que la instancia de App Service permanezca sin estado. Un Servicio de aplicaciones sin estado reduce la complejidad y garantiza un comportamiento coherente en todos los nodos. Quite las sesiones permanentes para que App Service pueda agregar o quitar instancias para escalar horizontalmente.",
+ "guid": "3551bbd4-1f44-4bca-b25c-53e16f79cafe",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Considere la posibilidad de deshabilitar la característica de afinidad de enrutamiento de solicitudes de aplicación (ARR). La afinidad de ARR crea sesiones permanentes que redirigen a los usuarios al nodo que manejó sus solicitudes anteriores.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las reglas de recuperación automática ayudan a la aplicación a recuperarse automáticamente de problemas inesperados. Las reglas configuradas desencadenan acciones de reparación cuando se superan los umbrales. La reparación automática permite un mantenimiento proactivo automático.",
+ "guid": "2a428ce1-dc25-4a1b-baf4-5edc909369fe",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Defina reglas de recuperación automática en función del recuento de solicitudes, las solicitudes lentas, los límites de memoria y otros indicadores que forman parte de la línea base de rendimiento. Considere esta configuración como parte de su estrategia de escalado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las comprobaciones de estado pueden detectar problemas de forma temprana. A continuación, el sistema puede tomar automáticamente medidas correctivas cuando se produce un error en una solicitud de comprobación de estado. El equilibrador de carga aleja el tráfico de las instancias en mal estado, lo que dirige a los usuarios a los nodos en buen estado.",
+ "guid": "4dd04acd-7d69-45b8-aa22-223c4ecc0a8c",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Habilite la característica de comprobación de estado y proporcione una ruta que responda a las solicitudes de comprobación de estado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "e13358d7-cf1a-4356-a8eb-afe901ca3b36",
+ "service": "App Service Web Apps",
+ "text": "Revisión de las líneas base de seguridad: para mejorar la posición de seguridad de la aplicación hospedada en un plan de App Service, revise la línea base de seguridad para App Service.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "cedf41d1-6f8a-4898-9cbd-064e66931bfa",
+ "service": "App Service Web Apps",
+ "text": "Utilice el tiempo de ejecución y las bibliotecas más recientes: pruebe exhaustivamente las compilaciones de su aplicación antes de realizar actualizaciones para detectar problemas temprano y garantizar una transición sin problemas a la nueva versión. App Service admite la directiva de compatibilidad con Language Runtime para actualizar las pilas existentes y retirar las pilas de fin de soporte.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "469151fd-f51c-43ab-84f7-5d6c01e99fba",
+ "service": "App Service Web Apps",
+ "text": "Crear segmentación a través de límites de aislamiento para contener la infracción: Aplique la segmentación de identidad. Por ejemplo, implemente el control de acceso basado en roles (RBAC) para asignar permisos específicos en función de los roles. Siga el principio de privilegios mínimos para limitar los derechos de acceso solo a lo necesario. También cree segmentación a nivel de red. Inserte aplicaciones de App Service en una red virtual de Azure para el aislamiento y defina grupos de seguridad de red (NSG) para filtrar el tráfico.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "794e1680-facc-4258-89cb-a07f1fa6e4d0",
+ "service": "App Service Web Apps",
+ "text": "Aplicar controles de acceso a las identidades: restrinja el acceso interno a la aplicación web y el acceso externo desde la aplicación web a otros recursos. Esta configuración aplica controles de acceso a las identidades y ayuda a mantener la posición de seguridad general de la carga de trabajo.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "0ff3e194-df50-4856-b798-7487e5fc4d34",
+ "service": "App Service Web Apps",
+ "text": "Controle el tráfico de red hacia y desde la aplicación: no exponga los puntos de conexión de la aplicación a la red pública de Internet. En su lugar, agregue un punto de conexión privado en la aplicación web que se coloque en una subred dedicada. Enfrente su aplicación con un proxy inverso que se comunique con ese punto de conexión privado. Considere la posibilidad de usar Application Gateway o Azure Front Door para ese propósito.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "a6fcbd07-0da4-4386-902d-6708c5a5cc23",
+ "service": "App Service Web Apps",
+ "text": "Cifre datos: proteja los datos en tránsito con la seguridad de la capa de transporte (TLS) de extremo a extremo. Utilice las claves administradas por el cliente para el cifrado completo de los datos en reposo. Para obtener más información, consulte Cifrado en reposo mediante claves administradas por el cliente.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "410bf979-2e37-4dfc-82ba-33dc8e9fbbf0",
+ "service": "App Service Web Apps",
+ "text": "Reduzca la superficie expuesta a ataques: elimine las configuraciones predeterminadas que no necesite. Por ejemplo, deshabilite la depuración remota, la autenticación local para los sitios del Administrador de control de código fuente (SCM) y la autenticación básica. Deshabilite los protocolos no seguros como HTTP y el Protocolo de transferencia de archivos (FTP). Aplicación de configuraciones a través de directivas de Azure. Para más información, consulte Directivas de Azure.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "7157fe29-fe06-4c84-965d-8d450ac4bfe0",
+ "service": "App Service Web Apps",
+ "text": "Proteger los secretos de las aplicaciones: debe manejar información confidencial, como claves de API o tokens de autenticación. En lugar de codificar estos secretos directamente en el código de la aplicación o en los archivos de configuración, puede usar referencias de Azure Key Vault en la configuración de la aplicación. Cuando se inicia la aplicación, App Service recupera automáticamente los valores secretos de Key Vault mediante la identidad administrada de la aplicación.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "ae9e2e30-a31e-4459-ae31-fbcb8307016e",
+ "service": "App Service Web Apps",
+ "text": "Habilite los registros de recursos para su aplicación: habilite los registros de recursos para su aplicación a fin de crear registros de actividad completos que proporcionen datos valiosos durante las investigaciones que siguen a los incidentes de seguridad.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "La aplicación recupera secretos de Key Vault para autenticar la comunicación externa de la aplicación. Azure administra la identidad y no requiere que aprovisione ni rote ningún secreto. Tiene identidades distintas para la granularidad del control. Las identidades distintas facilitan la revocación si una identidad se ve comprometida.",
+ "guid": "8f1a9e86-9309-4e41-bde5-0828c15daebf",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Asigne identidades administradas a la aplicación web. Para mantener los límites de aislamiento, no comparta ni reutilice identidades entre aplicaciones. Asegúrese de conectarse de forma segura a su registro de contenedor si usa contenedores para su implementación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los dominios personalizados permiten una comunicación segura a través de HTTPS mediante el protocolo de seguridad de la capa de transporte (TLS), que garantiza la protección de los datos confidenciales y genera confianza en los usuarios.",
+ "guid": "cb4271e8-40e1-4cd3-ad1e-5d4584c485d7",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Configurar dominios personalizados para aplicaciones. Deshabilite HTTP y acepte solo solicitudes HTTPS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al usar esta característica, no tiene que usar bibliotecas de autenticación en el código de la aplicación, lo que reduce la complejidad. El usuario ya está autenticado cuando una solicitud llega a la aplicación.",
+ "guid": "0e19e111-ccad-457f-94b5-ee2deebc553c",
+ "service": "App Service Web Apps",
+ "text": "(App Service) evalúe si la autenticación integrada de App Service es el mecanismo adecuado para autenticar a los usuarios que acceden a la aplicación. La autenticación integrada de App Service se integra con el identificador de Microsoft Entra. Esta característica controla la validación de tokens y la administración de identidades de usuario en varios proveedores de inicio de sesión y es compatible con OpenID Connect. Con esta característica, no tiene autorización a nivel granular y no tiene un mecanismo para probar la autenticación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Obtenga las ventajas de seguridad de usar una red virtual de Azure. Por ejemplo, la aplicación puede acceder de forma segura a los recursos dentro de la red. Agregue un punto de conexión privado para ayudar a proteger la aplicación. Los puntos de conexión privados limitan la exposición directa a la red pública y permiten el acceso controlado a través del proxy inverso.",
+ "guid": "1835b31e-37b4-431a-b783-eb28fec46518",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Configure la aplicación para la integración de red virtual. Use puntos de conexión privados para aplicaciones de App Service. Bloquea todo el tráfico público. Enrute la extracción de la imagen de contenedor a través de la integración de red virtual. Todo el tráfico saliente de la aplicación pasa a través de la red virtual.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "No se recomienda la autenticación básica como método de implementación seguro. Microsoft Entra ID emplea la autenticación basada en tokens de OAuth 2.0, que ofrece numerosas ventajas y mejoras que abordan las limitaciones asociadas a la autenticación básica. Las políticas restringen el acceso a los recursos de la aplicación, solo permiten solicitudes de dominios específicos y protegen las solicitudes entre regiones.",
+ "guid": "07adcdee-eecc-43c4-9cf8-40e06efa96cc",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Para implementar la protección: - Deshabilite la autenticación básica que usa un nombre de usuario y una contraseña en favor de la autenticación basada en el identificador de Microsoft Entra. - Desactiva la depuración remota para que no se abran los puertos de entrada. - Habilite las políticas de CORS para ajustar las solicitudes entrantes. - Deshabilite protocolos, como FTP.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los secretos se mantienen independientes de la configuración de la aplicación. La configuración de la aplicación se cifra en reposo. App Service también administra las rotaciones secretas.",
+ "guid": "298db56c-a733-4a8c-a009-224a1417de53",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Use siempre referencias de Key Vault como configuración de la aplicación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Obtenga protección en tiempo real para los recursos que se ejecutan en un plan de App Service. Protéjase contra las amenazas y mejore su postura de seguridad general.",
+ "guid": "6cd4ee41-8ebd-4a7e-9da4-793705575ea0",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite Microsoft Defender for Cloud para App Service.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El registro captura patrones de acceso. Registra eventos relevantes que proporcionan información valiosa sobre cómo los usuarios interactúan con una aplicación o plataforma. Esta información es crucial para fines de responsabilidad, cumplimiento y seguridad.",
+ "guid": "93a4781a-8e68-4ad4-af67-4ae28d534e6e",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Habilite el registro de diagnóstico y agregue instrumentación a la aplicación. Los registros se envían a cuentas de Azure Storage, Azure Event Hubs y Log Analytics. Para obtener más información sobre los tipos de registro de auditoría, consulte Tipos de registro admitidos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "bb84a1f1-7f43-4656-bc0d-70abc288979b",
+ "service": "App Service Web Apps",
+ "text": "Calcule el costo inicial: como parte del ejercicio de modelado de costos, use la calculadora de precios de Azure para evaluar los costos aproximados asociados a los distintos niveles en función del número de instancias que planea ejecutar. Cada nivel de App Service ofrece diferentes opciones de proceso.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "8616b469-c0d7-4da8-afe4-28a9c55941b5",
+ "service": "App Service Web Apps",
+ "text": "Evalúe las opciones con descuento: los niveles superiores incluyen instancias informáticas dedicadas. Puede aplicar un descuento por reserva si la carga de trabajo tiene un patrón de uso predecible y coherente. Asegúrese de analizar los datos de uso para determinar el tipo de reserva que se adapta a su carga de trabajo. Para obtener más información, consulte Ahorro de costos con instancias reservadas de App Service.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "08ccd533-7d3f-438e-8274-a30d3e10d81e",
+ "service": "App Service Web Apps",
+ "text": "Descripción de los medidores de uso: Azure cobra una tarifa por hora, prorrateada por segundo, en función del plan de tarifa de App Service. Los cargos se aplican a cada instancia escalada horizontalmente del plan, en función del tiempo que asigne a la instancia de VM. Preste atención a los recursos de proceso infrautilizados que podrían aumentar los costos como resultado de una sobreasignación debido a una selección de SKU subóptima o a una configuración de reducción horizontal mal configurada.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "9d33583d-156b-4a49-b361-1eae39f5d6df",
+ "service": "App Service Web Apps",
+ "text": "Tenga en cuenta las ventajas y desventajas entre la densidad y el aislamiento: puede usar planes de App Service para hospedar varias aplicaciones en el mismo proceso, lo que ahorra costos con entornos compartidos. Para obtener más información, consulte Compensaciones.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "19d66260-5bfe-466e-89b0-f2573223acf9",
+ "service": "App Service Web Apps",
+ "text": "Evalúe el efecto de su estrategia de escalado en el costo: debe diseñar, probar y configurar correctamente el escalado horizontal y el escalado horizontal al implementar el escalado automático. Establezca límites máximos y mínimos precisos para el escalado automático.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "b4798bde-d65a-4c44-a75e-e7c8c05df60e",
+ "service": "App Service Web Apps",
+ "text": "Optimice los costos del entorno: considere el nivel Básico o Gratuito para ejecutar entornos de preproducción. Estos niveles son de bajo rendimiento y bajo costo. Si utiliza el nivel Básico o Gratuito, utilice la gobernanza para aplicar el nivel, restringir el número de instancias y CPU, restringir el escalado y limitar la retención de registros.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "0cfc5cbc-61b7-4b64-a2eb-52e15c243cad",
+ "service": "App Service Web Apps",
+ "text": "Implementar patrones de diseño: esta estrategia reduce el volumen de solicitudes que genera la carga de trabajo. Considere la posibilidad de usar patrones como el patrón Backends for Frontends y el patrón Gateway Aggregation, que pueden minimizar el número de solicitudes y reducir los costos.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "300e19c7-7406-47ca-aeca-bca5032f2b8a",
+ "service": "App Service Web Apps",
+ "text": "Compruebe regularmente los costes relacionados con los datos: Los periodos de retención de datos prolongados o los costosos niveles de almacenamiento pueden provocar altos costes de almacenamiento. Se pueden acumular más gastos debido al uso del ancho de banda y a la retención prolongada de los datos de registro.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "085263b2-cffe-4537-9ecb-75ef967c2985",
+ "service": "App Service Web Apps",
+ "text": "Optimice los costos de implementación: aproveche las ranuras de implementación para optimizar los costos. La ranura se ejecuta en el mismo entorno informático que la instancia de producción. Úselos estratégicamente para escenarios como implementaciones azul-verde que cambian entre ranuras. Este enfoque minimiza el tiempo de inactividad y garantiza transiciones suaves.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Los niveles Gratis y Básico son económicos en comparación con los niveles superiores. Proporcionan una solución rentable para entornos que no son de producción y que no necesitan todas las funciones y el rendimiento de los planes premium.",
+ "guid": "df7294a6-460e-4d50-b4a9-66141caada1d",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Elija los niveles Gratis o Básico para entornos inferiores. Recomendamos estos niveles para uso experimental. Elimine los niveles cuando ya no los necesite.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los planes de desarrollo y pruebas proporcionan tarifas reducidas para los servicios de Azure, lo que los hace rentables para entornos que no son de producción. Utilice instancias reservadas para pagar por adelantado los recursos informáticos y obtener importantes descuentos.",
+ "guid": "a4bd3bc2-554f-483f-9707-dcf9f1b7cdd2",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Aproveche los descuentos y explore los precios preferidos para: - Entornos inferiores con planes de desarrollo y pruebas. - Reservas de Azure y planes de ahorro de Azure para el proceso dedicado que se aprovisiona en el nivel Premium V3 y App Service Environment. Utilice instancias reservadas para cargas de trabajo estables que tengan patrones de uso predecibles.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede identificar picos de costos, ineficiencias o gastos inesperados desde el principio. Este enfoque proactivo le ayuda a proporcionar controles presupuestarios para evitar gastos excesivos.",
+ "guid": "12f02b69-d400-403d-9e8a-1a67ed102764",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Supervise los costos en los que incurren los recursos de App Service. Ejecute la herramienta de análisis de costos en Azure Portal. Cree presupuestos y alertas para notificar a las partes interesadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Evite el desperdicio y reduzca los gastos innecesarios.",
+ "guid": "e48373a3-b551-4715-853c-dee4f114466e",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Amplíe cuando la demanda disminuya. Para reducir horizontalmente, defina reglas de escalado para reducir el número de instancias en Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "3aa6c22d-807b-4efd-9ebe-b290c995d0b3",
+ "service": "App Service Web Apps",
+ "text": "Administrar versiones: use ranuras de implementación para administrar versiones de manera eficaz. Puede implementar la aplicación en una ranura, realizar pruebas y validar su funcionalidad. Después de la verificación, puede mover sin problemas la aplicación a producción. Este proceso no incurre en costos adicionales porque la ranura se ejecuta en el mismo entorno de máquina virtual (VM) que la instancia de producción.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "751098a9-7103-4250-bd52-f48a5fbe8b73",
+ "service": "App Service Web Apps",
+ "text": "Ejecute pruebas automatizadas: antes de promocionar una versión de su aplicación web, pruebe exhaustivamente su rendimiento, funcionalidad e integración con otros componentes. Use Azure Load Testing, que se integra con Apache JMeter, una herramienta popular para las pruebas de rendimiento. Explore herramientas automatizadas para otros tipos de pruebas, como Phantom para pruebas funcionales.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "0de22a93-9404-4512-b374-6c753628943e",
+ "service": "App Service Web Apps",
+ "text": "Implementación de unidades inmutables: implemente el patrón Marcas de implementación para compartimentar App Service en una marca inmutable. App Service admite el uso de contenedores, que son inherentemente inmutables. Considere la posibilidad de personalizar contenedores para la aplicación web de App Service.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "3175ebdb-2846-4f48-b450-278df163c188",
+ "service": "App Service Web Apps",
+ "text": "Mantenga seguros los entornos de producción: cree planes de App Service independientes para ejecutar entornos de producción y preproducción. No realice cambios directamente en el entorno de producción para garantizar la estabilidad y la fiabilidad. Las instancias separadas permiten flexibilidad en el desarrollo y las pruebas antes de promover cambios en la producción.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "b883e190-a830-4bf4-8c08-ee3b85248abf",
+ "service": "App Service Web Apps",
+ "text": "Administrar certificados: en el caso de los dominios personalizados, debe administrar los certificados TLS.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede detectar problemas rápidamente y tomar las medidas necesarias para mantener la disponibilidad y el rendimiento.",
+ "guid": "75f6aad9-2abc-4171-9715-ba708928d39a",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Supervise el estado de las instancias y active los sondeos de estado de las instancias. Configure una ruta de acceso específica para controlar las solicitudes de sondeo de estado.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico proporcionan información valiosa sobre el comportamiento de la aplicación. Supervise los patrones de tráfico e identifique anomalías.",
+ "guid": "91d861ad-a4ae-462e-8775-56cbecb31951",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Habilite los registros de diagnóstico para la aplicación y la instancia. El registro frecuente puede ralentizar el rendimiento del sistema, aumentar los costos de almacenamiento e introducir riesgos si tiene acceso no seguro a los registros. Siga estas prácticas recomendadas: - Registre el nivel correcto de información. - Establecer políticas de retención. - Mantenga un registro de auditoría de los accesos autorizados y los intentos no autorizados. - Tratar los registros como datos y aplicar controles de protección de datos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "App Service controla automáticamente procesos como la adquisición de certificados, la verificación de certificados, la renovación de certificados y la importación de certificados de Key Vault. Como alternativa, cargue el certificado en Key Vault y autorice al proveedor de recursos de App Service a acceder a él.",
+ "guid": "70e24ecc-5113-4d7d-8a79-8ac24fe1f838",
+ "service": "App Service Web Apps",
+ "text": "(Servicio de aplicaciones) Aproveche los certificados administrados de App Service para descargar la administración de certificaciones en Azure.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Evite el tiempo de inactividad y los errores. Vuelva rápidamente al último estado bueno conocido si detecta un problema después de un intercambio.",
+ "guid": "7a592a00-a940-4d2e-a919-56ad3237092e",
+ "service": "App Service Web Apps",
+ "text": "(Plan de App Service) Valide los cambios de la aplicación en la ranura de ensayo antes de intercambiarla por la ranura de producción.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "018624c9-6396-4e1c-8b0c-83d39b40c2a1",
+ "service": "App Service Web Apps",
+ "text": "Identifique y supervise los indicadores de rendimiento: establezca objetivos para los indicadores clave de la aplicación, como el volumen de solicitudes entrantes, el tiempo que tarda la aplicación en responder a las solicitudes, las solicitudes pendientes y los errores en las respuestas HTTP. Tenga en cuenta los indicadores clave como parte de la línea base de rendimiento para la carga de trabajo.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "c66aabbd-8b2a-4295-9492-78cd5aea690a",
+ "service": "App Service Web Apps",
+ "text": "Evalúe la capacidad: simule varios escenarios de usuario para determinar la capacidad óptima que necesita para controlar el tráfico esperado. Utilice las pruebas de carga para comprender cómo se comporta la aplicación en diferentes niveles de carga.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "7e11019e-4329-458a-b84a-9233aa8de1a5",
+ "service": "App Service Web Apps",
+ "text": "Seleccione el nivel adecuado: use el proceso dedicado para las cargas de trabajo de producción. Los niveles Premium ofrecen SKU más grandes con mayor capacidad de memoria y CPU, más instancias y más características, como redundancia de zona. Para obtener más información, consulte Plan de tarifa Premium V3.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "97fdfb16-a73b-497a-853a-fe608cfc1750",
+ "service": "App Service Web Apps",
+ "text": "Optimice su estrategia de escalado: cuando sea posible, utilice el escalado automático en lugar de ajustar manualmente el número de instancias a medida que cambia la carga de la aplicación. Con el escalado automático, App Service ajusta la capacidad del servidor en función de reglas o desencadenadores predefinidos. Asegúrese de realizar pruebas de rendimiento adecuadas y establecer las reglas correctas para los desencadenadores correctos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "45d7e1a5-2b7e-4b6b-8925-bf0b760a9d7e",
+ "service": "App Service Web Apps",
+ "text": "Usar el almacenamiento en caché: la recuperación de información de un recurso que no cambia con frecuencia y cuyo acceso es costoso afecta al rendimiento. Las consultas complejas, incluidas las combinaciones y las búsquedas múltiples, contribuyen al tiempo de ejecución. Realice el almacenamiento en caché para minimizar el tiempo de procesamiento y la latencia. Caché los resultados de las consultas para evitar repetidos viajes de ida y vuelta a la base de datos o al back-end y reducir el tiempo de procesamiento de las solicitudes posteriores.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "c8094d1c-6371-4984-98c1-ca5d72a7732d",
+ "service": "App Service Web Apps",
+ "text": "Revise los antipatrones de rendimiento: para asegurarse de que la aplicación web funciona y se escala de acuerdo con los requisitos de su negocio, evite los antipatrones típicos. Estos son algunos antipatrones que App Service corrige.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "La aplicación nunca se descarga con Always On habilitado.",
+ "guid": "2c97ff90-e7cd-4888-a0c9-c21ea287071c",
+ "service": "App Service Web Apps",
+ "text": "Habilite la opción Siempre activo cuando las aplicaciones compartan un único plan de App Service. Las aplicaciones de App Service se descargan automáticamente cuando están inactivas para ahorrar recursos. La siguiente solicitud desencadena un inicio en frío, lo que puede provocar tiempos de espera de solicitud.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Elija HTTP/2 en lugar de HTTP/1.1 porque HTTP/2 multiplexa completamente las conexiones, reutiliza las conexiones para reducir la sobrecarga y comprime los encabezados para minimizar la transferencia de datos.",
+ "guid": "d735fb9e-9e87-415c-93d0-4918b5cf104e",
+ "service": "App Service Web Apps",
+ "text": "Considere la posibilidad de usar HTTP/2 para que las aplicaciones mejoren la eficiencia del protocolo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "ee4fab35-3fcf-469c-aa4a-baaa7ea46a76",
+ "service": "Azure Application Gateway",
+ "text": "Implemente las instancias en una configuración con reconocimiento de zonas, si está disponible.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "897c9b7a-c56c-4390-9938-71ed0ee875d8",
+ "service": "Azure Application Gateway",
+ "text": "Use Application Gateway con Web Application Firewall (WAF) dentro de una red virtual para proteger el tráfico entrante \"HTTP/S\" de Internet.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "9d1d0113-dcc3-4309-bf89-57f43eff537c",
+ "service": "Azure Application Gateway",
+ "text": "En las nuevas implementaciones, use Azure Application Gateway v2 a menos que haya una razón convincente para usar Azure Application Gateway v1.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "Planear las actualizaciones de las reglas",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "Uso de sondeos de estado para detectar la falta de disponibilidad del back-end",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "Revisión del impacto de la configuración de intervalo y umbral en los sondeos de estado",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "Comprobación de las dependencias de nivel inferior a través de los puntos de conexión de estado",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Planee el tiempo suficiente para las actualizaciones antes de acceder a Application Gateway o realizar más cambios. Por ejemplo, la eliminación de servidores del grupo de back-end puede llevar algún tiempo porque tienen que purgar las conexiones existentes.",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "Planear las actualizaciones de las reglas",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Si Application Gateway se usa para equilibrar la carga del tráfico entrante en varias instancias de back-end, se recomienda el uso de sondeos de estado. Esto garantizará que el tráfico no se enrute a backends que no puedan manejar el tráfico.",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "Uso de sondeos de estado para detectar la falta de disponibilidad del back-end",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El sondeo de estado envía solicitudes al punto de conexión configurado en un intervalo establecido. Además, hay un umbral de solicitudes fallidas que se tolerarán antes de que el back-end se marque como incorrecto. Estos números presentan una compensación.- Establecer un intervalo más alto pone una mayor carga en su servicio. Cada instancia de Application Gateway envía sus propios sondeos de estado, por lo que 100 instancias cada 30 segundos significa 100 solicitudes cada 30 segundos.- Establecer un intervalo inferior deja más tiempo antes de que se detecte una interrupción.- Establecer un umbral incorrecto bajo podría significar que errores breves y transitorios podrían derribar un back-end. - Al establecer un umbral alto, puede llevar más tiempo sacar un backend de la rotación.",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "Revisión del impacto de la configuración de intervalo y umbral en los sondeos de estado",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Supongamos que cada backend tiene sus propias dependencias para garantizar que se aíslen los errores. Por ejemplo, una aplicación hospedada detrás de Application Gateway puede tener varios back-ends, cada uno conectado a una base de datos diferente (réplica). Cuando se produce un error en una dependencia de este tipo, es posible que la aplicación esté funcionando, pero no devolverá resultados válidos. Por ese motivo, lo ideal es que el punto de conexión de mantenimiento valide todas las dependencias. Tenga en cuenta que si cada llamada al punto de conexión de mantenimiento tiene una llamada de dependencia directa, esa base de datos recibiría 100 consultas cada 30 segundos en lugar de 1. Para evitar esto, el punto de conexión de mantenimiento debe almacenar en caché el estado de las dependencias durante un breve período de tiempo.",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "Comprobación de las dependencias de nivel inferior a través de los puntos de conexión de estado",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Determinados escenarios pueden obligarle a implementar reglas específicamente en Application Gateway. Por ejemplo, si se requieren reglas ModSec CRS 2.2.9, CRS 3.0 o CRS 3.1, estas reglas solo se pueden implementar en Application Gateway. Por el contrario, la limitación de velocidad y el filtrado geográfico solo están disponibles en Azure Front Door, no en AppGateway.",
+ "guid": "2cc68719-238d-40f1-9eda-37a4b77cabc2",
+ "service": "Azure Application Gateway",
+ "text": "Al usar Azure Front Door y Application Gateway para proteger aplicaciones \"HTTP/S\", use directivas de WAF en Front Door y bloquee Application Gateway para recibir tráfico solo de Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "Configuración de una política TLS para mejorar la seguridad",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "Uso de AppGateway para la terminación de TLS",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Key Vault para almacenar certificados TLS",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "Al volver a cifrar el tráfico de backend, asegúrese de que el certificado del servidor de backend contenga las autoridades de certificación (CA) raíz e intermedias",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "Usar un servidor DNS adecuado para los recursos del grupo de back-end",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Cumplimiento de todas las restricciones de NSG para Application Gateway",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "5ff5e810-ac1d-42ef-9a30-812c15c42be8",
+ "service": "Azure Application Gateway",
+ "text": "Abstenerse de usar UDR en la subred de Application Gateway",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta los cambios de capacidad de Application Gateway al habilitar WAF",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Configure una política TLS para mayor seguridad. Asegúrese de usar siempre la última versión de la política TLS disponible. Esto aplica TLS 1.2 y cifrados más seguros.",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "Configuración de una política TLS para mejorar la seguridad",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Hay ventajas de usar Application Gateway para la terminación de TLS:- El rendimiento mejora porque las solicitudes que van a diferentes backends tienen que volver a autenticarse en cada backend.- Mejor utilización de los servidores de back-end porque no tienen que realizar el procesamiento de TLS- Enrutamiento inteligente mediante el acceso al contenido de la solicitud.- Administración de certificados más fácil porque el certificado solo necesita instalarse en Application Gateway.",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "Uso de AppGateway para la terminación de TLS",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Application Gateway se puede integrar con Key Vault. Esto proporciona una mayor seguridad, una separación más sencilla de roles y responsabilidades, compatibilidad con certificados administrados y un proceso de renovación y rotación de certificados más sencillo.",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Key Vault para almacenar certificados TLS",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Un certificado TLS del servidor backend debe ser emitido por una CA conocida. Si el certificado no fue emitido por una entidad de certificación de confianza, Application Gateway comprueba si el certificado fue emitido por una entidad de certificación de confianza, y así sucesivamente, hasta que se encuentre un certificado de entidad de certificación de confianza. Solo entonces se establece una conexión segura. De lo contrario, Application Gateway marca el back-end como incorrecto.",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "Al volver a cifrar el tráfico de backend, asegúrese de que el certificado del servidor de backend contenga las autoridades de certificación (CA) raíz e intermedias",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Cuando el grupo de back-end contiene un FQDN que se puede resolver, la resolución DNS se basa en una zona DNS privada o en un servidor DNS personalizado (si está configurado en la red virtual), o usa el DNS predeterminado proporcionado por Azure.",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "Usar un servidor DNS adecuado para los recursos del grupo de back-end",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los grupos de seguridad de red se admiten en la subred de Application Gateway, pero existen algunas restricciones. Por ejemplo, se prohíbe cierta comunicación con ciertos rangos de puertos. Asegúrese de comprender las implicaciones de esas restricciones. Para obtener más información, consulte Grupos de seguridad de red.",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Cumplimiento de todas las restricciones de NSG para Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de rutas definidas por el usuario (UDR) en la subred de Application Gateway puede causar algunos problemas. Es posible que se desconozca el estado de mantenimiento en el back-end. Es posible que no se generen los registros y las métricas de Application Gateway. Se recomienda no usar UDR en la subred de Application Gateway para poder ver el estado, los registros y las métricas del back-end. Si las organizaciones necesitan usar UDR en la subred de Application Gateway, asegúrese de revisar los escenarios admitidos. Para obtener más información, consulte Rutas definidas por el usuario admitidas.",
+ "guid": "96ac0266-6e5d-4944-bccb-0c6b3bd00b89",
+ "service": "Azure Application Gateway",
+ "text": "Abstenerse de usar UDR en la subred de Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Cuando WAF está habilitado, Application Gateway debe almacenar en búfer cada solicitud hasta que llegue por completo, comprueba si la solicitud coincide con alguna infracción de regla en su conjunto de reglas principal y, a continuación, reenvía el paquete a las instancias de back-end. Cuando hay cargas de archivos grandes (30 MB+ de tamaño), puede resultar en una latencia significativa. Dado que los requisitos de capacidad de Application Gateway son diferentes con WAF, no se recomienda habilitar WAF en Application Gateway sin las pruebas y validaciones adecuadas.",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta los cambios de capacidad de Application Gateway al habilitar WAF",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Familiarícese con los precios de Application Gateway",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "Revisar los recursos infrautilizados",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "03e1fbfa-86c2-4550-a6aa-e111d6ab895d",
+ "service": "Azure Application Gateway",
+ "text": "Detener instancias de Application Gateway que no están en uso",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "Tener una política de escalado vertical y horizontal",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "Revisar las métricas de consumo en diferentes parámetros",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Para obtener información sobre los precios de Application Gateway, consulte Descripción de los precios de Azure Application Gateway y Web Application Firewall. También puede aprovechar la calculadora de precios. Asegúrese de que las opciones tengan el tamaño adecuado para satisfacer la demanda de capacidad y ofrecer el rendimiento esperado sin desperdiciar recursos.",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Familiarícese con los precios de Application Gateway",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Identifique y elimine instancias de Application Gateway con grupos de back-end vacíos para evitar costos innecesarios.",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "Revisar los recursos infrautilizados",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "No se le facturará cuando Application Gateway esté en estado detenido. Las instancias de Application Gateway que se ejecutan de forma continua pueden incurrir en costos superfluos. Evalúe los patrones de uso y detenga las instancias cuando no las necesite. Por ejemplo, se espera que el uso después del horario comercial en entornos de desarrollo y pruebas sea bajo. Consulte estos artículos para obtener información sobre cómo detener e iniciar instancias.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "6af81413-0516-4067-9e26-8aad8d2d06ca",
+ "service": "Azure Application Gateway",
+ "text": "Detener instancias de Application Gateway cuando no están en uso",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Una política de escalado horizontal garantiza que habrá suficientes instancias para controlar el tráfico entrante y los picos. Además, tenga una política de reducción horizontal que garantice que el número de instancias se reduzca cuando disminuya la demanda. Tenga en cuenta la elección del tamaño de la instancia. El tamaño puede afectar significativamente el costo. Algunas consideraciones se describen en Estimación del recuento de instancias de Application Gateway. Para más información, consulte ¿Qué es Azure Application Gateway v2?",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "Tener una política de escalado vertical y horizontal",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Se le facturará en función de las instancias medidas de Application Gateway en función de las métricas rastreadas por Azure. Evalúe las distintas métricas y unidades de capacidad y determine los factores de coste. Para obtener más información, consulte Administración de costos y facturación de Microsoft. Las siguientes métricas son clave para Application Gateway. Esta información se puede usar para validar que el recuento de instancias aprovisionadas coincida con la cantidad de tráfico entrante.- Unidades de capacidad facturadas estimadas- Unidades de capacidad facturables fijas- Unidades de capacidad actualesPara obtener más información, consulte Métricas de Application Gateway. Asegúrese de tener en cuenta los costos de ancho de banda.",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "Revisar las métricas de consumo en diferentes parámetros",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de las métricas de capacidad",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Habilitación de diagnósticos en Application Gateway y Web Application Firewall (WAF)",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Monitor Network Insights",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "Hacer coincidir la configuración de tiempo de espera con la aplicación back-end",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de problemas de configuración de Key Vault mediante Azure Advisor",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "78bbcbf2-30c3-4c77-8e8f-8faf4c4b817d",
+ "service": "Azure Application Gateway",
+ "text": "Configurar y supervisar las limitaciones de los puertos SNAT",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta las limitaciones de los puertos SNAT en su diseño",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Utilice estas métricas como indicadores de uso de la capacidad aprovisionada de Application Gateway. Le recomendamos encarecidamente que configure alertas sobre la capacidad. Para obtener más información, consulte Compatibilidad con el tráfico elevado de Application Gateway.",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de las métricas de capacidad",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Hay otras métricas que pueden indicar problemas en Application Gateway o en el back-end. Se recomienda evaluar las siguientes alertas:- Recuento de hosts incorrectos- Estado de respuesta (dimensión 4xx y 5xx)- Estado de respuesta del back-end (dimensión 4xx y 5xx)- Tiempo de respuesta del último byte del back-end- Tiempo total de Application GatewayPara obtener más información, consulte Métricas para Application Gateway.",
+ "guid": "af883a3e-1ece-4f8a-9732-95a461fe244c",
+ "service": "Azure Application Gateway",
+ "text": "Solución de problemas mediante métricas",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico le permiten ver los registros de firewall, los registros de rendimiento y los registros de acceso. Use estos registros para administrar y solucionar problemas con las instancias de Application Gateway. Para obtener más información, consulte Registros de diagnóstico y estado de back-end para Application Gateway.",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Habilitación de diagnósticos en Application Gateway y Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Monitor Network Insights proporciona una vista completa del estado y las métricas de los recursos de red, incluida Application Gateway. Para obtener más información y funcionalidades compatibles con Application Gateway, consulte Información de red de Azure Monitor.",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Uso de Azure Monitor Network Insights",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Asegúrese de que ha configurado la configuración de IdleTimeout para que coincida con las características del agente de escucha y el tráfico de la aplicación back-end. El valor predeterminado se establece en cuatro minutos y se puede configurar hasta un máximo de 30. Para obtener más información, consulte Restablecimiento de TCP del equilibrador de carga y tiempo de espera de inactividad.Para obtener consideraciones sobre la carga de trabajo, consulte Supervisión del estado de la aplicación para la confiabilidad.",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "Hacer coincidir la configuración de tiempo de espera con la aplicación back-end",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Application Gateway comprueba la versión de certificado renovada en la instancia de Key Vault vinculada cada intervalo de 4 horas. Si no se puede acceder a él debido a una configuración incorrecta de Key Vault, registra ese error y envía una recomendación de Advisor correspondiente. Debe configurar las alertas de Advisor para mantenerse actualizado y solucionar estos problemas de inmediato para evitar problemas relacionados con el plano de control o de datos. Para obtener más información, consulte Investigación y resolución de errores de Key Vault. Para establecer una alerta para este caso específico, use el tipo de recomendación como Resolver problema de Azure Key Vault para Application Gateway.",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Supervisión de problemas de configuración de Key Vault mediante Azure Advisor",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las limitaciones del puerto SNAT son importantes para las conexiones de back-end en Application Gateway. Hay factores independientes que afectan a la forma en que Application Gateway alcanza el límite de puertos SNAT. Por ejemplo, si el backend es una dirección IP pública, requerirá su propio puerto SNAT. Para evitar las limitaciones del puerto SNAT, puede aumentar el número de instancias por Application Gateway, escalar horizontalmente los back-end para que tengan más direcciones IP o mover los back-end a la misma red virtual y usar direcciones IP privadas para los back-ends. Las solicitudes por segundo (RPS) en Application Gateway se verán afectadas si se alcanza el límite de puertos SNAT. Por ejemplo, si Application Gateway alcanza el límite de puertos SNAT, no podrá abrir una nueva conexión al back-end y se producirá un error en la solicitud.",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "Tenga en cuenta las limitaciones de los puertos SNAT en su diseño",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "261fdf60-ce3b-4abd-8a85-b39ebb208df9",
+ "service": "Azure Application Gateway",
+ "text": "Estimación del recuento de instancias de Application Gateway",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número máximo de instancias",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número mínimo de instancias",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Definir el tamaño de la subred de Application Gateway",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "958240c8-23f1-447d-9cb7-ce9edb5aa606",
+ "service": "Azure Application Gateway",
+ "text": "Aproveche las características de Application Gateway V2 para obtener ventajas de rendimiento y escalado automático",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "En el caso de la SKU de Application Gateway v2, el escalado automático tarda algún tiempo (aproximadamente de seis a siete minutos) antes de que el conjunto adicional de instancias esté listo para atender el tráfico. Durante ese tiempo, si hay picos cortos en el tráfico, espere latencia transitoria o pérdida de tráfico. Le recomendamos que establezca el número mínimo de instancias en un nivel óptimo. Después de calcular el número medio de instancias y determinar las tendencias de escalado automático de Application Gateway, defina el recuento mínimo de instancias en función de los patrones de la aplicación. Para obtener información, consulte Compatibilidad con alto tráfico de Application Gateway. Compruebe las unidades de cálculo actuales del último mes. Esta métrica representa la utilización de la CPU de la puerta de enlace. Para definir el número mínimo de instancias, divida el uso máximo por 10. Por ejemplo, si el promedio de unidades de proceso actuales en el último mes es de 50, establezca el recuento mínimo de instancias en cinco.",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número mínimo de instancias",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Se recomienda 125 como número máximo de instancias de escalado automático. Asegúrese de que la subred que tiene Application Gateway tiene suficientes direcciones IP disponibles para admitir el conjunto de instancias de escalado vertical. Establecer el número máximo de instancias en 125 no tiene implicaciones de costo, ya que solo se le factura por la capacidad consumida.",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "Definir el número máximo de instancias",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Application Gateway necesita una subred dedicada dentro de una red virtual. La subred puede tener varias instancias del recurso de Application Gateway implementado. También puede implementar otros recursos de Application Gateway en esa SKU de subred, v1 o v2. Estas son algunas consideraciones para definir el tamaño de la subred:- Application Gateway usa una dirección IP privada por instancia y otra dirección IP privada si se configura una IP de front-end privada.- Azure reserva cinco direcciones IP en cada subred para uso interno.- Application Gateway (SKU estándar o WAF) puede admitir hasta 32 instancias. Tomando 32 direcciones IP de instancia + 1 IP de front-end privada + 5 reservadas de Azure, se recomienda un tamaño de subred mínimo de /26. Dado que la SKU de Standard_v2 o WAF_v2 puede admitir hasta 125 instancias, con el mismo cálculo, se recomienda un tamaño de subred de /24.- Si desea implementar recursos adicionales de Application Gateway en la misma subred, tenga en cuenta las direcciones IP adicionales que se requerirán para su recuento máximo de instancias tanto para Estándar como para Estándar v2.",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Definir el tamaño de la subred de Application Gateway",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La SKU v2 ofrece escalado automático para garantizar que Application Gateway pueda escalar verticalmente a medida que aumenta el tráfico. En comparación con la SKU v1, v2 tiene capacidades que mejoran el rendimiento de la carga de trabajo. Por ejemplo, un mejor rendimiento de descarga de TLS, tiempos de implementación y actualización más rápidos, redundancia de zona y más. Para obtener más información sobre las características de escalado automático, consulte Escalado de Application Gateway v2 y WAF v2. Si ejecuta la SKU v1 Application Gateway, considere la posibilidad de migrar a la SKU Application Gateway v2. Para más información, consulte Migración de Azure Application Gateway y Web Application Firewall de v1 a v2.",
+ "guid": "508791c8-897f-4490-8590-fc33a9df8f73",
+ "service": "Azure Application Gateway",
+ "text": "Aproveche las características de escalado automático y las ventajas de rendimiento",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "d68b4fc0-fd9c-499a-9fd4-2c572735bd36",
+ "service": "Azure Blob Storage",
+ "text": "Use el análisis del modo de error: minimice los puntos de error teniendo en cuenta las dependencias internas, como la disponibilidad de redes virtuales, Azure Key Vault, Azure Content Delivery Network o Azure Front Door, puntos de conexión de Azure Front Door. Se pueden producir errores si las credenciales requeridas por las cargas de trabajo para acceder a Blob Storage desaparecen de Key Vault o si las cargas de trabajo usan un punto de conexión basado en una red de entrega de contenido que se quita. En estos casos, es posible que las cargas de trabajo deban usar un punto de conexión alternativo para conectarse. Para obtener información general sobre el análisis del modo de error, consulte Recomendaciones para realizar el análisis del modo de error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "817f9103-607a-4e3d-ba94-1a3adffaff8f",
+ "service": "Azure Blob Storage",
+ "text": "Definir objetivos de confiabilidad y recuperación: revise los contratos de nivel de servicio (SLA) de Azure. Derive el objetivo de nivel de servicio (SLO) para la cuenta de almacenamiento. Por ejemplo, el SLO puede verse afectado por la configuración de redundancia que eligió. Tenga en cuenta el efecto de una interrupción regional, la posibilidad de pérdida de datos y el tiempo necesario para restaurar el acceso después de una interrupción. Tenga en cuenta también la disponibilidad de las dependencias internas que identificó como parte del análisis del modo de error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Blob Storage",
+ "text": "Configurar la redundancia de datos: para obtener la máxima durabilidad, elija una configuración que copie los datos entre zonas de disponibilidad o regiones globales. Para obtener la máxima disponibilidad, elija una configuración que permita a los clientes leer datos de la región secundaria durante una interrupción de la región primaria.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "e71dbbd7-5e50-4ade-b5e5-4b9e59d10706",
+ "service": "Azure Blob Storage",
+ "text": "Aplicaciones de diseño: diseñe aplicaciones para cambiar sin problemas a la lectura de datos de la región secundaria si la región primaria deja de estar disponible por cualquier motivo. Esto solo se aplica a las configuraciones de almacenamiento con redundancia geográfica (GRS) y almacenamiento con redundancia de zona geográfica (GZRS). El diseño de aplicaciones para manejar interrupciones reduce el tiempo de inactividad para los usuarios finales.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "2243ff8e-7ce3-4999-9eee-3b3377f4df8b",
+ "service": "Azure Blob Storage",
+ "text": "Explore las características que le ayudarán a cumplir sus objetivos de recuperación: haga que los blobs se puedan restaurar para que se puedan recuperar si se dañan, editan o eliminan por error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Blob Storage",
+ "text": "Cree un plan de recuperación: considere las características de protección de datos, las operaciones de copia de seguridad y restauración o los procedimientos de conmutación por error. Prepárese para posibles pérdidas de datos e inconsistencias de datos, así como para el tiempo y el costo de la conmutación por error. Para obtener más información, consulte Recomendaciones para diseñar una estrategia de recuperación ante desastres.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "ffdb383d-6a9a-4ebb-b902-12320390dd84",
+ "service": "Azure Blob Storage",
+ "text": "Supervisión de posibles problemas de disponibilidad: suscríbase al panel de Azure Service Health para supervisar posibles problemas de disponibilidad. Use las métricas de almacenamiento de Azure Monitor y los registros de diagnóstico para investigar las alertas.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "La redundancia protege sus datos contra fallos inesperados. Las opciones de configuración de ZRS y GZRS se replican en diferentes zonas de disponibilidad y permiten que las aplicaciones continúen leyendo datos durante una interrupción. Para obtener más información, consulte Durabilidad y disponibilidad por escenario de interrupción y Parámetros de durabilidad y disponibilidad.",
+ "guid": "e426149f-841f-4865-878e-311cfe914db9",
+ "service": "Azure Blob Storage",
+ "text": "Configure su cuenta para la redundancia. Para obtener la máxima disponibilidad y durabilidad, configure su cuenta mediante el almacenamiento con redundancia de zona (ZRS) o GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta propiedad le ayuda a calcular la cantidad de datos que podría perder al iniciar una conmutación por error de la cuenta. Todos los datos y metadatos escritos antes de la última hora de sincronización están disponibles en la región secundaria, pero es posible que los datos y metadatos escritos después de la última hora de sincronización se pierdan porque no se escriben en la región secundaria.",
+ "guid": "f42e13de-f6f3-4fad-97f3-f657b8aa1f6c",
+ "service": "Azure Blob Storage",
+ "text": "Antes de iniciar una conmutación por error o conmutación por recuperación, evalúe la posibilidad de pérdida de datos comprobando el valor de la última propiedad de tiempo de sincronización. Esta recomendación sólo se aplica a las configuraciones GRS y GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La opción de eliminación temporal permite que una cuenta de almacenamiento recupere contenedores y blobs eliminados. La opción de control de versiones realiza automáticamente un seguimiento de los cambios realizados en los blobs. Esta opción permite restaurar un blob a un estado anterior. La opción de restauración a un momento dado protege contra la eliminación accidental o los daños de blobs y permite restaurar los datos de blobs en bloques a un estado anterior. Para obtener más información, consulte Información general sobre la protección de datos.",
+ "guid": "6ba14c6a-6f37-46a3-a2a8-e38373925d6f",
+ "service": "Azure Blob Storage",
+ "text": "Como parte de la estrategia de copia de seguridad y recuperación, habilite las opciones de eliminación temporal de contenedor, eliminación temporal de blobs, control de versiones y restauración a un momento dado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "5738d99e-ae27-47ca-959c-0dabef735931",
+ "service": "Azure Blob Storage",
+ "text": "Revise la línea base de seguridad para Azure Storage: para empezar, primero revise la línea base de seguridad para Storage.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "54dc05f5-631d-41ac-8ad7-40a451e48efd",
+ "service": "Azure Blob Storage",
+ "text": "Uso de controles de red para restringir el tráfico de entrada y salida: deshabilite todo el tráfico público a la cuenta de almacenamiento. Utilice los controles de red de la cuenta para conceder el nivel mínimo de acceso requerido por los usuarios y las aplicaciones. Para obtener más información, consulte Cómo abordar la seguridad de red para la cuenta de almacenamiento.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "3d39bc4a-58c1-4d69-8116-751252d03104",
+ "service": "Azure Blob Storage",
+ "text": "Reducir la superficie expuesta a ataques: impedir el acceso anónimo, el acceso a claves de cuenta o el acceso a través de conexiones no seguras (HTTP) puede reducir la superficie expuesta a ataques. Requerir que los clientes envíen y reciban datos mediante la versión más reciente del protocolo de seguridad de la capa de transporte (TLS).",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "b0e33ead-c6ca-4386-acee-30e929390ca0",
+ "service": "Azure Blob Storage",
+ "text": "Autorice el acceso sin usar contraseñas o claves: Microsoft Entra ID proporciona una seguridad y facilidad de uso superiores en comparación con las claves compartidas y las firmas de acceso compartido. Otorgue a las entidades de seguridad solo los permisos necesarios para que realicen sus tareas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "c2d96110-7950-4f81-8c41-34e1fa015631",
+ "service": "Azure Blob Storage",
+ "text": "Proteja la información confidencial: proteja la información confidencial, como las claves de cuenta y los tokens de firma de acceso compartido. Si bien estas formas de autorización generalmente no se recomiendan, debe asegurarse de rotarlas, caducar y almacenarlas de forma segura.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "cd6916c2-09f8-4269-971d-60a07e57cbbd",
+ "service": "Azure Blob Storage",
+ "text": "Habilitar la opción de transferencia segura requerida: habilitar esta configuración para todas las cuentas de almacenamiento garantiza que todas las solicitudes realizadas en la cuenta de almacenamiento deben realizarse a través de conexiones seguras. Se produce un error en las solicitudes realizadas a través de HTTP.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "f944c199-636d-46b4-bc23-ee8bdfefa7a5",
+ "service": "Azure Blob Storage",
+ "text": "Proteger objetos críticos: aplique políticas de inmutabilidad para proteger objetos críticos. Las directivas protegen los blobs que se almacenan con fines legales, de cumplimiento u otros fines empresariales para que no se modifiquen o eliminen. Configure las retenciones durante períodos de tiempo establecidos o hasta que un administrador levante las restricciones.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "80a10cbe-93f3-410a-b7ad-d7b5234add61",
+ "service": "Azure Blob Storage",
+ "text": "Detección de amenazas: habilite Microsoft Defender para Storage para detectar amenazas. Las alertas de seguridad se activan cuando se producen anomalías en la actividad. Las alertas notifican a los administradores de suscripciones por correo electrónico con detalles de actividades sospechosas y recomendaciones sobre cómo investigar y remediar amenazas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Cuando se permite el acceso anónimo a una cuenta de almacenamiento, un usuario que tenga los permisos adecuados puede modificar la configuración de acceso anónimo de un contenedor para habilitar el acceso anónimo a los datos de ese contenedor.",
+ "guid": "4380d8e1-fdb6-45da-a1e1-109e162f43d3",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite el acceso de lectura anónimo a los contenedores y blobs.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Bloquear una cuenta evita que se elimine y provoque la pérdida de datos.",
+ "guid": "09543d14-a0c7-49dc-89d1-74b1913c3b03",
+ "service": "Azure Blob Storage",
+ "text": "Aplique un bloqueo de Azure Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Comience con acceso cero y, a continuación, autorice gradualmente los niveles más bajos de acceso necesarios para los clientes y los servicios a fin de minimizar el riesgo de crear aperturas innecesarias para los atacantes.",
+ "guid": "1b8c4090-6b15-45e0-8833-ee5285ebd444",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite el tráfico a los puntos de conexión públicos de la cuenta de almacenamiento. Cree puntos de conexión privados para los clientes que se ejecutan en Azure. Habilite el punto de conexión público solo si los clientes y servicios externos a Azure requieren acceso directo a la cuenta de almacenamiento. Habilite reglas de firewall que limiten el acceso a redes virtuales específicas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con RBAC, no hay contraseñas ni claves que puedan verse comprometidas. La entidad de seguridad (usuario, grupo, identidad administrada o entidad de servicio) se autentica mediante el identificador de Microsoft Entra para devolver un token de OAuth 2.0. El token se usa para autorizar una solicitud en el servicio Blob Storage.",
+ "guid": "2ecbd38b-7ae5-4858-916a-0554e8f2d41d",
+ "service": "Azure Blob Storage",
+ "text": "Autorice el acceso mediante el control de acceso basado en rol (RBAC) de Azure.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Solo se permiten las solicitudes protegidas que estén autorizadas con el identificador de Microsoft Entra.",
+ "guid": "4d731629-d6d3-4aa9-b46f-6259451f08f0",
+ "service": "Azure Blob Storage",
+ "text": "No permitir la autorización de clave compartida. Esto deshabilita no solo el acceso a la clave de cuenta, sino también los tokens de firma de acceso compartido de cuenta y servicio, ya que se basan en claves de cuenta.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Key Vault permite recuperar claves en tiempo de ejecución, en lugar de guardarlas mediante la aplicación. Key Vault también facilita la rotación de las claves sin interrumpir las aplicaciones. La rotación periódica de las claves de cuenta reduce el riesgo de exponer los datos a ataques malintencionados.",
+ "guid": "62ae35d2-7f0b-4c63-b0ff-1a1f85d39b89",
+ "service": "Azure Blob Storage",
+ "text": "Te recomendamos que no utilices una clave de cuenta. Si debe usar claves de cuenta, almacénelas en Key Vault y asegúrese de volver a generarlas periódicamente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las prácticas recomendadas pueden ayudarle a evitar que se filtre un token de firma de acceso compartido y a recuperarse rápidamente si se produce una fuga.",
+ "guid": "e2163930-a35e-415f-bea3-a019e5c2a5c7",
+ "service": "Azure Blob Storage",
+ "text": "Se recomienda no usar tokens de firma de acceso compartido. Evalúe si necesita tokens de firma de acceso compartido para proteger el acceso a los recursos de Blob Storage. Si debe crear una, revise esta lista de prácticas recomendadas para la firma de acceso compartido antes de crearla y distribuirla.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS 1.2 es más seguro y rápido que TLS 1.0 y 1.1, que no son compatibles con los algoritmos criptográficos modernos ni los conjuntos de cifrado.",
+ "guid": "d586222d-d9d1-4f51-ba29-58021c0ee0ae",
+ "service": "Azure Blob Storage",
+ "text": "Configure la cuenta de almacenamiento para que los clientes puedan enviar y recibir datos mediante la versión mínima de TLS 1.2.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las claves administradas por el cliente proporcionan una mayor flexibilidad y control. Por ejemplo, puede almacenar claves de cifrado en Key Vault y rotarlas automáticamente.",
+ "guid": "33303cd1-5b9c-4688-aa24-50cb53f5caac",
+ "service": "Azure Blob Storage",
+ "text": "Considere la posibilidad de usar su propia clave de cifrado para proteger los datos de la cuenta de almacenamiento. Para más información, consulte Claves administradas por el cliente para el cifrado de Azure Storage.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "6f7ce98b-ec2c-4535-9e6a-11c077c9bd3f",
+ "service": "Azure Blob Storage",
+ "text": "Identifique los medidores que se utilizan para calcular su factura: Los medidores se utilizan para rastrear la cantidad de datos almacenados en la cuenta (capacidad de datos) y la cantidad y el tipo de operaciones que se realizan para escribir y leer datos. También hay medidores asociados con el uso de características opcionales como etiquetas de índice de blobs, inventario de blobs, compatibilidad con fuentes de cambios, ámbitos de cifrado y compatibilidad con el protocolo de transferencia de archivos SSH (SFTP). Para obtener más información, consulte Cómo se cobra por Blob Storage.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "0c2e2825-34c7-4ad5-ad21-a270b1b402c0",
+ "service": "Azure Blob Storage",
+ "text": "Comprenda el precio de cada medidor: asegúrese de usar la página de precios adecuada y aplique la configuración adecuada en esa página. Para obtener más información, consulte Búsqueda del precio unitario de cada medidor. Tenga en cuenta el número de operaciones asociadas a cada precio. Por ejemplo, el precio asociado a las operaciones de escritura y lectura se aplica a 10.000 operaciones. Para determinar el precio de una operación individual, divida el precio de lista por 10.000.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "31b047a5-abfe-4452-ad3e-a4b99cad0e4b",
+ "service": "Azure Blob Storage",
+ "text": "Calcular el costo de la capacidad y las operaciones: puede modelar los costos asociados con el almacenamiento, la entrada y la salida de datos mediante la calculadora de precios de Azure. Utilice campos para comparar el costo asociado con varias regiones, tipos de cuenta, tipos de espacio de nombres y configuraciones de redundancia. Para determinados escenarios, puede usar cálculos de ejemplo y hojas de cálculo disponibles en la documentación de Microsoft. Por ejemplo, puede calcular el costo de archivar datos o calcular el costo de usar el comando AzCopy para transferir blobs.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "51e5c8d4-4794-4514-bb01-54a517927a05",
+ "service": "Azure Blob Storage",
+ "text": "Elija un modelo de facturación para la capacidad: evalúe si el uso de un modelo basado en compromiso es más rentable que el uso de un modelo basado en el consumo. Si no está seguro de cuánta capacidad necesita, puede comenzar con un modelo basado en el consumo, supervisar las métricas de capacidad y, a continuación, evaluarlo más adelante.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "8a5b488c-2b97-4e55-8997-659d64c62030",
+ "service": "Azure Blob Storage",
+ "text": "Elija un tipo de cuenta, un nivel de redundancia y un nivel de acceso predeterminado: debe seleccionar un valor para cada una de estas opciones al crear una cuenta de almacenamiento. Todos los valores afectan a los cargos de transacción y a los cargos de capacidad. Todas estas configuraciones, excepto el tipo de cuenta, se pueden cambiar después de crear la cuenta.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "b675b5be-352c-4a06-94ed-8457e3d5db8c",
+ "service": "Azure Blob Storage",
+ "text": "Elija el nivel de acceso predeterminado más rentable: a menos que se especifique un nivel con cada carga de blobs, los blobs deducen su nivel de acceso de la configuración del nivel de acceso predeterminado. Un cambio en la configuración del nivel de acceso predeterminado de una cuenta de almacenamiento se aplica a todos los blobs de la cuenta para los que no se ha establecido explícitamente un nivel de acceso. Este costo podría ser significativo si ha recopilado un gran número de blobs. Para obtener más información sobre cómo afecta un cambio de nivel a cada blob existente, consulte Cambiar el nivel de acceso de un blob.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "fbf53f6f-f5af-47ef-8e28-e471bf173884",
+ "service": "Azure Blob Storage",
+ "text": "Cargue datos directamente en el nivel de acceso más rentable: por ejemplo, si la configuración del nivel de acceso predeterminado de su cuenta es frecuente, pero está cargando archivos con fines de archivado, especifique un nivel más esporádico como archivo o un nivel inactivo como parte de la operación de carga. Después de cargar blobs, use políticas de administración del ciclo de vida para mover los blobs a los niveles más rentables en función de las métricas de uso, como la hora del último acceso. Elegir el nivel más óptimo por adelantado puede reducir los costos. Si cambia el nivel de un blob en bloques que ya ha cargado, pagará el costo de escribir en el nivel inicial cuando cargue el blob por primera vez y, a continuación, pagará el costo de escribir en el nivel deseado.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "3549725f-8de2-4431-a8e2-fb88c2def5b4",
+ "service": "Azure Blob Storage",
+ "text": "Tenga un plan para administrar el ciclo de vida de los datos: optimice los costos de transacción y capacidad aprovechando los niveles de acceso y la administración del ciclo de vida. Los datos que se usan con menos frecuencia deben colocarse en niveles de acceso más esporádicos, mientras que los datos a los que se accede con frecuencia deben colocarse en niveles de acceso más cálidos.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "df99152b-4af1-4cea-b2bd-b06fd2425c57",
+ "service": "Azure Blob Storage",
+ "text": "Decida qué características necesita: algunas características, como el control de versiones y la eliminación temporal de blobs, incurren en costos de transacción y capacidad adicionales, así como en otros cargos. Asegúrese de revisar las secciones de precios y facturación en los artículos que describen esas capacidades cuando elija qué capacidades agregar a su cuenta.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "b69e35ad-ee70-4787-bcb2-9cde1aa2600c",
+ "service": "Azure Blob Storage",
+ "text": "Crear barreras de protección: cree presupuestos basados en suscripciones y grupos de recursos. Utilice políticas de gobernanza para restringir los tipos de recursos, las configuraciones y las ubicaciones. Además, use RBAC para bloquear acciones que puedan conducir a un gasto excesivo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "41cc33cd-773d-463f-b9e3-07256ea9e3f0",
+ "service": "Azure Blob Storage",
+ "text": "Supervise los costos: asegúrese de que los costos se mantengan dentro de los presupuestos, compare los costos con las previsiones y vea dónde se produce un gasto excesivo. Puede usar el panel de análisis de costos de Azure Portal para supervisar los costos. También puede exportar datos de costos a una cuenta de almacenamiento y analizar esos datos mediante Excel o Power BI.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "94b3fa52-a17f-44ec-b4ba-9801c2764632",
+ "service": "Azure Blob Storage",
+ "text": "Supervise el uso: supervise continuamente los patrones de uso y detecte cuentas y contenedores no utilizados o infrautilizados. Use la información de almacenamiento para identificar cuentas sin uso o con poco uso. Habilite los informes de inventario de blobs y use herramientas como Azure Databricks o Azure Synapse Analytics y Power BI para analizar los datos de costos. Tenga cuidado con los aumentos inesperados de la capacidad, lo que podría indicar que está recopilando numerosos archivos de registro, versiones de blobs o blobs eliminados temporalmente. Desarrolle una estrategia para la caducidad o la transición de objetos a niveles de acceso más rentables. Tenga un plan para los objetos que caducan o los que los mueve a niveles de acceso más asequibles.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Los niveles de esporádico tienen costos de transferencia de datos más altos. Al tener menos archivos grandes, puede reducir el número de operaciones necesarias para transferir datos.",
+ "guid": "7eb7a0d4-912b-4d5c-af98-31200e20cc63",
+ "service": "Azure Blob Storage",
+ "text": "Empaquete archivos pequeños en archivos más grandes antes de moverlos a niveles más esporádicos. Puede utilizar formatos de archivo como TAR o ZIP.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La rehidratación de alta prioridad desde el nivel de archivo puede dar lugar a facturas más altas de lo normal.",
+ "guid": "8d3e7da9-3091-4daf-8a07-37116d9e3f7e",
+ "service": "Azure Blob Storage",
+ "text": "Use la rehidratación de prioridad estándar al rehidratar blobs desde el almacenamiento de archivos. Utilice la rehidratación de alta prioridad solo para situaciones de restauración de datos de emergencia. Para obtener más información, consulte Rehidratación de un blob archivado en un nivel en línea",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Almacenar registros de recursos en una cuenta de almacenamiento para su posterior análisis puede ser una opción más económica. El uso de políticas de administración del ciclo de vida para administrar la retención de registros en una cuenta de almacenamiento evita que se acumule un gran número de archivos de registros con el tiempo, lo que puede provocar cargos de capacidad innecesarios.",
+ "guid": "f29291b5-d170-453b-bdbb-379f229fdc5b",
+ "service": "Azure Blob Storage",
+ "text": "Reduzca el costo de usar registros de recursos eligiendo la ubicación de almacenamiento de registros adecuada y administrando los períodos de retención de registros. Si solo planea consultar registros ocasionalmente (por ejemplo, consultar registros para auditoría de cumplimiento), considere la posibilidad de enviar registros de recursos a una cuenta de almacenamiento en lugar de enviarlos a un área de trabajo de registros de Azure Monitor. Puede usar una solución de consulta sin servidor, como Azure Synapse Analytics, para analizar los registros. Para obtener más información, consulte Optimización del costo para consultas poco frecuentes. Utilice políticas de administración del ciclo de vida para eliminar o archivar registros.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada operación de escritura en un blob crea una nueva versión. Esto aumenta los costos de capacidad. Puede mantener los costos bajo control eliminando las versiones que ya no necesita.",
+ "guid": "496e994f-ae82-40c2-90cb-eb03a9e2205c",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita el control de versiones, use una política de administración del ciclo de vida para eliminar automáticamente las versiones antiguas de los blobs.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada vez que se sobrescribe un blob, se agrega una nueva versión, lo que aumenta los cargos por capacidad de almacenamiento. Para reducir los cargos de capacidad, almacene los datos que se sobrescriben con frecuencia en una cuenta de almacenamiento independiente con el control de versiones deshabilitado.",
+ "guid": "91514322-4007-4a99-85f0-e73c181d95fa",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita el control de versiones, coloque los blobs que se sobrescriben con frecuencia en una cuenta que no tenga habilitado el control de versiones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Cada vez que se sobrescribe un blob, se crea una nueva instantánea. La causa del aumento de los cargos por capacidad puede ser difícil de acceder porque la creación de estas instantáneas no aparece en los registros. Para reducir los cargos de capacidad, almacene los datos sobrescritos con frecuencia en una cuenta de almacenamiento independiente con la eliminación temporal deshabilitada. Un período de retención evita que los blobs eliminados temporalmente se acumulen y aumenten el costo de la capacidad.",
+ "guid": "7041f493-74f4-42e8-bbd2-15602763dc40",
+ "service": "Azure Blob Storage",
+ "text": "Si habilita la eliminación temporal, coloque los blobs que se sobrescriben con frecuencia en una cuenta que no tenga habilitada la eliminación temporal. Establecer períodos de retención. Considere comenzar con un período de retención corto para comprender mejor cómo afecta la función a su factura. El período de retención mínimo recomendado es de siete días.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La habilitación del punto de conexión SFTP incurre en un costo por hora. Al deshabilitar cuidadosamente la compatibilidad con SFTP y luego habilitarla según sea necesario, puede evitar que se acumulen cargos pasivos en su cuenta.",
+ "guid": "c1d10494-a396-4add-aae2-aaf5aa5aa0da",
+ "service": "Azure Blob Storage",
+ "text": "Habilite la compatibilidad con SFTP solo cuando se use para transferir datos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los ámbitos de cifrado incurren en un cargo mensual.",
+ "guid": "b71aeb26-fc96-486c-8bed-c5c616c1d0b1",
+ "service": "Azure Blob Storage",
+ "text": "Deshabilite los ámbitos de cifrado que no sean necesarios para evitar cargos innecesarios.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Blob Storage",
+ "text": "Cree planes de mantenimiento y recuperación de emergencia: tenga en cuenta las características de protección de datos, las operaciones de copia de seguridad y restauración, y los procedimientos de conmutación por error. Prepárese para posibles pérdidas de datos e inconsistencias de datos, así como para el tiempo y el costo de la conmutación por error.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "bdd60136-85dd-45cc-ac07-37d69124d9ab",
+ "service": "Azure Blob Storage",
+ "text": "Supervisión del estado de la cuenta de almacenamiento: cree paneles de información de almacenamiento para supervisar las métricas de disponibilidad, rendimiento y resistencia. Configure alertas para identificar y abordar problemas en su sistema antes de que sus clientes los noten. Use la configuración de diagnóstico para enrutar los registros de recursos a un área de trabajo de registros de Azure Monitor. A continuación, puede consultar los registros para investigar las alertas más profundamente.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "b842f2e7-9ac7-4d2e-9c9a-a3fb2ddc2441",
+ "service": "Azure Blob Storage",
+ "text": "Habilitar informes de inventario de blobs: habilite los informes de inventario de blobs para revisar el estado de retención, retención legal o cifrado del contenido de la cuenta de almacenamiento. También puede usar informes de inventario de blobs para comprender el tamaño total de los datos, la antigüedad, la distribución de niveles u otros atributos de los datos. Use herramientas como Azure Databricks o Azure Synapse Analytics y Power BI para visualizar mejor los datos de inventario y crear informes para las partes interesadas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "b54e930b-e9fe-4b7b-adc2-b0f0d0b0f05c",
+ "service": "Azure Blob Storage",
+ "text": "Configure directivas que eliminen blobs o los muevan a niveles de acceso rentables: cree una política de administración del ciclo de vida con un conjunto inicial de condiciones. La directiva se ejecuta, elimina o establece automáticamente el nivel de acceso de los blobs en función de las condiciones que defina. Analice periódicamente el uso de contenedores mediante el uso de métricas de supervisión e informes de inventario de blobs para que pueda refinar las condiciones y optimizar la rentabilidad.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede usar los procesos de DevOps existentes para implementar nuevas cuentas de almacenamiento y usar Azure Policy para aplicar su configuración.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Blob Storage",
+ "text": "Use la infraestructura como código (IaC) para definir los detalles de las cuentas de almacenamiento en plantillas de Azure Resource Manager (plantillas de ARM), Bicep o Terraform.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede realizar un seguimiento del estado y el funcionamiento de cada una de sus cuentas. Cree fácilmente paneles e informes que las partes interesadas pueden usar para realizar un seguimiento del estado de sus cuentas de almacenamiento.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Blob Storage",
+ "text": "Use la información de almacenamiento para realizar un seguimiento del estado y el rendimiento de las cuentas de almacenamiento. Storage Insights proporciona una vista unificada de los errores, el rendimiento, la disponibilidad y la capacidad de todas las cuentas de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "61755535-55a0-4064-8537-e9cdf07e1baa",
+ "service": "Azure Blob Storage",
+ "text": "Planeación de la escala: descripción de los objetivos de escala para las cuentas de almacenamiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "bd64ef47-64e7-4c7e-b19f-ccfd451083e0",
+ "service": "Azure Blob Storage",
+ "text": "Elija el tipo de cuenta de almacenamiento óptimo: si la carga de trabajo requiere altas tasas de transacción, objetos más pequeños y una latencia de transacción baja y constante, considere la posibilidad de usar cuentas de almacenamiento premium de blobs en bloques. En la mayoría de los casos, una cuenta estándar de uso general v2 es la más adecuada.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "b21b6a75-b065-43f1-8298-5778460e2ba0",
+ "service": "Azure Blob Storage",
+ "text": "Reduzca la distancia de viaje entre el cliente y el servidor: coloque los datos en las regiones más cercanas a los clientes que se conectan (idealmente en la misma región). Optimice para clientes de regiones lejanas mediante la replicación de objetos o una red de entrega de contenido. Las configuraciones de red predeterminadas proporcionan el mejor rendimiento. Modifique la configuración de red solo para mejorar la seguridad. En general, la configuración de red no disminuye la distancia de viaje y no mejora el rendimiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "ef4063df-4ac9-4e8b-9391-cf99ea520f3a",
+ "service": "Azure Blob Storage",
+ "text": "Elija un esquema de nomenclatura eficaz: disminuya la latencia de las operaciones de enumeración, lista, consulta y lectura mediante el uso de prefijos de etiqueta hash más cercanos al principio de la clave de partición de blob (cuenta, contenedor, directorio virtual o nombre de blob). Este esquema beneficia principalmente a las cuentas que tienen un espacio de nombres plano.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "45c2db00-baf4-4e7a-8ceb-871abc5f5d64",
+ "service": "Azure Blob Storage",
+ "text": "Optimice el rendimiento de los clientes de datos: elija la herramienta de transferencia de datos más adecuada para el tamaño de los datos, la frecuencia de transferencia y el ancho de banda de sus cargas de trabajo. Algunas herramientas, como AzCopy, están optimizadas para el rendimiento y requieren poca intervención. Tenga en cuenta los factores que influyen en la latencia y ajuste el rendimiento revisando la guía de optimización del rendimiento que se publica con cada herramienta.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "97486b6a-ea0c-4100-86e0-319ce0c8ad21",
+ "service": "Azure Blob Storage",
+ "text": "Optimice el rendimiento del código personalizado: considere la posibilidad de usar SDK de almacenamiento en lugar de crear sus propios contenedores para las operaciones de REST de blobs. Los SDK de Azure están optimizados para el rendimiento y proporcionan mecanismos para ajustar el rendimiento. Antes de crear una aplicación, revise la lista de comprobación de rendimiento y escalabilidad de Blob Storage. Considere la posibilidad de usar la aceleración de consultas para filtrar los datos no deseados durante la solicitud de almacenamiento y evitar que los clientes transfieran datos innecesariamente a través de la red.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "0b2ed074-7dcb-460a-8455-144171d2fe8f",
+ "service": "Azure Blob Storage",
+ "text": "Recopilación de datos de rendimiento: supervise la cuenta de almacenamiento para identificar los cuellos de botella de rendimiento que se producen debido a la limitación. Para obtener más información, consulte Supervisión del servicio de almacenamiento con información de Supervisar almacenamiento. Utilice tanto las métricas como los registros. Las métricas proporcionan números como los errores de limitación. Los registros describen la actividad. Si ve métricas de limitación, puede usar registros para identificar qué clientes reciben errores de limitación. Para obtener más información, consulte Auditoría de operaciones del plano de datos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "La reducción de la distancia física entre la cuenta de almacenamiento y las máquinas virtuales, los servicios y los clientes locales puede mejorar el rendimiento y reducir la latencia de la red. La reducción de la distancia física también reduce el costo de las aplicaciones hospedadas en Azure, ya que el uso del ancho de banda dentro de una sola región es gratuito.",
+ "guid": "1a37ef87-aa18-44a6-9877-6665fb1dc486",
+ "service": "Azure Blob Storage",
+ "text": "Aprovisione cuentas de almacenamiento en la misma región donde se colocan los recursos dependientes. En el caso de las aplicaciones que no están hospedadas en Azure, como aplicaciones de dispositivos móviles o servicios empresariales locales, ubique la cuenta de almacenamiento en una región más cercana a esos clientes. Para obtener más información, consulte Geografías de Azure. Si los clientes de una región diferente no requieren los mismos datos, cree una cuenta independiente en cada región. Si los clientes de una región diferente solo requieren algunos datos, considere la posibilidad de usar una directiva de replicación de objetos para copiar de forma asincrónica los objetos relevantes en una cuenta de almacenamiento de la otra región.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El contenido se entrega a los clientes más rápido porque usa la red perimetral global de Microsoft con cientos de puntos de presencia globales y locales en todo el mundo.",
+ "guid": "7ee0dea0-804f-457c-9660-1fe756011d25",
+ "service": "Azure Blob Storage",
+ "text": "Para un consumo amplio por parte de los clientes web (streaming de vídeo, audio o contenido estático de sitios web), considere la posibilidad de usar una red de entrega de contenido a través de Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El uso de un código hash o un valor de segundos más cercano al principio de una clave de partición reduce el tiempo necesario para enumerar los blobs de consulta y lectura.",
+ "guid": "36fc9ddc-5d24-4ecc-a67e-3fd7bc0c4373",
+ "service": "Azure Blob Storage",
+ "text": "Agregue una secuencia de caracteres hash (por ejemplo, tres dígitos) lo antes posible en la clave de partición de un blob. La clave de partición es el nombre de la cuenta, el nombre del contenedor, el nombre del directorio virtual y el nombre del blob. Si planea usar marcas de tiempo en los nombres, considere agregar un valor de segundos al principio de esa marca. Para obtener más información, consulte Creación de particiones.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Los tamaños de blob o bloque superiores a 256 KiB aprovechan las mejoras de rendimiento de la plataforma creadas específicamente para blobs y tamaños de bloque más grandes.",
+ "guid": "78872d9e-216b-4cc3-8686-0471d46a1acd",
+ "service": "Azure Blob Storage",
+ "text": "Al cargar blobs o bloques, use un tamaño de blob o bloque superior a 256 KiB.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "473b3683-6d53-4521-89c4-d8aa1d1df633",
+ "service": "Azure Expressroute",
+ "text": "Seleccione entre el circuito ExpressRoute o ExpressRoute Direct para los requisitos empresariales.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "b356e60e-cb41-4ee6-a8d5-290b429619f7",
+ "service": "Azure Expressroute",
+ "text": "Configure las conexiones de ExpressRoute activo-activo entre el entorno local y Azure.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "877b9a2d-8171-441b-ba7f-b8c6191f12bc",
+ "service": "Azure Expressroute",
+ "text": "Configure las puertas de enlace de red virtual de ExpressRoute compatibles con la zona de disponibilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "64ad6a67-7f17-4d55-a365-0ec8716fb135",
+ "service": "Azure Expressroute",
+ "text": "Configure puertas de enlace de red virtual de ExpressRoute en diferentes regiones.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "20bbf3a5-e3d8-42eb-9b88-9c4a811a483a",
+ "service": "Azure Expressroute",
+ "text": "Configure la VPN de sitio a sitio como copia de seguridad del emparejamiento privado de ExpressRoute.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "198fd707-5344-46d9-a3f9-c05a90749ccb",
+ "service": "Azure Expressroute",
+ "text": "Configure el estado del servicio para recibir la notificación de mantenimiento del circuito ExpressRoute.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Durante la fase de planeación inicial, debe decidir si desea configurar un circuito ExpressRoute o una conexión ExpressRoute Direct. Un circuito ExpressRoute permite una conexión privada dedicada a Azure con la ayuda de un proveedor de conectividad. ExpressRoute Direct permite extender la red local directamente a la red de Microsoft en una ubicación de emparejamiento. También debe identificar el requisito de ancho de banda y el requisito de tipo de SKU para las necesidades de su empresa.",
+ "guid": "09e0dd1a-b1f7-46c3-8df1-48e841f53dca",
+ "service": "Azure Expressroute",
+ "text": "Planeación del circuito ExpressRoute o ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para mejorar la resistencia, planee tener varias rutas de acceso entre el perímetro local y las ubicaciones de emparejamiento (ubicaciones perimetrales del proveedor/Microsoft). Esta configuración se puede lograr a través de un proveedor de servicios diferente o a través de una ubicación diferente de la red local.",
+ "guid": "67812ddc-7c52-4b52-9569-b3f84d591def",
+ "service": "Azure Expressroute",
+ "text": "Diversidad de capas físicas",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para planear la recuperación ante desastres, configure circuitos ExpressRoute en más de una ubicación de emparejamiento. Puede crear circuitos en ubicaciones de emparejamiento en el mismo metro o en uno diferente y elegir trabajar con diferentes proveedores de servicios para diversas rutas a través de cada circuito. Para obtener más información, consulte Diseño para la recuperación ante desastres y Diseño para alta disponibilidad.",
+ "guid": "257031a8-f034-436c-9f54-e82aab53c559",
+ "service": "Azure Expressroute",
+ "text": "Planeación de circuitos con redundancia geográfica",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los circuitos dedicados de ExpressRoute garantizan una disponibilidad del \"99,95 %\" cuando se configura una conectividad activo-activo entre el entorno local y Azure. Este modo proporciona una mayor disponibilidad de la conexión de Expressroute. También se recomienda configurar BFD para una conmutación por error más rápida si hay un error de vínculo en una conexión.",
+ "guid": "068037d8-673f-4e86-bc9d-bf83fbe61d12",
+ "service": "Azure Expressroute",
+ "text": "Planeación de la conectividad Activo-Activo",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Cree una puerta de enlace de red virtual compatible con la zona de disponibilidad para una mayor resistencia y planifique puertas de enlace de red virtual en diferentes regiones para la recuperación ante desastres y la alta disponibilidad.",
+ "guid": "21f65e89-ffe2-489f-89f2-16cbc2e257d9",
+ "service": "Azure Expressroute",
+ "text": "Planeación de puertas de enlace de red virtual",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Configure la supervisión y las alertas para los circuitos ExpressRoute y el estado de la puerta de enlace de red virtual en función de varias métricas disponibles.",
+ "guid": "0f875bf3-de86-41b5-80d2-477de2f769a2",
+ "service": "Azure Expressroute",
+ "text": "Supervise el estado de los circuitos y las puertas de enlace",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "ExpressRoute usa el estado del servicio para notificar sobre el mantenimiento planeado y no planeado. La configuración del estado del servicio le notificará sobre los cambios realizados en los circuitos ExpressRoute.",
+ "guid": "c84ca8b2-74f8-4d25-8fc3-5b30c9969b5f",
+ "service": "Azure Expressroute",
+ "text": "Habilitar el estado del servicio",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "ca1c5676-1b0a-426e-baaf-da74ab806cb4",
+ "service": "Azure Expressroute",
+ "text": "Configure el registro de actividad para enviar registros al archivo.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "ef124dcd-17e6-4b4e-9bdd-511ef1959a05",
+ "service": "Azure Expressroute",
+ "text": "Mantenga un inventario de cuentas administrativas con acceso a los recursos de ExpressRoute.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "23fbb2f6-a269-4fb5-a3a0-04aae0516c91",
+ "service": "Azure Expressroute",
+ "text": "Configure el hash MD5 en el circuito ExpressRoute.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "8e02b876-d810-498b-b9a5-e50730fb10d6",
+ "service": "Azure Expressroute",
+ "text": "Configure MACSec para los recursos de ExpressRoute Direct.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "946a3e3d-bbaf-4b4a-ab80-2ef0a4631f30",
+ "service": "Azure Expressroute",
+ "text": "Cifre el tráfico a través del emparejamiento privado y el emparejamiento de Microsoft para el tráfico de red virtual.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Los registros de actividad proporcionan información sobre las operaciones que se realizaron en el nivel de suscripción para los recursos de ExpressRoute. Con los registros de actividad, puede determinar quién y cuándo se realizó una operación en el plano de control. La retención de datos es de solo 90 días y debe almacenarse en Log Analytics, Event Hubs o una cuenta de almacenamiento para el archivo.",
+ "guid": "9631d7ef-657c-4b07-9c75-96b2dcc5c5d2",
+ "service": "Azure Expressroute",
+ "text": "Configurar el registro de actividad para enviar registros al archivo",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use Azure RBAC para configurar roles para limitar las cuentas de usuario que pueden agregar, actualizar o eliminar la configuración de emparejamiento en un circuito ExpressRoute.",
+ "guid": "42b91c75-909f-4366-b014-48ab48639faf",
+ "service": "Azure Expressroute",
+ "text": "Mantener el inventario de las cuentas administrativas",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Durante la configuración del emparejamiento privado o del emparejamiento de Microsoft, aplique un hash MD5 para proteger los mensajes entre la ruta local y los enrutadores MSEE.",
+ "guid": "78f7d298-53bf-49ae-8ed7-994d46ccf2dd",
+ "service": "Azure Expressroute",
+ "text": "Configuración del hash MD5 en el circuito ExpressRoute",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La seguridad del control de acceso a medios es una seguridad punto a punto en la capa de enlace de datos. ExpressRoute Direct admite la configuración de MACSec para evitar amenazas de seguridad a protocolos como ARP, DHCP, LACP que normalmente no están protegidos en el vínculo Ethernet. Para obtener más información sobre cómo configurar MACSec, consulte MACSec para puertos ExpressRoute Direct.",
+ "guid": "d495a140-702d-4e08-bb86-7ceac8141df2",
+ "service": "Azure Expressroute",
+ "text": "Configuración de MACSec para recursos de ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Configure un túnel VPN de sitio a sitio a través del circuito ExpressRoute para cifrar la transferencia de datos entre la red local y la red virtual de Azure. Puede configurar un túnel mediante el emparejamiento privado o mediante el emparejamiento de Microsoft.",
+ "guid": "7729c230-dbdf-4aec-9295-fcb0a0c365f2",
+ "service": "Azure Expressroute",
+ "text": "Cifrar el tráfico mediante IPsec",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "43d6df90-c15b-494c-8d35-c4fc9180fbdb",
+ "service": "Azure Expressroute",
+ "text": "Familiarícese con los precios de ExpressRoute.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "92065590-2f1a-4a81-a6a6-2b102f66f9e3",
+ "service": "Azure Expressroute",
+ "text": "Determine la SKU del circuito ExpressRoute y el ancho de banda necesarios.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "f6e0770f-fa13-450e-8c81-baf51ba1b550",
+ "service": "Azure Expressroute",
+ "text": "Determine el tamaño de puerta de enlace de red virtual de ExpressRoute necesario.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "07d0ba21-7eef-47d1-8ba0-26fefa26c733",
+ "service": "Azure Expressroute",
+ "text": "Supervise los costos y cree alertas de presupuesto.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "d7be65f4-6500-49ea-92e3-3121fca4a076",
+ "service": "Azure Expressroute",
+ "text": "Desaprovisionamiento de circuitos ExpressRoute que ya no están en uso.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Para obtener información sobre los precios de ExpressRoute, consulte Descripción de los precios de Azure ExpressRoute. También puede utilizar la calculadora de precios. Asegúrese de que las opciones tengan el tamaño adecuado para satisfacer la demanda de capacidad y ofrecer el rendimiento esperado sin desperdiciar recursos.",
+ "guid": "f230ac81-7590-4300-9b9f-95d784e60ab2",
+ "service": "Azure Expressroute",
+ "text": "Familiarícese con los precios de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La forma en que se le cobra por el uso de ExpressRoute varía entre los tres tipos de SKU diferentes. Con el SKU local, se te cobra automáticamente un plan de datos ilimitados. Con los SKU Estándar y Premium, puedes seleccionar entre un plan de datos medido o ilimitado. Todos los datos de entrada son gratuitos, excepto cuando se utiliza el complemento Global Reach. Es importante comprender qué tipos de SKU y plan de datos funcionan mejor para su carga de trabajo para optimizar mejor el costo y el presupuesto. Para obtener más información sobre cómo cambiar el tamaño del circuito ExpressRoute, consulte Actualización del ancho de banda del circuito ExpressRoute.",
+ "guid": "3d8a5d49-af34-431f-b47f-ee8cf05479b5",
+ "service": "Azure Expressroute",
+ "text": "Determinar el SKU y el ancho de banda necesarios",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las puertas de enlace de red virtual de ExpressRoute se usan para pasar tráfico a una red virtual a través del emparejamiento privado. Revise las necesidades de rendimiento y escalado de la SKU de puerta de enlace de red virtual preferida. Seleccione la SKU de puerta de enlace adecuada en la carga de trabajo local a Azure.",
+ "guid": "82224292-a5a6-4b85-9b2f-b617117c4285",
+ "service": "Azure Expressroute",
+ "text": "Determinación del tamaño de la puerta de enlace de red virtual de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Supervise el costo del circuito ExpressRoute y cree alertas para anomalías de gasto y riesgos de gasto excesivo. Para obtener más información, consulte Supervisión de los costos de ExpressRoute.",
+ "guid": "e2e81918-e05e-49e1-a37c-cb65840c8699",
+ "service": "Azure Expressroute",
+ "text": "Supervise los costos y cree alertas de presupuesto",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Los circuitos ExpressRoute se cargan desde el momento en que se crean. Para reducir el costo innecesario, desaprovisione el circuito con el proveedor de servicios y elimine el circuito ExpressRoute de la suscripción. Para conocer los pasos sobre cómo quitar un circuito ExpressRoute, consulte Desaprovisionamiento de un circuito ExpressRoute.",
+ "guid": "131104a1-a17f-4b6b-9384-0b636a5d5265",
+ "service": "Azure Expressroute",
+ "text": "Desaprovisionar y eliminar circuitos ExpressRoute que ya no estén en uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "4c7d0c83-02a0-4535-a378-c2ab4c13469c",
+ "service": "Azure Expressroute",
+ "text": "Configure la supervisión de conexiones entre el entorno local y la red de Azure.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "69c4fb71-4d2c-4534-a4db-5e3146a31e1d",
+ "service": "Azure Expressroute",
+ "text": "Configure el estado del servicio para recibir notificaciones.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "33b4fca5-1f90-4947-8091-6c23aba0651a",
+ "service": "Azure Expressroute",
+ "text": "Revise las métricas y los paneles disponibles a través de ExpressRoute Insights mediante Network Insights.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "638c050d-7555-4575-bb8d-a4f2b613fa87",
+ "service": "Azure Expressroute",
+ "text": "Revise las métricas de recursos de ExpressRoute.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de conexiones permite supervisar la conectividad entre los recursos locales y Azure a través del emparejamiento privado de ExpressRoute y la conexión de emparejamiento de Microsoft. El monitor de conexión puede detectar problemas de red identificando en qué parte de la ruta de red se encuentra el problema y ayudarlo a resolver rápidamente fallas de configuración o hardware.",
+ "guid": "c6766a4e-7531-4335-af44-4fd1a3c706f4",
+ "service": "Azure Expressroute",
+ "text": "Configurar la supervisión de la conexión",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Configure las notificaciones de estado del servicio para avisar cuando se produzca un mantenimiento planeado y próximo en todos los circuitos ExpressRoute de la suscripción. El estado del servicio también muestra el mantenimiento anterior junto con el RCA si se produjera un mantenimiento no planificado.",
+ "guid": "5ff3a7b5-974a-466d-ab01-ad90c143969d",
+ "service": "Azure Expressroute",
+ "text": "Configurar el estado del servicio",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "ExpressRoute Insights con Network Insights le permite revisar y analizar circuitos, puertas de enlace, métricas de conexiones y paneles de estado de ExpressRoute. ExpressRoute Insights también proporciona una vista de topología de las conexiones de ExpressRoute en la que puede ver los detalles de los componentes del emparejamiento en un solo lugar. Métricas disponibles:- Disponibilidad- Rendimiento- Métricas de puerta de enlace",
+ "guid": "210546e8-29e3-40d9-869f-6236fddaadd0",
+ "service": "Azure Expressroute",
+ "text": "Revise las métricas con Network Insights",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "ExpressRoute usa Azure Monitor para recopilar métricas y crear alertas en función de la configuración. Las métricas se recopilan para los circuitos ExpressRoute, las puertas de enlace de ExpressRoute, las conexiones de puerta de enlace de ExpressRoute y ExpressRoute Direct. Estas métricas son útiles para diagnosticar problemas de conectividad y comprender el rendimiento de la conexión de ExpressRoute.",
+ "guid": "8031ed87-7573-469a-9b05-01f4ff4d9231",
+ "service": "Azure Expressroute",
+ "text": "Revisión de las métricas de recursos de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "Pruebe el rendimiento de la puerta de enlace de ExpressRoute para cumplir los requisitos de carga de trabajo.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "Aumente el tamaño de la puerta de enlace de ExpressRoute.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "102ee202-4b37-498a-8826-d698d11e3b03",
+ "service": "Azure Expressroute",
+ "text": "Actualice el ancho de banda del circuito ExpressRoute.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "627c2d5f-e638-41fd-be98-9ba1bf195ce3",
+ "service": "Azure Expressroute",
+ "text": "Habilite ExpressRoute FastPath para un mayor rendimiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "040f4b75-2706-42f3-9a9c-cee611032d91",
+ "service": "Azure Expressroute",
+ "text": "Supervise el circuito ExpressRoute y las métricas de puerta de enlace.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "Use Azure Connectivity Toolkit para probar el rendimiento en el circuito ExpressRoute para comprender la capacidad de ancho de banda y la latencia de la conexión de red.",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "Pruebe el rendimiento de la puerta de enlace de ExpressRoute para cumplir los requisitos de carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Actualice a una SKU de puerta de enlace superior para mejorar el rendimiento entre el entorno local y el entorno de Azure.",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "Aumente el tamaño de la puerta de enlace de ExpressRoute.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Actualice el ancho de banda de su circuito para cumplir con sus requisitos de carga de trabajo. El ancho de banda del circuito se comparte entre todas las redes virtuales conectadas al circuito ExpressRoute. En función de la carga de trabajo, una o varias redes virtuales pueden utilizar todo el ancho de banda del circuito.",
+ "guid": "db8f8202-db07-497f-be72-17db8bda90c5",
+ "service": "Azure Expressroute",
+ "text": "Actualización del ancho de banda del circuito ExpressRoute",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si usa una puerta de enlace de red virtual ErGW3AZ o de rendimiento Ultra, puede habilitar FastPath para mejorar el rendimiento de la ruta de acceso de datos entre la red local y la red virtual de Azure.",
+ "guid": "01566559-f881-409b-b04e-7d79a71f18e4",
+ "service": "Azure Expressroute",
+ "text": "Habilitación de ExpressRoute FastPath para un mayor rendimiento",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Configure alertas basadas en métricas de ExpressRoute para que le notifiquen de forma proactiva cuando se alcance un umbral determinado. Estas métricas son útiles para comprender las anomalías que pueden producirse con la conexión de ExpressRoute, como las interrupciones y el mantenimiento que se producen en los circuitos de ExpressRoute.",
+ "guid": "6440df71-d371-4190-920f-01c1815446db",
+ "service": "Azure Expressroute",
+ "text": "Supervisión de métricas de circuitos y puertas de enlace de ExpressRoute",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "94d626bf-3509-4311-8700-696d8d18617e",
+ "service": "Azure Files",
+ "text": "Use el análisis del modo de error: minimice los puntos de error teniendo en cuenta las dependencias internas, como la disponibilidad de redes virtuales, Azure Key Vault, Azure Content Delivery Network o Azure Front Door, puntos de conexión de Azure Front Door. Se pueden producir errores si necesita credenciales para acceder a Azure Files y las credenciales faltan en Key Vault. O bien, es posible que se produzca un error si las cargas de trabajo usan un punto de conexión basado en una red de entrega de contenido que falta. En estos casos, es posible que tenga que configurar las cargas de trabajo para conectarse a un punto de conexión alternativo. Para obtener información general sobre el análisis del modo de error, consulte Recomendaciones para realizar el análisis del modo de error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "bedde06b-f58a-43ab-b6cc-76e41503e72a",
+ "service": "Azure Files",
+ "text": "Definir objetivos de confiabilidad y recuperación: revise los contratos de nivel de servicio (SLA) de Azure. Derive el objetivo de nivel de servicio (SLO) para la cuenta de almacenamiento. Por ejemplo, la configuración de redundancia que elija podría afectar al SLO. Tenga en cuenta el efecto de una interrupción regional, la posibilidad de pérdida de datos y el tiempo necesario para restaurar el acceso después de una interrupción. Tenga en cuenta también la disponibilidad de las dependencias internas que identificó como parte del análisis del modo de error.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Files",
+ "text": "Configurar la redundancia de datos: para obtener la máxima durabilidad, elija una configuración que copie los datos entre zonas de disponibilidad o regiones globales. Para obtener la máxima disponibilidad, elija una configuración que permita a los clientes leer datos de la región secundaria durante una interrupción de la región primaria.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "61e937b4-1989-496a-af6f-5df76d352ed8",
+ "service": "Azure Files",
+ "text": "Diseñar aplicaciones: diseñe sus aplicaciones para que cambien sin problemas de modo que lean datos de una región secundaria si la región primaria no está disponible. Esta consideración de diseño solo se aplica a las configuraciones de almacenamiento con redundancia geográfica (GRS) y almacenamiento con redundancia de zona geográfica (GZRS). Diseñe sus aplicaciones para manejar adecuadamente las interrupciones, lo que reduce el tiempo de inactividad de los clientes.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "cb1c49d6-9cdb-48f6-a3f8-c35c2037fc92",
+ "service": "Azure Files",
+ "text": "Explore las funciones que le ayudarán a cumplir sus objetivos de recuperación: Haga que los archivos se puedan restaurar para que pueda recuperar archivos dañados, editados o eliminados.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Files",
+ "text": "Cree un plan de recuperación: considere las características de protección de datos, las operaciones de copia de seguridad y restauración o los procedimientos de conmutación por error. Prepárese para posibles pérdidas de datos e inconsistencias de datos, así como para el tiempo y el costo de la conmutación por error. Para obtener más información, consulte Recomendaciones para diseñar una estrategia de recuperación ante desastres.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "8b151d5d-630d-438e-b7ad-aa487d6c5561",
+ "service": "Azure Files",
+ "text": "Supervisión de posibles problemas de disponibilidad: suscríbase al panel de Azure Service Health para supervisar posibles problemas de disponibilidad. Use métricas de almacenamiento y registros de diagnóstico en Azure Monitor para investigar alertas.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "La redundancia protege sus datos contra fallos inesperados. Las opciones de configuración de ZRS y GZRS se replican en varias zonas de disponibilidad y permiten que las aplicaciones continúen leyendo datos durante una interrupción. Para obtener más información, consulte Durabilidad y disponibilidad por escenario de interrupción y Parámetros de durabilidad y disponibilidad.",
+ "guid": "5596d241-a342-4c47-b8db-29f7a519bf36",
+ "service": "Azure Files",
+ "text": "Configure la cuenta de almacenamiento para la redundancia. Para obtener la máxima disponibilidad y durabilidad, configure su cuenta con almacenamiento con redundancia de zona (ZRS), GRS o GZRS. Las regiones limitadas de Azure admiten ZRS para recursos compartidos de archivos estándar y premium. Solo las cuentas SMB estándar son compatibles con GRS y GZRS. Los recursos compartidos premium de SMB y NFS no son compatibles con GRS y GZRS. Azure Files no admite el almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS) ni el almacenamiento con redundancia de zona geográfica con acceso de lectura (RA-GZRS). Si configura una cuenta de almacenamiento para usar RA-GRS o RA-GZRS, los recursos compartidos de archivos se configuran y facturan como GRS o GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta propiedad le ayuda a calcular la cantidad de datos que podría perder si inicia una conmutación por error de la cuenta. Todos los datos y metadatos que se escriben antes de la última hora de sincronización están disponibles en la región secundaria, pero es posible que se pierdan los datos y metadatos que se escriben después de la última hora de sincronización porque no se escriben en la región secundaria.",
+ "guid": "9fc3b4c1-257d-4bab-b373-1938930410a5",
+ "service": "Azure Files",
+ "text": "Antes de iniciar una conmutación por error o conmutación por recuperación, compruebe el valor de la propiedad de tiempo de la última sincronización para evaluar la posibilidad de pérdida de datos. Esta recomendación sólo se aplica a las configuraciones GRS y GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La eliminación temporal funciona en un nivel de recurso compartido de archivos para proteger los recursos compartidos de archivos de Azure frente a la eliminación accidental. La restauración a un momento dado protege contra la eliminación accidental o los daños porque puede restaurar los recursos compartidos de archivos a un estado anterior. Para obtener más información, consulte Información general sobre la protección de datos.",
+ "guid": "8bcb6fde-bf94-4f36-8eae-347e5d4f0dea",
+ "service": "Azure Files",
+ "text": "Como parte de su estrategia de copia de seguridad y recuperación, habilite la eliminación temporal y use instantáneas para la restauración a un momento dado. Puede usar Azure Backup para realizar copias de seguridad de los recursos compartidos de archivos SMB. También puede usar Azure File Sync para realizar copias de seguridad de recursos compartidos de archivos SMB locales en un recurso compartido de archivos de Azure. Azure Backup también le permite realizar una copia de seguridad almacenada (versión preliminar) de Azure Files para proteger sus datos de ataques de ransomware o pérdida de datos de origen debido a un actor malintencionado o un administrador no autorizado. Mediante el uso de la copia de seguridad almacenada, Azure Backup copia y almacena los datos en el almacén de Recovery Services. Esto crea una copia externa de los datos que puede conservar durante un máximo de 99 años. Azure Backup crea y administra los puntos de recuperación según la programación y la retención definidas en la directiva de copia de seguridad. Aprende más.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "2548e433-aeab-4738-bec1-0a3587ac4d15",
+ "service": "Azure Files",
+ "text": "Revise la línea base de seguridad para Azure Storage: para empezar, revise la línea base de seguridad para Storage.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "6121894c-398e-479f-b386-309e7cf3caa0",
+ "service": "Azure Files",
+ "text": "Considere la posibilidad de usar controles de red para restringir el tráfico de entrada y salida: es posible que le resulte cómodo exponer su cuenta de almacenamiento a la red pública de Internet en determinadas condiciones, por ejemplo, si usa la autenticación basada en identidad para conceder acceso a los recursos compartidos de archivos. Sin embargo, se recomienda usar controles de red para conceder el nivel mínimo necesario de acceso a los usuarios y las aplicaciones. Para obtener más información, consulte Cómo abordar la seguridad de red para la cuenta de almacenamiento.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "8395a636-8c19-4b22-a175-2a0f0d83f44f",
+ "service": "Azure Files",
+ "text": "Reduzca la superficie expuesta a ataques: utilice el cifrado en tránsito y evite el acceso a través de conexiones no seguras (HTTP) para reducir la superficie expuesta a ataques. Requerir que los clientes envíen y reciban datos mediante la versión más reciente del protocolo de seguridad de la capa de transporte (TLS).",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "62e5154f-98cb-4dc2-8e62-dd5c546d6a6d",
+ "service": "Azure Files",
+ "text": "Minimice el uso de claves de cuenta de almacenamiento: la autenticación basada en identidad proporciona una seguridad superior en comparación con el uso de una clave de cuenta de almacenamiento. Sin embargo, debe usar una clave de cuenta de almacenamiento para obtener el control administrativo total de un recurso compartido de archivos, incluida la capacidad de tomar posesión de un archivo. Otorgue a las entidades de seguridad solo los permisos necesarios para realizar sus tareas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "dd5352d4-faa0-4a85-83db-00395c1a9df8",
+ "service": "Azure Files",
+ "text": "Proteger la información confidencial: proteja la información confidencial, como las claves de la cuenta de almacenamiento y las contraseñas. No te recomendamos que utilices estas formas de autorización, pero si lo haces, debes asegurarte de rotarlas, caducarlas y almacenarlas de forma segura.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "1edd34b4-610b-483a-83a0-d8bcb5915558",
+ "service": "Azure Files",
+ "text": "Detección de amenazas: habilite Microsoft Defender para Storage para detectar intentos potencialmente dañinos de acceder a los recursos compartidos de archivos de Azure a través de los protocolos SMB o FileREST. Los administradores de suscripciones reciben alertas por correo electrónico con detalles de actividades sospechosas y recomendaciones sobre cómo investigar y corregir amenazas. Defender para Storage no admite funcionalidades antivirus para recursos compartidos de archivos de Azure. Si usa Defender para Storage, los recursos compartidos de archivos con muchas transacciones incurren en costos significativos, por lo que considere la posibilidad de optar por no participar en Defender para Storage para cuentas de almacenamiento específicas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Bloquee la cuenta para evitar la eliminación accidental o malintencionada de la cuenta de almacenamiento, lo que puede provocar la pérdida de datos.",
+ "guid": "e125f557-f42e-4462-b680-0e7375d89a99",
+ "service": "Azure Files",
+ "text": "Aplique un bloqueo de Azure Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 3.x es un protocolo seguro para Internet, pero es posible que no tenga la capacidad de cambiar las directivas de la organización o del ISP. Puede usar una puerta de enlace de VPN o una conexión de ExpressRoute como opción alternativa.",
+ "guid": "14cda8e5-c05a-4c69-9352-2f7b39b5d423",
+ "service": "Azure Files",
+ "text": "Abra el puerto TCP 445 de salida o configure una puerta de enlace de VPN o una conexión de Azure ExpressRoute para que los clientes fuera de Azure accedan al recurso compartido de archivos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 1 es un protocolo anticuado, ineficiente e inseguro. Desactívelo en los clientes para mejorar su posición de seguridad.",
+ "guid": "e2ef284e-804b-4592-866f-5d577069b823",
+ "service": "Azure Files",
+ "text": "Si abre el puerto 445, asegúrese de deshabilitar SMBv1 en clientes Windows y Linux. Azure Files no es compatible con SMB 1, pero debe deshabilitarlo en sus clientes.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El tráfico de red viaja a través de la red troncal de Microsoft en lugar de la red pública de Internet, lo que elimina la exposición al riesgo de la red pública de Internet.",
+ "guid": "19d4b509-167c-4144-9705-9d65c48ec279",
+ "service": "Azure Files",
+ "text": "Considere la posibilidad de deshabilitar el acceso de red pública a la cuenta de almacenamiento. Habilite el acceso a la red pública solo si los clientes y servicios SMB externos a Azure requieren acceso a la cuenta de almacenamiento. Si deshabilita el acceso a la red pública, cree un punto de conexión privado para la cuenta de almacenamiento. Se aplican las tarifas estándar de procesamiento de datos para los puntos de conexión privados. Un punto de conexión privado no bloquea las conexiones con el punto de conexión público. De todos modos, debe deshabilitar el acceso a la red pública como se describió anteriormente. Si no necesita una dirección IP estática para el recurso compartido de archivos y desea evitar el costo de los puntos de conexión privados, puede restringir el acceso del punto de conexión público a redes virtuales y direcciones IP específicas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Minimice el riesgo de crear oportunidades para los atacantes.",
+ "guid": "105c5f3d-dfc6-459b-93f0-c5046972f1ba",
+ "service": "Azure Files",
+ "text": "Habilite reglas de firewall que limiten el acceso a redes virtuales específicas. Comience con acceso cero y, a continuación, proporcione de forma metódica e incremental la menor cantidad de acceso necesaria para los clientes y los servicios.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use la autenticación basada en identidad para reducir la posibilidad de que un atacante use una clave de cuenta de almacenamiento para acceder a recursos compartidos de archivos.",
+ "guid": "1ba283cb-62bf-4ee8-9657-ba59ddd6bccd",
+ "service": "Azure Files",
+ "text": "Cuando sea posible, use la autenticación basada en identidad con el cifrado de vales Kerberos AES-256 para autorizar el acceso a los recursos compartidos de archivos de Azure SMB.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Use Key Vault para recuperar claves en tiempo de ejecución en lugar de guardarlas con la aplicación. Key Vault también facilita la rotación de las claves sin interrumpir las aplicaciones. Rote periódicamente las claves de cuenta para reducir el riesgo de exponer sus datos a ataques maliciosos.",
+ "guid": "7cf01b2b-1e7d-47fe-94e1-a65cc7750063",
+ "service": "Azure Files",
+ "text": "Si usa claves de cuenta de almacenamiento, almacénelas en Key Vault y asegúrese de volver a generarlas periódicamente. Puede denegar por completo el acceso de la clave de la cuenta de almacenamiento al recurso compartido de archivos quitando NTLMv2 de la configuración de seguridad SMB del recurso compartido. Pero, por lo general, no debe quitar NTLMv2 de la configuración de seguridad de SMB del recurso compartido, ya que los administradores aún necesitan usar la clave de cuenta para algunas tareas.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Esta configuración garantiza que todas las solicitudes que se realicen en la cuenta de almacenamiento se realicen a través de conexiones seguras (HTTPS). Se producirá un error en cualquier solicitud realizada a través de HTTP.",
+ "guid": "4fbd14ad-9bf1-491f-b621-35f086b48ccd",
+ "service": "Azure Files",
+ "text": "En la mayoría de los casos, debe habilitar la opción Transferencia segura necesaria en todas las cuentas de almacenamiento para habilitar el cifrado en tránsito para los recursos compartidos de archivos SMB. No habilite esta opción si necesita permitir que clientes muy antiguos accedan al recurso compartido. Si deshabilita la transferencia segura, asegúrese de usar los controles de red para restringir el tráfico.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS 1.2 es más seguro y rápido que TLS 1.0 y 1.1, que no son compatibles con los algoritmos criptográficos modernos ni los conjuntos de cifrado.",
+ "guid": "65d8332d-6657-4466-9dc1-5d1497d14041",
+ "service": "Azure Files",
+ "text": "Configure la cuenta de almacenamiento para que TLS 1.2 sea la versión mínima para que los clientes envíen y reciban datos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "SMB 3.1.1, lanzado con Windows 10, contiene importantes actualizaciones de seguridad y rendimiento. AES-256-GCM ofrece un cifrado de canal más seguro.",
+ "guid": "010a5a8d-db30-4c97-975e-db80658bdb4d",
+ "service": "Azure Files",
+ "text": "Utilice solo la versión más reciente del protocolo SMB compatible (actualmente 3.1.1%) y use solo AES-256-GCM para el cifrado de canales SMB. Azure Files expone la configuración que puede usar para alternar el protocolo SMB y hacerlo más compatible o más seguro, en función de los requisitos de su organización. De forma predeterminada, se permiten todas las versiones SMB. Sin embargo, SMB 2.1 no está permitido si habilita Requerir transferencia segura porque SMB 2.1 no admite el cifrado de datos en tránsito. Si restringe esta configuración a un alto nivel de seguridad, es posible que algunos clientes no puedan conectarse al recurso compartido de archivos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "04493486-a5be-4bb2-8940-cea321db8380",
+ "service": "Azure Files",
+ "text": "Revise la línea base de seguridad para Almacenamiento: Para comenzar, revise la línea base de seguridad para Almacenamiento.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "85f4e9b5-aa91-4d96-ad22-9132f7412718",
+ "service": "Azure Files",
+ "text": "Comprenda los requisitos de seguridad de su organización: los recursos compartidos de archivos de Azure de NFS solo admiten clientes de Linux que usan el protocolo NFSv4.1, con compatibilidad con la mayoría de las características de la especificación del protocolo 4.1. Algunas características de seguridad, como la autenticación Kerberos, las listas de control de acceso (ACL) y el cifrado en tránsito, no son compatibles.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "7f1ac6f7-d832-4c71-adbd-ae31d36320a7",
+ "service": "Azure Files",
+ "text": "Use la seguridad y los controles de nivel de red para restringir el tráfico de entrada y salida: la autenticación basada en identidad no está disponible para los recursos compartidos de archivos de Azure NFS, por lo que debe usar la seguridad y los controles de nivel de red para conceder el nivel mínimo requerido de acceso a los usuarios y las aplicaciones. Para obtener más información, consulte Cómo abordar la seguridad de red para la cuenta de almacenamiento.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Bloquee la cuenta para evitar la eliminación accidental o malintencionada de la cuenta de almacenamiento, lo que podría provocar la pérdida de datos.",
+ "guid": "a51426ff-75f8-429b-940a-6ddd2c06d3fb",
+ "service": "Azure Files",
+ "text": "Aplique un bloqueo de Resource Manager en la cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Abra el puerto 2049 para permitir que los clientes se comuniquen con el recurso compartido de archivos de Azure NFS.",
+ "guid": "af6d0dd1-6add-4f9b-96b6-e65dba4242a4",
+ "service": "Azure Files",
+ "text": "Debe abrir el puerto 2049 en los clientes en los que desea montar el recurso compartido NFS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El tráfico de red viaja a través de la red troncal de Microsoft en lugar de la red pública de Internet, lo que elimina la exposición al riesgo de la red pública de Internet.",
+ "guid": "528b4915-a4d9-413d-9b79-e4078f5cd27d",
+ "service": "Azure Files",
+ "text": "Solo se puede acceder a los recursos compartidos de archivos de NFS Azure a través de redes restringidas. Por lo tanto, debe crear un punto de conexión privado para la cuenta de almacenamiento o restringir el acceso del punto de conexión público a las redes virtuales y direcciones IP seleccionadas. Se recomienda crear un punto de conexión privado. Debe configurar la seguridad de nivel de red para los recursos compartidos de NFS, ya que Azure Files no admite el cifrado en tránsito con el protocolo NFS. Debe deshabilitar la opción Requerir transferencia segura en la cuenta de almacenamiento para usar recursos compartidos de archivos de Azure NFS. Se aplican tarifas estándar de procesamiento de datos para los puntos de conexión privados. Si no necesita una dirección IP estática para el recurso compartido de archivos y desea evitar el costo de los puntos de conexión privados, puede restringir el acceso a los puntos de conexión públicos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "No permitir el uso de claves de cuenta de almacenamiento para que la cuenta de almacenamiento sea más segura.",
+ "guid": "2f92995e-d1d1-411d-96cd-309faf0a6ada",
+ "service": "Azure Files",
+ "text": "Considere la posibilidad de no permitir el acceso a la clave de la cuenta de almacenamiento en el nivel de la cuenta de almacenamiento. No necesita este acceso para montar recursos compartidos de archivos NFS. Pero tenga en cuenta que el control administrativo total de un recurso compartido de archivos, incluida la capacidad de tomar posesión de un archivo, requiere el uso de una clave de cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "bc87a075-cc79-46be-a413-106c995f41ef",
+ "service": "Azure Files",
+ "text": "Decida si la carga de trabajo requiere el rendimiento de recursos compartidos de archivos premium (SSD premium de Azure) o si el almacenamiento de HDD estándar de Azure es suficiente: determine el tipo de cuenta de almacenamiento y el modelo de facturación en función del tipo de almacenamiento que necesite. Si necesita grandes cantidades de operaciones de entrada/salida por segundo (IOPS), velocidades de transferencia de datos extremadamente rápidas o una latencia muy baja, debe elegir recursos compartidos de archivos de Azure premium. Los recursos compartidos de archivos de Azure NFS solo están disponibles en el nivel Premium. Los recursos compartidos de archivos NFS y SMB tienen el mismo precio en el nivel premium.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "fc9a86d1-8dcf-4e82-87fa-81d736ab60f4",
+ "service": "Azure Files",
+ "text": "Cree una cuenta de almacenamiento para el recurso compartido de archivos y elija un nivel de redundancia: elija una cuenta estándar (GPv2) o premium (FileStorage). El nivel de redundancia que elija afecta al costo. Cuanta más redundancia, mayor es el coste. El almacenamiento con redundancia local (LRS) es el más asequible. GRS solo está disponible para recursos compartidos de archivos SMB estándar. Los recursos compartidos de archivos estándar solo muestran información de transacciones en el nivel de cuenta de almacenamiento, por lo que se recomienda implementar solo un recurso compartido de archivos en cada cuenta de almacenamiento para garantizar la visibilidad completa de la facturación.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "1a78abc4-bed1-486b-952e-fd147db1123a",
+ "service": "Azure Files",
+ "text": "Comprenda cómo se calcula su factura: los recursos compartidos de archivos estándar de Azure proporcionan un modelo de pago por uso. Los recursos compartidos premium usan un modelo aprovisionado en el que se especifica y se paga por adelantado una determinada cantidad de capacidad, IOPS y rendimiento. En el modelo de pago por uso, los medidores realizan un seguimiento de la cantidad de datos almacenados en la cuenta, o la capacidad, y la cantidad y el tipo de transacciones en función del uso que haga de esos datos. El modelo de pago por uso puede ser rentable porque solo paga por lo que usa. Con el modelo de pago por uso, no es necesario aprovisionar o desaprovisionar en exceso el almacenamiento en función de los requisitos de rendimiento o las fluctuaciones de la demanda.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "52d8f743-4489-49a3-876c-0f36827a8f8e",
+ "service": "Azure Files",
+ "text": "Calcular el costo de la capacidad y las operaciones: puede usar la calculadora de precios de Azure para modelar los costos asociados con el almacenamiento, la entrada y la salida de datos. Compare el costo asociado con varias regiones, tipos de cuentas y configuraciones de redundancia. Para obtener más información, consulte Precios de Azure Files.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "9dede643-062f-40d2-869e-10458f04859a",
+ "service": "Azure Files",
+ "text": "Elija el nivel de acceso más rentable: los recursos compartidos de archivos de Azure SMB estándar ofrecen tres niveles de acceso: optimizado para transacciones, frecuente y esporádico. Los tres niveles se almacenan en el mismo hardware de almacenamiento estándar. La principal diferencia para estos tres niveles son sus precios de almacenamiento de datos en reposo, que son más bajos en los niveles más esporádicos, y los precios de transacción, que son más altos en los niveles esporádicos. Para obtener más información, consulte Diferencias en los niveles estándar.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "8ec1a7f3-7cff-41f4-9cd5-59656983c739",
+ "service": "Azure Files",
+ "text": "Decida qué servicios de valor añadido necesita: Azure Files admite integraciones con servicios de valor añadido como Backup, Azure File Sync y Defender for Storage. Estas soluciones tienen sus propios costos de licencia y producto, pero a menudo se consideran parte del costo total de propiedad del almacenamiento de archivos. Tenga en cuenta otros aspectos de costo si usa Azure File Sync.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "ae36a7c7-3255-4544-b751-bdbe08716cc2",
+ "service": "Azure Files",
+ "text": "Crear barreras de protección: cree presupuestos basados en suscripciones y grupos de recursos. Utilice políticas de gobernanza para restringir los tipos de recursos, las configuraciones y las ubicaciones. Además, utilice el control de acceso basado en roles (RBAC) para bloquear las acciones que pueden provocar un gasto excesivo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "b5ca80d5-d5c8-4d24-8a3c-b2d96a2bcd71",
+ "service": "Azure Files",
+ "text": "Supervise los costos: asegúrese de que los costos se mantengan dentro de los presupuestos, compare los costos con las previsiones y vea dónde se produce un gasto excesivo. Puede usar el panel de análisis de costos de Azure Portal para supervisar los costos. También puede exportar datos de costos a una cuenta de almacenamiento y usar Excel o Power BI para analizar esos datos.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "a6bc4298-8317-4153-b281-2b83af53fd26",
+ "service": "Azure Files",
+ "text": "Supervisión del uso: supervise continuamente los patrones de uso para detectar cuentas de almacenamiento y recursos compartidos de archivos no utilizados o infrautilizados. Compruebe si hay aumentos inesperados en la capacidad, lo que podría indicar que está recopilando numerosos archivos de registro o archivos eliminados temporalmente. Desarrolle una estrategia para eliminar archivos o moverlos a niveles de acceso más rentables.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "La migración a Azure Files es una carga de trabajo temporal que requiere muchas transacciones. Optimice el precio de las cargas de trabajo de transacciones elevadas para ayudar a reducir los costos de migración.",
+ "guid": "4fc0a2e6-1138-4c55-9644-890104fecd40",
+ "service": "Azure Files",
+ "text": "Al migrar a recursos compartidos de archivos estándar de Azure, se recomienda comenzar en el nivel optimizado para transacciones durante la migración inicial. El uso de transacciones durante la migración no suele ser indicativo del uso normal de transacciones. Esta consideración no se aplica a los recursos compartidos de archivos premium porque el modelo de facturación aprovisionada no cobra por las transacciones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Seleccione el nivel de acceso adecuado para los recursos compartidos de archivos estándar a fin de reducir considerablemente los costos.",
+ "guid": "4ee4d06f-ae90-4ba1-b87e-608a8871e182",
+ "service": "Azure Files",
+ "text": "Después de migrar la carga de trabajo, si usa recursos compartidos de archivos estándar, elija cuidadosamente el nivel de acceso más rentable para el recurso compartido de archivos: frecuente, esporádico u optimizado para transacciones. Después de operar durante unos días o semanas con uso regular, puede insertar los recuentos de transacciones en la calculadora de precios para averiguar qué nivel se adapta mejor a su carga de trabajo. La mayoría de los clientes deben elegir cool incluso si usan activamente el recurso compartido. Pero debe examinar cada recurso compartido y comparar el saldo de la capacidad de almacenamiento con las transacciones para determinar su nivel. Si los costos de transacción representan un porcentaje significativo de su factura, los ahorros del uso del nivel de acceso esporádico a menudo compensan este costo y minimizan el costo total total. Se recomienda mover recursos compartidos de archivos estándar entre niveles de acceso solo cuando sea necesario para optimizar los cambios en el patrón de carga de trabajo. Cada movimiento incurre en transacciones. Para obtener más información, consulte Cambiar entre niveles estándar.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Aprovisione en exceso los recursos compartidos de archivos premium en una cantidad razonable para ayudar a mantener el rendimiento y tener en cuenta el crecimiento futuro y los requisitos de rendimiento.",
+ "guid": "569b045f-3018-4487-be79-5ae7fe5f42f6",
+ "service": "Azure Files",
+ "text": "Si usa recursos compartidos premium, asegúrese de aprovisionar capacidad y rendimiento más que suficientes para su carga de trabajo, pero no tanto como para incurrir en costos innecesarios. Se recomienda sobreaprovisionar dos o tres veces. Puede escalar dinámicamente los recursos compartidos de archivos premium hacia arriba o hacia abajo en función de las características de rendimiento de almacenamiento y entrada/salida (E/S).",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las reservas de tres años pueden proporcionar un descuento de hasta el 36% en el costo total del almacenamiento de archivos. Las reservas no afectan al rendimiento.",
+ "guid": "e4d7ee80-2657-4a1b-bf32-b16588f1511e",
+ "service": "Azure Files",
+ "text": "Use las reservas de Azure Files, también conocidas como instancias reservadas, para confirmar previamente el uso de almacenamiento y obtener un descuento. Use reservas para cargas de trabajo de producción o cargas de trabajo de desarrollo y pruebas con huellas coherentes. Para obtener más información, consulte Optimización de costos con reservas de almacenamiento. Las reservas no incluyen cargos por transacción, ancho de banda, transferencia de datos y almacenamiento de metadatos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las instantáneas diferenciales garantizan que no se le facture varias veces por almacenar los mismos datos. Sin embargo, debe seguir supervisando el uso de instantáneas para ayudar a reducir la factura de Azure Files.",
+ "guid": "90fbd856-01ee-41d2-a912-039edc971236",
+ "service": "Azure Files",
+ "text": "Supervise el uso de instantáneas. Las instantáneas conllevan cargos, pero se facturan en función del uso de almacenamiento diferencial de cada instantánea. Solo pagas por la diferencia en cada instantánea. Para obtener más información, consulte Instantáneas. Azure File Sync toma instantáneas de nivel de recurso compartido y de nivel de archivo como parte del uso normal, lo que puede aumentar la factura total de Azure Files.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Establezca un período de retención para que los archivos eliminados temporalmente no se acumulen y aumenten el costo de la capacidad. Después del período de retención configurado, los datos eliminados permanentemente no incurren en ningún costo.",
+ "guid": "d28f02bd-5de7-4d5b-bfbf-46ff161833b5",
+ "service": "Azure Files",
+ "text": "Establezca períodos de retención para la función de eliminación temporal, especialmente cuando comience a usarla por primera vez. Considere comenzar con un período de retención corto para comprender mejor cómo afecta la función a su factura. El período de retención mínimo recomendado es de siete días. Al eliminar temporalmente recursos compartidos de archivos estándar y premium, se facturan como capacidad usada en lugar de capacidad aprovisionada. Y los recursos compartidos de archivos premium se facturan a la tarifa de instantánea mientras se encuentran en el estado de eliminación temporal. Los recursos compartidos de archivos estándar se facturan a la tarifa normal mientras se encuentran en el estado de eliminación temporal.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Files",
+ "text": "Cree planes de mantenimiento y recuperación de emergencia: tenga en cuenta las características de protección de datos, las operaciones de copia de seguridad y restauración, y los procedimientos de conmutación por error. Prepárese para posibles pérdidas de datos e inconsistencias de datos, así como para el tiempo y el costo de la conmutación por error.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "6fd27f65-59e7-41ee-8994-d93ef20dbd99",
+ "service": "Azure Files",
+ "text": "Supervisión del estado de la cuenta de almacenamiento: cree paneles de información de almacenamiento para supervisar las métricas de disponibilidad, rendimiento y resistencia. Configure alertas para identificar y abordar problemas en su sistema antes de que sus clientes los noten. Use la configuración de diagnóstico para enrutar los registros de recursos a un área de trabajo de registros de Azure Monitor. A continuación, puede consultar los registros para investigar las alertas más profundamente.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "e6d6588e-c646-4221-832a-0e289e272531",
+ "service": "Azure Files",
+ "text": "Revise periódicamente la actividad de uso compartido de archivos: la actividad de uso compartido puede cambiar con el tiempo. Mueva los recursos compartidos de archivos estándar a niveles de acceso más esporádicos, o puede aprovisionar o desaprovisionar capacidad para recursos compartidos premium. Al mover recursos compartidos de archivos estándar a un nivel de acceso diferente, se incurre en un cargo por transacción. Mueva los recursos compartidos de archivos estándar solo cuando sea necesario para reducir su factura mensual.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede usar los procesos de DevOps existentes para implementar nuevas cuentas de almacenamiento y usar Azure Policy para aplicar su configuración.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Files",
+ "text": "Use la infraestructura como código (IaC) para definir los detalles de las cuentas de almacenamiento en plantillas de Azure Resource Manager (plantillas de ARM), Bicep o Terraform.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Puede realizar un seguimiento del estado y el funcionamiento de cada una de sus cuentas. Cree fácilmente paneles e informes que las partes interesadas pueden usar para realizar un seguimiento del estado de sus cuentas de almacenamiento.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Files",
+ "text": "Use la información de almacenamiento para realizar un seguimiento del estado y el rendimiento de las cuentas de almacenamiento. Storage Insights proporciona una vista unificada de los errores, el rendimiento, la disponibilidad y la capacidad de todas las cuentas de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Monitor proporciona una vista de la disponibilidad, el rendimiento y la resistencia de los recursos compartidos de archivos.",
+ "guid": "a4946cee-c1bc-4f12-9819-fddf25f093c4",
+ "service": "Azure Files",
+ "text": "Utilice Monitor para analizar métricas, como la disponibilidad, la latencia y el uso, y para crear alertas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "6c44da65-6a81-442d-87e7-dd1ecdbca0a5",
+ "service": "Azure Files",
+ "text": "Planeación de la escala: comprenda los objetivos de escalabilidad y rendimiento de las cuentas de almacenamiento, Azure Files y Azure File Sync.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "d9878efd-6174-4cf7-b7f4-429d8e82e577",
+ "service": "Azure Files",
+ "text": "Comprenda los patrones de uso y aplicaciones para lograr un rendimiento predecible: determine la sensibilidad a la latencia, los requisitos de IOPS y rendimiento, la duración y la frecuencia de la carga de trabajo y la paralelización de la carga de trabajo. Use Azure Files para aplicaciones multiproceso para ayudarle a alcanzar los límites superiores de rendimiento de un servicio. Si la mayoría de las solicitudes están centradas en los metadatos, como createfile, openfile, closefile, queryinfo o querydirectory, las solicitudes crean una latencia deficiente que es mayor que las operaciones de lectura y escritura. Si tiene este problema, considere la posibilidad de separar el recurso compartido de archivos en varios recursos compartidos de archivos dentro de la misma cuenta de almacenamiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "3e382c2e-26ee-459d-967e-19377821c26e",
+ "service": "Azure Files",
+ "text": "Elija el tipo de cuenta de almacenamiento óptimo: si su carga de trabajo requiere grandes cantidades de IOPS, velocidades de transferencia de datos extremadamente rápidas o una latencia muy baja, debe elegir cuentas de almacenamiento premium (FileStorage). Puede usar una cuenta estándar de uso general v2 para la mayoría de las cargas de trabajo de recursos compartidos de archivos SMB. La principal compensación entre los dos tipos de cuentas de almacenamiento es el costo frente al rendimiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "a0564644-9831-4f33-b4e7-6a56a6a658fb",
+ "service": "Azure Files",
+ "text": "Cree cuentas de almacenamiento en las mismas regiones en las que se conectan los clientes para reducir la latencia: cuanto más lejos esté del servicio Azure Files, mayor será la latencia y más difícil será alcanzar los límites de escala de rendimiento. Esta consideración es especialmente cierta cuando se accede a Azure Files desde entornos locales. Si es posible, asegúrese de que la cuenta de almacenamiento y los clientes estén ubicados en la misma región de Azure. Optimice para los clientes locales minimizando la latencia de red o usando una conexión de ExpressRoute para extender las redes locales a la nube de Microsoft a través de una conexión privada.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "0dfbbd8e-9f88-4e9d-b13c-01f12078faef",
+ "service": "Azure Files",
+ "text": "Recopile datos de rendimiento: supervise el rendimiento de la carga de trabajo, incluidas las métricas de latencia, disponibilidad y uso. Analice los registros para diagnosticar problemas como los tiempos de espera y la limitación. Cree alertas para notificarle si un recurso compartido de archivos se está limitando, está a punto de limitarse o experimenta una latencia alta.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "86f0acc5-ce95-4ea0-b0b7-b733f1b2b10b",
+ "service": "Azure Files",
+ "text": "Optimización para implementaciones híbridas: si usa Azure File Sync, el rendimiento de la sincronización depende de muchos factores: el servidor de Windows y la configuración del disco subyacente, el ancho de banda de red entre el servidor y el almacenamiento de Azure, el tamaño del archivo, el tamaño total del conjunto de datos y la actividad del conjunto de datos. Para medir el rendimiento de una solución basada en Azure File Sync, determine el número de objetos, como archivos y directorios, que procesa por segundo.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "Aumente el rendimiento y las IOPS a la vez que reduce el coste total de propiedad. Las ventajas de rendimiento aumentan con el número de archivos que distribuyen la carga.",
+ "guid": "24a072d9-074d-4bcf-a65d-9a14336f8075",
+ "service": "Azure Files",
+ "text": "Habilite SMB Multicanal para recursos compartidos de archivos SMB premium. SMB Multichannel permite a un cliente SMB 3.1.1 establecer varias conexiones de red a un recurso compartido de archivos de Azure SMB. SMB multicanal solo funciona cuando la característica está habilitada tanto en el lado del cliente (su cliente) como en el lado del servicio (Azure). En los clientes de Windows, SMB Multicanal está habilitado de forma predeterminada, pero debe habilitarlo en su cuenta de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Aumente el rendimiento a escala y reduzca el costo total de propiedad de los recursos compartidos de archivos NFS.",
+ "guid": "c06bc804-3315-43f1-96ca-70169c020494",
+ "service": "Azure Files",
+ "text": "Use la opción de montaje del lado cliente nconnect con recursos compartidos de archivos de Azure NFS en clientes Linux. Nconnect permite usar más conexiones TCP entre el cliente y el servicio premium de Azure Files para NFSv4.1.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Evite la limitación para proporcionar la mejor experiencia posible al cliente.",
+ "guid": "494347eb-d007-45b5-b13c-9a28ee4f8e9a",
+ "service": "Azure Files",
+ "text": "Asegúrese de que el recurso compartido de archivos o la cuenta de almacenamiento no se estén limitando, lo que puede dar lugar a una alta latencia, un bajo rendimiento o un bajo número de IOPS. Las solicitudes se limitan cuando se alcanzan los límites de IOPS, entrada o salida. En el caso de las cuentas de almacenamiento estándar, la limitación se produce en el nivel de cuenta. En el caso de los recursos compartidos de archivos premium, la limitación suele producirse en el nivel de recurso compartido.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "5820ff87-d98e-490e-93a0-28028bbb05e6",
+ "service": "Azure Firewall",
+ "text": "Implemente Azure Firewall en redes virtuales de centro o como parte de centros de conectividad de Azure Virtual WAN.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "7c605481-a9d5-480f-8738-ac2022ef28ed",
+ "service": "Azure Firewall",
+ "text": "Aproveche la resistencia de las zonas de disponibilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "2ceafe5f-6511-42a6-9687-cebaf586b293",
+ "service": "Azure Firewall",
+ "text": "Cree la estructura de directiva de Azure Firewall.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "85a53628-bd7b-43bb-a817-b6f0c11c34c9",
+ "service": "Azure Firewall",
+ "text": "Revise la lista de problemas conocidos.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "74a2596f-1cc9-4715-8de2-5afdde7b9f9a",
+ "service": "Azure Firewall",
+ "text": "Supervise el estado de mantenimiento de Azure Firewall.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Cree fácilmente arquitecturas radiales y transitivas con servicios de seguridad nativos para la gobernanza y la protección del tráfico. Para obtener más información sobre las topologías de red, consulte la documentación de Azure Cloud Adoption Framework.",
+ "guid": "21f4d348-c086-4e96-b5bc-91f8a3c25841",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager con topologías de red tradicionales de Hub & Spokes o Azure Virtual WAN para implementar y administrar instancias de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las directivas de Azure Firewall se pueden organizar en una estructura jerárquica para superponer una directiva base central. Permita que las políticas granulares cumplan con los requisitos de regiones específicas. Delegue políticas de firewall incrementales a los equipos de seguridad locales a través del control de acceso basado en roles (RBAC). Algunas configuraciones son específicas por instancia, por ejemplo, las reglas de DNAT y la configuración de DNS, por lo que es posible que se requieran varias políticas especializadas.",
+ "guid": "1e604a31-46f0-4fcc-9f0e-1ca46cc3f677",
+ "service": "Azure Firewall",
+ "text": "Cree directivas de Azure Firewall para controlar la posición de seguridad en entornos de red globales. Asigne directivas a todas las instancias de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "En el caso de las implementaciones existentes, migre las reglas de Azure Firewall a las directivas de Azure Firewall Manager. Use Azure Firewall Manager para administrar de forma centralizada los firewalls y las directivas. Para más información, consulte Migración a Azure Firewall Premium.",
+ "guid": "d17fbf01-c796-45dd-9ca4-99af38b2ae9b",
+ "service": "Azure Firewall",
+ "text": "Migre las reglas de Azure Firewall clásico a las directivas de Azure Firewall Manager para las implementaciones existentes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El grupo de productos de Azure Firewall mantiene una lista actualizada de problemas conocidos en esta ubicación. Esta lista contiene información importante relacionada con el comportamiento por diseño, las correcciones en construcción, las limitaciones de la plataforma, junto con posibles soluciones alternativas o mitigaciones.",
+ "guid": "b7623c43-bb6b-4629-a655-551c92e2dffa",
+ "service": "Azure Firewall",
+ "text": "Revise la lista de problemas conocidos de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Hay límites en la estructura de la política, incluido el número de reglas y grupos de recopilación de reglas, el tamaño total de la política y los destinos de origen y destino. Asegúrese de redactar su póliza y mantenerse dentro de los umbrales documentados.",
+ "guid": "9230da4d-4e27-4106-9552-294b1a93d780",
+ "service": "Azure Firewall",
+ "text": "Asegúrese de que la directiva de Azure Firewall se adhiere a los límites y recomendaciones de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Azure Firewall proporciona diferentes acuerdos de nivel de servicio cuando se implementa en una sola zona de disponibilidad y cuando se implementa en varias zonas. Para más información, consulte Acuerdo de Nivel de Servicio para Azure Firewall. Para obtener información sobre todos los acuerdos de nivel de servicio de Azure, consulte Resumen de acuerdos de nivel de servicio para los servicios de Azure.",
+ "guid": "6a88967d-b182-437d-ac3b-1cb45ddfaa86",
+ "service": "Azure Firewall",
+ "text": "Implemente Azure Firewall en varias zonas de disponibilidad para obtener un acuerdo de nivel de servicio (SLA) superior.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "En el caso de las arquitecturas tradicionales de Hub & Spokes, en este artículo se explican los detalles de varias regiones. En el caso de los centros virtuales protegidos (Azure Virtual WAN), la intención y las directivas de enrutamiento deben configurarse para proteger las comunicaciones entre centros y de sucursal a sucursal. En el caso de las cargas de trabajo diseñadas para ser resistentes a errores y tolerantes a errores, recuerde tener en cuenta que las instancias de Azure Firewall y Azure Virtual Network son recursos regionales.",
+ "guid": "a4b78865-a047-4afc-b7e6-b2f54cee83cb",
+ "service": "Azure Firewall",
+ "text": "En entornos de varias regiones, implemente una instancia de Azure Firewall por región.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Supervise de cerca el indicador de métricas clave del estado de mantenimiento de Azure Firewall, como el rendimiento, el estado de mantenimiento del firewall, la utilización del puerto SNAT y las métricas de sondeo de latencia de AZFW. Además, Azure Firewall ahora se integra con Azure Resource Health. Con la comprobación de estado de los recursos de Azure Firewall, ahora puede ver el estado de mantenimiento de Azure Firewall y solucionar los problemas de servicio que podrían afectar a los recursos de Azure Firewall.",
+ "guid": "9621bb59-3034-4e42-8344-5ce24b47425b",
+ "service": "Azure Firewall",
+ "text": "Supervise las métricas de Azure Firewall y el estado de mantenimiento de los recursos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "b0b563a2-ec75-4a12-981a-6c6138175122",
+ "service": "Azure Firewall",
+ "text": "Determine si necesita tunelización forzada.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "c39df35c-43a4-4bc2-ae65-3201a1b274a4",
+ "service": "Azure Firewall",
+ "text": "Cree reglas para las políticas basadas en criterios de acceso con privilegios mínimos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "08bebd22-0d6a-469c-ae5b-fed8774452de",
+ "service": "Azure Firewall",
+ "text": "Aproveche la inteligencia de amenazas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "89484b0c-7b36-4fa2-9064-ae6db7dc411a",
+ "service": "Azure Firewall",
+ "text": "Habilite el proxy DNS de Azure Firewall.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "a875d2e4-5476-450f-8206-aa79ecdcb2e3",
+ "service": "Azure Firewall",
+ "text": "Tráfico de red directo a través de Azure Firewall.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "50dc96a3-9dca-4aab-97f5-9f8654d4f49c",
+ "service": "Azure Firewall",
+ "text": "Determine si desea utilizar proveedores de seguridad como servicio (SECaaS) de terceros.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "98318578-48f2-4870-adc0-a6a2cf9ce25e",
+ "service": "Azure Firewall",
+ "text": "Proteja las direcciones IP públicas de Azure Firewall con DDoS.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Azure Firewall debe tener conexión directa a Internet. Si AzureFirewallSubnet aprende una ruta predeterminada a la red local a través del protocolo de puerta de enlace fronteriza, debe configurar Azure Firewall en el modo de tunelización forzada. Con la característica de tunelización forzada, necesitará otro espacio de direcciones /26 para la subred de administración de Azure Firewall. Si se trata de una instancia de Azure Firewall existente que no se puede volver a configurar en el modo de tunelización forzada, cree una UDR con una ruta 0.0.0.0/0. Establezca el valor de NextHopType como Internet. Asócielo con AzureFirewallSubnet para mantener la conectividad a Internet.",
+ "guid": "a845b563-f080-4a92-83b0-400feb87ee4e",
+ "service": "Azure Firewall",
+ "text": "Si es necesario enrutar todo el tráfico enlazado a Internet a un próximo salto designado en lugar de ir directamente a Internet, configure Azure Firewall en modo de tunelización forzada (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al implementar una nueva instancia de Azure Firewall, si habilita el modo de tunelización forzada, puede establecer la dirección IP pública en None para implementar un plano de datos totalmente privado. Sin embargo, el plano de administración sigue requiriendo una dirección IP pública solo con fines de administración. El tráfico interno de las redes virtuales y locales no usará esa dirección IP pública. Para más información sobre la tunelización forzada, consulte Tunelización forzada de Azure Firewall.",
+ "guid": "176ae9e3-7a07-4885-ab4e-72a9ea2ee7fc",
+ "service": "Azure Firewall",
+ "text": "Establezca la dirección IP pública en None para implementar un plano de datos totalmente privado al configurar Azure Firewall en el modo de tunelización forzada (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las directivas de Azure Firewall se pueden organizar en una estructura jerárquica para superponer una directiva base central. Permita que las políticas granulares cumplan con los requisitos de regiones específicas. Cada política puede contener diferentes conjuntos de reglas DNAT, de red y de aplicación con prioridad, acción y orden de procesamiento específicos. Cree sus reglas basadas en el principio de confianza cero de acceso con privilegios mínimos. En este artículo se explica cómo se procesan las reglas.",
+ "guid": "f1c5e5d4-9e41-4b27-b53f-fb36ddce75b7",
+ "service": "Azure Firewall",
+ "text": "Cree reglas para las políticas de firewall en función de los criterios de acceso con privilegios mínimos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "IDPS es una de las características de seguridad más eficaces de Azure Firewall (Premium) y debe estar habilitada. En función de los requisitos de seguridad y de la aplicación, y teniendo en cuenta el impacto en el rendimiento (consulte la sección Costo a continuación), se pueden seleccionar los modos Alerta o Alerta y denegación.",
+ "guid": "0722a8f4-bea5-4309-93de-d93fb93e0733",
+ "service": "Azure Firewall",
+ "text": "Habilite IDPS en modo Alerta o Alerta y denegación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al habilitar esta característica, los clientes de las redes virtuales apuntan a Azure Firewall como servidor DNS. Protegerá la infraestructura DNS interna a la que no se accederá ni se expondrá directamente. Azure Firewall también debe estar configurado para usar DNS personalizado que se usará para reenviar consultas DNS.",
+ "guid": "8afc40b9-179e-4b5d-ba89-897925ad6d09",
+ "service": "Azure Firewall",
+ "text": "Habilite la configuración de proxy de Azure Firewall (DNS).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "En una arquitectura tradicional de Hub & Spokes, configure los UDR para forzar el tráfico a través de Azure Firewall para la conectividad \"SpoketoSpoke\", \"SpoketoInternet\" y \"SpoketoHybrid\". En Azure Virtual WAN, en su lugar, configure la intención y las directivas de enrutamiento para redirigir el tráfico privado o de Internet a través de la instancia de Azure Firewall integrada en el centro.",
+ "guid": "54cc495b-54f8-4dc9-9ed9-e20c15a8beb9",
+ "service": "Azure Firewall",
+ "text": "Configure rutas definidas por el usuario (UDR) para forzar el tráfico a través de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con la característica de proxy explícito habilitada en la ruta de salida, puede configurar una configuración de proxy en la aplicación web de envío (como un explorador web) con Azure Firewall configurado como proxy. Como resultado, el tráfico web llegará a la dirección IP privada del firewall y, por lo tanto, sale directamente del firewall sin usar una UDR. Esta característica también facilita el uso de múltiples firewalls sin modificar las rutas de red existentes.",
+ "guid": "18462426-38d0-444b-aaec-99aa97aefc57",
+ "service": "Azure Firewall",
+ "text": "Si no es posible aplicar la UDR y solo se requiere el redireccionamiento del tráfico web, considere la posibilidad de usar Azure Firewall como proxy explícito",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede utilizar sus ofertas de SECaaS de terceros, las mejores de su clase, para proteger el acceso a Internet de sus usuarios. Este escenario requiere Azure Virtual WAN con una puerta de enlace de VPN S2S en el centro, ya que usa un túnel IPSec para conectarse a la infraestructura del proveedor. Los proveedores de SECaaS pueden cobrar tarifas de licencia adicionales y limitar el rendimiento de las conexiones IPSec. Existen soluciones alternativas como ZScaler Cloud Connector y podrían ser más adecuadas.",
+ "guid": "cfcce0d3-c52d-4405-9316-d503ffcf5349",
+ "service": "Azure Firewall",
+ "text": "Configure los proveedores de seguridad de software como servicio (SaaS) de terceros compatibles dentro de Firewall Manager si desea utilizar estas soluciones para proteger las conexiones salientes.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede usar FQDN en función de la resolución de DNS en Azure Firewall y directivas de firewall. Esta capacidad le permite filtrar el tráfico saliente con cualquier protocolo TCP/UDP (incluidos NTP, SSH, RDP y más). Debe habilitar la configuración del proxy DNS de Azure Firewall para usar FQDN en las reglas de red. Para obtener información sobre cómo funciona, consulte Filtrado de FQDN de Azure Firewall en reglas de red.",
+ "guid": "ce2815a6-eee5-4c54-91e7-9ee1e95a191a",
+ "service": "Azure Firewall",
+ "text": "Use el filtrado de nombres de dominio completos (FQDN) en las reglas de red.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Una etiqueta de servicio representa un grupo de prefijos de dirección IP para ayudar a minimizar la complejidad de la creación de reglas de seguridad. Con las etiquetas de servicio en las reglas de red, es posible habilitar el acceso saliente a servicios específicos en Azure, Dynamics y Office 365 sin abrir amplios rangos de direcciones IP. Azure mantendrá automáticamente la asignación entre estas etiquetas y las direcciones IP subyacentes usadas por cada servicio. La lista de etiquetas de servicio disponibles para Azure Firewall se muestra aquí: Az Firewall Service Tags.",
+ "guid": "55fe92cd-c2a0-4b0b-bd8b-691291c73651",
+ "service": "Azure Firewall",
+ "text": "Use etiquetas de servicio en reglas de red para habilitar el acceso selectivo a servicios específicos de Microsoft.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Una etiqueta FQDN representa un grupo de nombres de dominio completos (FQDN) asociados a servicios conocidos de Microsoft. Puede usar una etiqueta FQDN en las reglas de la aplicación para permitir el tráfico de red saliente necesario a través del firewall para algunos servicios específicos de Azure, Office 365, Windows 365 e Intune.",
+ "guid": "c9cac1b2-3969-4de0-b36f-6f9992d9ebc6",
+ "service": "Azure Firewall",
+ "text": "Use etiquetas FQDN en las reglas de aplicación para habilitar el acceso selectivo a servicios específicos de Microsoft.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Un plan de protección contra DDoS proporciona funciones de mitigación mejoradas para defender su firewall de los ataques DDoS. Azure Firewall Manager es una herramienta integrada para crear la infraestructura de firewall y los planes de protección contra DDoS. Para más información, consulte Configuración de un plan de protección contra DDoS de Azure mediante Azure Firewall Manager.",
+ "guid": "e7925fd9-7502-4cb4-9b51-cbf8f546a5b2",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager para crear y asociar un plan de protección contra DDoS con la red virtual del centro (no se aplica a Azure Virtual WAN).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Con Azure Firewall Premium, si se usa la característica de inspección TLS, se recomienda aprovechar una entidad de certificación (CA) empresarial interna para el entorno de producción. Los certificados autofirmados solo deben usarse con fines de prueba o PoC.",
+ "guid": "2e318870-f258-484d-aef6-ed2972db1f44",
+ "service": "Azure Firewall",
+ "text": "Utilice una PKI empresarial para generar certificados para la inspección TLS.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Si sus requisitos de seguridad requieren la implementación de un enfoque Zero-Trust para las aplicaciones web (inspección y cifrado), se recomienda seguir esta guía. En este documento, se explicará cómo integrar Azure Firewall y Application Gateway, tanto en escenarios tradicionales de Hub & Spoke como de Virtual WAN.",
+ "guid": "34821124-0275-4c49-8f1c-20eb84027df3",
+ "service": "Azure Firewall",
+ "text": "Revisión de la guía de configuración de Confianza cero para Azure Firewall y Application Gateway",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "ffdfd2b7-e799-4c09-9c76-1471fe5f8db9",
+ "service": "Azure Firewall",
+ "text": "Seleccione la SKU de Azure Firewall que se va a implementar.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "cca81cf9-4d7f-4e04-99e9-8ecfb533d814",
+ "service": "Azure Firewall",
+ "text": "Determine si algunas instancias no necesitan una asignación permanente las 24 horas del día, los 7 días de la semana.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "50c204ab-2e28-456c-a731-3ecf2e38d6d7",
+ "service": "Azure Firewall",
+ "text": "Determine dónde puede optimizar el uso del firewall en las cargas de trabajo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "365207d2-1008-4a6e-ad87-f4191a31a004",
+ "service": "Azure Firewall",
+ "text": "Supervise y optimice el uso de las instancias de firewall para determinar la rentabilidad.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "39b1fd82-3efb-459b-b789-a9dc631f9f90",
+ "service": "Azure Firewall",
+ "text": "Revise y optimice el número de direcciones IP públicas necesarias y las políticas utilizadas.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "46753a55-3740-4a6d-808b-fbe485bc66e5",
+ "service": "Azure Firewall",
+ "text": "Revise los requisitos de registro, estime el costo y controle el tiempo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Azure Firewall se puede implementar en tres SKU diferentes: Básico, Estándar y Premium. Se recomienda Azure Firewall Premium para proteger aplicaciones muy confidenciales (como el procesamiento de pagos). Azure Firewall Standard se recomienda para los clientes que buscan un firewall de capa 3 a capa 7 y necesita escalado automático para controlar períodos de tráfico máximo de hasta 30 Gbps. Azure Firewall Basic se recomienda para clientes de pymes con necesidades de rendimiento de 250 Mbps. Si es necesario, es posible cambiar a una versión anterior o actualizar entre Standard y Premium, como se documenta aquí. Para más información, consulte Elección de la SKU de Azure Firewall adecuada para satisfacer sus necesidades.",
+ "guid": "ba45f704-2456-4d6a-999d-57db4dbf3ff5",
+ "service": "Azure Firewall",
+ "text": "Implemente la SKU de Azure Firewall adecuada.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Es posible que tenga entornos de desarrollo o pruebas que solo se usen durante el horario comercial. Para más información, consulte Desasignación y asignación de Azure Firewall.",
+ "guid": "2ef42b67-50cc-4d54-bd3d-324ad2044fc7",
+ "service": "Azure Firewall",
+ "text": "Detenga las implementaciones de Azure Firewall que no necesitan ejecutarse las 24 horas del día, los 7 días de la semana.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede usar una instancia central de Azure Firewall en la red virtual del centro de conectividad o en el centro de conectividad segura de Virtual WAN y compartir el mismo firewall entre muchas redes virtuales de radio que estén conectadas al mismo centro de conectividad desde la misma región. Asegúrese de que no haya tráfico inesperado entre regiones como parte de la topología en estrella tipo hub-radi.",
+ "guid": "ae5816a1-1766-425a-a117-2873865a9f10",
+ "service": "Azure Firewall",
+ "text": "Comparta la misma instancia de Azure Firewall en varias cargas de trabajo y redes virtuales de Azure.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El registro de flujos principales (conocido en la industria como flujos de grasa) muestra las conexiones principales que contribuyen al rendimiento más alto a través del firewall. Se recomienda revisar periódicamente el tráfico procesado por Azure Firewall y buscar posibles optimizaciones para reducir la cantidad de tráfico que atraviesa el firewall.",
+ "guid": "791f974e-8c73-46ee-9b9e-26dd3a6c6845",
+ "service": "Azure Firewall",
+ "text": "Revise periódicamente el tráfico procesado por Azure Firewall y busque optimizaciones de carga de trabajo de origen",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Para identificar las implementaciones de Azure Firewall no utilizadas, empiece por analizar las métricas de supervisión y las UDR asociadas a las subredes que apuntan a la dirección IP privada del firewall. Combine esa información con otras validaciones, por ejemplo, si la instancia de Azure Firewall tiene reglas (clásicas) para NAT, red y aplicación, o incluso si la configuración de Proxy DNS está configurada en Deshabilitado, y con documentación interna sobre el entorno y las implementaciones. Puede detectar implementaciones que sean rentables a lo largo del tiempo. Para obtener más información sobre la supervisión de registros y métricas, consulte Supervisión de registros y métricas de Azure Firewall y uso de puertos SNAT.",
+ "guid": "6590ab7b-01d8-487c-ad40-c325eada375c",
+ "service": "Azure Firewall",
+ "text": "Revise las instancias de Azure Firewall infrautilizadas. Identifique y elimine las implementaciones de Azure Firewall no utilizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Revise detenidamente las políticas, las asociaciones y la herencia de Firewall Manager. Las políticas se facturan en función de las asociaciones de firewall. Una póliza con cero o una asociación de firewall es gratuita. Una política con varias asociaciones de firewall se factura a una tarifa fija. Para obtener más información, consulte Precios: Azure Firewall Manager.",
+ "guid": "c82f1a0b-3dd1-4da7-9006-5b870e0ea843",
+ "service": "Azure Firewall",
+ "text": "Use Azure Firewall Manager y sus directivas para reducir los costos operativos, aumentar la eficiencia y reducir la sobrecarga de administración.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Valide si todas las direcciones IP públicas asociadas están en uso. Si no están en uso, desconsocie y elimínelos. Evalúe la utilización del puerto SNAT antes de eliminar cualquier dirección IP. Solo usarás el número de direcciones IP públicas que necesite tu firewall. Para más información, consulte Supervisión de registros y métricas de Azure Firewall y uso de puertos SNAT.",
+ "guid": "58401f6a-8858-4d03-bf00-7f6d8747297a",
+ "service": "Azure Firewall",
+ "text": "Elimine las direcciones IP públicas no utilizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Azure Firewall tiene la capacidad de registrar de forma exhaustiva los metadatos de todo el tráfico que ve, en áreas de trabajo de Log Analytics, almacenamiento o soluciones de terceros a través de Event Hubs. Sin embargo, todas las soluciones de registro incurren en costos de procesamiento y almacenamiento de datos. En volúmenes muy grandes, estos costos pueden ser significativos, se debe considerar un enfoque rentable y una alternativa a Log Analytics y estimar los costos. Considere si es necesario registrar los metadatos de tráfico para todas las categorías de registro y modificarlos en Configuración de diagnóstico si es necesario.",
+ "guid": "a9f71813-ccf8-427a-9ce3-676b4123eff4",
+ "service": "Azure Firewall",
+ "text": "Revise los requisitos de registro.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "c8e11b57-bc16-4a60-9c0d-aeae7239fe91",
+ "service": "Azure Firewall",
+ "text": "Mantener el inventario y la copia de seguridad de la configuración y las directivas de Azure Firewall.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "be3e8ab7-db2a-40f7-a76a-fba15b34b88d",
+ "service": "Azure Firewall",
+ "text": "Aproveche los registros de diagnóstico para la supervisión y la solución de problemas del firewall.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "af454d15-f640-47db-9864-7c31cbdcdffc",
+ "service": "Azure Firewall",
+ "text": "Aproveche el libro de supervisión de Azure Firewall.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "010e0c46-9d19-46fb-9a85-4bb79828db8a",
+ "service": "Azure Firewall",
+ "text": "Revise periódicamente la información y los análisis de su política.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "e455cf35-374c-4e02-9432-e0dc531b829b",
+ "service": "Azure Firewall",
+ "text": "Integre Azure Firewall con Microsoft Defender for Cloud y Microsoft Sentinel.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Firewall se debe usar para controlar el tráfico entre redes virtuales, entre redes virtuales y redes locales, el tráfico saliente a Internet y el tráfico entrante que no es HTTP/s. Para el control del tráfico dentro de la red virtual, se recomienda usar grupos de seguridad de red.",
+ "guid": "337df674-237d-4b82-ac92-ae45f34a6e3d",
+ "service": "Azure Firewall",
+ "text": "No use Azure Firewall para el control del tráfico dentro de la red virtual.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Si se usa el enfoque de infraestructura como código (IaC) para mantener Azure Firewall y todas las dependencias, la copia de seguridad y el control de versiones de las directivas de Azure Firewall ya deben estar en su lugar. De lo contrario, se puede implementar un mecanismo complementario basado en una aplicación lógica externa para automatizar y proporcionar una solución eficaz.",
+ "guid": "174e4ca6-77d4-4b83-8f05-0c54c43792ec",
+ "service": "Azure Firewall",
+ "text": "Mantenga copias de seguridad periódicas de los artefactos de Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de diagnóstico son un componente clave para muchas herramientas y estrategias de supervisión de Azure Firewall y deben estar habilitados. Puede supervisar Azure Firewall mediante registros de firewall o libros. También puede usar registros de actividad para auditar operaciones en recursos de Azure Firewall.",
+ "guid": "7e27b44b-e8c0-4f25-9fce-78a85810d715",
+ "service": "Azure Firewall",
+ "text": "Habilite los registros de diagnóstico para Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los registros de firewall estructurados son un tipo de datos de registro que se organizan en un nuevo formato específico. Utilizan un esquema predefinido para estructurar los datos de registro de una manera que facilite la búsqueda, el filtrado y el análisis. Las últimas herramientas de monitoreo se basan en este tipo de registros, por lo que a menudo es un requisito previo. Utilice el formato de registros de diagnóstico anterior solo si hay una herramienta existente con un requisito previo para ello. No habilite ambos formatos de registro al mismo tiempo.",
+ "guid": "078ab6f4-2ef5-4f91-856c-be9e3c2748a1",
+ "service": "Azure Firewall",
+ "text": "Utilice el formato de registros de firewall estructurados.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La experiencia del portal de Azure Firewall ahora incluye un nuevo libro en la interfaz de usuario de la sección Supervisión, por lo que ya no es necesaria una instalación independiente. Con el libro de Azure Firewall, puede extraer información valiosa de los eventos de Azure Firewall, profundizar en las reglas de red y aplicaciones, y examinar las estadísticas relativas a las actividades del firewall en direcciones URL, puertos y direcciones.",
+ "guid": "a246ca16-d2da-4ebc-ad28-0bcbb0813be0",
+ "service": "Azure Firewall",
+ "text": "Use el libro de supervisión de Azure Firewall integrado.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se deben crear alertas para supervisar al menos el rendimiento, el estado de mantenimiento del firewall, la utilización del puerto SNAT y las métricas de sondeo de latencia de AZFW. Para obtener información sobre la supervisión de registros y métricas, consulte Supervisión de registros y métricas de Azure Firewall.",
+ "guid": "0c405dff-403a-4ead-94d9-5539ba1eaea6",
+ "service": "Azure Firewall",
+ "text": "Supervise las métricas clave y cree alertas para los indicadores de la utilización de la capacidad de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Si estas herramientas están disponibles en el entorno, se recomienda aprovechar la integración con las soluciones de Microsoft Defender for Cloud y Microsoft Sentinel. Con la integración de Microsoft Defender for Cloud, puede visualizar el estado general de la infraestructura de red y la seguridad de la red en un solo lugar, incluida la seguridad de red de Azure en todas las redes virtuales y centros virtuales repartidos en diferentes regiones de Azure. La integración con Microsoft Sentinel proporciona capacidades de detección y prevención de amenazas.",
+ "guid": "6643f4d1-ee99-4466-9175-164787d00fc3",
+ "service": "Azure Firewall",
+ "text": "Configure la integración de Azure Firewall con Microsoft Defender for Cloud y Microsoft Sentinel.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Policy Analytics es una nueva característica que proporciona información sobre el impacto de las directivas de Azure Firewall. Le ayuda a identificar posibles problemas (alcanzar los límites de las directivas, reglas de uso bajo, reglas redundantes, reglas demasiado genéricas, recomendación de uso de grupos IP) en las directivas y proporciona recomendaciones para mejorar la posición de seguridad y el rendimiento del procesamiento de reglas.",
+ "guid": "43d91873-4442-40ae-b2a3-263bc7fdcaab",
+ "service": "Azure Firewall",
+ "text": "Revise periódicamente el panel de análisis de políticas para identificar posibles problemas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se proporcionan consultas de ejemplo para Azure Firewall. Estos le permitirán identificar rápidamente lo que está sucediendo dentro de su firewall y verificar qué regla se activó o qué regla está permitiendo/bloqueando una solicitud.",
+ "guid": "8bc24ea6-da9e-48b8-a05c-4fce251d2046",
+ "service": "Azure Firewall",
+ "text": "Familiarícese con las consultas KQL (lenguaje de consulta Kusto) para permitir un análisis rápido y la solución de problemas mediante los registros de Azure Firewall.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "9469b3e2-6be2-470b-a10b-9fb0150c5733",
+ "service": "Azure Firewall",
+ "text": "Revise y optimice periódicamente las reglas del firewall.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "9efe3606-1aa2-4e06-bf6a-2e5214cf080f",
+ "service": "Azure Firewall",
+ "text": "Revise los requisitos de la directiva y las oportunidades para resumir los rangos de IP y la lista de direcciones URL.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "93db9b9d-c43d-47e2-a1cf-e81841274059",
+ "service": "Azure Firewall",
+ "text": "Evalúe los requisitos de puerto SNAT.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "fbe59997-e12b-497b-bdbd-d2a5e3f728e7",
+ "service": "Azure Firewall",
+ "text": "Planifique pruebas de carga para probar el rendimiento del escalado automático en su entorno.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "c68f8c08-fe1e-4515-a877-67daaa008ab0",
+ "service": "Azure Firewall",
+ "text": "No habilite las herramientas de diagnóstico y el registro si no son necesarios.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "Policy Analytics es una nueva característica que proporciona información sobre el impacto de las directivas de Azure Firewall. Le ayuda a identificar posibles problemas (alcanzar los límites de las directivas, reglas de uso bajo, reglas redundantes, reglas demasiado genéricas, recomendación de uso de grupos IP) en las directivas y proporciona recomendaciones para mejorar la posición de seguridad y el rendimiento del procesamiento de reglas.",
+ "guid": "cbbaf175-2b8e-4a1f-af5a-a9cbfb798ffb",
+ "service": "Azure Firewall",
+ "text": "Utilice el panel de análisis de políticas para identificar posibles optimizaciones para las políticas de firewall.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "En lugar de crear y mantener explícitamente una larga lista de sitios públicos de Internet, considere la posibilidad de usar las categorías web de Azure Firewall. Esta función categorizará dinámicamente el contenido web y permitirá la creación de reglas de aplicación compactas.",
+ "guid": "b8bc28b7-69d4-49d3-8a1e-8dd7ba71ebbe",
+ "service": "Azure Firewall",
+ "text": "Considere la posibilidad de utilizar las categorías web para permitir o denegar el acceso saliente de forma masiva.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si es necesario que Azure Firewall funcione en modo IDPS Alerta y denegación, considere detenidamente el impacto en el rendimiento, tal como se documenta en esta página.",
+ "guid": "b91be607-0c6b-4c0d-bdd2-367879f7632d",
+ "service": "Azure Firewall",
+ "text": "Evalúe el impacto en el rendimiento de IDPS en modo de alerta y denegación.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall admite actualmente 2496 puertos por dirección IP pública por instancia de conjunto de escalado de máquinas virtuales de back-end. De forma predeterminada, hay dos instancias de Virtual Machine Scale Set. Por lo tanto, hay 4992 puertos por IP de destino de flujo, puerto de destino y protocolo (TCP o UDP). El firewall se escala hasta un máximo de 20 instancias. Puede evitar los límites configurando implementaciones de Azure Firewall con un mínimo de cinco direcciones IP públicas para implementaciones susceptibles al agotamiento de SNAT.",
+ "guid": "a5847147-e7ef-48d1-ba16-d896fdce1b9f",
+ "service": "Azure Firewall",
+ "text": "Evalúe el posible problema de agotamiento del puerto SNAT.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Cree tráfico inicial que no forme parte de las pruebas de carga 20 minutos antes de la prueba. Utilice la configuración de diagnóstico para capturar eventos de escalado vertical y reducido. Puede usar el servicio Azure Load Testing para generar el tráfico inicial. Permite que la instancia de Azure Firewall escale verticalmente sus instancias al máximo.",
+ "guid": "908a8bfa-9e9f-4199-8b5a-f2a031ab22e0",
+ "service": "Azure Firewall",
+ "text": "Prepare correctamente Azure Firewall antes de cualquier prueba de rendimiento.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall es una implementación dedicada en la red virtual. Dentro de la red virtual, se requiere una subred dedicada para la instancia de Azure Firewall. Azure Firewall aprovisiona más capacidad a medida que se escala. Un espacio de direcciones /26 para sus subredes garantiza que el firewall tenga suficientes direcciones IP disponibles para acomodar el escalado. Azure Firewall no necesita una subred mayor que /26. El nombre de la subred de Azure Firewall debe ser AzureFirewallSubnet.",
+ "guid": "d0e66443-59f1-48cb-995f-eaa6688c4f3b",
+ "service": "Azure Firewall",
+ "text": "Configure una subred de Azure Firewall (AzureFirewallSubnet) con un espacio de direcciones /26.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Azure Firewall proporciona algunas funcionalidades de registro avanzadas que pueden resultar costosas de mantener siempre activas. En su lugar, deben usarse solo con fines de solución de problemas y tener una duración limitada, y luego deshabilitarse cuando ya no sean necesarios. Por ejemplo, los flujos principales y los registros de seguimiento de flujo son costosos, lo que puede provocar un uso excesivo de CPU y almacenamiento en la infraestructura de Azure Firewall.",
+ "guid": "2c51e141-6e45-42cd-8c22-c55b219ffe83",
+ "service": "Azure Firewall",
+ "text": "No habilite el registro avanzado si no es necesario",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "59ed40bd-06a0-4125-ab99-afc88a248aa5",
+ "service": "Azure Front Door",
+ "text": "Estimar el patrón y el volumen de tráfico. El número de solicitudes del cliente al perímetro de Azure Front Door puede influir en la elección del nivel. Si necesita admitir un gran volumen de solicitudes, considere la posibilidad de utilizar el nivel Premium de Azure Front Door, ya que el rendimiento afecta en última instancia a la disponibilidad. Sin embargo, hay una compensación de costos. Estos niveles se describen en Eficiencia del rendimiento.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "51f023f3-53b4-4878-8548-2b08a6b095ab",
+ "service": "Azure Front Door",
+ "text": "Elija su estrategia de implementación. Los enfoques de implementación fundamentales son activo-activo y activo-pasivo. La implementación activo-activo significa que varios entornos o marcas que ejecutan la carga de trabajo atienden el tráfico. La implementación activa-pasiva significa que solo la región primaria controla todo el tráfico, pero conmuta por error a la región secundaria cuando es necesario. En una implementación de varias regiones, los stamps se ejecutan en diferentes regiones para una mayor disponibilidad con un equilibrador de carga global, como Azure Front Door, que distribuye el tráfico. Por lo tanto, es importante configurar el equilibrador de carga para el enfoque de implementación adecuado.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "486f318a-8747-45e5-a5f4-97642d4fada6",
+ "service": "Azure Front Door",
+ "text": "Use el mismo nombre de host en Azure Front Door y en los servidores de origen. Para asegurarse de que las cookies o las URL de redireccionamiento funcionen correctamente, conserve el nombre de host HTTP original cuando utilice un proxy inverso, como un equilibrador de carga, delante de una aplicación web.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "9bc96e35-d25f-4521-86f8-8cadefb23576",
+ "service": "Azure Front Door",
+ "text": "Implemente el patrón de supervisión de puntos de conexión de estado. La aplicación debe exponer puntos de conexión de estado, que agregan el estado de los servicios y dependencias críticos que la aplicación necesita para atender las solicitudes. Los sondeos de estado de Azure Front Door usan el punto de conexión para detectar el estado de los servidores de origen. Para obtener más información, consulte Patrón de supervisión de puntos de conexión de estado.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "96c8dc89-cafe-411e-9080-35c13fffb8b3",
+ "service": "Azure Front Door",
+ "text": "Aproveche la funcionalidad de red de entrega de contenido integrada en Azure Front Door. La característica de red de entrega de contenido de Azure Front Door tiene cientos de ubicaciones perimetrales y puede ayudar a resistir ataques de denegación de servicio distribuido (DDoS). Estas capacidades ayudan a mejorar la confiabilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "750bc3ba-30aa-44fc-88aa-bc93cdf29cdf",
+ "service": "Azure Front Door",
+ "text": "Considere una opción de administración de tráfico redundante. Azure Front Door es un servicio distribuido globalmente que se ejecuta como un singleton en un entorno. Azure Front Door es un posible punto único de error en el sistema. Si se produce un error en el servicio, los clientes no podrán acceder a la aplicación durante el tiempo de inactividad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Puede seleccionar el mejor recurso de origen mediante una serie de pasos de decisión y su diseño. El origen seleccionado atiende el tráfico dentro del rango de latencia permitido en la proporción de pesos especificada.",
+ "guid": "1a6fba56-5098-4506-9be0-940fe556996c",
+ "service": "Azure Front Door",
+ "text": "Elija un método de enrutamiento que admita su estrategia de implementación. El método ponderado, que distribuye el tráfico en función del coeficiente de ponderación configurado, admite modelos activo-activo. Un valor basado en prioridades que configura la región primaria para recibir todo el tráfico y enviar tráfico a la región secundaria como copia de seguridad admite modelos activo-pasivo. Combine los métodos anteriores con la latencia para que el origen con la latencia más baja reciba tráfico.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Varios orígenes admiten redundancia mediante la distribución del tráfico entre varias instancias de la aplicación. Si una instancia no está disponible, otros orígenes de back-end aún pueden recibir tráfico.",
+ "guid": "00f51ce2-46a9-4051-ab0e-762743d0837d",
+ "service": "Azure Front Door",
+ "text": "Compatibilidad con la redundancia al tener varios orígenes en uno o varios grupos de back-end. Tenga siempre instancias redundantes de su aplicación y asegúrese de que cada instancia exponga un punto de conexión u origen. Puede colocar esos orígenes en uno o varios grupos de back-end.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los sondeos de estado habilitados forman parte de la implementación del patrón de supervisión de estado. Los sondeos de estado se aseguran de que Azure Front Door solo enruta el tráfico a las instancias que están en buen estado para controlar las solicitudes. Para obtener más información, consulte Procedimientos recomendados para sondeos de estado.",
+ "guid": "17fbec2c-ddb4-4490-946c-a151ae0fadd4",
+ "service": "Azure Front Door",
+ "text": "Configure sondeos de estado en el origen. Configure Azure Front Door para realizar comprobaciones de estado y determinar si la instancia de back-end está disponible y lista para seguir recibiendo solicitudes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los tiempos de espera ayudan a evitar problemas de rendimiento y disponibilidad al finalizar las solicitudes que tardan más de lo esperado en completarse.",
+ "guid": "1a308f11-1d93-4d57-bd84-cbd8f6198dd2",
+ "service": "Azure Front Door",
+ "text": "Establezca un tiempo de espera para reenviar solicitudes al back-end. Ajuste la configuración de tiempo de espera según las necesidades de sus terminales. Si no lo hace, Azure Front Door podría cerrar la conexión antes de que el origen envíe la respuesta. También puede reducir el tiempo de espera predeterminado para Azure Front Door si todos los orígenes tienen un tiempo de espera más corto. Para obtener más información, consulte Solución de problemas de solicitudes que no responden.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Establezca el mismo nombre de host para evitar un mal funcionamiento con la afinidad de sesión, la autenticación y la autorización. Para obtener más información, consulte Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end.",
+ "guid": "7af90aa7-b21f-432f-858b-2d872c752d7f",
+ "service": "Azure Front Door",
+ "text": "Use el mismo nombre de host en Azure Front Door y en su origen. Azure Front Door puede reescribir el encabezado de host de las solicitudes entrantes, lo que resulta útil cuando hay varios nombres de dominio personalizados que se enrutan a un origen. Sin embargo, reescribir el encabezado del host puede causar problemas con las cookies de solicitud y el redireccionamiento de URL.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Con la afinidad de sesión, las conexiones de usuario permanecen en el mismo origen durante la sesión de usuario. Si ese origen deja de estar disponible, es posible que la experiencia del usuario se vea interrumpida.",
+ "guid": "f66a8d49-8d0a-4952-9db2-ac2e526f08ad",
+ "service": "Azure Front Door",
+ "text": "Decida si la aplicación requiere afinidad de sesión. Si tiene requisitos de alta confiabilidad, le recomendamos que deshabilite la afinidad de sesión.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Limite las solicitudes para evitar que los clientes envíen demasiado tráfico a la aplicación. La limitación de velocidad puede ayudarte a evitar problemas como una tormenta de reintentos.",
+ "guid": "63faaf18-da4b-4274-ac3c-d955f2a2e01b",
+ "service": "Azure Front Door",
+ "text": "Aproveche las reglas de limitación de velocidad que se incluyen con un firewall de aplicaciones web (WAF).",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "ad186a96-5de2-4bf7-acd4-5b534cdb3e97",
+ "service": "Azure Front Door",
+ "text": "Revise la línea base de seguridad de Azure Front Door.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "b31346d7-4fde-42c2-82fe-2e4d54aa8f1b",
+ "service": "Azure Front Door",
+ "text": "Proteja los servidores back-end. El front-end actúa como el único punto de entrada a la aplicación.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "903b1844-994a-49e8-8e08-6ef445aec4f7",
+ "service": "Azure Front Door",
+ "text": "Permitir solo el acceso autorizado al plano de control. Use el control de acceso basado en rol (RBAC) de Azure Front Door para restringir el acceso solo a las identidades que lo necesiten.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "329c0516-9a14-45ea-ad04-fe75453c8d88",
+ "service": "Azure Front Door",
+ "text": "Bloquee las amenazas comunes en el perímetro. WAF está integrado con Azure Front Door. Habilite las reglas de WAF en los front-end para proteger las aplicaciones de exploits y vulnerabilidades comunes en el perímetro de la red, más cerca de la fuente de ataque.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "d323ca3c-f7df-4f7e-b7c9-698d2bdad3e2",
+ "service": "Azure Front Door",
+ "text": "Proteja Azure Front Door frente al tráfico inesperado. Azure Front Door usa el plan básico de protección contra DDoS de Azure para proteger los puntos de conexión de la aplicación frente a ataques DDoS. Si necesita exponer otras direcciones IP públicas de su aplicación, considere la posibilidad de agregar el plan estándar de protección DDoS para esas direcciones para capacidades avanzadas de protección y detección.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "fcb4a654-3e3b-408c-9538-a1dfefdef774",
+ "service": "Azure Front Door",
+ "text": "Proteja los datos en tránsito. Habilite la seguridad de la capa de transporte (TLS) de extremo a extremo, el redireccionamiento de HTTP a HTTPS y los certificados TLS administrados cuando corresponda. Para más información, consulte Procedimientos recomendados de TLS para Azure Front Door.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "451f9871-3ca1-40b9-a1f6-c5eb0a37213b",
+ "service": "Azure Front Door",
+ "text": "Supervise la actividad anómala. Revise periódicamente los registros para comprobar si hay ataques y falsos positivos. Envíe registros de WAF desde Azure Front Door a la administración centralizada de eventos e información de seguridad (SIEM) de su organización, como Microsoft Sentinel, para detectar patrones de amenazas e incorporar medidas preventivas en el diseño de la carga de trabajo.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Los conjuntos de reglas predeterminados se actualizan con frecuencia en función de los 10 tipos de ataque principales de OWASP y de la información de Microsoft Threat Intelligence. Los conjuntos de reglas especializadas detectan determinados casos de uso. Por ejemplo, las reglas de bots clasifican los bots como buenos, malos o desconocidos en función de las direcciones IP del cliente. También bloquean los bots maliciosos y las direcciones IP conocidas y restringen el tráfico en función de la ubicación geográfica de las personas que llaman. Mediante el uso de una combinación de conjuntos de reglas, puede detectar y bloquear ataques con varias intenciones.",
+ "guid": "711c450c-ac42-4570-b2fd-22319b4a7913",
+ "service": "Azure Front Door",
+ "text": "Habilite los conjuntos de reglas de WAF que detectan y bloquean el tráfico potencialmente malintencionado. Esta función está disponible en el nivel Premium. Recomendamos estos conjuntos de reglas: - Predeterminado- Protección contra bots- Restricción de IP- Filtrado geográfico- Limitación de velocidad",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Reduzca los falsos positivos y permita solicitudes legítimas para su aplicación.",
+ "guid": "a6fe49f4-0b1f-4677-af1f-b766f073ac6c",
+ "service": "Azure Front Door",
+ "text": "Cree exclusiones para conjuntos de reglas administrados. Pruebe una política de WAF en modo de detección durante unas semanas y ajuste los falsos positivos antes de implementarla.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "TLS garantiza que los intercambios de datos entre el explorador, Azure Front Door y los orígenes back-end estén cifrados para evitar la manipulación. Key Vault ofrece compatibilidad con certificados administrados y renovación y rotación sencillas de certificados.",
+ "guid": "450b511f-9e82-45ce-986b-769ea00dbeaa",
+ "service": "Azure Front Door",
+ "text": "Habilite TLS de extremo a extremo, redireccionamiento de HTTP a HTTPS y certificados TLS administrados cuando corresponda. Revise los procedimientos recomendados de TLS para Azure Front Door. Utilice la versión 1.2 de TLS como la versión mínima permitida con cifrados que sean relevantes para su aplicación. Los certificados administrados de Azure Front Door deben ser la opción predeterminada para facilitar las operaciones. Sin embargo, si desea administrar el ciclo de vida de los certificados, use sus propios certificados en los puntos de conexión de dominio personalizado de Azure Front Door y almacénelos en Key Vault.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "baeb625f-93ac-4181-be7b-07f474584985",
+ "service": "Azure Front Door",
+ "text": "Revise los niveles y precios de Azure Front Door. Utilice la calculadora de precios para estimar los costos realistas de cada nivel. Compare las características y la idoneidad de cada nivel para su escenario. Por ejemplo, solo el nivel Premium admite la conexión a su origen a través de Private Link.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "ed02627c-4a6d-4d6e-982f-a1fbee4a7259",
+ "service": "Azure Front Door",
+ "text": "Tenga en cuenta los costos de ancho de banda. Los costos de ancho de banda de Azure Front Door dependen del nivel que elija y del tipo de transferencia de datos. Azure Front Door proporciona informes integrados para métricas facturables. Para evaluar los costos relacionados con el ancho de banda y dónde puede centrar sus esfuerzos de optimización, consulte Informes de Azure Front Door.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "e2e0bb7e-521d-4729-9579-5c9539a68867",
+ "service": "Azure Front Door",
+ "text": "Optimice las solicitudes entrantes. Azure Front Door factura las solicitudes entrantes. Puede establecer restricciones en la configuración del diseño.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "337e7030-494e-4be5-8920-9144cb02c399",
+ "service": "Azure Front Door",
+ "text": "Utilice los recursos de manera eficiente. Azure Front Door usa un método de enrutamiento que ayuda a optimizar los recursos. A menos que la carga de trabajo sea extremadamente sensible a la latencia, distribuya el tráfico de manera uniforme en todos los entornos para usar eficazmente los recursos implementados.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "add1a775-b13c-477b-acc7-38dbcccd51fe",
+ "service": "Azure Front Door",
+ "text": "Considere la posibilidad de usar una instancia compartida proporcionada por la organización. Los costos incurridos por los servicios centralizados se comparten entre las cargas de trabajo. Sin embargo, considere la compensación con la confiabilidad. En el caso de las aplicaciones críticas que tienen requisitos de alta disponibilidad, se recomienda una instancia autónoma.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "48f2f718-1ae7-476f-a0a1-d6b83e47bbaa",
+ "service": "Azure Front Door",
+ "text": "Preste atención a la cantidad de datos registrados. Los costos relacionados con el ancho de banda y el almacenamiento pueden acumularse si ciertas solicitudes no son necesarias o si los datos de registro se conservan durante un largo período de tiempo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "El almacenamiento en caché optimiza los costos de transferencia de datos, ya que reduce el número de llamadas desde la instancia de Azure Front Door hasta el origen.",
+ "guid": "5a9023b8-c181-41d5-aeb5-9c09a85b0792",
+ "service": "Azure Front Door",
+ "text": "Use el almacenamiento en caché para los puntos de conexión que lo admitan.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La compresión reduce el consumo de ancho de banda y mejora el rendimiento.",
+ "guid": "84da68ee-7bb0-4a7d-ad70-d53c186ffd3e",
+ "service": "Azure Front Door",
+ "text": "Considere la posibilidad de habilitar la compresión de archivos. Para esta configuración, la aplicación debe admitir la compresión y el almacenamiento en caché debe estar habilitado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede ahorrar en costos de ancho de banda deshabilitando las solicitudes que no son necesarias para tomar decisiones de enrutamiento.",
+ "guid": "5d3ad5cb-d897-4ae7-8d1c-ae8398c79ed6",
+ "service": "Azure Front Door",
+ "text": "Deshabilite las comprobaciones de estado en grupos de back-end únicos. Si solo tiene un origen configurado en el grupo de origen de Azure Front Door, estas llamadas son innecesarias.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "5e8bfd0e-20d9-441f-814d-c2b49e7033ea",
+ "service": "Azure Front Door",
+ "text": "Utilice tecnologías de infraestructura como código (IaC). Use tecnologías de IaC como Bicep y plantillas de Azure Resource Manager para aprovisionar la instancia de Azure Front Door. Estos enfoques declarativos proporcionan coherencia y un mantenimiento sencillo. Por ejemplo, mediante el uso de tecnologías IaC, puede adoptar fácilmente nuevas versiones de conjuntos de reglas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "e9bd20e3-6e61-4907-9b84-4bd50b867875",
+ "service": "Azure Front Door",
+ "text": "Simplifique las configuraciones. Use Azure Front Door para administrar fácilmente las configuraciones. Por ejemplo, supongamos que su arquitectura admite microservicios. Azure Front Door admite funcionalidades de redireccionamiento, por lo que puede usar el redireccionamiento basado en rutas de acceso para dirigirse a servicios individuales.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "bb3943fb-6d97-458d-be6a-d9b71e8898d7",
+ "service": "Azure Front Door",
+ "text": "Controle la exposición progresiva mediante métodos de enrutamiento de Azure Front Door. Para un enfoque de equilibrio de carga ponderado, puede usar una implementación de valor controlado para enviar un porcentaje específico de tráfico a un back-end. Este enfoque le ayuda a probar nuevas características y versiones en un entorno controlado antes de implementarlas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "5e1264a9-c6cc-4d4e-8e73-7ca4b3f05c17",
+ "service": "Azure Front Door",
+ "text": "Recopile y analice los datos operativos de Azure Front Door como parte de la supervisión de la carga de trabajo. Capture métricas y registros relevantes de Azure Front Door con los registros de Azure Monitor. Estos datos le ayudan a solucionar problemas, comprender los comportamientos de los usuarios y optimizar las operaciones.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "8bdff2ab-0800-45ef-acab-ff7d320856aa",
+ "service": "Azure Front Door",
+ "text": "Descargue la administración de certificados en Azure. Alivie la carga operativa asociada con la rotación y las renovaciones de certificaciones.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Cuando se habilita el redireccionamiento, Azure Front Door redirige automáticamente a los clientes que usan el protocolo anterior para usar HTTPS para una experiencia segura.",
+ "guid": "829f4fea-1653-4093-aaf7-93b6a30aae1f",
+ "service": "Azure Front Door",
+ "text": "Utilice el redireccionamiento de HTTP a HTTPS para admitir la compatibilidad con versiones posteriores.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión del flujo de entrada es una parte crucial de la supervisión de una aplicación. Desea realizar un seguimiento de las solicitudes y realizar mejoras de rendimiento y seguridad. Necesita datos para depurar la configuración de Azure Front Door. Con las alertas, puede recibir notificaciones instantáneas de cualquier problema operativo crítico.",
+ "guid": "8ad83783-d01c-4772-a76b-39f7c9d61cc7",
+ "service": "Azure Front Door",
+ "text": "Captura de registros y métricas. Incluya registros de actividad de recursos, registros de acceso, registros de sondeo de estado y registros de WAF. Configura alertas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Una vista holística del perfil de Azure Front Door ayuda a impulsar mejoras basadas en informes de tráfico y seguridad a través de métricas de WAF.",
+ "guid": "e5e56ee9-79e4-4fa8-9fdb-600748d7df10",
+ "service": "Azure Front Door",
+ "text": "Revise los informes de análisis integrados.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Front Door puede emitir y administrar certificados automáticamente. Esta función elimina la necesidad de renovar certificados y minimiza el riesgo de una interrupción debido a un certificado TLS no válido o caducado.",
+ "guid": "c2fcfdfb-fedb-4b47-93ac-1988250f76cd",
+ "service": "Azure Front Door",
+ "text": "Utilice certificados TLS administrados cuando sea posible.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "No es necesario modificar la configuración para agregar o especificar cada subdominio por separado.",
+ "guid": "0d7deaf4-ec0e-4e32-8b6b-64f3190d10f6",
+ "service": "Azure Front Door",
+ "text": "Utilice certificados TLS comodín.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "d18003c9-2d90-4e52-b503-5fcdb4ffcd96",
+ "service": "Azure Front Door",
+ "text": "Planifique la capacidad mediante el análisis de los patrones de tráfico esperados. Realice pruebas exhaustivas para comprender el rendimiento de su aplicación bajo diferentes cargas. Tenga en cuenta factores como las transacciones simultáneas, las tasas de solicitud y la transferencia de datos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "87c450a0-6a4a-453c-ae38-b8f21952ab79",
+ "service": "Azure Front Door",
+ "text": "Analice los datos de rendimiento mediante la revisión periódica de los informes de Azure Front Door. Estos informes proporcionan información sobre varias métricas que sirven como indicadores de rendimiento a nivel tecnológico.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "a9d9ffe4-3fa7-48c8-bc1d-d0685e495dbe",
+ "service": "Azure Front Door",
+ "text": "Optimice las transferencias de datos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "161bc803-0586-4d21-b2ea-018d78209565",
+ "service": "Azure Front Door",
+ "text": "Optimice el uso de los sondeos de estado. Obtenga información de estado de los sondeos de estado solo cuando cambie el estado de los orígenes. Logre un equilibrio entre la precisión de la supervisión y la minimización del tráfico innecesario.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "8596ddcf-3f3c-4b1c-baa1-a7eb844b2fb6",
+ "service": "Azure Front Door",
+ "text": "Revise el método de enrutamiento de origen. Azure Front Door proporciona varios métodos de enrutamiento, incluido el enrutamiento basado en latencia, basado en prioridades, ponderado y basado en afinidad de sesión, hasta el origen. Estos métodos afectan significativamente al rendimiento de la aplicación. Para obtener más información sobre la mejor opción de enrutamiento de tráfico para su escenario, consulte Métodos de enrutamiento de tráfico hasta el origen.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "205d3288-088c-4f24-af39-f9cb610c54a1",
+ "service": "Azure Front Door",
+ "text": "Revise la ubicación de los servidores de origen. La ubicación de los servidores de origen afecta a la capacidad de respuesta de la aplicación. Los servidores de origen deben estar más cerca de los usuarios. Azure Front Door garantiza que los usuarios de una ubicación específica accedan al punto de entrada de Azure Front Door más cercano. Las ventajas de rendimiento incluyen una experiencia de usuario más rápida, un mejor uso del enrutamiento basado en latencia por parte de Azure Front Door y un tiempo de transferencia de datos minimizado mediante el almacenamiento en caché, que almacena el contenido más cerca de los usuarios.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "Azure Front Door ofrece una solución de red de entrega de contenido sólida que almacena en caché el contenido en el perímetro de la red. El almacenamiento en caché reduce la carga en los servidores back-end y reduce el movimiento de datos a través de la red, lo que ayuda a descargar el uso del ancho de banda.",
+ "guid": "2f6a39a1-884a-4661-accd-f534bf795a96",
+ "service": "Azure Front Door",
+ "text": "Habilite el almacenamiento en caché. Puede optimizar las cadenas de consulta para el almacenamiento en caché. En el caso de contenido puramente estático, omita las cadenas de consulta para maximizar el uso de la memoria caché. Si la aplicación usa cadenas de consulta, considere la posibilidad de incluirlas en la clave de caché. La inclusión de las cadenas de consulta en la clave de caché permite a Azure Front Door servir respuestas almacenadas en caché u otras respuestas, en función de la configuración.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La compresión en Azure Front Door ayuda a entregar contenido en el formato óptimo, tiene una carga más pequeña y entrega contenido a los usuarios más rápido.",
+ "guid": "09c90ce3-ade6-413a-9c1b-45d33d6d9069",
+ "service": "Azure Front Door",
+ "text": "Usa la compresión de archivos cuando accedas a contenido descargable.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Las solicitudes 'HEAD' le permiten consultar un cambio de estado sin obtener todo su contenido.",
+ "guid": "15daeecf-bcbf-4c46-b196-030839fd4864",
+ "service": "Azure Front Door",
+ "text": "Al configurar sondeos de estado en Azure Front Door, considere la posibilidad de usar solicitudes \"HEAD\" en lugar de solicitudes \"GET\". El sondeo de estado solo lee el código de estado, no el contenido.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Optimice el rendimiento y mantenga la continuidad de las sesiones de usuario, especialmente cuando las aplicaciones dependen del mantenimiento de la información de estado localmente.",
+ "guid": "2a92f55e-a422-49f4-9a26-8ba819a17323",
+ "service": "Azure Front Door",
+ "text": "Evalúe si debe habilitar la afinidad de sesión cuando las solicitudes del mismo usuario deben dirigirse al mismo servidor back-end. Desde el punto de vista de la confiabilidad, no recomendamos este enfoque. Si usa esta opción, la aplicación debería recuperarse correctamente sin interrumpir las sesiones de usuario. También hay una compensación en el equilibrio de carga, ya que restringe la flexibilidad de distribuir el tráfico entre varios back-ends de manera uniforme.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "ad7540f5-4cb1-4fc5-b168-e1cd97a0aef6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: para cargas de trabajo críticas, use zonas de disponibilidad para los clústeres de AKS.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "904fdfa5-af9a-4195-b683-e3bb7627b394",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: planifique el espacio de direcciones IP para asegurarse de que el clúster pueda escalar de forma fiable, incluido el control del tráfico de conmutación por error en topologías de varios clústeres.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "2c1ab1ce-ee84-4737-b426-d236a98d3ae5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite Container Insights para supervisar el clúster y configurar alertas para eventos que afecten a la confiabilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "fa12c27b-df70-41fd-a93a-680e3cacf7ac",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de cargas de trabajo: asegúrese de que las cargas de trabajo estén diseñadas para admitir el escalado horizontal e informar sobre la preparación y el estado de las aplicaciones.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "f2297ffc-fec7-43c6-9187-9739264c9d66",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: asegúrese de que su carga de trabajo se ejecute en grupos de nodos de usuario y elija la SKU del tamaño correcto. Como mínimo, incluya dos nodos para los grupos de nodos de usuario y tres nodos para el grupo de nodos del sistema.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "0b542d27-1846-4d1b-9c5e-bd7c0d079cb3",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use el Acuerdo de Nivel de Servicio de tiempo de actividad de AKS para cumplir los objetivos de disponibilidad de las cargas de trabajo de producción.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Permite que el programador de Kubernetes aísle lógicamente las cargas de trabajo por hardware en el nodo. A diferencia de las tolerancias, los pods sin un selector de nodos coincidentes se pueden programar en nodos etiquetados, lo que permite que se consuman los recursos no utilizados en los nodos, pero da prioridad a los pods que definen el selector de nodos coincidentes. Utilice la afinidad de nodo para obtener más flexibilidad, lo que le permite definir qué sucede si el pod no se puede hacer coincidir con un nodo.",
+ "guid": "b11892cd-f678-4399-bac8-b98095e250c6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: controle la programación de pods mediante selectores de nodos y afinidad.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Azure CNI es necesario para escenarios específicos, por ejemplo, grupos de nodos basados en Windows, requisitos de red específicos y directivas de red de Kubernetes. Consulte Kubenet frente a Azure CNI para obtener más información.",
+ "guid": "9e3e8182-95e7-4953-9a2b-9cc2f77bf717",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura del clúster: garantice la selección adecuada del complemento de red en función de los requisitos de la red y el tamaño del clúster.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El Acuerdo de Nivel de Servicio de Tiempo de Actividad de AKS garantiza: - Disponibilidad del 99,95 % del punto de conexión del servidor de la API de Kubernetes para los clústeres de AKS que usan Zonas de disponibilidad de Azure, o - Disponibilidad del 99,9 % para los clústeres de AKS que no usan Zonas de disponibilidad de Azure.",
+ "guid": "4bfaa73e-a949-404a-a93b-a2b0a7feeff5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: use el Acuerdo de Nivel de Servicio de tiempo de actividad de AKS para clústeres de nivel de producción.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Container Insights ayuda a supervisar el estado y el rendimiento de los controladores, nodos y contenedores que están disponibles en Kubernetes a través de la API de métricas. La integración con Prometheus permite la recopilación de métricas de aplicaciones y cargas de trabajo.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Al distribuir los grupos de nodos en varias zonas, los nodos de un grupo de nodos seguirán ejecutándose incluso si otra zona ha dejado de funcionar. Si existen requisitos de colocalidad, se puede usar una implementación de AKS normal basada en VMSS en una sola zona o grupos de selección de ubicación por proximidad para minimizar la latencia de los entrenudos.",
+ "guid": "74ff8612-55b7-4029-81bc-da363b133f16",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use zonas de disponibilidad para maximizar la resistencia dentro de una región de Azure mediante la distribución de nodos de agente de AKS en centros de datos físicamente independientes.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las cargas de trabajo orientadas a Internet deben aprovechar Azure Front Door o Azure Traffic Manager para enrutar el tráfico globalmente a través de clústeres de AKS.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: adopte una estrategia multirregional mediante la implementación de clústeres de AKS implementados en diferentes regiones de Azure para maximizar la disponibilidad y proporcionar continuidad empresarial.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los límites de recursos de memoria y CPU del contenedor son necesarios para evitar el agotamiento de recursos en el clúster de Kubernetes.",
+ "guid": "f1a92d3f-eab5-4dc2-b0e8-75865842f205",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: defina las solicitudes y los límites de recursos de pod en los manifiestos de implementación de aplicaciones y aplíquelos con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los grupos de nodos del sistema requieren una SKU de máquina virtual de al menos 2 vCPU y 4 GB de memoria, pero se recomiendan 4 vCPU o más. Sistema de referencia y grupos de nodos de usuario para requisitos detallados.",
+ "guid": "55429203-5f2a-4ed1-9107-22d2c47b8ef1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: mantenga el grupo de nodos del sistema aislado de las cargas de trabajo de las aplicaciones.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las aplicaciones pueden compartir la misma configuración y necesitar máquinas virtuales habilitadas para GPU, máquinas virtuales optimizadas para CPU o memoria, o la capacidad de escalar a cero. Evite un gran número de grupos de nodos para reducir la sobrecarga de administración adicional.",
+ "guid": "3603ec74-ada6-4050-baa3-fb25386fb7df",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: separe las aplicaciones en grupos de nodos dedicados en función de requisitos específicos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Para evitar problemas de confiabilidad con las limitaciones de Azure Load Balancer con un alto tráfico de salida simultáneo, utilice una puerta de enlace NAT en su lugar para admitir el tráfico de salida confiable a escala.",
+ "guid": "d441f009-ca99-4caf-9544-c71de5949d10",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: utilice una puerta de enlace NAT para clústeres que ejecutan cargas de trabajo que realizan muchas conexiones salientes simultáneas.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "ff274266-a326-4c2c-9b85-7ce50c679b36",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use identidades administradas para evitar la administración y rotación de principios de servicio.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "d44b3684-99d7-4946-ab75-fb58d9d8626e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use el control de acceso basado en roles (RBAC) de Kubernetes con el identificador de Microsoft Entra para el acceso con privilegios mínimos y minimice la concesión de privilegios de administrador para proteger la configuración y el acceso a los secretos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "12e0cc02-b585-4d6f-97be-1b073e57522c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use Microsoft Defender para contenedores con Azure Sentinel para detectar y responder rápidamente a las amenazas en el clúster y las cargas de trabajo que se ejecutan en ellos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "8e9c196f-b93a-46c5-9507-1e5cad83dd21",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: implemente un clúster de AKS privado para asegurarse de que el tráfico de administración de clústeres al servidor de API permanece en la red privada. O bien, utilice la lista de permitidos del servidor de API para clústeres no privados.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice un firewall de aplicaciones web para proteger el tráfico HTTP(S).",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "feba8909-0760-4a87-833a-b36fabbe722e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: asegúrese de que su canalización de CI/CID esté reforzada con análisis con reconocimiento de contenedores.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "El uso de Microsoft Entra ID centraliza el componente de administración de identidades. Cualquier cambio en el estado de la cuenta de usuario o del grupo se actualiza automáticamente en el acceso al clúster de AKS. Los desarrolladores y propietarios de aplicaciones de su clúster de Kubernetes necesitan acceso a diferentes recursos.",
+ "guid": "463da713-377d-46e1-a9cf-a384a0657537",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use la integración de Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "AKS y Microsoft Entra ID habilitan la autenticación con Azure Container Registry sin el uso de secretos 'imagePullSecrets'. Para obtener más información, consulte Autenticación con Azure Container Registry desde Azure Kubernetes Service.",
+ "guid": "f9f7946f-b9b6-40d1-9f30-0bfb38be5c74",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: autentique con el identificador de Microsoft Entra en Azure Container Registry.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "De forma predeterminada, el tráfico de red entre los grupos de nodos y el servidor de API viaja por la red troncal de Microsoft; mediante el uso de un clúster privado, puede asegurarse de que el tráfico de red al servidor de API permanezca solo en la red privada.",
+ "guid": "10d61300-19e4-403c-bf22-a554c56b4afc",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: proteja el tráfico de red al servidor de API con un clúster de AKS privado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al utilizar clústeres públicos, aún puede limitar el tráfico que puede llegar al servidor de API de clústeres mediante la característica de rango de IP autorizado. Incluya orígenes como las direcciones IP públicas de los agentes de compilación de implementación, la administración de operaciones y el punto de salida de los grupos de nodos (como Azure Firewall).",
+ "guid": "b845e9a6-c5f3-4cf7-a956-6f1ffde88569",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: en el caso de los clústeres de AKS no privados, use intervalos IP autorizados por el servidor de API.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteger el acceso al servidor de API de Kubernetes es una de las cosas más importantes que puede hacer para proteger su clúster. Integre el control de acceso basado en roles (RBAC) de Kubernetes con el ID de Microsoft Entra para controlar el acceso al servidor de API. Deshabilite las cuentas locales para aplicar todo el acceso al clúster mediante identidades basadas en el identificador de Microsoft Entra.",
+ "guid": "0b3a4624-de6e-4cfe-af5b-19ad4708087d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: proteja el servidor de API con Microsoft Entra RBAC.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteja y controle el tráfico de red entre los pods de un clúster.",
+ "guid": "caabd1f2-e6a9-4c55-9115-349d1d6716bb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use directivas de red de Azure o Calico.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Azure Policy puede ayudar a aplicar la aplicación y las protecciones a gran escala en los clústeres de forma centralizada y coherente. También puede controlar qué funciones se otorgan a los pods y si algo se está ejecutando en contra de la política de la empresa.",
+ "guid": "d65686d0-3988-49b5-8a98-59818ba81c50",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: proteja clústeres y pods con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Limite el acceso a las acciones que pueden realizar los contenedores. Proporcione el menor número de permisos y evite el uso de la raíz o la escalada con privilegios.",
+ "guid": "f1e41c15-87e4-4135-ab6c-fb6803194f12",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: acceso seguro de los contenedores a los recursos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Para examinar el tráfico entrante en busca de posibles ataques, use un firewall de aplicaciones web como Azure Web Application Firewall (WAF) en Azure Application Gateway o Azure Front Door.",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice un firewall de aplicaciones web para proteger el tráfico HTTP(S).",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Asegúrese de que el tráfico de salida del clúster pasa a través de un punto de seguridad de red, como Azure Firewall o un proxy HTTP.",
+ "guid": "fa580200-65eb-4cc8-9c23-a5e68f1d86a7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: controle el tráfico de salida del clúster.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Proteja y rote secretos, certificados y cadenas de conexión en Azure Key Vault con cifrado seguro. Proporciona un registro de auditoría de acceso y mantiene los secretos principales fuera de la canalización de implementación.",
+ "guid": "0f5b5089-02fc-4f46-839c-7ff86610366a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use el identificador de carga de trabajo de Microsoft Entra de código abierto y el controlador CSI del almacén de secretos con Azure Key Vault.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Supervise y mantenga la seguridad de sus clústeres, contenedores y sus aplicaciones.",
+ "guid": "d2895e72-e9c1-4af7-9e5a-53edc92423e7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use Microsoft Defender para contenedores.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "c5148caa-6478-4ba8-993b-1a8640716d66",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use la SKU de máquina virtual adecuada por grupo de nodos y las instancias reservadas en las que se espera capacidad a largo plazo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "90ac2d0c-790e-4b2b-be35-60a55a19397a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: use el nivel y el tamaño de disco administrado adecuados.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "df9bb42d-c34f-488f-a50c-0624ca247647",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: revise las métricas de rendimiento, empezando por la CPU, la memoria, el almacenamiento y la red, para identificar oportunidades de optimización de costos por clúster, nodos y espacio de nombres.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "43ffe0b7-7bc4-42b0-a370-af4a943b19c0",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres y cargas de trabajo: use escaladores automáticos para reducir horizontalmente cuando las cargas de trabajo estén menos activas.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Hacer coincidir su selección con las demandas de su carga de trabajo garantiza que no pague por recursos innecesarios.",
+ "guid": "c4ce3529-2891-41f1-aa3f-e87a791b01a3",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: alinee la selección de SKU y el tamaño del disco administrado con los requisitos de la carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La selección del tipo de instancia de máquina virtual correcto es fundamental, ya que afecta directamente al costo de ejecutar aplicaciones en AKS. La elección de una instancia de alto rendimiento sin una utilización adecuada puede generar un gasto innecesario, mientras que la elección de una instancia potente puede provocar problemas de rendimiento y un mayor tiempo de inactividad. Para determinar el tipo de instancia de máquina virtual adecuado, tenga en cuenta las características de la carga de trabajo, los requisitos de recursos y las necesidades de disponibilidad.",
+ "guid": "1088060f-7467-48db-950d-5890503e2974",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione el tipo de instancia de máquina virtual adecuado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "AKS admite la creación de nodos de agente ARM64 de Ubuntu, así como una combinación de nodos de arquitectura Intel y ARM dentro de un clúster que puede ofrecer un mejor rendimiento a un costo menor.",
+ "guid": "ce50c713-ad3e-4781-9193-63485491aa48",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione máquinas virtuales en función de la arquitectura de Arm.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las máquinas virtuales de acceso puntual le permiten aprovechar la capacidad de Azure no utilizada con importantes descuentos (hasta un 90 % en comparación con los precios de pago por uso). Si Azure necesita recuperar capacidad, la infraestructura de Azure expulsa los nodos de acceso puntual.",
+ "guid": "7a281f48-217a-4668-aa30-c9d2c84d0d72",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione Azure Spot Virtual Machines.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Debido a muchos factores, el costo de los recursos varía según la región de Azure. Evalúe el costo, la latencia y los requisitos de cumplimiento para asegurarse de que está ejecutando su carga de trabajo de manera rentable y que no afecta a sus usuarios finales ni genera cargos de red adicionales.",
+ "guid": "433efe5b-3776-459c-8560-058f87773838",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: seleccione la región adecuada.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La optimización de las imágenes ayuda a reducir los costos, ya que los nuevos nodos necesitan descargar estas imágenes. Cree imágenes de una manera que permita que el contenedor se inicie lo antes posible para ayudar a evitar errores de solicitud de usuario o tiempos de espera mientras se inicia la aplicación, lo que podría provocar un sobreaprovisionamiento.",
+ "guid": "65d3f70e-457a-4d62-8140-de2b0c4f7f99",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: Mantenga imágenes pequeñas y optimizadas.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Reducir verticalmente automáticamente el número de nodos del clúster de AKS permite ejecutar un clúster eficaz cuando la demanda es baja y escalar verticalmente cuando la demanda vuelve.",
+ "guid": "b4d583e3-7268-41d9-9e93-0394bed77298",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el escalador automático de clústeres para reducir automáticamente el número de nodos de agente en respuesta al exceso de capacidad de recursos.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El aprovisionamiento automático de nodos simplifica el proceso de selección de SKU y decide, en función de los requisitos de recursos de pod pendientes, la configuración óptima de la máquina virtual para ejecutar cargas de trabajo de la manera más eficiente y rentable.",
+ "guid": "48ae7de4-26f7-457c-b1a4-a18467b7401d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el aprovisionamiento automático de nodos para automatizar la selección de SKU de máquina virtual.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Ajuste el número de pods de una implementación en función de la utilización de la CPU u otras métricas seleccionadas, que admitan operaciones de reducción horizontal de clústeres.",
+ "guid": "d3194174-d037-4a35-9cd5-244d377cfabb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: usa el escalador automático de pods horizontal.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Ajusta el tamaño de tus pods y establece dinámicamente solicitudes y límites en función del uso histórico.",
+ "guid": "091dc052-7bf8-4dd1-aca1-d514ddcb2aa8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use el escalador automático de pods vertical (versión preliminar).",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Escala en función del número de eventos que se están procesando. Elija entre un amplio catálogo de 50+ escaladores KEDA.",
+ "guid": "fe3d7c5f-f5a9-4b5e-a4f9-81bf76930967",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use el escalado automático basado en eventos (KEDA) de Kubernetes.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La base para permitir la optimización de costos es la difusión de un clúster de ahorro de costos. Un enfoque de operaciones financieras (FinOps) se utiliza a menudo para ayudar a las organizaciones a reducir los costos de la nube. Se trata de una práctica que implica la colaboración entre los equipos de finanzas, operaciones e ingeniería para impulsar la alineación de los objetivos de ahorro de costes y aportar transparencia a los costes de la nube.",
+ "guid": "3a7d1aa1-37a0-40aa-acbf-ff1852c15c93",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: adopte una disciplina financiera y una práctica cultural en la nube para impulsar la propiedad del uso de la nube.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Si planeó correctamente la capacidad, la carga de trabajo es predecible y existe durante un período de tiempo prolongado, regístrese para obtener una reserva de Azure o un plan de ahorro para reducir aún más los costos de recursos.",
+ "guid": "ed669535-43d7-4988-9ec5-3b70762e54eb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: regístrese en Azure Reservations o Azure Savings Plan.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La ayuda de Container Insights proporciona información procesable sobre los recursos inactivos y no asignados de los clústeres. Container Insights también admite la recopilación de métricas de Prometheus y se integra con Azure Managed Grafana para obtener una vista holística de la aplicación y la infraestructura.",
+ "guid": "5742c5ca-120a-4b6e-a5cf-51f13b04966c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La extensión de clúster de análisis de costos le permite obtener información detallada sobre los costos asociados con varios recursos de Kubernetes en sus clústeres o espacios de nombres.",
+ "guid": "6588bddb-d7b6-41a6-8b87-628a758df2fe",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: configure el complemento Análisis de costos de AKS.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "38e28f4f-7465-4e3a-bf05-4d6072d4bae6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: use una implementación basada en plantillas con Bicep, Terraform u otros. Asegúrese de que todas las implementaciones sean repetibles, rastreables y almacenadas en un repositorio de código fuente.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "1255b75f-0f3b-4fd7-96c5-17e4e30bbe11",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: cree un proceso automatizado para garantizar que sus clústeres se inicien con las configuraciones e implementaciones necesarias en todo el clúster. Esto se realiza a menudo mediante GitOps.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "07b2d10f-e373-484e-9ece-f182a1b714b2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice procesos de implementación repetibles y automatizados para su carga de trabajo dentro de su ciclo de vida de desarrollo de software.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "6ec1af22-6132-43a6-9286-20333ee6e244",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite la configuración de diagnóstico para garantizar que se registren las interacciones del plano de control o del servidor de API principal.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "4811307d-53ce-4cf9-b022-2c2ab1be5596",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: habilite Container Insights para recopilar métricas, registros y diagnósticos con el fin de supervisar la disponibilidad y el rendimiento del clúster y las cargas de trabajo que se ejecutan en él.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "20301c55-a815-4a3a-83ec-fe6d1789e697",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de la carga de trabajo: la carga de trabajo debe estar diseñada para emitir datos telemétricos que se puedan recopilar, que también deben incluir estados de vitalidad y preparación.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "13d37985-5266-4064-97f0-7c7aa7491941",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: utilice prácticas de ingeniería del caos dirigidas a Kubernetes para identificar problemas de fiabilidad de aplicaciones o plataformas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "d96fea7e-598f-4f59-95c6-d75fc8db1c7a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: optimice su carga de trabajo para operar e implementar de manera eficiente en un contenedor.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "8e8fbde0-f037-4eec-bac2-634ab73d7b0a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: aplique la gobernanza de clústeres y cargas de trabajo mediante Azure Policy.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Para compilar y ejecutar aplicaciones correctamente en AKS, hay que comprender e implementar consideraciones clave. Estas áreas incluyen funciones de multitenencia y programador, seguridad de clústeres y pods, o continuidad del negocio y recuperación ante desastres.",
+ "guid": "95ee25c6-37fc-47c0-a3e1-eea5c1324edb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: revise la documentación de procedimientos recomendados de AKS.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Chaos Studio puede ayudar a simular errores y desencadenar situaciones de recuperación ante desastres.",
+ "guid": "2695b4b9-e125-4644-a27c-977eefdbce73",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: revise Azure Chaos Studio.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Container Insights ayuda a supervisar el rendimiento de los contenedores mediante la recopilación de métricas de memoria y procesador de controladores, nodos y contenedores que están disponibles en Kubernetes a través de la API de métricas y los registros de contenedores.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: configure la supervisión del clúster con Container Insights.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Configure Application Insights para la supervisión basada en código de las aplicaciones que se ejecutan en un clúster de AKS.",
+ "guid": "405f6de4-e769-4066-8e8c-f7887a66d42a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de cargas de trabajo: supervise el rendimiento de las aplicaciones con Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Container Insights, que forman parte de Azure Monitor, proporciona una experiencia de incorporación fluida para recopilar métricas de Prometheus. Consulte Configurar el raspado de métricas de Prometheus para obtener más información.",
+ "guid": "3c42907d-254e-4b0f-b579-7362e0f37eaa",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: configure el raspado de métricas de Prometheus con Container Insights.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las cargas de trabajo orientadas a Internet deben aprovechar Azure Front Door o Azure Traffic Manager para enrutar el tráfico globalmente a través de clústeres de AKS.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: adopte una estrategia multirregional mediante la implementación de clústeres de AKS implementados en diferentes regiones de Azure para maximizar la disponibilidad y proporcionar continuidad empresarial.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Azure Policy puede ayudar a aplicar la aplicación y las protecciones a gran escala en los clústeres de forma centralizada y coherente. También puede controlar qué funciones se otorgan a los pods y si algo se está ejecutando en contra de la política de la empresa.",
+ "guid": "02f47a84-6d0c-4243-a5ab-743c85dcce67",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: ponga en funcionamiento los estándares de configuración de clústeres y pods con Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Kubernetes y los controladores de entrada admiten muchos patrones de implementación avanzados para su inclusión en el proceso de ingeniería de versiones. Tenga en cuenta patrones como las implementaciones azul-verde o las versiones canary.",
+ "guid": "ecbf4266-e97a-4b02-8d02-ca2fd42cea5b",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice las capacidades de la plataforma en su proceso de ingeniería de versiones.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Automatice sus áreas de diseño de misión crítica, incluidas la implementación y las pruebas.",
+ "guid": "4646ab36-8c28-4740-afac-c9819f0f6ac9",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: para cargas de trabajo críticas, utilice implementaciones azul/verde a nivel de sello.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "de0e6d8d-65a5-46b0-891b-2ad2aa09de11",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: realice e itere en iteración en un ejercicio de plan de capacidad detallado que incluya SKU, configuración de escalado automático, direccionamiento IP y consideraciones de conmutación por error.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "b78aea0e-3fd2-4dcc-b617-34a26892aa76",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clústeres: habilite el escalador automático de clústeres para ajustar automáticamente el número de nodos de agente en las demandas de carga de trabajo de respuesta.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "9b168db7-a88b-4e2c-b555-bc525c7e48da",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: utilice el escalador automático de pods horizontal para ajustar el número de pods de una implementación en función del uso de la CPU u otras métricas seleccionadas.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "deadeedd-dab6-4774-84df-f5223ed6ede1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: realice actividades de pruebas de carga continuas que ejerzan tanto el escalador automático de pods como el clúster.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "7b1e9a65-2d5d-4eeb-a349-136895131b06",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: separe las cargas de trabajo en diferentes grupos de nodos, lo que permite llamadas independientes.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "Después de formalizar el plan de capacidad, debe actualizarse con frecuencia mediante la observación continua de la utilización de recursos del clúster.",
+ "guid": "7b4e5e8b-6e55-4db7-a330-19990bd1e0d2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: desarrolle un plan de capacidad detallado y revíselo y reviselo continuamente.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La capacidad de escalar o reducir verticalmente automáticamente el número de nodos del clúster de AKS permite ejecutar un clúster eficaz y rentable.",
+ "guid": "631272b4-9ca7-4e6f-ae9b-3c55946b3924",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de clúster: habilite el escalador automático de clústeres para ajustar automáticamente el número de nodos de agente en respuesta a las restricciones de recursos.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "A diferencia de los grupos de nodos del sistema que siempre requieren nodos en ejecución, los grupos de nodos de usuario permiten escalar o reducir verticalmente.",
+ "guid": "85ffe644-7c4b-4f2d-b2fa-ed8e7c8d2e84",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitecturas de clústeres y cargas de trabajo: separe las cargas de trabajo en diferentes grupos de nodos y considere la posibilidad de escalar los grupos de nodos de usuario.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Ayuda a controlar el equilibrio de los recursos para las cargas de trabajo que los requieren.",
+ "guid": "bb7f1396-6a84-4e6d-b6d8-5fc48b4c2b5f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: use las características del programador avanzado de AKS.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "No todas las decisiones de escala se pueden derivar de las métricas de CPU o memoria. A menudo, las consideraciones de escala provendrán de puntos de datos más complejos o incluso externos. Utilice KEDA para crear un conjunto de reglas de escalado automático significativo basado en señales específicas de su carga de trabajo.",
+ "guid": "bc908693-9e21-478c-9fde-e92ba949c89e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitectura de carga de trabajo: utilice métricas significativas de escalado de carga de trabajo.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "f4804af8-4f42-450d-916c-5593c145ccf9",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia: implemente modelos en entornos que admitan zonas de disponibilidad, como AKS. Al asegurarse de que las implementaciones se distribuyen entre las zonas de disponibilidad, se asegura de que una implementación esté disponible incluso en caso de que se produzca un error en el centro de datos. Para mejorar la confiabilidad y la disponibilidad, considere la posibilidad de una topología de implementación de varias regiones.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "995d097a-0de2-4431-947f-561b49a60f21",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia: asegúrese de tener suficiente proceso tanto para el entrenamiento como para la inferencia. A través de la planeación de recursos, asegúrese de que la SKU de proceso y la configuración de escalado cumplan los requisitos de la carga de trabajo.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "d494b7f5-ad32-471f-9fc7-18945ca454ab",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia: Separe los espacios de trabajo de Machine Learning utilizados para el trabajo exploratorio de los que se utilizan para la producción.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "6f1dd2cc-e0af-4203-ab0b-b7c65b7b18ae",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia: al usar puntos de conexión en línea administrados para la inferencia, use una estrategia de versión, como implementaciones azul-verde, para minimizar el tiempo de inactividad y reducir el riesgo asociado con la implementación de nuevas versiones.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "558fcdcf-33e7-4385-82fd-424bc8ae64bc",
+ "service": "Azure Machine Learning",
+ "text": "Requisitos empresariales: seleccione el uso de clústeres informáticos, instancias informáticas y hosts de inferencia externalizados en función de las necesidades de confiabilidad, teniendo en cuenta los acuerdos de nivel de servicio (SLA) como factor.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "de5be058-1d22-4f38-96aa-3fbca5071a8f",
+ "service": "Azure Machine Learning",
+ "text": "Recuperación: asegúrese de tener capacidades de autorrecuperación, como las características de puntos de control compatibles con Machine Learning, al entrenar modelos grandes.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "20104165-9764-4920-98dd-63fddc5f58d3",
+ "service": "Azure Machine Learning",
+ "text": "Recuperación: asegúrese de tener una estrategia de recuperación definida. El aprendizaje automático no tiene conmutación automática por error. Por lo tanto, debe diseñar una estrategia que abarque el área de trabajo y todas sus dependencias, como Key Vault, Azure Storage y Azure Container Registry.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Una implementación en varias regiones garantiza que las cargas de trabajo de Machine Learning continúen ejecutándose incluso si una región experimenta una interrupción. La implementación en varias regiones mejora la distribución de la carga entre regiones, lo que podría mejorar el rendimiento para los usuarios ubicados en diferentes áreas geográficas. Para obtener más información, consulte Conmutación por error para la continuidad empresarial y la recuperación ante desastres.",
+ "guid": "046ff188-7d68-492f-850c-c65ee0c9a962",
+ "service": "Azure Machine Learning",
+ "text": "Implementación de modelos de varias regiones: para mejorar la confiabilidad y la disponibilidad, considere la posibilidad de utilizar un entorno de implementación de varias regiones cuando sea posible.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los puntos de control del modelo guardan periódicamente el estado del modelo de aprendizaje automático durante el entrenamiento, de modo que se pueda restaurar en caso de interrupción, error o finalización. Para obtener más información, consulte Aumentar la velocidad de los puntos de control y reducir el costo con Nebula.",
+ "guid": "8eaf992c-ccd9-495f-b625-d4f544d38d38",
+ "service": "Azure Machine Learning",
+ "text": "Resistencia de entrenamiento de modelos: use las características de puntos de control compatibles con Machine Learning, como Azure Container for PyTorch, la clase TensorFlow Estimator o el objeto Run y la clase FileDataset que admiten puntos de control de modelos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las máquinas virtuales de prioridad baja tienen un precio reducido, pero se pueden interrumpir. Los clústeres que usan el nivel de máquina virtual dedicada no se adelantan.",
+ "guid": "19720202-b456-44c4-8ff1-28eaa20e1a7d",
+ "service": "Azure Machine Learning",
+ "text": "Use el nivel de máquina virtual dedicada para clústeres de proceso: use el nivel de máquina virtual dedicada para clústeres de proceso para la inferencia por lotes para asegurarse de que el trabajo por lotes no se adelante.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "303116b4-65cb-43e5-8ceb-7bebaf16b568",
+ "service": "Azure Machine Learning",
+ "text": "Disponibilidad: reduzca la superficie expuesta a ataques del área de trabajo de Machine Learning restringiendo el acceso al área de trabajo a los recursos de la red virtual.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "eb9cc8b2-c9a3-4fe7-9578-8918ab53eae6",
+ "service": "Azure Machine Learning",
+ "text": "Confidencialidad: protéjase contra la exfiltración de datos del área de trabajo de Machine Learning mediante la implementación del aislamiento de red. Asegúrese de que el acceso a todos los recursos externos esté aprobado explícitamente y que no se permita el acceso a todos los demás recursos externos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "1cb53633-f0c7-45f4-a98b-76b0314a94ba",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: implemente controles de acceso que autentiquen y autoricen el área de trabajo de Machine Learning para recursos externos en función del principio de privilegios mínimos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "30341513-1f91-480e-bc19-8031f1851087",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: implemente la segregación de casos de uso para los espacios de trabajo de Machine Learning mediante la configuración de espacios de trabajo basados en casos de uso o proyectos específicos. Este enfoque se adhiere al principio de privilegios mínimos al garantizar que los espacios de trabajo solo sean accesibles para las personas que requieren acceso a datos y activos de experimentación para el caso de uso o proyecto.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "1274dc7a-a81c-409d-8cd6-e3bda0ee8687",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: Regular el acceso a los modelos fundamentales. Asegúrese de que solo los registros aprobados tengan acceso a los modelos del registro de modelos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "ca17ad83-954c-4eba-a30f-9e7c3c2079f6",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: Regular el acceso a los registros de contenedores aprobados. Asegúrese de que el proceso de Machine Learning solo pueda acceder a los registros aprobados.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "1ffe0cf7-a26a-4018-bef8-4d7fdf3291e2",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: regule los paquetes de Python que se pueden ejecutar en el proceso de Machine Learning. La regulación de los paquetes de Python garantiza que solo se ejecuten paquetes de confianza.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "8d9aea78-3ebe-4ec6-968d-3daa07abc239",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: requiere que se firme el código usado para el entrenamiento en entornos informáticos de Machine Learning. Requerir la firma de código garantiza que el código que se ejecuta proviene de una fuente de confianza y no ha sido manipulado.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "a6664b76-0292-4bd4-841e-859b65a569c0",
+ "service": "Azure Machine Learning",
+ "text": "Confidencialidad: adhiera al principio de privilegios mínimos para el control de acceso basado en roles (RBAC) en el área de trabajo de Machine Learning y los recursos relacionados, como la cuenta de almacenamiento del área de trabajo, para garantizar que las personas solo tengan los permisos necesarios para su rol, minimizando así los posibles riesgos de seguridad.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "2a509fe2-ce1d-410c-a5cb-780eb8dfaf15",
+ "service": "Azure Machine Learning",
+ "text": "Integridad: Establezca la confianza y el acceso verificado mediante la implementación del cifrado para los datos en reposo y los datos en tránsito.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "La línea de base de seguridad proporciona orientación personalizada sobre aspectos de seguridad cruciales, como la seguridad de la red, la gestión de identidades, la protección de datos y el acceso con privilegios. Para una seguridad óptima, use Microsoft Defender for Cloud para supervisar estos aspectos.",
+ "guid": "0e30e670-0c69-4c8a-82f5-b88494e56879",
+ "service": "Azure Machine Learning",
+ "text": "Línea base de seguridad: para mejorar la seguridad y el cumplimiento de su servicio de Machine Learning, aplique la línea base de seguridad de Azure para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red virtual administrado mejora la seguridad al aislar el área de trabajo de otras redes, lo que reduce el riesgo de acceso no autorizado. En un escenario en el que se produce una infracción en otra red de la organización, la red aislada del área de trabajo de Machine Learning no se ve afectada, lo que protege las cargas de trabajo de machine learning.",
+ "guid": "aeb66f5c-45bc-45d8-a7bf-a6bd5c6e5f9a",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red virtual administrada: configure el aislamiento de red virtual administrada para Machine Learning. Al habilitar el aislamiento de red virtual administrada, se crea una red virtual administrada para el área de trabajo. Los recursos de proceso administrados que cree para el área de trabajo usan automáticamente esta red virtual administrada. Si no puede implementar el aislamiento de red virtual administrado, debe seguir las recomendaciones de topología de red para separar el proceso en una subred dedicada lejos del resto de los recursos de la solución, incluidos los puntos de conexión privados para los recursos del área de trabajo.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red de Machine Learning mejora la seguridad al garantizar que el acceso a su espacio de trabajo sea seguro y controlado. Con un punto de conexión privado configurado para el área de trabajo, puede limitar el acceso al área de trabajo para que solo se produzca a través de las direcciones IP privadas.",
+ "guid": "af44fe21-713a-435f-97bd-34ec8221f729",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red de Machine Learning: configure un punto de conexión privado para el área de trabajo de Machine Learning y conéctese al área de trabajo a través de ese punto de conexión privado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Esta configuración minimiza el riesgo de exfiltración de datos, mejorando la seguridad de los datos. Con esta configuración habilitada, un actor malintencionado que obtenga acceso a su sistema no puede enviar sus datos a un destino externo no aprobado.",
+ "guid": "d1cdc5a5-eb9a-43d7-ad74-6169482b28d0",
+ "service": "Azure Machine Learning",
+ "text": "Permitir solo el acceso de salida aprobado: configure el modo de salida en el acceso de salida administrado del área de trabajo de Machine Learning a \"Permitir solo el acceso de salida aprobado\" para minimizar el riesgo de exfiltración de datos. Configure puntos de conexión privados, etiquetas de servicio o nombres de dominio completos (FQDN) para los recursos a los que necesita acceder.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El aislamiento de red refuerza la seguridad al restringir el acceso a las soluciones de plataforma como servicio (PaaS) de Azure solo a direcciones IP privadas.",
+ "guid": "0d8346f9-f2fe-4a4e-b153-662c5c6e4510",
+ "service": "Azure Machine Learning",
+ "text": "Aislamiento de red virtual para servicios dependientes: configure servicios dependientes, como Storage, Key Vault y Container Registry con puntos de conexión privados y deshabilite el acceso público.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las identidades administradas mejoran la seguridad al eliminar la necesidad de almacenar credenciales y administrar y rotar manualmente las entidades de servicio.",
+ "guid": "bf2a8ddf-263e-46fb-b73a-ca8b9ba168e7",
+ "service": "Azure Machine Learning",
+ "text": "Identidad administrada: use identidades administradas para la autenticación entre Machine Learning y otros servicios.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "La deshabilitación de la autenticación local aumenta la seguridad del proceso de Machine Learning y proporciona un control y una administración centralizados de las identidades y las credenciales de los recursos.",
+ "guid": "70477454-0ddb-4ad6-9342-1ad6290bbb06",
+ "service": "Azure Machine Learning",
+ "text": "Deshabilitar la autenticación local: deshabilite la autenticación local para clústeres e instancias de proceso de Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Deshabilitar el acceso SSH ayuda a evitar que personas no autorizadas obtengan acceso y puedan causar daños a su sistema, y lo protege contra ataques de fuerza bruta.",
+ "guid": "cbd359bc-8057-4a9c-9183-c4fc1e70a69b",
+ "service": "Azure Machine Learning",
+ "text": "Deshabilite el puerto SSH público: asegúrese de que el puerto público de Secure Shell (SSH) esté cerrado en el clúster de proceso de Machine Learning estableciendo \"remoteLoginPortPublicAccess\" en \"Disabled\". Aplique una configuración similar si utiliza un proceso diferente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Absténgase de aprovisionar direcciones IP públicas para mejorar la seguridad limitando la posibilidad de acceso no autorizado a la instancia informática o a los clústeres.",
+ "guid": "cc532133-2bba-484f-b316-035b93b3ee6a",
+ "service": "Azure Machine Learning",
+ "text": "No aprovisione direcciones IP públicas para el proceso de Machine Learning: establezca enableNodePublicIp en \"false\" al aprovisionar clústeres de proceso o instancias de proceso de Machine Learning. Aplique una configuración similar si utiliza un proceso diferente.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de las imágenes más recientes garantiza que mantenga un entorno coherente, estable y seguro, lo que incluye asegurarse de tener los parches de seguridad más recientes.",
+ "guid": "cb49b636-1011-43a0-a12b-25378f677153",
+ "service": "Azure Machine Learning",
+ "text": "Obtener la imagen más reciente del sistema operativo: vuelva a crear instancias informáticas para obtener la imagen más reciente del sistema operativo.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Los estrictos controles de acceso al espacio de trabajo mejoran la seguridad al garantizar que las personas solo tengan los permisos necesarios para su función. Un científico de datos, por ejemplo, puede tener acceso para ejecutar experimentos, pero no para modificar la configuración de seguridad, lo que minimiza los posibles riesgos de seguridad.",
+ "guid": "17cac647-8c6f-4a6f-a66d-c436e17c91c8",
+ "service": "Azure Machine Learning",
+ "text": "Controles estrictos de acceso al área de trabajo de Machine Learning: use grupos de identificadores de Microsoft Entra para administrar el acceso al área de trabajo y cumplir con el principio de privilegios mínimos para RBAC.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Al restringir las implementaciones del catálogo de modelos a registros específicos, se garantiza que solo se implementen modelos en registros aprobados. Este enfoque ayuda a regular el acceso a los modelos fundacionales de código abierto.",
+ "guid": "18a61ee3-34d2-484a-a740-3c90d23c64b9",
+ "service": "Azure Machine Learning",
+ "text": "Restringir implementaciones de catálogos de modelos: restrinja las implementaciones de modelos a registros específicos.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El cifrado de datos en reposo mejora la seguridad de los datos al garantizar que los datos confidenciales se cifren mediante el uso de claves administradas directamente por usted. Si tiene un requisito normativo para administrar sus propias claves de cifrado, utilice esta función para cumplir con ese requisito.",
+ "guid": "5e14c11e-83fb-40f1-a8dc-d96767d73a13",
+ "service": "Azure Machine Learning",
+ "text": "Cifrar datos en reposo: considere la posibilidad de usar claves administradas por el cliente con Machine Learning.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Minimice el riesgo de exfiltración de datos limitando los requisitos de entrada y salida.",
+ "guid": "6782cd14-a63d-466c-a7c9-8a92afe3b396",
+ "service": "Azure Machine Learning",
+ "text": "Minimice el riesgo de exfiltración de datos: implemente la prevención de exfiltración de datos. Por ejemplo, cree una directiva de punto de conexión de servicio para filtrar el tráfico de red virtual de salida y permitir la filtración de datos solo a cuentas específicas de Azure Storage.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "cac38d1e-d21e-4af5-834d-d607469c6439",
+ "service": "Azure Machine Learning",
+ "text": "Optimización del uso: elija los recursos adecuados para asegurarse de que se alinean con los requisitos de su carga de trabajo. Por ejemplo, elija entre CPU o GPU, varias SKU o máquinas virtuales de prioridad baja frente a regular.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "8e98fc4b-2fa4-44b9-9aa7-1c01f67aecb7",
+ "service": "Azure Machine Learning",
+ "text": "Optimización del uso: asegúrese de que los recursos informáticos que no se utilizan se reduzcan o se apaguen cuando estén inactivos para reducir el desperdicio.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "dfafcc35-c8fb-429b-92c0-53f045884794",
+ "service": "Azure Machine Learning",
+ "text": "Optimización del uso: aplique políticas y configure cuotas para cumplir con los límites superior e inferior del diseño.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "14149f48-97d8-4614-9236-681f5fd42b34",
+ "service": "Azure Machine Learning",
+ "text": "Optimización de uso: pruebe la paralelización de cargas de trabajo de entrenamiento para determinar si los requisitos de entrenamiento se pueden cumplir en SKU de menor costo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "945e262b-3a0f-4ac9-ac51-69b5500f9ee6",
+ "service": "Azure Machine Learning",
+ "text": "Optimización de tarifas: compre Azure Reserved Virtual Machine Instances si tiene una buena estimación del uso en los próximos uno a tres años.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "563a3c8d-4168-4f18-a056-efb624734ecf",
+ "service": "Azure Machine Learning",
+ "text": "Supervisar y optimizar: supervise el uso de recursos, como el uso de CPU y GPU, al entrenar modelos. Si los recursos no se usan por completo, modifique el código para usar mejor los recursos o reduzca verticalmente a tamaños de máquina virtual más pequeños o más baratos.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "La selección del proceso adecuado es fundamental, ya que afecta directamente al costo de ejecución de la carga de trabajo. Elegir una GPU o una SKU de alto rendimiento sin un uso adecuado puede generar gastos innecesarios, mientras que elegir un proceso de tamaño insuficiente puede provocar tiempos de entrenamiento prohibitivos y problemas de rendimiento.",
+ "guid": "3d87f935-99a6-4aee-aac2-069994de09ff",
+ "service": "Azure Machine Learning",
+ "text": "Optimice los recursos informáticos: optimice los recursos informáticos en función de los requisitos de la carga de trabajo. Elija la SKU que mejor se adapte a su carga de trabajo:
- Propósito general: relación equilibrada entre CPU y memoria, buena para todos los propósitos.
- Optimizado para cómputo: alta relación entre CPU y memoria, buena para cálculos matemáticos pesados.
- Optimizado para memoria: alta memoria para la CPU, buena para cálculos en memoria o aplicaciones de bases de datos.
- Serie M: máquinas muy grandes que tienen grandes cantidades de memoria y CPU.
- GPU: mejor para modelos con un gran número de variables que pueden beneficiarse de un mayor paralelismo e instrucciones de núcleo especializadas. Las aplicaciones típicas son el aprendizaje profundo, el procesamiento de imágenes o vídeos, las simulaciones científicas, la minería de datos y el aprovechamiento de los marcos de desarrollo de GPU. Pruebe con varias familias y documente los resultados como referencia. A medida que el modelo y los datos evolucionan, es posible que cambie el recurso informático más adecuado. Supervise los tiempos de ejecución y reevalúe según sea necesario.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Configure el escalado automático para que los clústeres de proceso reduzcan verticalmente cuando su uso sea bajo. Establezca el número mínimo de nodos en 0 para que los clústeres de entrenamiento se reduzcan verticalmente a 0 cuando no estén en uso.",
+ "guid": "d30cfeeb-6c61-4a9d-9a56-c8296cec72cb",
+ "service": "Azure Machine Learning",
+ "text": "Optimice el escalado de proceso: configure los clústeres de proceso para el escalado automático a fin de asegurarse de que solo usa lo que necesita. Para los clústeres de entrenamiento, establezca el número mínimo de nodos en 0 y configure la cantidad de tiempo que el nodo está inactivo en un tiempo adecuado. Para una experimentación menos iterativa, reduzca el tiempo para ahorrar costos. Para una experimentación más iterativa, use un tiempo mayor para evitar tener que pagar por escalar hacia arriba o hacia abajo después de cada cambio.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La configuración de directivas de terminación puede ayudarle a ahorrar costos al detener las ejecuciones que no funcionan antes de tiempo.",
+ "guid": "098a7bee-444c-4351-aeb1-8bd97036299c",
+ "service": "Azure Machine Learning",
+ "text": "Establecer directivas de finalización del entrenamiento: establezca directivas de finalización anticipada para limitar la duración de las ejecuciones de entrenamiento o finalizarlas antes de tiempo.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las máquinas virtuales de baja prioridad permiten utilizar una gran cantidad de potencia de proceso a bajo costo. Aprovechan el excedente de capacidad de Azure.",
+ "guid": "41f2dd91-5765-4dfb-9db0-9b3e976b4afb",
+ "service": "Azure Machine Learning",
+ "text": "Use máquinas virtuales de prioridad baja para cargas de trabajo por lotes: considere la posibilidad de usar máquinas virtuales de prioridad baja para cargas de trabajo por lotes que no sean urgentes y en las que se puedan recuperar las interrupciones.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "De forma predeterminada, las instancias informáticas están disponibles para usted, acumulando costos. Configurar instancias de proceso para que se apaguen cuando estén inactivas o configurar una programación para ellas ahorra costos cuando no están en uso.",
+ "guid": "e3150ddd-f553-425f-bb91-249a9598e25e",
+ "service": "Azure Machine Learning",
+ "text": "Habilitar el apagado inactivo para instancias informáticas: habilite el apagado inactivo para instancias informáticas o programe una hora de inicio y finalización si se conoce el tiempo de uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Las cargas de trabajo paralelas se pueden ejecutar en varias instancias más pequeñas, lo que puede generar ahorros de costos.",
+ "guid": "8b47ec85-0e9e-428b-9290-c590a7f4ab1a",
+ "service": "Azure Machine Learning",
+ "text": "Paralelizar cargas de trabajo de entrenamiento: considere la posibilidad de paralelizar cargas de trabajo de entrenamiento. Pruebe a ejecutarlos con la ayuda de los componentes paralelos de Machine Learning.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Compre Azure Reserved VM Instances para pagar por adelantado el uso de máquinas virtuales y ofrecer descuentos con precios de pago por uso. El descuento se aplica automáticamente al uso de la máquina virtual que coincida con la reserva.",
+ "guid": "b4470844-d54d-4a1c-980c-37d09e17940d",
+ "service": "Azure Machine Learning",
+ "text": "Azure Reserved VM Instances: compre Azure Reserved VM Instances si tiene una buena estimación del uso para los próximos uno a tres años. Aproveche las opciones de capacidad reservada para los servicios cuando tenga buenas estimaciones de uso.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "4dace40c-2627-4eb1-9d18-4a6c03901283",
+ "service": "Azure Machine Learning",
+ "text": "Estándares de desarrollo: aproveche los catálogos y registros de modelos de Machine Learning para almacenar, versionar y compartir activos de Machine Learning.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "2fe1daf9-b388-4d25-8ff8-39908ada7f27",
+ "service": "Azure Machine Learning",
+ "text": "Automatice para lograr la eficiencia: siga las buenas prácticas de operaciones de aprendizaje automático (MLOps). Cuando sea posible, cree canalizaciones automatizadas de extremo a extremo para los procesos de preparación, capacitación y puntuación de datos. En el desarrollo, use scripts en lugar de cuadernos para los modelos de entrenamiento, ya que los scripts son más fáciles de integrar en canalizaciones automatizadas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "7b5de736-4956-4313-82be-0a0ff07d7ab6",
+ "service": "Azure Machine Learning",
+ "text": "Implemente con confianza: implemente infraestructura como código (IaC) para áreas de trabajo de Machine Learning, clústeres informáticos, instancias informáticas y otros entornos de implementación.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "f8196404-8f76-4e65-9b32-46d8d777d1d3",
+ "service": "Azure Machine Learning",
+ "text": "Observabilidad: Supervise el rendimiento de los modelos implementados, incluido el desfase de datos.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "d212d648-752b-480f-bda5-0d45d0185312",
+ "service": "Azure Machine Learning",
+ "text": "Observabilidad: si los modelos se implementan en puntos de conexión en línea, habilite Application Insights para supervisar los puntos de conexión y las implementaciones en línea. Supervise la infraestructura de formación para asegurarse de que cumple con los requisitos básicos.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "afd5b803-c151-4b8d-ae08-63cc8961a378",
+ "service": "Azure Machine Learning",
+ "text": "Simplicidad: use entornos seleccionados optimizados para el aprendizaje automático, cuando estén disponibles.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Limitar el número de espacios de trabajo reduce el esfuerzo de mantenimiento y el costo de operación. Para los requisitos, como la seguridad, es posible que necesite varias áreas de trabajo independientes. Minimice el número de espacios de trabajo cuando sea posible.",
+ "guid": "bb6c4c2f-65f4-4fab-ada7-ebe079bde9cb",
+ "service": "Azure Machine Learning",
+ "text": "Minimice las instancias de áreas de trabajo de Machine Learning: minimice el número de áreas de trabajo, cuando sea posible, para reducir el mantenimiento.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Use los registros de modelos de Machine Learning para almacenar y versionar los modelos de Machine Learning para realizar un seguimiento de los cambios y mantener el linaje con el trabajo y los conjuntos de datos utilizados para el entrenamiento. Con los catálogos de modelos de Machine Learning, los equipos de ciencia de datos pueden detectar, evaluar y ajustar modelos básicos de aprendizaje automático preentrenados. El almacenamiento de modelos con versiones en registros de modelos de Machine Learning admite estrategias de implementación como versiones A/B, versiones Canary y reversiones.",
+ "guid": "31841d05-3372-4bd4-b8bc-efcaaee1bd88",
+ "service": "Azure Machine Learning",
+ "text": "Aproveche los catálogos y registros de modelos: aproveche los catálogos y registros de modelos de Machine Learning para almacenar, versionar y compartir activos de Machine Learning. Use los catálogos de modelos de Machine Learning para ayudarle a implementar pruebas A/B e implementación de modelos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los modelos implementados garantiza que los modelos cumplan los requisitos de rendimiento. La supervisión del desfase de datos le ayuda a detectar cambios en los datos de entrada que pueden provocar una disminución en el rendimiento del modelo. La administración del desfase de datos le ayuda a garantizar que el modelo proporcione resultados precisos a lo largo del tiempo.",
+ "guid": "90a72a7e-6fb5-4e02-a159-7a4d907eb098",
+ "service": "Azure Machine Learning",
+ "text": "Supervise el rendimiento del modelo: supervise el rendimiento de los modelos implementados y detecte el desfase de datos en los conjuntos de datos.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los puntos de conexión le proporciona visibilidad de métricas como la latencia de las solicitudes y las solicitudes por minuto. Puede comparar el rendimiento con la línea base y usar esta información para realizar cambios en los recursos informáticos en consecuencia. Las métricas de supervisión, como los bytes de red, pueden alertarte si te estás acercando a los límites de cuota y evitar la limitación. Del mismo modo, la supervisión de su entorno de formación le proporciona la información necesaria para realizar cambios en su entorno de formación. Use esa información para decidir si escalar o reducir horizontalmente, escalar o reducir verticalmente con diferentes SKU de alto rendimiento, o elegir entre CPU o GPU.",
+ "guid": "b1d87076-b253-47ae-8727-97f804e49a3c",
+ "service": "Azure Machine Learning",
+ "text": "Supervisar la infraestructura: si los modelos se implementan en puntos de conexión en línea, habilite Application Insights para supervisar los puntos de conexión y las implementaciones en línea. Supervise la infraestructura de formación para asegurarse de que cumple con los requisitos básicos. Asegúrese de recopilar registros de recursos para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Los entornos seleccionados son entornos creados previamente proporcionados por Machine Learning que aceleran el tiempo de implementación y reducen la latencia de implementación y entrenamiento. El uso de entornos seleccionados mejora las tasas de éxito del entrenamiento y la implementación, y evita compilaciones de imágenes innecesarias. Los entornos seleccionados, como Azure Container for PyTorch, también se pueden optimizar para entrenar modelos grandes en Machine Learning.",
+ "guid": "4c6895ce-abd9-4c90-a386-c31bc0681869",
+ "service": "Azure Machine Learning",
+ "text": "Seleccionar entornos de entrenamiento de modelos: use entornos seleccionados optimizados para Machine Learning, cuando estén disponibles.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "82ffebb1-2e91-46a4-b796-3fa55c4c20e3",
+ "service": "Azure Machine Learning",
+ "text": "Objetivos de rendimiento: determine el tiempo de entrenamiento aceptable y la frecuencia de reentrenamiento para su modelo. Establecer un objetivo claro para el tiempo de entrenamiento, junto con las pruebas, le ayuda a determinar los recursos de proceso, la CPU frente a la GPU y las SKU de CPU necesarias para cumplir el objetivo de tiempo de entrenamiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "5e526216-1b94-4cfe-86ef-bbce971f7f3a",
+ "service": "Azure Machine Learning",
+ "text": "Objetivos de rendimiento: defina los objetivos de rendimiento aceptables para los modelos implementados, incluido el tiempo de respuesta, las solicitudes por segundo, la tasa de errores y el tiempo de actividad. Los objetivos de rendimiento actúan como punto de referencia para la eficiencia del modelo implementado. Los destinos pueden ayudarle a determinar la CPU frente a la GPU, las opciones de SKU de CPU y los requisitos de escalado.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "2d6ddbe2-2bcc-4629-a316-5d56d74ef68a",
+ "service": "Azure Machine Learning",
+ "text": "Cumplir con los requisitos de capacidad: elija los recursos informáticos adecuados para el entrenamiento de modelos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "0ab74767-80ac-454e-aab6-b546e38411f8",
+ "service": "Azure Machine Learning",
+ "text": "Cumpla con los requisitos de capacidad: elija los recursos informáticos adecuados para las implementaciones de modelos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "d47bd862-5302-4ecb-a551-37cb0d15e802",
+ "service": "Azure Machine Learning",
+ "text": "Cumpla con los requisitos de capacidad: elija entornos de implementación con capacidades de escalado automático para agregar y eliminar capacidad a medida que fluctúa la demanda.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "e10dead3-58c0-40b2-aa9b-39c64a68c555",
+ "service": "Azure Machine Learning",
+ "text": "Logre y mantenga el rendimiento: supervise continuamente el rendimiento de sus modelos implementados, revise los resultados y tome las medidas adecuadas.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "e257de8e-a8ef-4b91-81a3-3d832682b1eb",
+ "service": "Azure Machine Learning",
+ "text": "Logre y mantenga el rendimiento: supervise continuamente el rendimiento de su infraestructura de modelos implementados, revise los resultados y tome las medidas adecuadas. Supervise la infraestructura de formación para asegurarse de que cumple con los requisitos de tiempo de formación.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "La selección del proceso adecuado es fundamental, ya que afecta directamente al tiempo de entrenamiento. La elección de la SKU y la CPU correctas en comparación con la GPU garantiza que el entrenamiento de modelos pueda cumplir con sus requisitos y objetivos de rendimiento. Elegir un SKU de bajo rendimiento que se use en exceso puede provocar tiempos de entrenamiento prohibitivos y problemas de rendimiento. Los clústeres de proceso proporcionan la capacidad de mejorar el rendimiento mediante el escalado horizontal de las cargas de trabajo que admiten el escalado horizontal. Este método proporciona flexibilidad para manejar cargas de trabajo con diferentes demandas y le permite agregar o quitar máquinas según sea necesario.",
+ "guid": "352a223c-dabd-46da-8752-56a87c6f18b7",
+ "service": "Azure Machine Learning",
+ "text": "Seleccione los servicios de proceso adecuados para el entrenamiento de modelos: considere la posibilidad de utilizar clústeres de proceso de Machine Learning en lugar de instancias de proceso para el entrenamiento de modelos si necesita el escalado automático. Optimice sus recursos informáticos en función de los requisitos de formación. En primer lugar, elija entre CPU y GPU. De forma predeterminada, utilice CPU, pero considere las GPU para cargas de trabajo como el aprendizaje profundo, el procesamiento de imágenes o vídeos, o grandes cantidades de datos. A continuación, elija la SKU de imagen que mejor se adapte a su carga de trabajo. Use las pruebas para elegir la opción de proceso que optimiza el costo en función del tiempo de entrenamiento al determinar la línea base.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El escalado automático ajusta el número de instancias del modelo implementado para que coincida con la demanda.",
+ "guid": "683ae603-156f-4186-8a82-aa2907fbb9bd",
+ "service": "Azure Machine Learning",
+ "text": "Escalado del entorno de implementación de modelos: use las capacidades de escalado automático del entorno de implementación. En el caso de los entornos de implementación de AKS, use el escalador automático de clústeres para escalar y satisfacer la demanda. En el caso de los puntos de conexión en línea, escale automáticamente a través de la integración con la característica de escalado automático de Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "El seguimiento del rendimiento de los modelos en producción le alerta de posibles problemas, como el desfase de datos, el desfase de predicción, la calidad de los datos y el desfase de atribución de características. La supervisión del desfase de datos le ayuda a detectar cambios en los datos de entrada que pueden provocar una disminución en el rendimiento del modelo. La administración del desfase de datos le ayuda a garantizar que el modelo proporcione resultados precisos a lo largo del tiempo.",
+ "guid": "eccdaab6-7458-4967-9cd4-da6a89e3ce8c",
+ "service": "Azure Machine Learning",
+ "text": "Supervise el rendimiento del modelo: supervise el rendimiento de los modelos implementados.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "La supervisión de los puntos de conexión le proporciona visibilidad de métricas como la latencia de las solicitudes y las solicitudes por minuto. Puede comparar el rendimiento con la línea base y usar esta información para realizar cambios en los recursos informáticos en consecuencia. Las métricas de supervisión, como los bytes de red, pueden alertarte si te estás acercando a los límites de cuota y evitar la limitación. Del mismo modo, la supervisión de su entorno de formación le proporciona la información necesaria para realizar cambios en su entorno de formación. Use esa información para decidir si escalar o reducir horizontalmente, escalar o reducir verticalmente con diferentes SKU de alto rendimiento, o elegir entre CPU o GPU.",
+ "guid": "76b80c26-8252-416e-aae1-ace03a9403dd",
+ "service": "Azure Machine Learning",
+ "text": "Supervise la infraestructura: supervise los puntos finales en línea e intégrelos con Monitor para realizar un seguimiento y supervisar las métricas y los registros adecuados. Habilite Application Insights al crear implementaciones en línea. Supervise la infraestructura de entrenamiento y revise el uso de recursos, como la memoria y el uso de CPU o GPU, al entrenar modelos para asegurarse de que cumple con los requisitos básicos.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "154d9075-f8f8-4dc8-b8f4-651d875d5dfe",
+ "service": "Azure Openai",
+ "text": "Resiliencia: elija la opción de implementación adecuada de rendimiento de pago por uso o aprovisionado en función de su caso de uso. Dado que la capacidad reservada aumenta la resistencia, elija el rendimiento aprovisionado para las soluciones de producción. El enfoque de pago por uso es ideal para entornos de desarrollo y pruebas.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "571ddd3c-601e-46a7-bf80-c52f04a301fb",
+ "service": "Azure Openai",
+ "text": "Redundancia: agregue las puertas de enlace adecuadas delante de las implementaciones de Azure OpenAI. La puerta de enlace debe tener la capacidad de soportar errores transitorios, como la limitación, y también de enrutar a varias instancias de Azure OpenAI. Considere la posibilidad de enrutar a instancias de diferentes regiones para crear redundancia regional.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "4b6855b3-069d-4bb2-b9c6-f1c021803f77",
+ "service": "Azure Openai",
+ "text": "Resistencia: si usa el rendimiento aprovisionado, considere también la posibilidad de implementar una instancia de pago por uso para controlar el desbordamiento. Puede enrutar las llamadas a la instancia de pago por uso a través de la puerta de enlace cuando el modelo de rendimiento aprovisionado está limitado. También puede utilizar la supervisión para predecir cuándo se limitará el modelo y enrutar de forma preferente las llamadas a la instancia de pago por uso.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "7fd57f22-417b-47d5-88c9-ab7a2ceb5599",
+ "service": "Azure Openai",
+ "text": "Resistencia: supervise el uso de la capacidad para asegurarse de que no supera los límites de rendimiento. Revise periódicamente el uso de la capacidad para lograr una previsión más precisa y ayudar a prevenir interrupciones del servicio debido a limitaciones de capacidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "c41d1ed1-6f1d-4e6e-9dde-2d8172365170",
+ "service": "Azure Openai",
+ "text": "Resistencia: siga las instrucciones para archivos de datos de gran tamaño e importe los datos de un almacén de blobs de Azure. Los archivos grandes, de 100 MB o más, pueden volverse inestables cuando se cargan a través de formularios de varias partes porque las solicitudes son atómicas y no se pueden volver a intentar ni reanudar.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "088c617d-fce0-4fab-b4cd-9f9eb6a96cff",
+ "service": "Azure Openai",
+ "text": "Recuperación: defina una estrategia de recuperación que incluya un plan de recuperación para los modelos optimizados y para los datos de entrenamiento cargados en Azure OpenAI. Dado que Azure OpenAI no tiene conmutación automática por error, debe diseñar una estrategia que abarque todo el servicio y todas las dependencias, como el almacenamiento que contiene datos de entrenamiento.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Esta importante información de rendimiento proporciona la información necesaria para asegurarse de que asigna suficiente TPM de la cuota para satisfacer la demanda de las implementaciones. La asignación de una cuota suficiente evita la limitación de las llamadas a los modelos implementados.",
+ "guid": "f109deb2-54f9-4405-a9f0-f90fd0f76adf",
+ "service": "Azure Openai",
+ "text": "Supervise los límites de frecuencia para el pago por uso: si usa el enfoque de pago por uso, administre los límites de tarifa para las implementaciones del modelo y supervise el uso de tokens por minuto (TPM) y solicitudes por minuto (RPM).",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Es importante supervisar el uso administrado por aprovisionamiento para asegurarse de que no supera el 100 % para evitar la limitación de las llamadas a los modelos implementados.",
+ "guid": "ef12f5c3-dbe2-4040-be82-724eebc6f87e",
+ "service": "Azure Openai",
+ "text": "Supervisión del uso administrado por aprovisionamiento para el rendimiento aprovisionado: si usa el modelo de pago por rendimiento aprovisionado, supervise el uso administrado por aprovisionamiento.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Los filtros de contenido bloquean las solicitudes o finalizaciones en función de un análisis de riesgos opaco. Asegúrese de que los filtros de contenido estén ajustados para permitir el uso esperado de la carga de trabajo.",
+ "guid": "efcf5f6a-02bb-4cc8-8018-055ebf2e57e0",
+ "service": "Azure Openai",
+ "text": "Ajustar los filtros de contenido: Ajuste los filtros de contenido para minimizar los falsos positivos de filtros demasiado agresivos.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "a61b826b-9f3b-4f51-8e0e-a32a92865386",
+ "service": "Azure Openai",
+ "text": "Proteja la confidencialidad: si carga datos de entrenamiento en Azure OpenAI, use claves administradas por el cliente para el cifrado de datos, implemente una estrategia de rotación de claves y elimine los datos de entrenamiento, validación y resultados de entrenamiento. Si usa un almacén de datos externo para los datos de entrenamiento, siga las prácticas recomendadas de seguridad para ese almacén. Por ejemplo, para Azure Blob Storage, use claves administradas por el cliente para el cifrado e implemente una estrategia de rotación de claves. Utilice el acceso administrado basado en identidades, implemente un perímetro de red mediante puntos de conexión privados y habilite los registros de acceso.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "9f4bdfff-2c6c-4662-9139-1de51d2dbd20",
+ "service": "Azure Openai",
+ "text": "Proteja la confidencialidad: protéjase contra la filtración de datos limitando las direcciones URL de salida a las que pueden acceder los recursos de Azure OpenAI.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "b8463e8d-daaa-4209-9944-0fb0587219a8",
+ "service": "Azure Openai",
+ "text": "Proteger la integridad: implemente controles de acceso para autenticar y autorizar el acceso de los usuarios al sistema mediante el principio de privilegios mínimos y mediante el uso de identidades individuales en lugar de claves.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "714249d8-2b60-4920-89a2-eab4a338ac02",
+ "service": "Azure Openai",
+ "text": "Proteja la integridad: implemente la detección de riesgos de jailbreak para proteger las implementaciones de sus modelos de lenguaje contra ataques de inyección rápida.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "e0383d3b-71f1-4fda-9759-24cfd293abff",
+ "service": "Azure Openai",
+ "text": "Proteger la disponibilidad: use controles de seguridad para evitar ataques que puedan agotar las cuotas de uso del modelo. Puede configurar controles para aislar el servicio en una red. Si se debe poder acceder al servicio desde Internet, considere la posibilidad de usar una puerta de enlace para bloquear los abusos sospechosos mediante el enrutamiento o la limitación.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Separar los secretos del código almacenándolos en Key Vault reduce la posibilidad de que se filtren secretos. La separación también facilita la gestión centralizada de secretos, lo que facilita responsabilidades como la rotación de claves.",
+ "guid": "c4310e87-1366-4523-b2e1-244e1074fbb0",
+ "service": "Azure Openai",
+ "text": "Claves seguras: si su arquitectura requiere autenticación basada en claves de Azure OpenAI, almacene esas claves en Azure Key Vault, no en el código de la aplicación.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Controlar el acceso a Azure OpenAI ayuda a evitar ataques de usuarios no autorizados. El uso de puntos de conexión privados garantiza que el tráfico de red permanezca privado entre la aplicación y la plataforma.",
+ "guid": "4a7a9a07-0229-4175-b784-9a99eded4d54",
+ "service": "Azure Openai",
+ "text": "Restringir el acceso: deshabilite el acceso público a Azure OpenAI a menos que la carga de trabajo lo requiera. Cree puntos de conexión privados si se conecta desde consumidores en una red virtual de Azure.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de Microsoft Entra ID centraliza el componente de administración de identidades y elimina el uso de claves de API. El uso de RBAC con Microsoft Entra ID garantiza que los usuarios o grupos tengan exactamente los permisos que necesitan para realizar su trabajo. Este tipo de control de acceso detallado no es posible con las claves de API de Azure OpenAI.",
+ "guid": "d5892190-2da9-43f4-b1e1-76b38b369643",
+ "service": "Azure Openai",
+ "text": "Id. de Microsoft Entra: use el identificador de Microsoft Entra para la autenticación y para autorizar el acceso a Azure OpenAI mediante el control de acceso basado en roles (RBAC). Deshabilite la autenticación local en Azure AI Services y establezca 'disableLocalAuth' en 'true'. Otorgue a las identidades que realicen finalizaciones o generación de imágenes el rol de usuario de OpenAI de Cognitive Services. Conceda canalizaciones de automatización de modelos y acceso de ciencia de datos ad-hoc a un rol como Colaborador de OpenAI de Cognitive Services.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El uso de claves administradas por el cliente le ofrece una mayor flexibilidad para crear, rotar, deshabilitar y revocar controles de acceso.",
+ "guid": "60a4703c-1086-45e1-9384-ebb32ab50696",
+ "service": "Azure Openai",
+ "text": "Use claves administradas por el cliente: use claves administradas por el cliente para los modelos optimizados y los datos de entrenamiento que se cargan en Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Detecte los intentos de jailbreak para identificar y bloquear los mensajes que intentan eludir los mecanismos de seguridad de las implementaciones de Azure OpenAI.",
+ "guid": "ce66eba7-5972-4cb5-8db0-b75c3720b220",
+ "service": "Azure Openai",
+ "text": "Protéjase contra ataques de jailbreak: use Azure AI Content Safety Studio para detectar riesgos de jailbreak.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "08f7b66c-7679-479b-8e2f-41b3305613dc",
+ "service": "Azure Openai",
+ "text": "Gestión de costos: desarrolle su modelo de costos, teniendo en cuenta los tamaños de las solicitudes. Comprender los tamaños de entrada y respuesta de las solicitudes, y cómo el texto se traduce en tokens, lo ayuda a crear un modelo de costos viable.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "3f66f351-a073-40bb-94d2-326e1ea1a696",
+ "service": "Azure Openai",
+ "text": "Optimización del uso: comience con los precios de pago por uso para Azure OpenAI hasta que el uso del token sea predecible.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "3802ce2d-2a46-445d-92e2-2a23b2e40705",
+ "service": "Azure Openai",
+ "text": "Optimización de tasas: cuando el uso de tokens sea lo suficientemente alto y predecible durante un período de tiempo, use el modelo de precios de rendimiento aprovisionado para una mejor optimización de costos.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "2b2303c0-e057-431d-9a02-20a1a0b2b5b9",
+ "service": "Azure Openai",
+ "text": "Optimización de uso: tenga en cuenta los precios y las capacidades del modelo al elegir los modelos. Comience con modelos menos costosos para tareas menos complejas, como la generación de texto o las tareas de finalización. Para tareas más complejas, como la traducción de idiomas o la comprensión de contenidos, considere la posibilidad de utilizar modelos más avanzados. Tenga en cuenta las diferentes capacidades del modelo y los límites máximos de uso de tokens cuando elija un modelo que sea adecuado para casos de uso como escenarios de incrustación de texto, generación de imágenes o transcripción. Al seleccionar cuidadosamente el modelo que mejor se adapte a sus necesidades, puede optimizar los costos y, al mismo tiempo, lograr el rendimiento deseado de la aplicación.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "c4104d7c-4a4f-4b8a-9928-558a7c5c61d8",
+ "service": "Azure Openai",
+ "text": "Optimización de uso: utilice las restricciones de limitación de tokens que ofrecen las llamadas a la API, como 'max_tokens' y 'n', que indican el número de finalizaciones que se van a generar.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "fb44ea80-44a3-465f-9d50-98b800a90fd6",
+ "service": "Azure Openai",
+ "text": "Optimización de uso: maximice los puntos de interrupción de precios de Azure OpenAI, por ejemplo, el ajuste fino y los puntos de interrupción del modelo, como la generación de imágenes. Debido a que el ajuste fino se cobra por hora, use todo el tiempo que tenga disponible por hora para mejorar los resultados del ajuste fino y evitar pasar al siguiente período de facturación. Del mismo modo, el costo de generar 100 imágenes es el mismo que el costo de 1 imagen. Maximice los puntos de ruptura de precios a su favor.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "5f027af8-e168-4b86-8255-4ea6f74cfd87",
+ "service": "Azure Openai",
+ "text": "Optimización del uso: elimine los modelos ajustados no utilizados cuando ya no se consuman para evitar incurrir en una tarifa de alojamiento continua.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "23756c91-3a66-4733-98b7-448bc8441f56",
+ "service": "Azure Openai",
+ "text": "Ajustar el uso: Optimice la entrada de solicitudes y la duración de las respuestas. Los avisos más largos aumentan los costos al consumir más tokens. Sin embargo, las solicitudes a las que les falta suficiente contexto no ayudan a que los modelos produzcan buenos resultados. Cree mensajes concisos que proporcionen suficiente contexto para que el modelo genere una respuesta útil. Asegúrese también de optimizar el límite de la longitud de la respuesta.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "160154da-ea9e-4a84-ac35-8a731658c0fd",
+ "service": "Azure Openai",
+ "text": "Rentabilidad: 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.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "739c80f6-0570-435b-ab82-2c8ce9d2deb8",
+ "service": "Azure Openai",
+ "text": "Rentabilidad: dado que los modelos tienen diferentes costos de ajuste, tenga en cuenta estos costos si su solución requiere un ajuste fino.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "518fd651-b13e-427e-a0de-f634a014f5b2",
+ "service": "Azure Openai",
+ "text": "Supervise y optimice: configure un sistema de seguimiento de costos que supervise el uso del modelo. Utilice esa información para ayudar a informar las opciones de modelos y los tamaños indicados.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "El uso de las funciones de la API para restringir el uso alinea el consumo del servicio con las necesidades del cliente. Esto ahorra dinero al garantizar que el modelo no genere una respuesta demasiado larga que consuma más tokens de los necesarios.",
+ "guid": "afb53b41-825a-4310-b445-bf391792c568",
+ "service": "Azure Openai",
+ "text": "Diseño del código de cliente para establecer límites: los clientes personalizados deben usar las características de límite de la API de finalizaciones de Azure OpenAI, como el límite máximo en el número de tokens por modelo ('max_tokens') o el número de finalizaciones hasta la generación ('n'). Establecer límites garantiza que el servidor no produzca más de lo que el cliente necesita.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión continua de TPM y RPM proporciona métricas relevantes para optimizar el costo de los modelos de Azure OpenAI. Puede combinar esta supervisión con las características del modelo y los precios del modelo para optimizar el uso del modelo. También puede utilizar esta supervisión para optimizar el tamaño de las solicitudes.",
+ "guid": "e91029f2-ddf4-41f3-8358-f31b5afbe8ba",
+ "service": "Azure Openai",
+ "text": "Supervise el uso de pago por uso: si usa el enfoque de pago por uso, supervise el uso de TPM y RPM. Utilice esa información para tomar decisiones informadas sobre el diseño arquitectónico, como qué modelos utilizar, y para optimizar los tamaños de las solicitudes.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión continua de la utilización administrada por provisiones le proporciona la información que necesita para comprender si está infrautilizando el rendimiento aprovisionado.",
+ "guid": "06a0b95c-b014-4205-8d0c-f074ec393239",
+ "service": "Azure Openai",
+ "text": "Supervise el uso del rendimiento aprovisionado: si utiliza el rendimiento aprovisionado, supervise el uso administrado por el aprovisionamiento para asegurarse de que no está infrautilizando el rendimiento aprovisionado que compró.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "La supervisión de costos, el establecimiento de presupuestos y la configuración de alertas proporcionan a la gobernanza los procesos de responsabilidad adecuados.",
+ "guid": "f18aba52-5587-43e6-b994-8cab7022167f",
+ "service": "Azure Openai",
+ "text": "Gestión de costes: Utilice las funciones de gestión de costes con OpenAI para supervisar los costes, establecer presupuestos para gestionar los costes y crear alertas para notificar a las partes interesadas sobre riesgos o anomalías.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "3c5f9e8e-c1a9-4c18-ac05-72877f24ff22",
+ "service": "Azure Openai",
+ "text": "Cultura de Azure DevOps: garantice la implementación de instancias de Azure OpenAI en sus distintos entornos, como desarrollo, pruebas y producción. Asegúrese de tener entornos que admitan el aprendizaje y la experimentación continuos a lo largo del ciclo de desarrollo.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "56e72e7c-32bb-414b-bf04-d2883871aacb",
+ "service": "Azure Openai",
+ "text": "Observabilidad: Monitoree, agregue y visualice las métricas adecuadas.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "63aedcb9-e01e-4df3-b9a6-13c13d6971d4",
+ "service": "Azure Openai",
+ "text": "Observabilidad: si los diagnósticos de Azure OpenAI son insuficientes para sus necesidades, considere la posibilidad de usar una puerta de enlace como Azure API Management frente a Azure OpenAI para registrar las solicitudes entrantes y las respuestas salientes cuando esté permitido. Esta información puede ayudarle a comprender la eficacia del modelo para las solicitudes entrantes.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "fe7a8e0a-b53a-48f0-a204-4e1e7e20ea4b",
+ "service": "Azure Openai",
+ "text": "Implemente con confianza: use la infraestructura como código (IaC) para implementar Azure OpenAI, implementaciones de modelos y otra infraestructura necesaria para ajustar los modelos.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "3dffb456-4675-4acb-b797-a5bf591e003a",
+ "service": "Azure Openai",
+ "text": "Implemente con confianza: siga las prácticas de operaciones de modelos de lenguaje grandes (LLMOps) para poner en funcionamiento la administración de sus LLM de Azure OpenAI, incluida la implementación, el ajuste y la ingeniería de solicitudes.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "4c82d2b3-c083-4a0e-9cd2-92d2b00b4c96",
+ "service": "Azure Openai",
+ "text": "Automatice para aumentar la eficiencia: si utiliza la autenticación basada en claves, implemente una estrategia de rotación de claves automatizada.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Diagnósticos recopila y analiza métricas y registros, lo que le ayuda a supervisar la disponibilidad, el rendimiento y el funcionamiento de Azure OpenAI.",
+ "guid": "ff3d2610-e8e8-4a78-aba5-556758a2798c",
+ "service": "Azure Openai",
+ "text": "Habilitación y configuración de Azure Diagnostics: habilite y configure Diagnostics para el servicio Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "63dbbc6a-f840-4893-979c-2afcea82bf5f",
+ "service": "Azure Openai",
+ "text": "Capacidad: Estimar las demandas de elasticidad de los consumidores. Identifique el tráfico de alta prioridad que requiere respuestas sincrónicas y el tráfico de baja prioridad que puede ser asíncrono y por lotes.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "14677a1d-0b65-455a-997b-1490c397fbc8",
+ "service": "Azure Openai",
+ "text": "Capacidad: 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 evaluación comparativa de Azure OpenAI para ayudarle a validar el rendimiento si usa implementaciones de unidades de rendimiento aprovisionadas (PTU).",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "59c8767d-1b78-4016-92d5-ebd83032fafa",
+ "service": "Azure Openai",
+ "text": "Capacidad: use el rendimiento aprovisionado para las cargas de trabajo de producción. El rendimiento aprovisionado ofrece memoria y proceso dedicados, capacidad reservada y latencia máxima constante para la versión del modelo especificada. La oferta de pago por uso puede sufrir problemas de vecinos ruidosos, como una mayor latencia y limitación en regiones con un uso intensivo. Además, el enfoque de pago por uso no ofrece capacidad garantizada.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "a318b299-9d54-4dfc-8f20-b00ceed43ed0",
+ "service": "Azure Openai",
+ "text": "Capacidad: agregue las puertas de enlace adecuadas delante de las implementaciones de Azure OpenAI. Asegúrese de que la puerta de enlace pueda enrutar a varias instancias en la misma región o en regiones diferentes.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "ceb21879-94da-485e-a24b-b30180fb566c",
+ "service": "Azure Openai",
+ "text": "Capacidad: asigne PTU para cubrir el uso previsto y complemente estas PTU con una implementación de TPM para controlar la elasticidad por encima de ese límite. Este enfoque combina el rendimiento base con el rendimiento elástico para mayor eficiencia. Al igual que otras consideraciones, este enfoque requiere una implementación de puerta de enlace personalizada para enrutar las solicitudes a la implementación de TPM cuando se alcanzan los límites de PTU.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "dd313c03-7429-4cb1-84e9-d982664c2dfc",
+ "service": "Azure Openai",
+ "text": "Capacidad: envíe solicitudes de alta prioridad de forma sincrónica. Ponga en cola las solicitudes de baja prioridad y envíelas en lotes cuando la demanda sea baja.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "cdf82e76-ee07-47e6-9985-6b1c0a39dd42",
+ "service": "Azure Openai",
+ "text": "Capacidad: seleccione un modelo que se alinee con sus requisitos de rendimiento, teniendo en cuenta el equilibrio entre la velocidad y la complejidad de la salida. El rendimiento del modelo puede variar significativamente en función del tipo de modelo elegido. Los modelos diseñados para la velocidad ofrecen tiempos de respuesta más rápidos, lo que puede ser beneficioso para aplicaciones que requieren interacciones rápidas. Por el contrario, los modelos más sofisticados podrían ofrecer resultados de mayor calidad a expensas de un mayor tiempo de respuesta.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "9aa6da24-6a00-4381-9da6-66c9d5cbf41f",
+ "service": "Azure Openai",
+ "text": "Logre rendimiento: para aplicaciones como chatbots o interfaces conversacionales, considere implementar la transmisión. El streaming puede mejorar el rendimiento percibido de las aplicaciones de Azure OpenAI al ofrecer respuestas a los usuarios de forma incremental, lo que mejora la experiencia del usuario.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "456cbf54-9c2f-4c6e-9739-eca408fa6baf",
+ "service": "Azure Openai",
+ "text": "Logre el rendimiento: determine cuándo usar el ajuste fino antes de comprometerse con el ajuste. Aunque hay buenos casos de uso para el ajuste, como cuando la información necesaria para dirigir el modelo es demasiado larga o compleja para caber en el mensaje, asegúrese de que los enfoques de ingeniería de avisos y generación aumentada de recuperación (RAG) no funcionen o sean demostrablemente más costosos.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "2dc38e31-8e03-40f4-842d-58ac317c5106",
+ "service": "Azure Openai",
+ "text": "Logre el rendimiento: considere la posibilidad de usar implementaciones de modelos dedicados por grupo de consumidores para proporcionar aislamiento de uso por modelo que pueda ayudar a evitar vecinos ruidosos entre los grupos de consumidores.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "999ecfef-c272-4cd8-8bd0-9cd5335fb695",
+ "service": "Virtual Machines",
+ "text": "Revise las cuotas y los límites de las máquinas virtuales que pueden plantear restricciones de diseño. Las máquinas virtuales tienen límites y cuotas específicos, que varían según el tipo de máquina virtual o la región. Puede haber restricciones de suscripción, como el número de máquinas virtuales por suscripción o el número de núcleos por máquina virtual. Si otras cargas de trabajo comparten su suscripción, es posible que se reduzca su capacidad para consumir datos.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "bf605fe8-6171-4c01-8290-d6c79a21cf10",
+ "service": "Virtual Machines",
+ "text": "Realice un análisis del modo de error para minimizar los puntos de error mediante el análisis de las interacciones de la máquina virtual con los componentes de red y almacenamiento. Elija configuraciones como discos efímeros del sistema operativo (SO) para localizar el acceso al disco y evitar saltos de red. Agregue un equilibrador de carga para mejorar la autoconservación mediante la distribución del tráfico de red entre varias máquinas virtuales, lo que mejora la disponibilidad y la confiabilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "4cd18dd0-57e4-4fc9-a8ad-74c3333b6d8b",
+ "service": "Virtual Machines",
+ "text": "Calcule los objetivos de nivel de servicio (SLO) compuestos en función de los contratos de nivel de servicio (SLA) de Azure. Asegúrese de que el SLO no sea superior a los acuerdos de nivel de servicio de Azure para evitar expectativas poco realistas y posibles problemas.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "90e0bce0-bc44-42ba-be28-2f3dde2f4b37",
+ "service": "Virtual Machines",
+ "text": "Cree aislamiento de estado. Los datos de la carga de trabajo deben estar en un disco de datos independiente para evitar interferencias con el disco del sistema operativo. Si se produce un error en una máquina virtual, puede crear un nuevo disco del sistema operativo con el mismo disco de datos, lo que garantiza la resistencia y el aislamiento de errores. Para obtener más información, consulte Discos de sistema operativo efímeros.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "6d76e7b9-52d3-4878-83ab-2a08df23c8f6",
+ "service": "Virtual Machines",
+ "text": "Haga que las máquinas virtuales y sus dependencias sean redundantes en todas las zonas. Si se produce un error en una máquina virtual, la carga de trabajo debe seguir funcionando debido a la redundancia. Incluya dependencias en sus opciones de redundancia. Por ejemplo, use las opciones de redundancia integradas que están disponibles con los discos. Utilice direcciones IP con redundancia de zona para garantizar la disponibilidad de los datos y un alto tiempo de actividad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "56d104f5-469e-4ead-bf17-7c81c746dabe",
+ "service": "Virtual Machines",
+ "text": "Esté preparado para escalar y escalar horizontalmente para evitar la degradación del nivel de servicio y evitar errores. Los conjuntos de escalado de máquinas virtuales tienen funcionalidades de escalado automático que crean nuevas instancias según sea necesario y distribuyen la carga entre varias máquinas virtuales y zonas de disponibilidad.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "3395416e-27c6-4ded-941a-de4e562c5c00",
+ "service": "Virtual Machines",
+ "text": "Explora las opciones de recuperación automática. Azure admite la supervisión de la degradación del estado y las características de recuperación automática para las máquinas virtuales. Por ejemplo, los conjuntos de escalado proporcionan reparaciones automáticas de instancias. En escenarios más avanzados, la recuperación automática implica el uso de Azure Site Recovery, tener un modo de espera pasivo para conmutar por error o volver a implementar desde la infraestructura como código (IaC). El método que elija debe alinearse con los requisitos empresariales y las operaciones de la organización. Para obtener más información, consulte Interrupciones del servicio de máquina virtual.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "3d633098-6fc7-4752-907c-5a02d53ffba2",
+ "service": "Virtual Machines",
+ "text": "Ajuste el tamaño de las máquinas virtuales y sus dependencias. Comprenda el trabajo esperado de su máquina virtual para asegurarse de que no sea de tamaño insuficiente y pueda manejar la carga máxima. Tener capacidad extra para mitigar fallos.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "cbe651de-8754-4078-8066-803f94814634",
+ "service": "Virtual Machines",
+ "text": "Cree un plan integral de recuperación ante desastres. La preparación para desastres implica la creación de un plan integral y la decisión sobre una tecnología para la recuperación.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "6bbb44ad-f6ed-4990-b519-a56e4d995170",
+ "service": "Virtual Machines",
+ "text": "Ejecute las operaciones con rigor. Las opciones de diseño de confiabilidad deben estar respaldadas por operaciones efectivas basadas en los principios de supervisión, pruebas de resistencia en producción, parches y actualizaciones automatizadas de máquinas virtuales de aplicaciones y coherencia de las implementaciones. Para obtener orientación operativa, consulte Excelencia operativa.",
+ "type": "checklist",
+ "waf": "fiabilidad"
+ },
+ {
+ "description": "Prepare su aplicación para el futuro para el escalado y aproveche las garantías de alta disponibilidad que distribuyen las máquinas virtuales a través de dominios de error en una región o una zona de disponibilidad.",
+ "guid": "bb45d3f7-dae7-4eb6-a823-76737e6d0d88",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Use conjuntos de escalado de máquinas virtuales en modo de orquestación flexible para implementar máquinas virtuales.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Mantenga la disponibilidad incluso si se considera que una instancia está en mal estado. Las reparaciones automáticas inician la recuperación mediante el reemplazo de la instancia defectuosa. Establecer una ventana de tiempo puede evitar operaciones de reparación inadvertidas o prematuras.",
+ "guid": "29912435-4c36-465e-91e2-6c8fcb42b33f",
+ "service": "Virtual Machines",
+ "text": "(VMs) Implemente puntos de conexión de estado que emitan estados de mantenimiento de instancias en máquinas virtuales. (Conjunto de escalas) Habilite las reparaciones automáticas en el conjunto de báscula especificando la acción de reparación preferida. Considere la posibilidad de establecer un período de tiempo durante el cual las reparaciones automáticas se detengan si cambia el estado de la máquina virtual.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "El sobreaprovisionamiento reduce los tiempos de implementación y tiene un beneficio en cuanto a costos, ya que no se facturan las máquinas virtuales adicionales.",
+ "guid": "71982e91-2b16-4f49-b91e-7c52a6e0042a",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Habilite el sobreaprovisionamiento en conjuntos de escalado.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Esta opción aísla los dominios de error. Durante los períodos de mantenimiento, cuando se actualiza un dominio de error, las instancias de VM están disponibles en los demás dominios de error.",
+ "guid": "07b6117e-18f8-4df2-9816-9bba2f028219",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Permita que la orquestación flexible distribuya las instancias de VM en tantos dominios de error como sea posible.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "Las instancias de máquina virtual se aprovisionan en ubicaciones físicamente separadas dentro de cada región de Azure que son tolerantes a errores locales. Tenga en cuenta que, en función de la disponibilidad de recursos, puede haber un número impar de instancias en todas las zonas. El equilibrio de zona admite la disponibilidad al asegurarse de que, si una zona está inactiva, las otras zonas tengan suficientes instancias. Dos instancias en cada zona proporcionan un búfer durante las actualizaciones.",
+ "guid": "056b1e06-a521-4662-9c87-19371260efe6",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Implemente en zonas de disponibilidad en conjuntos de escalado. Configure al menos dos instancias en cada zona. El equilibrio de zonas distribuye equitativamente las instancias entre zonas.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "La capacidad está reservada para su uso y está disponible dentro del alcance de los SLA aplicables. Puede eliminar reservas de capacidad cuando ya no las necesite, y la facturación se basa en el consumo.",
+ "guid": "2554bcd7-c6b8-4461-aaaa-071092d5483f",
+ "service": "Virtual Machines",
+ "text": "(VMs) Aproveche la función de reservas de capacidad.",
+ "type": "recommendation",
+ "waf": "Fiabilidad"
+ },
+ {
+ "description": "",
+ "guid": "fa5e017f-a99c-4fcc-883b-e16427f4e05d",
+ "service": "Virtual Machines",
+ "text": "Revise las líneas base de seguridad para máquinas virtuales Linux y Windows, así como conjuntos de escalado de máquinas virtuales.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "63866f61-ef77-4793-9257-dfc53e87a550",
+ "service": "Virtual Machines",
+ "text": "Garantice la aplicación de parches y actualizaciones de seguridad oportunos y automatizados. Asegúrese de que las actualizaciones se implementen y validen automáticamente mediante un proceso bien definido. Use una solución como Azure Automation para administrar las actualizaciones del sistema operativo y mantener el cumplimiento de la seguridad mediante la realización de actualizaciones críticas.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "5bc85e31-f7fa-4102-8e43-6fbe7add0d89",
+ "service": "Virtual Machines",
+ "text": "Identifique las máquinas virtuales que mantienen el estado. Asegúrese de que los datos se clasifican según las etiquetas de confidencialidad proporcionadas por su organización. Proteja los datos mediante el uso de controles de seguridad, como los niveles adecuados de cifrado en reposo y en tránsito. Si tiene requisitos de alta confidencialidad, considere la posibilidad de usar controles de alta seguridad, como el cifrado doble y la informática confidencial de Azure, para proteger los datos en uso.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "d5320544-6d25-46c7-ab46-e81e5d85d9b3",
+ "service": "Virtual Machines",
+ "text": "Proporcione segmentación a las máquinas virtuales y los conjuntos de escalado mediante el establecimiento de límites de red y controles de acceso. Coloque las máquinas virtuales en grupos de recursos que compartan el mismo ciclo de vida.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "becd6031-a256-4186-995e-75817fc7783c",
+ "service": "Virtual Machines",
+ "text": "Aplique controles de acceso a las identidades que intentan acceder a las máquinas virtuales y también a las máquinas virtuales que acceden a otros recursos. Use el identificador de Microsoft Entra para las necesidades de autenticación y autorización. Implemente contraseñas seguras, autenticación multifactor y control de acceso basado en roles (RBAC) para las máquinas virtuales y sus dependencias, como los secretos, para permitir que las identidades permitidas realicen solo las operaciones que se esperan de sus roles.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "cc96d188-8a1f-4b48-9525-d6f3f867f322",
+ "service": "Virtual Machines",
+ "text": "Utilice los controles de red para restringir el tráfico de entrada y salida. Aísle las máquinas virtuales y los conjuntos de escalado en Azure Virtual Network y defina grupos de seguridad de red para filtrar el tráfico. Protéjase contra ataques de denegación de servicio distribuido (DDoS). Utilice equilibradores de carga y reglas de firewall para protegerse contra el tráfico malintencionado y los ataques de exfiltración de datos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "66e5f683-0d57-4ed1-b2bd-68e4549631bc",
+ "service": "Virtual Machines",
+ "text": "Reduzca la superficie expuesta a ataques mediante la protección de las imágenes del sistema operativo y la eliminación de los componentes no utilizados. Use imágenes más pequeñas y quite los archivos binarios que no sean necesarios para ejecutar la carga de trabajo. Ajuste las configuraciones de la máquina virtual eliminando características, como cuentas y puertos predeterminados, que no necesite.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "961b264a-fddf-43d4-b137-a132429c2874",
+ "service": "Virtual Machines",
+ "text": "Proteja los secretos, como los certificados, que necesita para proteger los datos en tránsito. Considere la posibilidad de usar la extensión de Azure Key Vault para Windows o Linux que actualiza automáticamente los certificados almacenados en un almacén de claves. Cuando detecta un cambio en los certificados, la extensión recupera e instala los certificados correspondientes.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "39b32108-5423-42aa-beaa-1601df1971f6",
+ "service": "Virtual Machines",
+ "text": "Detección de amenazas. Supervise las máquinas virtuales en busca de amenazas y errores de configuración. Use Defender para servidores para capturar los cambios en la máquina virtual y el sistema operativo, y mantener un registro de auditoría del acceso, las cuentas nuevas y los cambios en los permisos.",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "",
+ "guid": "fb9921a8-884c-40df-a588-a554143809f2",
+ "service": "Virtual Machines",
+ "text": "Prevención de amenazas. Protéjase contra ataques de malware y actores maliciosos mediante la implementación de controles de seguridad como firewalls, software antivirus y sistemas de detección de intrusos. Determine si se requiere un entorno de ejecución de confianza (TEE).",
+ "type": "checklist",
+ "waf": "seguridad"
+ },
+ {
+ "description": "Cuando las máquinas virtuales se comunican con otros recursos, cruzan un límite de confianza. Los conjuntos de escalado y las máquinas virtuales deben autenticar su identidad antes de permitir la comunicación. Microsoft Entra ID controla esa autenticación mediante identidades administradas.",
+ "guid": "21e2209a-6217-464b-9886-1914124b0721",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Asigne una identidad administrada a conjuntos de escalado. Todas las máquinas virtuales del conjunto de escalado obtienen la misma identidad a través del perfil de máquina virtual especificado. (VMs) También puede asignar una identidad administrada a máquinas virtuales individuales al crearlas y, a continuación, agregarla a un conjunto de escalado si es necesario.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las características proporcionadas por Azure se basan en señales que se capturan en muchos inquilinos y pueden proteger los recursos mejor que los controles personalizados. También puede usar directivas para aplicar esos controles.",
+ "guid": "f13132ec-ac80-4a27-a14e-b7b357523df1",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Elija SKU de máquina virtual con características de seguridad. Por ejemplo, algunas SKU admiten el cifrado de BitLocker y la informática confidencial proporciona el cifrado de los datos en uso. Revise las características para comprender las limitaciones.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "El etiquetado es una forma común de segmentar y organizar recursos y puede ser crucial durante la gestión de incidentes. Para obtener más información, consulte Propósito de la nomenclatura y el etiquetado.",
+ "guid": "944802d9-671c-479f-b973-fd6111a18486",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Aplique las etiquetas recomendadas por la organización en los recursos aprovisionados.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las características del perfil de seguridad se habilitan automáticamente cuando se crea la máquina virtual. Para más información, consulte Línea base de seguridad de Azure para conjuntos de escalado de máquinas virtuales.",
+ "guid": "a6b12603-c2e3-43fd-9a79-6e6317817278",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca un perfil de seguridad con las características de seguridad que desea habilitar en la configuración de la máquina virtual. Por ejemplo, cuando se especifica el cifrado en el host del perfil, los datos almacenados en el host de la máquina virtual se cifran en reposo y los flujos se cifran en el servicio de almacenamiento.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Puede establecer controles de segmentación en el perfil de red. Los atacantes analizan las direcciones IP públicas, lo que hace que las máquinas virtuales sean vulnerables a las amenazas.",
+ "guid": "3c83a4bb-2b58-4fae-9a65-37490fecaf1c",
+ "service": "Virtual Machines",
+ "text": "(VMs) Elija opciones de red seguras para el perfil de red de la máquina virtual. No asocie directamente direcciones IP públicas a las máquinas virtuales y no habilite el reenvío de IP. Asegúrese de que todas las interfaces de red virtual tengan un grupo de seguridad de red asociado.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Deshabilitar el acceso a la red pública ayuda a evitar el acceso no autorizado a sus datos y recursos.",
+ "guid": "fe1df647-99c3-43ea-b8ed-507b23f120e0",
+ "service": "Virtual Machines",
+ "text": "(VMs) Elija opciones de almacenamiento seguro para el perfil de almacenamiento de su máquina virtual. Habilite el cifrado de disco y el cifrado de datos en reposo de forma predeterminada. Deshabilite el acceso de red pública a los discos de la máquina virtual.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "Las extensiones se usan para arrancar las máquinas virtuales con el software adecuado que protege el acceso hacia y desde las máquinas virtuales. Las extensiones proporcionadas por Microsoft se actualizan con frecuencia para mantenerse al día con la evolución de los estándares de seguridad.",
+ "guid": "06c4068a-2562-4cc4-9269-8bdb6b349c3a",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Incluya extensiones en las máquinas virtuales que protejan contra las amenazas. Por ejemplo, - Extensión de Key Vault para Windows y Linux - Autenticación de identificador de Microsoft Entra - Microsoft Antimalware para Azure Cloud Services y Virtual Machines - Extensión de Azure Disk Encryption para Windows y Linux.",
+ "type": "recommendation",
+ "waf": "Seguridad"
+ },
+ {
+ "description": "",
+ "guid": "3e760d37-8430-4da5-833d-95bff2d43e4f",
+ "service": "Virtual Machines",
+ "text": "Calcule costos realistas. Use la calculadora de precios para calcular los costos de las máquinas virtuales. Identifique la mejor máquina virtual para la carga de trabajo mediante el selector de máquinas virtuales. Para obtener más información, consulte Precios de Linux y Windows.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "284bc1f9-59a6-491e-8070-d05e31e29ee7",
+ "service": "Virtual Machines",
+ "text": "Implemente barreras de protección de costos. Utilice políticas de gobernanza para restringir los tipos de recursos, las configuraciones y las ubicaciones. Utilice RBAC para bloquear acciones que puedan conducir a un gasto excesivo.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "353f0d7a-b104-43c3-b3e9-926af6458844",
+ "service": "Virtual Machines",
+ "text": "Elija los recursos adecuados. La selección de los tamaños de plan de máquina virtual y las SKU afecta directamente al costo total. Elija las máquinas virtuales en función de las características de la carga de trabajo. ¿La carga de trabajo es intensiva en CPU o ejecuta procesos interrumpibles? Cada SKU tiene opciones de disco asociadas que afectan al costo total.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "dff9f383-b459-4359-907e-bd33a92d4bd6",
+ "service": "Virtual Machines",
+ "text": "Elija las capacidades adecuadas para los recursos dependientes. Ahorre en los costos de almacenamiento de copia de seguridad para el nivel estándar de almacén mediante el almacenamiento de Azure Backup con capacidad reservada. Ofrece un descuento cuando te comprometes con una reserva por un año o tres años.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "24cfa2c5-9e77-48e8-82ad-c5e98c636a69",
+ "service": "Virtual Machines",
+ "text": "Elige el modelo de facturación adecuado. Evalúe si los modelos informáticos basados en compromisos optimizan los costos en función de los requisitos empresariales de la carga de trabajo. Tenga en cuenta estas opciones de Azure:",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "046215f1-13ee-4fbf-893d-eeafa28ab76b",
+ "service": "Virtual Machines",
+ "text": "Supervise el uso. Supervise continuamente los patrones de uso y detecte las máquinas virtuales no utilizadas o infrautilizadas. Para esas instancias, apague las instancias de VM cuando no estén en uso. El monitoreo es un enfoque clave de la Excelencia Operacional. Para obtener más información, consulte las recomendaciones de Excelencia operativa.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "",
+ "guid": "877c04dd-441f-4202-9b87-9eeb3c60b564",
+ "service": "Virtual Machines",
+ "text": "Busca formas de optimizar. Algunas estrategias incluyen elegir el enfoque más rentable entre aumentar los recursos de un sistema existente, o escalar verticalmente, y agregar más instancias de ese sistema, o escalar horizontalmente. Puede descargar la demanda distribuyéndola a otros recursos, o puede reducir la demanda mediante la implementación de colas de prioridad, descarga de puerta de enlace, almacenamiento en búfer y limitación de velocidad. Para obtener más información, consulte las recomendaciones de Eficiencia del rendimiento.",
+ "type": "checklist",
+ "waf": "costar"
+ },
+ {
+ "description": "Los SKU tienen un precio de acuerdo con las capacidades que ofrecen. Si no necesitas capacidades avanzadas, no gastes de más en SKU. Las máquinas virtuales de acceso puntual aprovechan la capacidad excedente de Azure a un costo menor.",
+ "guid": "90700d86-70f6-433f-b995-b9ad8cfdec84",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Elija el tamaño del plan de máquina virtual y la SKU adecuados. Identifique los mejores tamaños de máquina virtual para su carga de trabajo. Utilice el selector de máquina virtual para identificar la mejor máquina virtual para su carga de trabajo. Consulta los precios de Windows y Linux. En el caso de cargas de trabajo, como trabajos de procesamiento por lotes muy paralelos que pueden tolerar algunas interrupciones, considere la posibilidad de usar Azure Spot Virtual Machines. Las máquinas virtuales puntuales son buenas para experimentar, desarrollar y probar soluciones a gran escala.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Algunos tipos de discos de alto rendimiento ofrecen funciones y estrategias de optimización de costos adicionales. La capacidad de ajuste del disco SSD prémium v2 puede reducir los costos, ya que proporciona un alto rendimiento sin sobreaprovisionamiento, lo que de otro modo podría conducir a recursos infrautilizados.",
+ "guid": "14211a5a-ea48-4aa1-9f24-e46689328dda",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Evalúe las opciones de disco asociadas a las SKU de la máquina virtual. Determine sus necesidades de rendimiento teniendo en cuenta sus necesidades de capacidad de almacenamiento y teniendo en cuenta los patrones de carga de trabajo fluctuantes. Por ejemplo, el disco SSD v2 de Azure Premium permite ajustar de forma granular el rendimiento independientemente del tamaño del disco.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Reduzca los costos de infraestructura informática aplicando los grandes descuentos de las máquinas virtuales puntuales.",
+ "guid": "38d3a88b-a84f-46f3-95ce-76a4e245027b",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Combine máquinas virtuales normales con máquinas virtuales de acceso puntual. La orquestación flexible le permite distribuir máquinas virtuales de acceso puntual en función de un porcentaje especificado.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "El escalado vertical o la detención de recursos cuando no están en uso reduce el número de máquinas virtuales que se ejecutan en el conjunto de escalado, lo que ahorra costos. La función Start/Stop es una opción de automatización de bajo costo.",
+ "guid": "eccee9b1-70f3-4c96-8223-35e24d842201",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Reduzca el número de instancias de VM cuando disminuya la demanda. Establezca una política de reducción horizontal basada en criterios. Detenga las máquinas virtuales durante las horas de inactividad. Puede usar la característica Inicio/detención de Azure Automation y configurarla según las necesidades de su empresa.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "Puede maximizar sus licencias locales mientras obtiene los beneficios de la nube.",
+ "guid": "3c34c3e4-5715-472e-953e-2d5030bf18a0",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Aproveche la movilidad de licencias mediante la Ventaja híbrida de Azure. Las máquinas virtuales tienen una opción de licencia que le permite traer sus propias licencias locales del SO de servidor Windows a Azure. La Ventaja híbrida de Azure también le permite incorporar determinadas suscripciones de Linux a Azure.",
+ "type": "recommendation",
+ "waf": "Costar"
+ },
+ {
+ "description": "",
+ "guid": "fc1734b9-fefe-403d-bfc9-c2beca6f12a2",
+ "service": "Virtual Machines",
+ "text": "Supervise las instancias de VM. Recopile registros y métricas de instancias de VM para supervisar el uso de recursos y medir el estado de las instancias. Algunas métricas comunes incluyen el uso de la CPU, el número de solicitudes y la latencia de entrada/salida (E/S). Configure alertas de Azure Monitor para recibir notificaciones sobre problemas y detectar cambios de configuración en su entorno.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "724b847d-caf4-4e90-83e7-f4c71e68c4f7",
+ "service": "Virtual Machines",
+ "text": "Supervise el estado de las máquinas virtuales y sus dependencias.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "f99e71a9-05ee-41c2-81b7-8d794763040b",
+ "service": "Virtual Machines",
+ "text": "Cree un plan de mantenimiento que incluya la aplicación regular de parches al sistema como parte de las operaciones rutinarias. Incluir procesos de emergencia que permitan la aplicación inmediata de parches. Puede tener procesos personalizados para administrar la aplicación de revisiones o delegar parcialmente la tarea a Azure.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "ca34b9c2-69db-4256-a354-c491877f79ac",
+ "service": "Virtual Machines",
+ "text": "Automatice los procesos de arranque, ejecución de scripts y configuración de máquinas virtuales. Puede automatizar procesos mediante el uso de extensiones o scripts personalizados. Recomendamos las siguientes opciones:",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "821779c7-588f-40af-a740-8dd41fb585fd",
+ "service": "Virtual Machines",
+ "text": "Tener procesos para instalar actualizaciones automáticas. Considere la posibilidad de usar la aplicación automática de parches de invitado de VM para una implementación oportuna de parches críticos y parches de seguridad. Use Azure Update Manager para administrar las actualizaciones del sistema operativo de las máquinas virtuales Windows y Linux en Azure.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "079c8821-00dd-4eaf-9cae-5a3dbfd6fdfa",
+ "service": "Virtual Machines",
+ "text": "Cree un entorno de prueba que coincida estrechamente con su entorno de producción para probar las actualizaciones y los cambios antes de implementarlos en producción. Implemente procesos para probar las actualizaciones de seguridad, las líneas base de rendimiento y los errores de confiabilidad. Aproveche las bibliotecas de errores de Azure Chaos Studio para insertar y simular condiciones de error. Para más información, consulte Biblioteca de errores y acciones de Azure Chaos Studio.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "77cdbef0-ba18-4ef0-9ef4-088931e331c7",
+ "service": "Virtual Machines",
+ "text": "Gestiona tu cuota. Planifique el nivel de cuota que requiere su carga de trabajo y revise ese nivel periódicamente a medida que evoluciona la carga de trabajo. Si necesita aumentar o disminuir su cuota, solicite esos cambios con anticipación.",
+ "type": "checklist",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La orquestación flexible puede administrar instancias de VM a escala. La entrega de máquinas virtuales individuales agrega sobrecarga operativa. Por ejemplo, cuando se eliminan instancias de VM, los discos y las NIC asociados también se eliminan automáticamente. Las instancias de VM se distribuyen en varios dominios de error para que las operaciones de actualización no interrumpan el servicio.",
+ "guid": "3049efb5-d3ae-4e36-a8fa-12f2c4a44144",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Los conjuntos de escalado de máquinas virtuales en modo de orquestación flexible pueden ayudar a simplificar la implementación y la administración de la carga de trabajo. Por ejemplo, puede administrar fácilmente la autorreparación mediante el uso de reparaciones automáticas.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La seguridad es la razón principal de las actualizaciones. Las garantías de seguridad de las instancias no deben deteriorarse con el tiempo. Las actualizaciones graduales se realizan en lotes, lo que garantiza que todas las instancias no estén inactivas al mismo tiempo.",
+ "guid": "19de83a6-2f87-49b1-8241-d1d687f46658",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Mantenga sus máquinas virtuales actualizadas mediante la configuración de una directiva de actualización. Recomendamos actualizaciones continuas. Sin embargo, si necesita un control granular, elija actualizar manualmente. Para la orquestación flexible, puede usar Azure Update Manager.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Se crean las máquinas virtuales del conjunto de escalado y se preinstalan las aplicaciones especificadas, lo que facilita la administración.",
+ "guid": "65c832e8-2882-45ed-b239-0e68f74975aa",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Implemente automáticamente aplicaciones de máquina virtual desde Azure Compute Gallery definiendo las aplicaciones en el perfil.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "Las extensiones pueden ayudar a simplificar la instalación de software a escala sin tener que instalarlo, configurarlo o actualizarlo manualmente en cada máquina virtual.",
+ "guid": "40266c61-9685-4ee1-8cb6-a899a6b573f2",
+ "service": "Virtual Machines",
+ "text": "Instale componentes de software precompilados como extensiones como parte del arranque. Azure admite muchas extensiones que se pueden usar para configurar, supervisar, proteger y proporcionar aplicaciones de utilidad para las máquinas virtuales. Habilite las actualizaciones automáticas en las extensiones.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "La supervisión de los datos es el núcleo de la resolución de incidentes. Una pila de supervisión completa proporciona información sobre el rendimiento de las máquinas virtuales y su estado. Al monitorear continuamente las instancias, puede estar preparado para errores o prevenirlos, como la sobrecarga de rendimiento y los problemas de confiabilidad.",
+ "guid": "72e210dc-5abb-4569-b650-ec27003bb1cf",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Supervise y mida el estado de las instancias de VM. Implemente la extensión del agente Monitor en las máquinas virtuales para recopilar datos de supervisión del sistema operativo invitado con reglas de recopilación de datos específicas del sistema operativo. Habilite la información de VM para supervisar el estado y el rendimiento, y para ver tendencias a partir de los datos recopilados. Use los diagnósticos de arranque para obtener información a medida que arrancan las máquinas virtuales. Los diagnósticos de arranque también diagnostican errores de arranque.",
+ "type": "recommendation",
+ "waf": "Operaciones"
+ },
+ {
+ "description": "",
+ "guid": "0303e75c-321d-42b0-9226-b05f43633d50",
+ "service": "Virtual Machines",
+ "text": "Definir objetivos de rendimiento. Identifique las métricas de VM para realizar un seguimiento y medir con indicadores de rendimiento como el tiempo de respuesta, la utilización de la CPU y la utilización de la memoria, así como las métricas de la carga de trabajo, como las transacciones por segundo, los usuarios simultáneos y la disponibilidad y el estado.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "f2c0ba97-9170-43ab-90b5-b30f159913ba",
+ "service": "Virtual Machines",
+ "text": "Tenga en cuenta el perfil de rendimiento de las máquinas virtuales, los conjuntos de escalado y la configuración del disco en el planeamiento de la capacidad. Cada SKU tiene un perfil diferente de memoria y CPU y se comporta de forma diferente en función del tipo de carga de trabajo. Realice pruebas piloto y pruebas de concepto para comprender el comportamiento del rendimiento en la carga de trabajo específica.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "ffee7b2f-b57c-40cc-a8ab-9044dead9dc7",
+ "service": "Virtual Machines",
+ "text": "Ajuste del rendimiento de la máquina virtual. Aproveche la optimización del rendimiento y la mejora de las funciones según lo requiera la carga de trabajo. Por ejemplo, utilice Memoria no volátil Express (NVMe) conectada localmente para casos de uso de alto rendimiento y redes aceleradas, y utilice SSD prémium v2 para mejorar el rendimiento y la escalabilidad.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "75cf3a03-3d7c-4199-8138-45ff62b1f7a5",
+ "service": "Virtual Machines",
+ "text": "Tenga en cuenta los servicios dependientes. Las dependencias de la carga de trabajo, como el almacenamiento en caché, el tráfico de red y las redes de entrega de contenido, que interactúan con las máquinas virtuales pueden afectar al rendimiento. Además, tenga en cuenta la distribución geográfica, como zonas y regiones, que pueden agregar latencia.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "739525ea-4d0a-4965-baef-ab0325fbed67",
+ "service": "Virtual Machines",
+ "text": "Recopilar datos de rendimiento. Siga las prácticas recomendadas de Excelencia operativa para supervisar e implementar las extensiones adecuadas para ver las métricas que se sitúan en relación con los indicadores de rendimiento.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "",
+ "guid": "39acd43b-a405-439b-83c9-b9d79d9cdba6",
+ "service": "Virtual Machines",
+ "text": "Grupos de ubicación por proximidad. Use grupos de ubicación por proximidad en cargas de trabajo en las que se requiera una latencia baja para asegurarse de que las máquinas virtuales se encuentren físicamente cerca unas de otras.",
+ "type": "checklist",
+ "waf": "rendimiento"
+ },
+ {
+ "description": "El redimensionamiento de las máquinas virtuales es una decisión fundamental que afecta significativamente al rendimiento de la carga de trabajo. Sin el conjunto adecuado de máquinas virtuales, es posible que experimente problemas de rendimiento y acumule costos innecesarios.",
+ "guid": "67cc04db-4b74-40f4-9bf6-0ba5f758b45e",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Elija SKU para máquinas virtuales que se alineen con su planificación de capacidad. Comprenda bien los requisitos de su carga de trabajo, incluido el número de núcleos, la memoria, el almacenamiento y el ancho de banda de red para que pueda filtrar las SKU inadecuadas.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Los grupos de selección de ubicación por proximidad reducen la distancia física entre los recursos de proceso de Azure, lo que puede mejorar el rendimiento y reducir la latencia de red entre máquinas virtuales independientes, máquinas virtuales de varios conjuntos de disponibilidad o máquinas virtuales de varios conjuntos de escalado.",
+ "guid": "ef3de2ad-d5b6-4931-9fc7-28249d9300c0",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Implemente máquinas virtuales de carga de trabajo sensibles a la latencia en grupos de selección de ubicación por proximidad.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Las SSD prémium ofrecen máquinas virtuales compatibles con discos de alto rendimiento y baja latencia con cargas de trabajo intensivas en E/S. SSD prémium v2 no requiere cambiar el tamaño del disco, lo que permite un alto rendimiento sin un sobreaprovisionamiento excesivo y minimiza el costo de la capacidad no utilizada. Cuando están disponibles en SKU de máquina virtual, NVMe conectado localmente o dispositivos similares pueden ofrecer un alto rendimiento, especialmente para casos de uso que requieren altas operaciones de entrada/salida por segundo (IOPS) y baja latencia.",
+ "guid": "a91aae92-2b2c-4c88-b268-2c70b995a952",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca el perfil de almacenamiento analizando el rendimiento del disco de las cargas de trabajo existentes y la SKU de la máquina virtual. Use SSD prémium para máquinas virtuales de producción. Ajuste el rendimiento de los discos con SSD prémium v2. Utilice dispositivos NVMe conectados localmente.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Permite la virtualización de E/S de raíz única (SR-IOV) en una máquina virtual, lo que mejora en gran medida el rendimiento de su red.",
+ "guid": "57e446da-1b2e-4bdc-abc9-3e978a11e940",
+ "service": "Virtual Machines",
+ "text": "(VMs) Considere la posibilidad de habilitar las redes aceleradas.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ },
+ {
+ "description": "Si aumenta la demanda de la aplicación, aumenta la carga en las instancias de máquina virtual del conjunto de escalado. Las reglas de escalado automático garantizan que tenga suficientes recursos para satisfacer la demanda.",
+ "guid": "785858b0-2f0b-476d-9f1e-af92b57314c9",
+ "service": "Virtual Machines",
+ "text": "(Máquinas virtuales, conjunto de escalado) Establezca reglas de escalado automático para aumentar o disminuir el número de instancias de máquina virtual en el conjunto de escalado en función de la demanda.",
+ "type": "recommendation",
+ "waf": "Rendimiento"
+ }
+ ],
+ "metadata": {
+ "name": "WAF Service Guides",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "No aplicable para el diseño actual",
+ "name": "N/A"
+ },
+ {
+ "description": "No es necesario",
+ "name": "No es necesario"
+ }
+ ],
+ "waf": [
+ {
+ "name": "seguridad"
+ },
+ {
+ "name": "Costar"
+ },
+ {
+ "name": "costar"
+ },
+ {
+ "name": "Fiabilidad"
+ },
+ {
+ "name": "fiabilidad"
+ },
+ {
+ "name": "Seguridad"
+ },
+ {
+ "name": "rendimiento"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Operaciones"
+ },
+ {
+ "name": "Rendimiento"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sí"
+ },
+ {
+ "name": "No"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.ja.json b/checklists-ext/wafsg_checklist.ja.json
new file mode 100644
index 000000000..8d1a0a47f
--- /dev/null
+++ b/checklists-ext/wafsg_checklist.ja.json
@@ -0,0 +1,5618 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "",
+ "guid": "a549f1f2-55ec-4094-b8c5-1be6fd4f4d38",
+ "service": "App Service Web Apps",
+ "text": "ユーザー フローに優先順位を付ける: すべてのフローが同じように重要であるわけではありません。各フローに優先順位を割り当てて、設計上の意思決定を導きます。ユーザー フローの設計は、App Service のプランと構成に選択するサービス レベルとインスタンスの数に影響を与える可能性があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "a67a6739-c1af-48d6-a3d1-001fb5105139",
+ "service": "App Service Web Apps",
+ "text": "潜在的な障害を予測する: 潜在的な障害に対する軽減戦略を計画します。次の表に、故障モード分析の例を示します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "b47d664a-75c8-4739-80d8-6cf9f60abb56",
+ "service": "App Service Web Apps",
+ "text": "冗長性の構築: アプリケーションとサポート インフラストラクチャに冗長性を構築します。インスタンスをアベイラビリティーゾーン全体に分散して、フォールトトレランスを向上させます。1 つのゾーンに障害が発生すると、トラフィックは他のゾーンにルーティングされます。アプリケーションを複数のリージョンにデプロイして、リージョン全体で障害が発生した場合でも、アプリの可用性が維持されるようにします。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "6b8fa1ed-cfa0-4435-9146-b3d1a8edb432",
+ "service": "App Service Web Apps",
+ "text": "信頼性の高いスケーリング戦略を立てる: アプリケーションに予期しない負荷がかかると、アプリケーションの信頼性が低下する可能性があります。ワークロードの特性に基づいて、適切なスケーリングアプローチを検討してください。場合によっては、負荷を処理するためにスケールアップできます。ただし、負荷が増加し続ける場合は、新しいインスタンスにスケールアウトします。手動のアプローチよりも自動スケーリングを優先します。スケーリング操作中は、パフォーマンスの低下を防ぐために、常に追加の容量のバッファーを保持してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "ac7f205b-9117-4b49-8f22-9f31528dfdbd",
+ "service": "App Service Web Apps",
+ "text": "リカバリ性を計画する: 冗長性は、ビジネスの継続性にとって非常に重要です。1 つのインスタンスに到達できない場合は、別のインスタンスにフェイルオーバーします。App Service の自動修復機能 (インスタンスの自動修復など) について説明します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "55917a7d-4410-45fc-bba7-42e64d85c9cd",
+ "service": "App Service Web Apps",
+ "text": "信頼性テストの実施: 負荷テストを実施して、負荷がかかった状態でのアプリケーションの信頼性とパフォーマンスを評価します。テスト計画には、自動復旧操作を検証するシナリオを含める必要があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "dcceb232-19d6-48dc-a91f-5b4907cc3dda",
+ "service": "App Service Web Apps",
+ "text": "正常性プローブを使用して応答しないワーカーを特定する: App Service には、Web アプリケーションの特定のパスに定期的に ping を実行する機能が組み込まれています。応答しないインスタンスはロードバランサから削除され、新しいインスタンスに置き換えられます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "プレミアム App Service プランでは、高度なスケーリング機能が提供され、障害が発生した場合の冗長性が確保されます。",
+ "guid": "696fd187-e2a8-45e8-bbe7-a6d3cb1fca62",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)運用ワークロード用の App Service プランの Premium レベルを選択します。 キャパシティプランニングに従って、ワーカーの最大数と最小数を設定します。詳細については、「App Service プランの概要」を参照してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションは、複数のインスタンスがゾーンに分散している場合に、1 つのゾーンでの障害に耐えることができます。トラフィックは、他のゾーンの正常なインスタンスに自動的に移行し、1 つのゾーンが使用できない場合はアプリケーションの信頼性を維持します。",
+ "guid": "830faa5e-7767-4526-8550-547a345dd398",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)ゾーン冗長を有効にします。フォールトトレランスを強化するために、3つ以上のインスタンスをプロビジョニングすることを検討してください。 ゾーン冗長のリージョン サポートを確認してください (すべてのリージョンでこの機能が提供されているわけではありません)。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "受信要求は、ARR アフィニティを無効にすると、使用可能なすべてのノードに均等に分散されます。リクエストを均等に分散することで、トラフィックが 1 つのノードを圧倒するのを防ぎます。ノードが使用できない場合、要求は他の正常なノードにシームレスにリダイレクトできます。 セッション アフィニティを回避して、App Service インスタンスがステートレスのままになるようにします。ステートレスな App Service は、複雑さを軽減し、ノード間で一貫した動作を保証します。 固定セッションを削除して、App Service がインスタンスを追加または削除して水平方向にスケーリングできるようにします。",
+ "guid": "3551bbd4-1f44-4bca-b25c-53e16f79cafe",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーション要求ルーティング (ARR) アフィニティ機能を無効にすることを検討してください。ARR アフィニティは、以前の要求を処理したノードにユーザーをリダイレクトするスティッキー セッションを作成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "自動修復ルールは、予期しない問題からアプリケーションを自動的に回復するのに役立ちます。設定されたルールは、しきい値を超えたときに修復アクションをトリガーします。 自動修復により、自動プロアクティブなメンテナンスが可能になります。",
+ "guid": "2a428ce1-dc25-4a1b-baf4-5edc909369fe",
+ "service": "App Service Web Apps",
+ "text": "(App Service)要求数、低速要求、メモリ制限、およびパフォーマンス ベースラインの一部であるその他の指標に基づいて、自動修復ルールを定義します。この設定は、スケーリング戦略の一部と考えてください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ヘルスチェックにより、問題を早期に検出できます。その後、ヘルスチェック要求が失敗したときに、システムは自動的に修正アクションを実行できます。 ロードバランサーは、異常なインスタンスからトラフィックをルーティングし、ユーザーを正常なノードに誘導します。",
+ "guid": "4dd04acd-7d69-45b8-aa22-223c4ecc0a8c",
+ "service": "App Service Web Apps",
+ "text": "(App Service)ヘルスチェック機能を有効にし、ヘルスチェック要求に応答するパスを指定します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "e13358d7-cf1a-4356-a8eb-afe901ca3b36",
+ "service": "App Service Web Apps",
+ "text": "セキュリティ ベースラインを確認する: App Service プランでホストされているアプリケーションのセキュリティ体制を強化するには、App Service のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cedf41d1-6f8a-4898-9cbd-064e66931bfa",
+ "service": "App Service Web Apps",
+ "text": "最新のランタイムとライブラリを使用する: 更新を行う前に、アプリケーションのビルドを徹底的にテストして、問題を早期に発見し、新しいバージョンへのスムーズな移行を確保します。App Service では、既存のスタックの更新とサポート終了スタックの廃止に関する言語ランタイム サポート ポリシーがサポートされています。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "469151fd-f51c-43ab-84f7-5d6c01e99fba",
+ "service": "App Service Web Apps",
+ "text": "分離境界を使用してセグメンテーションを作成し、侵害を封じ込める: ID セグメンテーションを適用します。たとえば、ロールベースのアクセス制御 (RBAC) を実装して、ロールに基づいて特定のアクセス許可を割り当てます。最小特権の原則に従って、アクセス権を必要なものだけに制限します。また、ネットワークレベルでのセグメンテーションも作成します。分離のために Azure 仮想ネットワークに App Service アプリを挿入し、トラフィックをフィルター処理するためのネットワーク セキュリティ グループ (NSG) を定義します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "794e1680-facc-4258-89cb-a07f1fa6e4d0",
+ "service": "App Service Web Apps",
+ "text": "ID にアクセス制御を適用する: Web アプリへの内向きアクセスと、Web アプリから他のリソースへの外部アクセスの両方を制限します。この設定により、ID にアクセスコントロールが適用され、ワークロードの全体的なセキュリティ体制が維持されます。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "0ff3e194-df50-4856-b798-7487e5fc4d34",
+ "service": "App Service Web Apps",
+ "text": "アプリケーションとの間のネットワーク トラフィックを制御する: アプリケーション エンドポイントをパブリック インターネットに公開しないでください。代わりに、専用サブネットに配置されている Web アプリにプライベート エンドポイントを追加します。そのプライベートエンドポイントと通信するリバースプロキシをアプリケーションの前面に配置します。そのために、Application Gateway または Azure Front Door の使用を検討してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a6fcbd07-0da4-4386-902d-6708c5a5cc23",
+ "service": "App Service Web Apps",
+ "text": "データの暗号化: エンドツーエンドの Transport Layer Security (TLS) を使用して、転送中のデータを保護します。カスタマー マネージド キーを使用して、保存データを完全に暗号化します。詳細については、「カスタマー マネージド キーを使用した保存時の暗号化」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "410bf979-2e37-4dfc-82ba-33dc8e9fbbf0",
+ "service": "App Service Web Apps",
+ "text": "攻撃対象領域を縮小する: 不要な既定の構成を削除します。たとえば、リモート デバッグ、Source Control Manager (SCM) サイトのローカル認証、基本認証を無効にします。HTTP やファイル転送プロトコル (FTP) などの安全でないプロトコルを無効にします。Azure ポリシーを使用して構成を適用します。詳細については、「Azure ポリシー」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "7157fe29-fe06-4c84-965d-8d450ac4bfe0",
+ "service": "App Service Web Apps",
+ "text": "アプリケーションのシークレットを保護する: API キーや認証トークンなどの機密情報を処理する必要があります。これらのシークレットをアプリケーション コードや構成ファイルに直接ハードコーディングする代わりに、アプリの設定で Azure Key Vault 参照を使用できます。アプリケーションが起動すると、App Service はアプリのマネージド ID を使用して Key Vault からシークレット値を自動的に取得します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ae9e2e30-a31e-4459-ae31-fbcb8307016e",
+ "service": "App Service Web Apps",
+ "text": "アプリケーションのリソースログを有効にする: アプリケーションのリソースログを有効にして、セキュリティインシデント後の調査中に貴重なデータを提供する包括的なアクティビティ証跡を作成します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "アプリケーションは、Key Vault からシークレットを取得して、アプリケーションからの外部通信を認証します。Azure によって ID が管理され、シークレットをプロビジョニングまたはローテーションする必要はありません。 制御の粒度について、明確な ID があります。明確な ID により、ID が侵害された場合の失効が容易になります。",
+ "guid": "8f1a9e86-9309-4e41-bde5-0828c15daebf",
+ "service": "App Service Web Apps",
+ "text": "(App Service)マネージド ID を Web アプリに割り当てます。分離境界を維持するには、アプリケーション間で ID を共有または再利用しないでください。 デプロイにコンテナを使用する場合は、コンテナレジストリに安全に接続していることを確認してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタムドメインは、Transport Layer Security(TLS)プロトコルを使用したHTTPSによる安全な通信を可能にし、機密データの保護を確保し、ユーザーの信頼を築きます。",
+ "guid": "cb4271e8-40e1-4cd3-ad1e-5d4584c485d7",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーションのカスタムドメインを設定します。 HTTP を無効にし、HTTPS 要求のみを受け入れます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この機能を使用すると、アプリケーション コードで認証ライブラリを使用する必要がなくなるため、複雑さが軽減されます。要求がアプリケーションに到達したときに、ユーザーはすでに認証されています。",
+ "guid": "0e19e111-ccad-457f-94b5-ee2deebc553c",
+ "service": "App Service Web Apps",
+ "text": "(App Service) は、App Service の組み込み認証が、アプリケーションにアクセスするユーザーを認証するための適切なメカニズムであるかどうかを評価します。App Service の組み込み認証は、Microsoft Entra ID と統合されます。この機能は、複数のサインイン プロバイダー間でトークンの検証とユーザー ID 管理を処理し、OpenID Connect をサポートします。この機能を使用すると、詳細なレベルでの承認はなく、認証をテストするメカニズムもありません。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 仮想ネットワークを使用するセキュリティ上の利点を享受します。たとえば、アプリケーションはネットワーク内のリソースに安全にアクセスできます。 プライベートエンドポイントを追加して、アプリケーションを保護します。プライベートエンドポイントは、パブリックネットワークへの直接の露出を制限し、リバースプロキシを介した制御されたアクセスを許可します。",
+ "guid": "1835b31e-37b4-431a-b783-eb28fec46518",
+ "service": "App Service Web Apps",
+ "text": "(App Service)仮想ネットワーク統合用にアプリケーションを構成します。 App Service アプリのプライベート エンドポイントを使用します。すべてのパブリックトラフィックをブロックします。 仮想ネットワーク統合を通じてコンテナー イメージ pull をルーティングします。アプリケーションからの送信トラフィックはすべて、仮想ネットワークを通過します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "安全なデプロイ方法として基本認証はお勧めしません。Microsoft Entra ID は OAuth 2.0 トークンベースの認証を採用しており、基本認証に関連する制限に対処する多くの利点と拡張機能を提供します。 ポリシーは、アプリケーションリソースへのアクセスを制限し、特定のドメインからの要求のみを許可し、クロスリージョン要求を保護します。",
+ "guid": "07adcdee-eecc-43c4-9cf8-40e06efa96cc",
+ "service": "App Service Web Apps",
+ "text": "(App Service)セキュリティ強化を実装するには: - ユーザー名とパスワードを使用する基本認証を無効にし、Microsoft Entra ID ベースの認証を優先します。 - 受信ポートが開かないように、リモート デバッグをオフにします。- CORS ポリシーを有効にして、受信要求を強化します。 - FTP などのプロトコルを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "シークレットは、アプリの構成とは別に保持されます。アプリの設定は保存時に暗号化されます。App Service はシークレットのローテーションも管理します。",
+ "guid": "298db56c-a733-4a8c-a009-224a1417de53",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリの設定として、常に Key Vault 参照を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "App Service プランで実行されるリソースをリアルタイムで保護します。脅威から保護し、全体的なセキュリティ体制を強化します。",
+ "guid": "6cd4ee41-8ebd-4a7e-9da4-793705575ea0",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)Microsoft Defender for Cloud for App Service を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ロギングはアクセスパターンをキャプチャします。関連するイベントを記録し、ユーザーがアプリケーションやプラットフォームとどのようにやり取りするかについて貴重な洞察を提供します。この情報は、説明責任、コンプライアンス、およびセキュリティの目的で重要です。",
+ "guid": "93a4781a-8e68-4ad4-af67-4ae28d534e6e",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)診断ログを有効にし、アプリにインストルメンテーションを追加します。ログは、Azure Storage アカウント、Azure Event Hubs、Log Analytics に送信されます。監査ログの種類の詳細については、「サポートされているログの種類」を参照してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "bb84a1f1-7f43-4656-bc0d-70abc288979b",
+ "service": "App Service Web Apps",
+ "text": "初期コストを見積もる: コスト モデリングの演習の一環として、Azure 料金計算ツールを使用して、実行する予定のインスタンスの数に基づいて、さまざまなレベルに関連付けられているおおよそのコストを評価します。各 App Service レベルには、異なるコンピューティング オプションが用意されています。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "8616b469-c0d7-4da8-afe4-28a9c55941b5",
+ "service": "App Service Web Apps",
+ "text": "割引オプションを評価する: 上位層には、専用コンピューティング インスタンスが含まれます。予約割引は、ワークロードに予測可能で一貫した使用パターンがある場合に適用できます。使用状況データを分析して、ワークロードに適した予約のタイプを判断してください。詳細については、「App Service の予約インスタンスによるコストの節約」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "08ccd533-7d3f-438e-8274-a30d3e10d81e",
+ "service": "App Service Web Apps",
+ "text": "使用量の測定について理解する: Azure では、App Service プランの価格レベルに基づいて、秒単位に比例配分された時間単位の料金が課金されます。料金は、VM インスタンスを割り当てた時間に基づいて、プラン内のスケールアウトされた各インスタンスに適用されます。最適でない SKU の選択や、スケールイン構成の構成が不十分なことによる割り当て超過の結果としてコストが増加する可能性がある、使用率の低いコンピューティング リソースに注意してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "9d33583d-156b-4a49-b361-1eae39f5d6df",
+ "service": "App Service Web Apps",
+ "text": "密度と分離のトレードオフを考慮する: App Service プランを使用して、同じコンピューティングで複数のアプリケーションをホストできるため、共有環境でコストを節約できます。詳細については、「トレードオフ」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "19d66260-5bfe-466e-89b0-f2573223acf9",
+ "service": "App Service Web Apps",
+ "text": "スケーリング戦略がコストに与える影響を評価する: 自動スケールを実装するときは、スケールアウトとスケールインを適切に設計、テスト、構成する必要があります。自動スケーリングの正確な最大制限と最小制限を設定します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "b4798bde-d65a-4c44-a75e-e7c8c05df60e",
+ "service": "App Service Web Apps",
+ "text": "環境コストの最適化: 運用前環境を実行するには、Basic または Free レベルを検討してください。これらの層は、低パフォーマンスで低コストです。Basic または Free 層を使用する場合は、ガバナンスを使用して層を適用し、インスタンスと CPU の数を制限し、スケーリングを制限し、ログの保持を制限します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "0cfc5cbc-61b7-4b64-a2eb-52e15c243cad",
+ "service": "App Service Web Apps",
+ "text": "設計パターンを実装する: この戦略により、ワークロードが生成するリクエストの量が減ります。フロントエンドのバックエンド パターンやゲートウェイ集約パターンなど、要求の数を最小限に抑え、コストを削減できるパターンの使用を検討してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "300e19c7-7406-47ca-aeca-bca5032f2b8a",
+ "service": "App Service Web Apps",
+ "text": "データ関連コストを定期的にチェックする: データ保持期間が長くなったり、ストレージ階層が高額になったりすると、ストレージコストが高くなる可能性があります。帯域幅の使用とログデータの長期保存の両方により、より多くの費用が蓄積される可能性があります。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "085263b2-cffe-4537-9ecb-75ef967c2985",
+ "service": "App Service Web Apps",
+ "text": "デプロイ コストの最適化: デプロイ スロットを利用してコストを最適化します。スロットは、本番インスタンスと同じコンピューティング環境で実行されます。スロットを切り替えるブルーグリーンデプロイなどのシナリオでは、戦略的に使用します。このアプローチにより、ダウンタイムが最小限に抑えられ、スムーズな移行が保証されます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "Free レベルと Basic レベルは、上位レベルに比べて予算にやさしいです。これらは、プレミアムプランのすべての機能とパフォーマンスを必要としない非本番環境向けに、コスト効率の高いソリューションを提供します。",
+ "guid": "df7294a6-460e-4d50-b4a9-66141caada1d",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)下位の環境では、Free または Basic レベルを選択します。これらのレベルは、実験的な使用にお勧めします。不要になった層は削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "開発/テスト プランでは、Azure サービスの料金が割引されるため、非運用環境ではコスト効率が高くなります。 リザーブド インスタンスを使用してコンピューティング リソースの料金を前払いし、大幅な割引を受けます。",
+ "guid": "a4bd3bc2-554f-483f-9707-dcf9f1b7cdd2",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)割引を利用して、次の優先価格を調べてください: - 開発/テスト プランで環境を下げます。 - Premium V3 レベルと App Service Environment でプロビジョニングする専用コンピューティングの Azure 予約と Azure 節約プラン。 リザーブドインスタンスは、予測可能な使用パターンを持つ安定したワークロードに使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コストの急増、非効率性、または予期しない出費を早期に特定できます。このプロアクティブなアプローチは、支出の過剰を防ぐための予算管理を提供するのに役立ちます。",
+ "guid": "12f02b69-d400-403d-9e8a-1a67ed102764",
+ "service": "App Service Web Apps",
+ "text": "(App Service)App Service リソースで発生するコストを監視します。Azure portal でコスト分析ツールを実行します。 予算とアラートを作成して、関係者に通知します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "無駄を防ぎ、不要な出費を削減します。",
+ "guid": "e48373a3-b551-4715-853c-dee4f114466e",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)需要が減少したときにスケールインします。スケールインするには、Azure Monitor のインスタンス数を減らすスケール ルールを定義します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "3aa6c22d-807b-4efd-9ebe-b290c995d0b3",
+ "service": "App Service Web Apps",
+ "text": "リリースの管理: デプロイ スロットを使用して、リリースを効果的に管理します。アプリケーションをスロットにデプロイし、テストを実行し、その機能を検証できます。確認後、アプリをシームレスに本番環境に移行できます。このプロセスでは、スロットが運用インスタンスと同じ仮想マシン (VM) 環境で実行されるため、追加コストは発生しません。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "751098a9-7103-4250-bd52-f48a5fbe8b73",
+ "service": "App Service Web Apps",
+ "text": "自動テストを実行する: Web アプリのリリースを昇格する前に、そのパフォーマンス、機能、および他のコンポーネントとの統合を十分にテストします。パフォーマンス テストの一般的なツールである Apache JMeter と統合する Azure Load Testing を使用します。機能テスト用のPhantomなど、他のタイプのテスト用の自動化ツールをご覧ください。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "0de22a93-9404-4512-b374-6c753628943e",
+ "service": "App Service Web Apps",
+ "text": "不変ユニットをデプロイする: デプロイ スタンプ パターンを実装して、App Service を不変スタンプに区分化します。App Service では、本質的に不変であるコンテナーの使用がサポートされています。App Service Web アプリのカスタム コンテナーを検討します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "3175ebdb-2846-4f48-b450-278df163c188",
+ "service": "App Service Web Apps",
+ "text": "運用環境を安全に保つ: 運用環境と運用前環境を実行するために、個別の App Service プランを作成します。安定性と信頼性を確保するために、本番環境で直接変更を加えないでください。個別のインスタンスを使用すると、開発とテストを柔軟に行い、変更を本番環境に昇格させることができます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "b883e190-a830-4bf4-8c08-ee3b85248abf",
+ "service": "App Service Web Apps",
+ "text": "証明書の管理: カスタム ドメインの場合は、TLS 証明書を管理する必要があります。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "問題を迅速に検出し、可用性とパフォーマンスを維持するために必要なアクションを実行できます。",
+ "guid": "75f6aad9-2abc-4171-9715-ba708928d39a",
+ "service": "App Service Web Apps",
+ "text": "(App Service)インスタンスのヘルスをモニタリングし、インスタンスヘルスプローブをアクティブ化します。正常性プローブ要求を処理するための特定のパスを設定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログは、アプリの動作に関する貴重な分析情報を提供します。トラフィックパターンを監視し、異常を特定します。",
+ "guid": "91d861ad-a4ae-462e-8775-56cbecb31951",
+ "service": "App Service Web Apps",
+ "text": "(App Service)アプリケーションとインスタンスの診断ログを有効にします。 ログを頻繁に記録すると、システムのパフォーマンスが低下し、ストレージコストが増加し、ログへの安全でないアクセスがある場合にリスクが発生する可能性があります。次のベストプラクティスに従ってください: - 適切なレベルの情報を記録します。 - 保持ポリシーを設定します。 - 許可されたアクセスと許可されていない試みの監査証跡を保持します。- ログをデータとして扱い、データ保護制御を適用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "App Service は、証明書の調達、証明書の検証、証明書の更新、Key Vault からの証明書のインポートなどのプロセスを自動的に処理します。または、証明書を Key Vault にアップロードし、App Service リソース プロバイダーがそれにアクセスすることを承認します。",
+ "guid": "70e24ecc-5113-4d7d-8a79-8ac24fe1f838",
+ "service": "App Service Web Apps",
+ "text": "(App Service)App Service で管理されている証明書を利用して、証明書管理を Azure にオフロードします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ダウンタイムとエラーを回避します。 スワップ後に問題を検出した場合は、最後に確認された良好な状態にすばやく戻します。",
+ "guid": "7a592a00-a940-4d2e-a919-56ad3237092e",
+ "service": "App Service Web Apps",
+ "text": "(App Service プラン)ステージング スロットでアプリの変更を検証してから、運用スロットと交換します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "018624c9-6396-4e1c-8b0c-83d39b40c2a1",
+ "service": "App Service Web Apps",
+ "text": "パフォーマンス指標を特定して監視する: 受信要求の量、アプリケーションが要求に応答するのにかかる時間、保留中の要求、HTTP 応答のエラーなど、アプリケーションの主要な指標の目標を設定します。主要な指標は、ワークロードのパフォーマンス ベースラインの一部として検討します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "c66aabbd-8b2a-4295-9492-78cd5aea690a",
+ "service": "App Service Web Apps",
+ "text": "容量の評価: さまざまなユーザー シナリオをシミュレートして、予想されるトラフィックを処理するために必要な最適な容量を決定します。ロード テストを使用して、さまざまな負荷レベルでアプリケーションがどのように動作するかを理解します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "7e11019e-4329-458a-b84a-9233aa8de1a5",
+ "service": "App Service Web Apps",
+ "text": "適切なレベルを選択する: 運用ワークロードに専用コンピューティングを使用します。Premium レベルでは、メモリと CPU の容量が増加し、インスタンスが増え、ゾーン冗長などの機能が増えた、より大きな SKU が提供されます。詳細については、「Premium V3 の価格レベル」を参照してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "97fdfb16-a73b-497a-853a-fe608cfc1750",
+ "service": "App Service Web Apps",
+ "text": "スケーリング戦略を最適化する: 可能であれば、アプリケーションの負荷の変化に応じてインスタンスの数を手動で調整するのではなく、自動スケーリングを使用します。自動スケールを使用すると、App Service は定義済みのルールまたはトリガーに基づいてサーバーの容量を調整します。適切なパフォーマンス テストを行い、適切なトリガーに適切なルールを設定してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "45d7e1a5-2b7e-4b6b-8925-bf0b760a9d7e",
+ "service": "App Service Web Apps",
+ "text": "キャッシュの使用: 頻繁に変更されず、アクセスにコストがかかるリソースから情報を取得すると、パフォーマンスに影響します。結合や複数のルックアップなどの複雑なクエリは、ランタイムに寄与します。キャッシングを実行して、処理時間とレイテンシを最小限に抑えます。クエリ結果をキャッシュして、データベースまたはバックエンドへのラウンドトリップが繰り返されるのを防ぎ、後続のリクエストの処理時間を短縮します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "c8094d1c-6371-4984-98c1-ca5d72a7732d",
+ "service": "App Service Web Apps",
+ "text": "パフォーマンスのアンチパターンを確認する: Web アプリケーションがビジネス要件に従って実行およびスケーリングされることを確認するには、一般的なアンチパターンを避けます。App Service によって修正されるアンチパターンを次に示します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Always On が有効になっている状態でアプリケーションがアンロードされることはありません。",
+ "guid": "2c97ff90-e7cd-4888-a0c9-c21ea287071c",
+ "service": "App Service Web Apps",
+ "text": "アプリケーションが 1 つの App Service プランを共有する場合は、Always On 設定を有効にします。App Service アプリは、リソースを節約するために、アイドル状態になると自動的にアンロードされます。次の要求によってコールド スタートがトリガーされ、要求のタイムアウトが発生する可能性があります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "HTTP/2 は接続を完全に多重化し、接続を再利用してオーバーヘッドを削減し、ヘッダーを圧縮してデータ転送を最小限に抑えるため、HTTP/1.1 よりも HTTP/2 を選択します。",
+ "guid": "d735fb9e-9e87-415c-93d0-4918b5cf104e",
+ "service": "App Service Web Apps",
+ "text": "プロトコルの効率を向上させるために、アプリケーションにHTTP/2を使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "ee4fab35-3fcf-469c-aa4a-baaa7ea46a76",
+ "service": "Azure Application Gateway",
+ "text": "インスタンスをゾーン対応構成でデプロイします (使用可能な場合)。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "897c9b7a-c56c-4390-9938-71ed0ee875d8",
+ "service": "Azure Application Gateway",
+ "text": "仮想ネットワーク内で Application Gateway と Web Application Firewall (WAF) を使用して、インターネットからの受信 'HTTP/S' トラフィックを保護します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "9d1d0113-dcc3-4309-bf89-57f43eff537c",
+ "service": "Azure Application Gateway",
+ "text": "新しいデプロイでは、Azure Application Gateway v1 を使用するやむを得ない理由がない限り、Azure Application Gateway v2 を使用します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "ルールの更新を計画する",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブを使用してバックエンドの可用性の低さを検出する",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブに対する間隔としきい値の設定の影響を確認します",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "正常性エンドポイントによるダウンストリームの依存関係の確認",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "Application Gateway にアクセスしたり、さらに変更を加えたりする前に、更新のための十分な時間を計画してください。たとえば、バックエンド プールからサーバーを削除すると、既存の接続をドレインする必要があるため、時間がかかる場合があります。",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "ルールの更新を計画する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Application Gateway を使用して複数のバックエンド インスタンスで受信トラフィックの負荷を分散する場合は、正常性プローブを使用することをお勧めします。これにより、トラフィックを処理できないバックエンドにトラフィックがルーティングされなくなります。",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブを使用してバックエンドの可用性の低さを検出する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "正常性プローブは、設定された間隔で構成されたエンドポイントに要求を送信します。また、バックエンドが異常とマークされる前に許容される失敗した要求のしきい値があります。これらの数値はトレードオフを示しています。- 間隔を長く設定すると、サービスに高い負荷がかかります。各 Application Gateway インスタンスは独自の正常性プローブを送信するため、30 秒ごとに 100 インスタンスは 30 秒あたり 100 要求を意味します。- 間隔を短く設定すると、停止が検出されるまでの時間が長くなります。- 異常なしきい値を低く設定すると、短時間の一時的な障害によってバックエンドがダウンする可能性があります。- しきい値を高く設定すると、バックエンドをローテーションから外すのに時間がかかる場合があります。",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "正常性プローブに対する間隔としきい値の設定の影響を確認します",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "各バックエンドに独自の依存関係があり、障害が分離されているとします。たとえば、Application Gateway の背後でホストされているアプリケーションには、複数のバックエンドがあり、それぞれが異なるデータベース (レプリカ) に接続されている場合があります。このような依存関係が失敗すると、アプリケーションは動作している可能性がありますが、有効な結果は返されません。そのため、正常性エンドポイントは、理想的にはすべての依存関係を検証する必要があります。正常性エンドポイントへの各呼び出しに直接依存関係の呼び出しがある場合、そのデータベースは 1 回ではなく 30 秒ごとに 100 回のクエリを受け取ることに注意してください。これを回避するには、正常性エンドポイントで依存関係の状態を短時間キャッシュする必要があります。",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "正常性エンドポイントによるダウンストリームの依存関係の確認",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "特定のシナリオでは、Application Gateway にルールを実装することを余儀なくされる場合があります。たとえば、ModSec CRS 2.2.9、CRS 3.0、または CRS 3.1 のルールが必要な場合、これらのルールは Application Gateway にのみ実装できます。逆に、レート制限と geo フィルタリングは Azure Front Door でのみ使用でき、AppGateway では使用できません。",
+ "guid": "2cc68719-238d-40f1-9eda-37a4b77cabc2",
+ "service": "Azure Application Gateway",
+ "text": "Azure Front Door と Application Gateway を使用して \"HTTP/S\" アプリケーションを保護する場合は、Front Door で WAF ポリシーを使用し、Azure Front Door からのトラフィックのみを受信するように Application Gateway をロックダウンします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "セキュリティを強化するための TLS ポリシーの設定",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "AppGateway を TLS ターミネーションに使用する",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault を使用して TLS 証明書を格納する",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド トラフィックを再暗号化する場合は、バックエンド サーバー証明書にルート認証局 (CA) と中間認証局 (CA) の両方が含まれていることを確認します",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド プール リソースに適切な DNS サーバーを使用する",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway のすべての NSG 制限に準拠する",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5ff5e810-ac1d-42ef-9a30-812c15c42be8",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネットでの UDR の使用を控える",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "WAF を有効にするときは、Application Gateway の容量の変更に注意してください",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティを強化するために TLS ポリシーを設定します。常に利用可能な最新の TLS ポリシーバージョンを使用していることを確認してください。これにより、TLS 1.2 以上の暗号が適用されます。",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "セキュリティを強化するための TLS ポリシーの設定",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 終了に Application Gateway を使用することには、次のような利点があります。- 異なるバックエンドに送信される要求が各バックエンドに対して再認証を必要とするため、パフォーマンスが向上します。- TLS 処理を実行する必要がないため、バックエンド サーバーの使用率が向上します。- 要求コンテンツへのアクセスによるインテリジェントなルーティング - 証明書を Application Gateway にインストールするだけで済むため、証明書の管理が容易になります。",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "AppGateway を TLS ターミネーションに使用する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Application Gateway は Key Vault と統合できます。これにより、セキュリティが強化され、役割と責任の分離が容易になり、管理された証明書のサポート、証明書の更新とローテーションのプロセスが容易になります。",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault を使用して TLS 証明書を格納する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "バックエンド サーバーの TLS 証明書は、既知の CA によって発行される必要があります。証明書が信頼された CA によって発行されていない場合、Application Gateway は、信頼された CA 証明書が見つかるまで、証明書が信頼された CA によって発行されたかどうかなどを確認します。その後、安全な接続が確立されます。それ以外の場合、Application Gateway はバックエンドを異常としてマークします。",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド トラフィックを再暗号化する場合は、バックエンド サーバー証明書にルート認証局 (CA) と中間認証局 (CA) の両方が含まれていることを確認します",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "バックエンド プールに解決可能な FQDN が含まれている場合、DNS 解決はプライベート DNS ゾーンまたはカスタム DNS サーバー (VNet で構成されている場合) に基づいているか、Azure が提供する既定の DNS を使用します。",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "バックエンド プール リソースに適切な DNS サーバーを使用する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "NSG は Application Gateway サブネットでサポートされていますが、いくつかの制限があります。たとえば、特定のポート範囲との一部の通信は禁止されています。これらの制限の影響を理解していることを確認してください。詳細については、「ネットワーク セキュリティ グループ」を参照してください。",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway のすべての NSG 制限に準拠する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Application Gateway サブネットでユーザー定義ルート (UDR) を使用すると、いくつかの問題が発生する可能性があります。バックエンドの正常性状態が不明な場合があります。Application Gateway のログとメトリックが生成されない場合があります。バックエンドの正常性、ログ、メトリックを表示できるように、Application Gateway サブネットで UDR を使用しないことをお勧めします。組織で Application Gateway サブネットで UDR を使用する必要がある場合は、サポートされているシナリオを確認してください。詳細については、「サポートされているユーザー定義ルート」を参照してください。",
+ "guid": "96ac0266-6e5d-4944-bccb-0c6b3bd00b89",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネットで UDR を使用しないようにする",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "WAF が有効になっている場合、すべての要求は、完全に到着するまで Application Gateway によってバッファーに格納され、要求がコア ルール セットのルール違反と一致するかどうかを確認してから、パケットをバックエンド インスタンスに転送する必要があります。大きなファイル(サイズが30MB+)のアップロードがある場合、大幅な遅延が発生する可能性があります。Application Gateway の容量要件は WAF によって異なるため、適切なテストと検証を行わずに Application Gateway で WAF を有効にすることはお勧めしません。",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "WAF を有効にするときは、Application Gateway の容量の変更に注意してください",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway の価格について理解する",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "十分に活用されていないリソースを確認する",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "03e1fbfa-86c2-4550-a6aa-e111d6ab895d",
+ "service": "Azure Application Gateway",
+ "text": "使用されていない Application Gateway インスタンスの停止",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "スケールインとスケールアウトのポリシーがある",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "さまざまなパラメーターにわたる消費メトリックを確認する",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "Application Gateway の価格については、「Azure Application Gateway と Web Application Firewall の価格について」を参照してください。また、料金計算ツールを活用することもできます。オプションが容量の需要を満たすために適切なサイズに設定され、リソースを無駄にすることなく期待されるパフォーマンスを提供することを確認します。",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway の価格について理解する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "不要なコストを回避するために、空のバックエンド プールを持つ Application Gateway インスタンスを特定して削除します。",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "十分に活用されていないリソースを確認する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Application Gateway が停止状態の場合、課金されません。Application Gateway インスタンスを継続的に実行すると、余分なコストが発生する可能性があります。使用パターンを評価し、不要なインスタンスを停止します。たとえば、Dev/Test 環境での営業時間後の使用量は低いと予想されます。インスタンスを停止および開始する方法については、次の記事を参照してください。",
+ "guid": "6af81413-0516-4067-9e26-8aad8d2d06ca",
+ "service": "Azure Application Gateway",
+ "text": "使用していないときに Application Gateway インスタンスを停止する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スケールアウトポリシーにより、受信トラフィックとスパイクを処理するのに十分なインスタンスが確保されます。また、需要が減少したときにインスタンスの数が減るようにするスケールインポリシーがあります。インスタンスサイズの選択を検討してください。サイズはコストに大きな影響を与える可能性があります。いくつかの考慮事項については、「Application Gateway インスタンス数の見積もり」で説明されています。詳細については、「Azure Application Gateway v2 とは」を参照してください。",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "スケールインとスケールアウトのポリシーがある",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure によって追跡されるメトリックに基づく Application Gateway の従量制課金インスタンスに基づいて課金されます。さまざまなメトリクスとキャパシティーユニットを評価し、コストドライバーを決定します。詳細については、「Microsoft Cost Management and Billing」を参照してください。次のメトリックは、Application Gateway のキーです。この情報は、プロビジョニングされたインスタンス数が受信トラフィックの量と一致することを検証するために使用できます。- 推定請求キャパシティ ユニット- 固定請求可能キャパシティ ユニット- 現在のキャパシティ ユニット詳細については、「Application Gateway メトリック」を参照してください。帯域幅のコストを考慮してください。",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "さまざまなパラメーターにわたる消費メトリックを確認する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "容量メトリックの監視",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway と Web アプリケーション ファイアウォール (WAF) で診断を有効にする",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights を使用する",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "タイムアウト設定をバックエンドアプリケーションと一致させる",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor を使用して Key Vault の構成の問題を監視する",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "78bbcbf2-30c3-4c77-8e8f-8faf4c4b817d",
+ "service": "Azure Application Gateway",
+ "text": "SNAT ポートの制限を構成および監視する",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "設計では SNAT ポートの制限を考慮してください",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "これらのメトリックは、プロビジョニングされた Application Gateway 容量の使用率の指標として使用します。容量に関するアラートを設定することを強くお勧めします。詳細については、「Application Gateway の高トラフィックのサポート」を参照してください。",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "容量メトリックの監視",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Application Gateway またはバックエンドの問題を示す可能性のあるメトリックは他にもあります。次のアラートを評価することをお勧めします:- 異常なホスト数- 応答状態 (ディメンション 4xx と 5xx)- バックエンド応答状態 (ディメンション 4xx と 5xx)- バックエンドの最終バイト応答時間 - Application Gateway 合計時間詳細については、「Application Gateway のメトリック」を参照してください。",
+ "guid": "af883a3e-1ece-4f8a-9732-95a461fe244c",
+ "service": "Azure Application Gateway",
+ "text": "メトリクスを使用したトラブルシューティング",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログを使用すると、ファイアウォール ログ、パフォーマンス ログ、およびアクセス ログを表示できます。これらのログを使用して、Application Gateway インスタンスの問題を管理およびトラブルシューティングします。詳細については、「Application Gateway のバックエンドの正常性ログと診断ログ」を参照してください。",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway と Web アプリケーション ファイアウォール (WAF) で診断を有効にする",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Monitor Network Insights は、Application Gateway を含むネットワーク リソースの正常性とメトリックの包括的なビューを提供します。Application Gateway の詳細とサポートされている機能については、「Azure Monitor ネットワーク分析情報」を参照してください。",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights を使用する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "バックエンド・アプリケーションのリスナーおよびトラフィック特性と一致するようにIdleTimeout設定が構成されていることを確認します。デフォルト値は 4 分に設定され、最大 30 に設定できます。詳細については、Load Balancer の TCP リセットとアイドル・タイムアウトを参照してください。ワークロードに関する考慮事項については、信頼性のためのアプリケーション・ヘルスのモニタリングを参照してください。",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "タイムアウト設定をバックエンドアプリケーションと一致させる",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Application Gateway は、リンクされた Key Vault で更新された証明書のバージョンを 4 時間間隔で確認します。Key Vault の構成が正しくないためにアクセスできない場合は、そのエラーをログに記録し、対応する Advisor の推奨事項をプッシュします。Advisor アラートは、常に最新の状態を維持し、このような問題をすぐに修正するように構成して、コントロールプレーンまたはデータプレーン関連の問題を回避する必要があります。詳細については、「キー コンテナーのエラーの調査と解決」を参照してください。この特定のケースのアラートを設定するには、Application Gateway の [推奨事項の種類] を [Azure Key Vault の問題を解決する] として使用します。",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor を使用して Key Vault の構成の問題を監視する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "SNAT ポートの制限は、Application Gateway でのバックエンド接続にとって重要です。Application Gateway が SNAT ポートの制限に達する方法に影響を与える要因は別々です。たとえば、バックエンドがパブリック IP アドレスの場合、独自の SNAT ポートが必要になります。SNAT ポートの制限を回避するために、Application Gateway あたりのインスタンス数を増やすか、バックエンドをスケールアウトしてより多くの IP アドレスを持つようにするか、バックエンドを同じ仮想ネットワークに移動してバックエンドにプライベート IP アドレスを使用できます。Application Gateway の 1 秒あたりの要求数 (RPS) は、SNAT ポートの制限に達した場合に影響を受けます。たとえば、Application Gateway が SNAT ポートの制限に達した場合、バックエンドへの新しい接続を開くことができず、要求は失敗します。",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "設計では SNAT ポートの制限を考慮してください",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "261fdf60-ce3b-4abd-8a85-b39ebb208df9",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway インスタンス数を見積もる",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "最大インスタンス数の定義",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "最小インスタンス数の定義",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネット サイズを定義する",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "958240c8-23f1-447d-9cb7-ce9edb5aa606",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway V2 の機能を利用して、自動スケーリングとパフォーマンスの利点を実現",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Application Gateway v2 SKU の場合、自動スケールは、追加のインスタンス セットがトラフィックを処理する準備が整うまでに、ある程度の時間 (約 6 分から 7 分) かかります。その間、トラフィックが急増する場合は、一時的な遅延またはトラフィックの損失が予想されます。最小インスタンス数を最適なレベルに設定することをお勧めします。平均インスタンス数を見積もり、Application Gateway の自動スケールの傾向を決定したら、アプリケーション パターンに基づいて最小インスタンス数を定義します。詳細については、「Application Gateway の高トラフィックのサポート」を参照してください。過去 1 か月の現在のコンピューティング ユニットを確認します。このメトリクスは、ゲートウェイの CPU 使用率を表します。最小インスタンス数を定義するには、ピーク使用量を 10 で割ります。たとえば、過去 1 か月の平均 Current Compute Units が 50 の場合は、最小インスタンス数を 5 に設定します。",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "最小インスタンス数の定義",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "自動スケーリング インスタンスの最大数として 125 をお勧めします。Application Gateway を持つサブネットに、インスタンスのスケールアップ セットをサポートするのに十分な使用可能な IP アドレスがあることを確認します。最大インスタンス数を 125 に設定しても、消費された容量に対してのみ請求されるため、コストへの影響はありません。",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "最大インスタンス数の定義",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Application Gateway には、仮想ネットワーク内に専用のサブネットが必要です。サブネットには、デプロイされた Application Gateway リソースの複数のインスタンスを含めることができます。また、そのサブネット (v1 または v2 SKU) に他の Application Gateway リソースをデプロイすることもできます。サブネット サイズの定義に関する考慮事項を次に示します。- Application Gateway は、インスタンスごとに 1 つのプライベート IP アドレスを使用し、プライベート フロントエンド IP が構成されている場合は別のプライベート IP アドレスを使用します。- Azure では、各サブネットに 5 つの IP アドレスが内部使用のために予約されています。- Application Gateway (Standard または WAF SKU) は、最大 32 個のインスタンスをサポートできます。32 個のインスタンス IP アドレス + 1 個のプライベート フロントエンド IP + 5 個の Azure 予約済みの場合、最小サブネット サイズは /26 にすることをお勧めします。Standard_v2 SKU または WAF_v2 SKU は最大 125 個のインスタンスをサポートできるため、同じ計算を使用して、サブネット サイズ /24 をお勧めします。- 同じサブネットに追加の Application Gateway リソースをデプロイする場合は、Standard と Standard v2 の両方の最大インスタンス数に必要な追加の IP アドレスを検討してください。",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway サブネット サイズを定義する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "v2 SKU には、トラフィックの増加に合わせて Application Gateway をスケールアップできるように、自動スケーリングが用意されています。v1 SKU と比較すると、v2 にはワークロードのパフォーマンスを向上させる機能があります。たとえば、TLS オフロード パフォーマンスの向上、デプロイと更新時間の短縮、ゾーン冗長性などです。自動スケール機能の詳細については、「Application Gateway v2 と WAF v2 のスケーリング」を参照してください。v1 SKU Application gateway を実行している場合は、Application gateway v2 SKU への移行を検討してください。詳細については、「Azure Application Gateway と Web アプリケーション ファイアウォールを v1 から v2 に移行する」を参照してください。",
+ "guid": "508791c8-897f-4490-8590-fc33a9df8f73",
+ "service": "Azure Application Gateway",
+ "text": "自動スケーリングとパフォーマンス上の利点のための機能を活用する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "d68b4fc0-fd9c-499a-9fd4-2c572735bd36",
+ "service": "Azure Blob Storage",
+ "text": "障害モード分析を使用する: 仮想ネットワーク、Azure Key Vault、Azure Content Delivery Network、Azure Front Door エンドポイントの可用性などの内部依存関係を考慮して、障害点を最小限に抑えます。ワークロードが Blob Storage にアクセスするために必要な資格情報が Key Vault になくなった場合、または削除されたコンテンツ配信ネットワークに基づくエンドポイントをワークロードが使用している場合に、エラーが発生する可能性があります。このような場合、ワークロードは接続するために代替エンドポイントを使用する必要がある場合があります。故障モード分析の一般的な情報については、故障モード分析の実行に関する推奨事項を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "817f9103-607a-4e3d-ba94-1a3adffaff8f",
+ "service": "Azure Blob Storage",
+ "text": "信頼性と復旧のターゲットを定義する: Azure のサービス レベル アグリーメント (SLA) を確認します。ストレージ アカウントのサービス レベル目標 (SLO) を派生させます。たとえば、SLO は、選択した冗長性構成の影響を受ける可能性があります。リージョンの障害の影響、データ損失の可能性、および障害後のアクセスの復元に必要な時間を考慮してください。また、障害モード分析の一部として特定した内部依存関係の可用性も考慮してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Blob Storage",
+ "text": "データ冗長性の構成: 耐久性を最大限に高めるには、可用性ゾーンまたはグローバルリージョン間でデータをコピーする構成を選択します。可用性を最大にするには、プライマリ リージョンの停止中にクライアントがセカンダリ リージョンからデータを読み取ることができる構成を選択します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "e71dbbd7-5e50-4ade-b5e5-4b9e59d10706",
+ "service": "Azure Blob Storage",
+ "text": "アプリケーションの設計: プライマリ領域が何らかの理由で使用できなくなった場合に、セカンダリ領域からのデータの読み取りにシームレスに移行するようにアプリケーションを設計します。これは、geo 冗長ストレージ (GRS) と geo ゾーン冗長ストレージ (GZRS) の構成にのみ適用されます。障害を処理するようにアプリケーションを設計することで、エンド ユーザーのダウンタイムが短縮されます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "2243ff8e-7ce3-4999-9eee-3b3377f4df8b",
+ "service": "Azure Blob Storage",
+ "text": "復旧目標の達成に役立つ機能を確認する: BLOB を復元可能にして、BLOB が誤って破損、編集、または削除された場合に回復できるようにします。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Blob Storage",
+ "text": "復旧計画を作成する: データ保護機能、バックアップと復元の操作、またはフェールオーバー手順を検討します。潜在的なデータ損失とデータの不整合、およびフェールオーバーの時間とコストに備えます。詳細については、「ディザスター リカバリー戦略の設計に関する推奨事項」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "ffdb383d-6a9a-4ebb-b902-12320390dd84",
+ "service": "Azure Blob Storage",
+ "text": "可用性に関する潜在的な問題を監視する: Azure Service Health ダッシュボードに登録して、可用性に関する潜在的な問題を監視します。Azure Monitor のストレージ メトリックと診断ログを使用して、アラートを調査します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "冗長性は、予期しない障害からデータを保護します。ZRS と GZRS の構成オプションは、異なる可用性ゾーン間でレプリケートされ、停止中もアプリケーションがデータの読み取りを続行できるようにします。詳細については、「停止シナリオ別の持続性と可用性」および「持続性と可用性のパラメーター」を参照してください。",
+ "guid": "e426149f-841f-4865-878e-311cfe914db9",
+ "service": "Azure Blob Storage",
+ "text": "冗長性のためにアカウントを構成します。可用性と持続性を最大限に高めるには、ゾーン冗長ストレージ (ZRS) または GZRS を使用してアカウントを構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このプロパティは、アカウントのフェイルオーバーを開始することで失われる可能性のあるデータ量を見積もるのに役立ちます。最終同期時刻より前に書き込まれたすべてのデータとメタデータはセカンダリリージョンで使用できますが、最終同期時刻より後に書き込まれたデータとメタデータは、セカンダリリージョンに書き込まれていないため、失われる可能性があります。",
+ "guid": "f42e13de-f6f3-4fad-97f3-f657b8aa1f6c",
+ "service": "Azure Blob Storage",
+ "text": "フェイルオーバーまたはフェイルバックを開始する前に、最終同期時間プロパティの値を確認して、データ損失の可能性を評価します。この推奨事項は、GRS および GZRS 構成にのみ適用されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "論理的な削除オプションを使用すると、ストレージ アカウントは削除されたコンテナーと BLOB を回復できます。バージョン管理オプションは、BLOB に加えられた変更を自動的に追跡します。このオプションを使用すると、BLOB を以前の状態に復元できます。ポイントインタイム リストア オプションは、BLOB の偶発的な削除や破損から保護し、ブロック BLOB データを以前の状態に復元できます。詳細については、「データ保護の概要」を参照してください。",
+ "guid": "6ba14c6a-6f37-46a3-a2a8-e38373925d6f",
+ "service": "Azure Blob Storage",
+ "text": "バックアップと復旧の戦略の一環として、コンテナーの論理的な削除、BLOB の論理的な削除、バージョン管理、およびポイントインタイム リストアのオプションを有効にします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "5738d99e-ae27-47ca-959c-0dabef735931",
+ "service": "Azure Blob Storage",
+ "text": "Azure Storage のセキュリティ ベースラインを確認する: 開始するには、まず Storage のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "54dc05f5-631d-41ac-8ad7-40a451e48efd",
+ "service": "Azure Blob Storage",
+ "text": "ネットワーク制御を使用してイングレス トラフィックとエグレス トラフィックを制限する: ストレージ アカウントへのすべてのパブリック トラフィックを無効にします。アカウント ネットワーク制御を使用して、ユーザーとアプリケーションに必要な最小限のアクセスを許可します。詳細については、「ストレージ アカウントのネットワーク セキュリティにアプローチする方法」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3d39bc4a-58c1-4d69-8116-751252d03104",
+ "service": "Azure Blob Storage",
+ "text": "攻撃対象領域を減らす: 匿名アクセス、アカウント キー アクセス、またはセキュリティで保護されていない (HTTP) 接続経由のアクセスを防ぐことで、攻撃対象領域を縮小できます。最新バージョンのトランスポート層セキュリティ (TLS) プロトコルを使用してデータを送受信するようにクライアントに要求します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b0e33ead-c6ca-4386-acee-30e929390ca0",
+ "service": "Azure Blob Storage",
+ "text": "パスワードやキーを使用せずにアクセスを承認する: Microsoft Entra ID は、共有キーや共有アクセス署名と比較して、優れたセキュリティと使いやすさを提供します。セキュリティ プリンシパルには、タスクを実行するために必要なアクセス許可のみを付与します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c2d96110-7950-4f81-8c41-34e1fa015631",
+ "service": "Azure Blob Storage",
+ "text": "機密情報の保護: アカウント キーや Shared Access Signature トークンなどの機密情報を保護します。これらの形式の認証は一般的には推奨されませんが、ローテーション、期限切れ、および安全に保管する必要があります。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cd6916c2-09f8-4269-971d-60a07e57cbbd",
+ "service": "Azure Blob Storage",
+ "text": "[安全な転送が必要] オプションを有効にする: すべてのストレージ アカウントでこの設定を有効にすると、ストレージ アカウントに対して行われるすべての要求が、セキュリティで保護された接続経由で行われる必要があります。HTTP 経由で行われたすべての要求は失敗します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "f944c199-636d-46b4-bc23-ee8bdfefa7a5",
+ "service": "Azure Blob Storage",
+ "text": "重要なオブジェクトの保護: 不変ポリシーを適用して、重要なオブジェクトを保護します。ポリシーは、法律、コンプライアンス、またはその他のビジネス目的で格納された BLOB が変更または削除されないように保護します。設定された期間、または管理者によって制限が解除されるまでの保留を構成します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "80a10cbe-93f3-410a-b7ad-d7b5234add61",
+ "service": "Azure Blob Storage",
+ "text": "脅威を検出する: Microsoft Defender for Storage を有効にして脅威を検出します。セキュリティ アラートは、アクティビティに異常が発生したときにトリガーされます。アラートは、疑わしいアクティビティの詳細と、脅威の調査と修復方法に関する推奨事項を電子メールでサブスクリプション管理者に通知します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "ストレージ アカウントに対して匿名アクセスが許可されている場合、適切なアクセス許可を持つユーザーは、コンテナーの匿名アクセス設定を変更して、そのコンテナー内のデータへの匿名アクセスを有効にすることができます。",
+ "guid": "4380d8e1-fdb6-45da-a1e1-109e162f43d3",
+ "service": "Azure Blob Storage",
+ "text": "コンテナーと BLOB への匿名読み取りアクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "アカウントをロックすると、アカウントが削除されてデータが失われるのを防ぐことができます。",
+ "guid": "09543d14-a0c7-49dc-89d1-74b1913c3b03",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントに Azure Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ゼロアクセスから始めて、クライアントとサービスに必要な最低レベルのアクセスを段階的に承認して、攻撃者に不必要な隙を与えるリスクを最小限に抑えます。",
+ "guid": "1b8c4090-6b15-45e0-8833-ee5285ebd444",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントのパブリック エンドポイントへのトラフィックを無効にします。Azure で実行されるクライアントのプライベート エンドポイントを作成します。パブリック エンドポイントは、Azure の外部のクライアントとサービスがストレージ アカウントに直接アクセスする必要がある場合にのみ有効にします。特定の仮想ネットワークへのアクセスを制限するファイアウォール規則を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "RBAC を使用すると、パスワードやキーが侵害されることはありません。セキュリティ プリンシパル (ユーザー、グループ、マネージド ID、またはサービス プリンシパル) は、OAuth 2.0 トークンを返すために Microsoft Entra ID によって認証されます。トークンは、Blob Storage サービスに対する要求を承認するために使用されます。",
+ "guid": "2ecbd38b-7ae5-4858-916a-0554e8f2d41d",
+ "service": "Azure Blob Storage",
+ "text": "Azure ロールベースのアクセス制御 (RBAC) を使用してアクセスを承認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Microsoft Entra ID で承認されたセキュリティで保護された要求のみが許可されます。",
+ "guid": "4d731629-d6d3-4aa9-b46f-6259451f08f0",
+ "service": "Azure Blob Storage",
+ "text": "共有キーの認証を禁止します。これにより、アカウント キーへのアクセスだけでなく、アカウント キーに基づいているため、サービスとアカウントの共有アクセス署名トークンも無効になります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault を使用すると、アプリケーションを使用してキーを保存する代わりに、実行時にキーを取得できます。また、Key Vault を使用すると、アプリケーションを中断することなくキーを簡単にローテーションできます。アカウント キーを定期的にローテーションすると、データが悪意のある攻撃にさらされるリスクが軽減されます。",
+ "guid": "62ae35d2-7f0b-4c63-b0ff-1a1f85d39b89",
+ "service": "Azure Blob Storage",
+ "text": "アカウントキーは使用しないことをお勧めします。アカウント キーを使用する必要がある場合は、Key Vault に格納し、定期的に再生成するようにしてください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ベスト プラクティスは、Shared Access Signature トークンの漏洩を防ぎ、漏洩が発生した場合に迅速に回復するのに役立ちます。",
+ "guid": "e2163930-a35e-415f-bea3-a019e5c2a5c7",
+ "service": "Azure Blob Storage",
+ "text": "Shared Access Signature トークンは使用しないことをお勧めします。Blob Storage リソースへのアクセスをセキュリティで保護するために Shared Access Signature トークンが必要かどうかを評価します。作成する必要がある場合は、作成して配布する前に、この共有アクセス署名のベスト プラクティスの一覧を確認してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 は、最新の暗号化アルゴリズムと暗号スイートをサポートしていない TLS 1.0 および 1.1 よりも安全で高速です。",
+ "guid": "d586222d-d9d1-4f51-ba29-58021c0ee0ae",
+ "service": "Azure Blob Storage",
+ "text": "クライアントが TLS 1.2 の最小バージョンを使用してデータを送受信できるように、ストレージ アカウントを構成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタマー マネージド キーは、柔軟性と制御性に優れています。たとえば、暗号化キーを Key Vault に格納し、自動的にローテーションできます。",
+ "guid": "33303cd1-5b9c-4688-aa24-50cb53f5caac",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウント内のデータを保護するために、独自の暗号化キーを使用することを検討してください。詳細については、「Azure Storage 暗号化のカスタマー マネージド キー」を参照してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "6f7ce98b-ec2c-4535-9e6a-11c077c9bd3f",
+ "service": "Azure Blob Storage",
+ "text": "請求額の計算に使用するメーターを特定する: メーターは、アカウントに格納されているデータの量 (データ容量) と、データの書き込みと読み取りのために実行される操作の数と種類を追跡するために使用されます。また、BLOB インデックス タグ、BLOB インベントリ、変更フィードのサポート、暗号化スコープ、SSH ファイル転送プロトコル (SFTP) のサポートなどのオプション機能の使用に関連するメーターもあります。詳細については、「Blob Storage の課金方法」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "0c2e2825-34c7-4ad5-ad21-a270b1b402c0",
+ "service": "Azure Blob Storage",
+ "text": "各メーターの価格を理解する: 適切な価格ページを使用し、そのページで適切な設定を適用してください。詳細については、「各メーターの単価の検索」を参照してください。各価格に関連付けられている操作の数を考えてみましょう。たとえば、書き込み操作と読み取り操作に関連付けられた料金は、10,000 操作に適用されます。個々の操作の価格を決定するには、リストされた価格を 10,000 で割ります。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "31b047a5-abfe-4452-ad3e-a4b99cad0e4b",
+ "service": "Azure Blob Storage",
+ "text": "容量と運用のコストを見積もる: Azure 料金計算ツールを使用して、データ ストレージ、イングレス、エグレスに関連するコストをモデル化できます。フィールドを使用して、さまざまなリージョン、アカウントタイプ、名前空間タイプ、および冗長性設定に関連付けられたコストを比較します。特定のシナリオでは、Microsoft のドキュメントで入手できるサンプル計算とワークシートを使用できます。たとえば、データのアーカイブのコストを見積もったり、AzCopy コマンドを使用して BLOB を転送するコストを見積もったりできます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "51e5c8d4-4794-4514-bb01-54a517927a05",
+ "service": "Azure Blob Storage",
+ "text": "容量の課金モデルを選択する: コミットメントベースのモデルを使用する方が、使用量ベースのモデルを使用するよりもコスト効率が高いかどうかを評価します。必要な容量がわからない場合は、使用量ベースのモデルから始めて、容量メトリクスをモニタリングし、後で評価できます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "8a5b488c-2b97-4e55-8997-659d64c62030",
+ "service": "Azure Blob Storage",
+ "text": "アカウントの種類、冗長性レベル、および既定のアクセス層を選択する: ストレージ アカウントを作成するときは、これらの各設定の値を選択する必要があります。すべての値は、トランザクション手数料と容量手数料に影響します。アカウントの種類を除くこれらの設定はすべて、アカウントの作成後に変更できます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "b675b5be-352c-4a06-94ed-8457e3d5db8c",
+ "service": "Azure Blob Storage",
+ "text": "最もコスト効率の高い既定のアクセス層を選択する: BLOB のアップロードごとに層が指定されていない限り、BLOB は既定のアクセス層設定からアクセス層を推測します。ストレージ アカウントの既定のアクセス層設定の変更は、アクセス層が明示的に設定されていないアカウント内のすべての BLOB に適用されます。このコストは、多数の BLOB を収集した場合に大きくなる可能性があります。階層の変更が既存の各 BLOB にどのように影響するかの詳細については、「BLOB のアクセス階層の変更」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "fbf53f6f-f5af-47ef-8e28-e471bf173884",
+ "service": "Azure Blob Storage",
+ "text": "最もコスト効率の高いアクセス階層にデータを直接アップロードする: たとえば、アカウントのデフォルトのアクセス階層設定がホットであるが、アーカイブ目的でファイルをアップロードしている場合は、アーカイブとしてクール階層を指定するか、アップロードオペレーションの一部としてコールド階層を指定します。BLOB をアップロードした後、ライフサイクル管理ポリシーを使用して、最終アクセス時刻などの使用状況メトリックに基づいて、BLOB を最もコスト効率の高いレベルに移動します。最適な階層を事前に選択することで、コストを削減できます。既にアップロードしたブロック BLOB の層を変更する場合は、BLOB を最初にアップロードするときに初期層への書き込みコストを支払い、その後、目的の層への書き込みコストを支払います。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "3549725f-8de2-4431-a8e2-fb88c2def5b4",
+ "service": "Azure Blob Storage",
+ "text": "データ ライフサイクルを管理するための計画を立てる: アクセス階層とライフサイクル管理を活用して、トランザクションと容量のコストを最適化します。使用頻度の低いデータは、よりクールなアクセス層に配置し、頻繁にアクセスされるデータは、より暖かいアクセス層に配置する必要があります。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "df99152b-4af1-4cea-b2bd-b06fd2425c57",
+ "service": "Azure Blob Storage",
+ "text": "必要な機能を決定する: バージョン管理や BLOB の論理的な削除などの一部の機能では、追加のトランザクション コストと容量コスト、およびその他の料金が発生します。アカウントに追加する機能を選択するときは、これらの機能について説明している記事の料金と請求のセクションを必ず確認してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "b69e35ad-ee70-4787-bcb2-9cde1aa2600c",
+ "service": "Azure Blob Storage",
+ "text": "ガードレールを作成する: サブスクリプションとリソース グループに基づいて予算を作成します。ガバナンスポリシーを使用して、リソースのタイプ、構成、および場所を制限します。さらに、RBAC を使用して、過剰支出につながる可能性のあるアクションをブロックします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "41cc33cd-773d-463f-b9e3-07256ea9e3f0",
+ "service": "Azure Blob Storage",
+ "text": "コストの監視: コストが予算内に収まっていることを確認し、コストを予測と比較し、過剰支出が発生している場所を確認します。Azure portal のコスト分析ウィンドウを使用して、コストを監視できます。また、コスト データをストレージ アカウントにエクスポートし、Excel または Power BI を使用してそのデータを分析することもできます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "94b3fa52-a17f-44ec-b4ba-9801c2764632",
+ "service": "Azure Blob Storage",
+ "text": "使用状況の監視: 使用パターンを継続的に監視し、未使用または十分に活用されていないアカウントとコンテナを検出します。Storage Insights を使用して、使用されていない、または使用頻度が低いアカウントを特定します。BLOB インベントリ レポートを有効にし、Azure Databricks や Azure Synapse Analytics や Power BI などのツールを使用してコスト データを分析します。予期しない容量の増加は、多数のログ ファイル、BLOB バージョン、または論理的に削除された BLOB を収集していることを示している可能性があることに注意してください。オブジェクトの有効期限や、よりコスト効率の高いアクセス層への移行のための戦略を策定します。オブジェクトの有効期限が切れるか、オブジェクトをより手頃な価格のアクセス層に移動するための計画を立てます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "クーラー層は、データ転送コストが高くなります。大きなファイルの数を減らすことで、データの転送に必要な操作の数を減らすことができます。",
+ "guid": "7eb7a0d4-912b-4d5c-af98-31200e20cc63",
+ "service": "Azure Blob Storage",
+ "text": "小さなファイルを大きなファイルにパックしてから、クーラー層に移動します。TAR や ZIP などのファイル形式を使用できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "アーカイブ層からの優先度の高いリハイドレートは、通常よりも高額な請求につながる可能性があります。",
+ "guid": "8d3e7da9-3091-4daf-8a07-37116d9e3f7e",
+ "service": "Azure Blob Storage",
+ "text": "アーカイブ ストレージから BLOB をリハイドレートする場合は、標準優先度のリハイドレートを使用します。優先度の高いリハイドレートは、緊急時のデータ復元状況でのみ使用してください。詳細については、「アーカイブされた BLOB をオンライン層にリハイドレートする」を参照してください",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "後で分析するためにリソース ログをストレージ アカウントに格納することは、より安価なオプションになる可能性があります。ライフサイクル管理ポリシーを使用してストレージ アカウントのログ保有期間を管理すると、時間の経過と共に大量のログ ファイルが蓄積され、不要な容量料金が発生するのを防ぐことができます。",
+ "guid": "f29291b5-d170-453b-bdbb-379f229fdc5b",
+ "service": "Azure Blob Storage",
+ "text": "リソース・ログの使用コストを削減するには、適切なログ・ストレージ・ロケーションを選択し、ログ保持期間を管理します。ログのクエリをたまにしか行わない場合 (たとえば、コンプライアンス監査のためにログのクエリを実行する場合) は、リソース ログを Azure Monitor ログ ワークスペースに送信するのではなく、ストレージ アカウントに送信することを検討してください。Azure Synapse Analytics などのサーバーレス クエリ ソリューションを使用して、ログを分析できます。詳細については、「頻度の低いクエリのコストを最適化する」を参照してください。ライフサイクル管理ポリシーを使用して、ログを削除またはアーカイブします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB への書き込み操作ごとに、新しいバージョンが作成されます。これにより、容量コストが増加します。不要になったバージョンを削除することで、コストを抑えることができます。",
+ "guid": "496e994f-ae82-40c2-90cb-eb03a9e2205c",
+ "service": "Azure Blob Storage",
+ "text": "バージョン管理を有効にする場合は、ライフサイクル管理ポリシーを使用して、古い BLOB バージョンを自動的に削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB が上書きされるたびに新しいバージョンが追加され、ストレージ容量の料金が増加します。容量の料金を削減するには、頻繁に上書きされるデータを、バージョン管理を無効にした別のストレージ アカウントに格納します。",
+ "guid": "91514322-4007-4a99-85f0-e73c181d95fa",
+ "service": "Azure Blob Storage",
+ "text": "バージョニングを有効にする場合は、頻繁に上書きされる BLOB を、バージョニングが有効になっていないアカウントに配置します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "BLOB が上書きされるたびに、新しいスナップショットが作成されます。容量料金の増加の原因は、これらのスナップショットの作成がログに表示されないため、アクセスが困難になる場合があります。容量の料金を削減するには、頻繁に上書きされるデータを、論理的な削除を無効にして別のストレージ アカウントに格納します。保持期間により、論理的に削除された BLOB が積み重なって容量のコストが増えるのを防ぐことができます。",
+ "guid": "7041f493-74f4-42e8-bbd2-15602763dc40",
+ "service": "Azure Blob Storage",
+ "text": "論理的な削除を有効にする場合は、頻繁に上書きされる BLOB を、論理的な削除が有効になっていないアカウントに配置します。保持期間を設定します。この機能が請求にどのように影響するかをよりよく理解するために、短い保持期間から始めることを検討してください。推奨される最小保持期間は 7 日間です。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "SFTP エンドポイントを有効にすると、時間単位のコストが発生します。SFTPサポートを慎重に無効にし、必要に応じて有効にすることで、アカウントに受動的料金が発生するのを防ぐことができます。",
+ "guid": "c1d10494-a396-4add-aae2-aaf5aa5aa0da",
+ "service": "Azure Blob Storage",
+ "text": "SFTP サポートは、データの転送に使用する場合にのみ有効にします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "暗号化スコープには、月額料金が発生します。",
+ "guid": "b71aeb26-fc96-486c-8bed-c5c616c1d0b1",
+ "service": "Azure Blob Storage",
+ "text": "不要な料金を回避するために、不要な暗号化スコープを無効にします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Blob Storage",
+ "text": "メンテナンス計画と緊急時の復旧計画を作成する: データ保護機能、バックアップと復元の操作、フェールオーバー手順を検討します。潜在的なデータ損失とデータの不整合、およびフェールオーバーの時間とコストに備えます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "bdd60136-85dd-45cc-ac07-37d69124d9ab",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントの正常性を監視する: Storage insights ダッシュボードを作成して、可用性、パフォーマンス、回復性のメトリックを監視します。アラートを設定して、顧客が気付く前にシステムの問題を特定して対処します。診断設定を使用して、リソース ログを Azure Monitor ログ ワークスペースにルーティングします。その後、ログをクエリして、アラートをより深く調査できます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "b842f2e7-9ac7-4d2e-9c9a-a3fb2ddc2441",
+ "service": "Azure Blob Storage",
+ "text": "BLOB インベントリ レポートを有効にする: BLOB インベントリ レポートを有効にして、ストレージ アカウントの内容の保持、訴訟ホールド、または暗号化の状態を確認します。また、BLOB インベントリ レポートを使用して、データの合計サイズ、経過時間、階層の分布、またはデータのその他の属性を把握することもできます。Azure Databricks や Azure Synapse Analytics と Power BI などのツールを使用して、インベントリ データをより適切に視覚化し、利害関係者向けのレポートを作成します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "b54e930b-e9fe-4b7b-adc2-b0f0d0b0f05c",
+ "service": "Azure Blob Storage",
+ "text": "BLOB を削除するポリシーを設定するか、コスト効率の高いアクセス階層に移動する: 初期条件セットを使用してライフサイクル管理ポリシーを作成します。ポリシーの実行では、定義した条件に基づいて、BLOB のアクセス層が自動的に削除または設定されます。Monitor メトリックと BLOB インベントリ レポートを使用してコンテナーの使用状況を定期的に分析し、コスト効率を最適化するための条件を絞り込むことができます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "既存の DevOps プロセスを使用して新しいストレージ アカウントをデプロイし、Azure Policy を使用してその構成を適用できます。",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Blob Storage",
+ "text": "コードとしてのインフラストラクチャ (IaC) を使用して、Azure Resource Manager テンプレート (ARM テンプレート)、Bicep、または Terraform でストレージ アカウントの詳細を定義します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各アカウントの健康状態と操作を追跡できます。ダッシュボードとレポートを簡単に作成して、関係者がストレージ アカウントの正常性を追跡できます。",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Blob Storage",
+ "text": "Storage insights を使用して、ストレージ アカウントの正常性とパフォーマンスを追跡します。Storage insights は、すべてのストレージ アカウントの障害、パフォーマンス、可用性、容量の統合ビューを提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "61755535-55a0-4064-8537-e9cdf07e1baa",
+ "service": "Azure Blob Storage",
+ "text": "スケールの計画: ストレージ アカウントのスケール目標を理解します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "bd64ef47-64e7-4c7e-b19f-ccfd451083e0",
+ "service": "Azure Blob Storage",
+ "text": "最適なストレージ アカウントの種類を選択する: ワークロードで高いトランザクション レート、より小さなオブジェクト、および一貫して低いトランザクション待機時間が必要な場合は、Premium ブロック BLOB ストレージ アカウントの使用を検討してください。ほとんどの場合、標準の汎用 v2 アカウントが最適です。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "b21b6a75-b065-43f1-8298-5778460e2ba0",
+ "service": "Azure Blob Storage",
+ "text": "クライアントとサーバー間の移動距離を短縮する: 接続しているクライアントに最も近い領域 (理想的には同じ領域) にデータを配置します。オブジェクト レプリケーションまたはコンテンツ配信ネットワークを使用して、遠く離れた地域のクライアントを最適化します。デフォルトのネットワーク構成では、最高のパフォーマンスが得られます。ネットワーク設定を変更するのは、セキュリティを向上させるためだけにしてください。一般に、ネットワーク設定によって移動距離が短縮されたり、パフォーマンスが向上したりすることはありません。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "ef4063df-4ac9-4e8b-9391-cf99ea520f3a",
+ "service": "Azure Blob Storage",
+ "text": "効率的な名前付けスキームを選択する: BLOB パーティション キー (アカウント、コンテナー、仮想ディレクトリ、または BLOB 名) の先頭に最も近いハッシュ タグ プレフィックスを使用して、一覧表示、一覧表示、クエリ、読み取り操作の待機時間を短縮します。このスキームは、主にフラットな名前空間を持つアカウントにメリットをもたらします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "45c2db00-baf4-4e7a-8ceb-871abc5f5d64",
+ "service": "Azure Blob Storage",
+ "text": "データ クライアントのパフォーマンスを最適化する: ワークロードのデータ サイズ、転送頻度、帯域幅に最も適したデータ転送ツールを選択します。AzCopy などの一部のツールは、パフォーマンスが最適化されており、介入をほとんど必要としません。待機時間に影響を与える要因を検討し、各ツールで公開されているパフォーマンス最適化ガイダンスを確認して、パフォーマンスを微調整します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "97486b6a-ea0c-4100-86e0-319ce0c8ad21",
+ "service": "Azure Blob Storage",
+ "text": "カスタム コードのパフォーマンスを最適化する: BLOB REST 操作用に独自のラッパーを作成する代わりに、Storage SDK の使用を検討してください。Azure SDK はパフォーマンスのために最適化されており、パフォーマンスを微調整するメカニズムを提供します。アプリケーションを作成する前に、Blob Storage のパフォーマンスとスケーラビリティのチェックリストを確認してください。クエリ アクセラレーションを使用して、ストレージ要求中に不要なデータを除外し、クライアントがネットワーク経由でデータを不必要に転送しないようにすることを検討してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "0b2ed074-7dcb-460a-8455-144171d2fe8f",
+ "service": "Azure Blob Storage",
+ "text": "パフォーマンス データを収集する: ストレージ アカウントを監視して、調整によって発生するパフォーマンスのボトルネックを特定します。詳細については、「Monitor Storage insights を使用したストレージ サービスのモニタリング」を参照してください。メトリックとログの両方を使用します。メトリクスは、スロットルエラーなどの数値を提供します。ログはアクティビティを記述します。調整メトリックが表示される場合は、ログを使用して、調整エラーを受信しているクライアントを特定できます。詳細については、「データ プレーン操作の監査」を参照してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ストレージ アカウントと VM、サービス、およびオンプレミス クライアントとの間の物理的な距離を短くすると、パフォーマンスが向上し、ネットワーク待機時間が短縮されます。物理的な距離を短くすると、1 つのリージョン内での帯域幅の使用が無料になるため、Azure でホストされているアプリケーションのコストも削減されます。",
+ "guid": "1a37ef87-aa18-44a6-9877-6665fb1dc486",
+ "service": "Azure Blob Storage",
+ "text": "ストレージ アカウントは、依存リソースが配置されているのと同じリージョンにプロビジョニングします。Azure でホストされていないアプリケーション (モバイル デバイス アプリやオンプレミスのエンタープライズ サービスなど) の場合は、それらのクライアントに近いリージョンにストレージ アカウントを配置します。詳細については、「Azure の地域」を参照してください。異なる地域のクライアントが同じデータを必要としない場合は、各地域に個別のアカウントを作成します。別のリージョンのクライアントが一部のデータのみを必要とする場合は、オブジェクト レプリケーション ポリシーを使用して、関連するオブジェクトを他のリージョンのストレージ アカウントに非同期的にコピーすることを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "コンテンツは、世界中に数百のグローバルおよびローカルのプレゼンスポイントを持つMicrosoftグローバルエッジネットワークを使用しているため、クライアントにより迅速に配信されます。",
+ "guid": "7ee0dea0-804f-457c-9660-1fe756011d25",
+ "service": "Azure Blob Storage",
+ "text": "Web クライアント (ストリーミング ビデオ、オーディオ、または静的 Web サイト コンテンツ) による広範な消費については、Azure Front Door を介したコンテンツ配信ネットワークの使用を検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "パーティション キーの先頭に最も近いハッシュ コードまたは秒値を使用すると、BLOB の一覧表示、クエリ、読み取りに必要な時間が短縮されます。",
+ "guid": "36fc9ddc-5d24-4ecc-a67e-3fd7bc0c4373",
+ "service": "Azure Blob Storage",
+ "text": "ハッシュ文字シーケンス (3 桁など) を BLOB のパーティション キーにできるだけ早く追加します。パーティション キーは、アカウント名、コンテナー名、仮想ディレクトリ名、BLOB 名です。名前にタイムスタンプを使用する予定の場合は、そのスタンプの先頭に秒の値を追加することを検討してください。詳細については、「パーティション分割」を参照してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "256 KiB を超える BLOB またはブロック サイズは、より大きな BLOB とブロック サイズ専用に作成されたプラットフォームのパフォーマンス強化を利用します。",
+ "guid": "78872d9e-216b-4cc3-8686-0471d46a1acd",
+ "service": "Azure Blob Storage",
+ "text": "BLOB またはブロックをアップロードするときは、256 KiB を超える BLOB またはブロック サイズを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "473b3683-6d53-4521-89c4-d8aa1d1df633",
+ "service": "Azure Expressroute",
+ "text": "ビジネス要件に応じて、ExpressRoute 回線または ExpressRoute Direct から選択します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "b356e60e-cb41-4ee6-a8d5-290b429619f7",
+ "service": "Azure Expressroute",
+ "text": "オンプレミスと Azure の間のアクティブ/アクティブ ExpressRoute 接続を構成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "877b9a2d-8171-441b-ba7f-b8c6191f12bc",
+ "service": "Azure Expressroute",
+ "text": "可用性ゾーン対応の ExpressRoute 仮想ネットワーク ゲートウェイを設定します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "64ad6a67-7f17-4d55-a365-0ec8716fb135",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 仮想ネットワーク ゲートウェイをさまざまなリージョンで構成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "20bbf3a5-e3d8-42eb-9b88-9c4a811a483a",
+ "service": "Azure Expressroute",
+ "text": "サイト間 VPN を ExpressRoute プライベート ピアリングのバックアップとして構成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "198fd707-5344-46d9-a3f9-c05a90749ccb",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線のメンテナンス通知を受け取るようにサービス正常性を構成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "最初の計画フェーズでは、ExpressRoute 回線と ExpressRoute Direct 接続のどちらを構成するかを決定します。ExpressRoute 回線を使用すると、接続プロバイダーの助けを借りて Azure へのプライベート専用接続が可能になります。ExpressRoute Direct を使用すると、オンプレミス ネットワークをピアリングの場所にある Microsoft ネットワークに直接拡張できます。また、ビジネス ニーズの帯域幅要件と SKU タイプ要件を特定する必要もあります。",
+ "guid": "09e0dd1a-b1f7-46c3-8df1-48e841f53dca",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線または ExpressRoute Direct の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "回復性を向上させるには、オンプレミスのエッジとピアリングの場所 (プロバイダー/Microsoft エッジの場所) の間に複数のパスを用意するように計画します。この構成は、別のサービス プロバイダーを経由するか、オンプレミス ネットワークとは異なる場所を経由することで実現できます。",
+ "guid": "67812ddc-7c52-4b52-9569-b3f84d591def",
+ "service": "Azure Expressroute",
+ "text": "物理層の多様性",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ディザスター リカバリーを計画するには、ExpressRoute 回線を複数のピアリング場所にセットアップします。同じ都市圏または異なる都市圏のピアリング ロケーションに回線を作成し、各回線を経由するさまざまなパスに対して異なるサービス プロバイダーと連携することを選択できます。詳細については、「障害復旧のための設計」および「高可用性のための設計」を参照してください。",
+ "guid": "257031a8-f034-436c-9f54-e82aab53c559",
+ "service": "Azure Expressroute",
+ "text": "geo 冗長回線の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute 専用回線では、オンプレミスと Azure の間にアクティブ/アクティブ接続が構成されている場合、\"99.95%\" の可用性が保証されます。このモードでは、ExpressRoute 接続の可用性が向上します。また、接続でリンク障害が発生した場合にフェイルオーバーを高速化するために、BFD を構成することもお勧めします。",
+ "guid": "068037d8-673f-4e86-bc9d-bf83fbe61d12",
+ "service": "Azure Expressroute",
+ "text": "アクティブ/アクティブ接続の計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "可用性ゾーン対応の Virtual Network Gateway を作成して回復性を高め、ディザスター リカバリーと高可用性のためにさまざまなリージョンで Virtual Network Gateway を計画します。",
+ "guid": "21f65e89-ffe2-489f-89f2-16cbc2e257d9",
+ "service": "Azure Expressroute",
+ "text": "仮想ネットワーク ゲートウェイの計画",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute 回線と Virtual Network Gateway の正常性の監視とアラートを、使用可能なさまざまなメトリックに基づいて設定します。",
+ "guid": "0f875bf3-de86-41b5-80d2-477de2f769a2",
+ "service": "Azure Expressroute",
+ "text": "回線とゲートウェイの正常性を監視する",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ExpressRoute は、サービス正常性を使用して、計画メンテナンスと計画外メンテナンスについて通知します。サービス正常性を構成すると、ExpressRoute 回線に加えられた変更について通知されます。",
+ "guid": "c84ca8b2-74f8-4d25-8fc3-5b30c9969b5f",
+ "service": "Azure Expressroute",
+ "text": "サービス正常性を有効にする",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "ca1c5676-1b0a-426e-baaf-da74ab806cb4",
+ "service": "Azure Expressroute",
+ "text": "アクティビティ ログを構成して、ログをアーカイブに送信します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ef124dcd-17e6-4b4e-9bdd-511ef1959a05",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute リソースにアクセスできる管理者アカウントのインベントリを保持します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "23fbb2f6-a269-4fb5-a3a0-04aae0516c91",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線で MD5 ハッシュを構成します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8e02b876-d810-498b-b9a5-e50730fb10d6",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct リソースの MACSec を構成します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "946a3e3d-bbaf-4b4a-ab80-2ef0a4631f30",
+ "service": "Azure Expressroute",
+ "text": "仮想ネットワーク トラフィックのプライベート ピアリングと Microsoft ピアリング経由でトラフィックを暗号化します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "アクティビティ ログは、ExpressRoute リソースのサブスクリプション レベルで実行された操作に関する分析情報を提供します。アクティビティ ログを使用すると、コントロール プレーンで操作が実行されたユーザーと日時を判断できます。データ保持期間はわずか 90 日間で、アーカイブのために Log Analytics、Event Hubs、またはストレージ アカウントに格納する必要があります。",
+ "guid": "9631d7ef-657c-4b07-9c75-96b2dcc5c5d2",
+ "service": "Azure Expressroute",
+ "text": "アーカイブにログを送信するようにアクティビティログを構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure RBAC を使用して、ExpressRoute 回線でピアリング構成を追加、更新、または削除できるユーザー アカウントを制限するロールを構成します。",
+ "guid": "42b91c75-909f-4366-b014-48ab48639faf",
+ "service": "Azure Expressroute",
+ "text": "管理アカウントのインベントリを維持する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "プライベート ピアリングまたは Microsoft ピアリングの構成中に、MD5 ハッシュを適用して、オンプレミス ルートと MSEE ルーター間のメッセージをセキュリティで保護します。",
+ "guid": "78f7d298-53bf-49ae-8ed7-994d46ccf2dd",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線で MD5 ハッシュを構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Media Access Control セキュリティは、データ リンク層でのポイント ツー ポイント セキュリティです。ExpressRoute Direct では、イーサネット リンクで通常は保護されていない ARP、DHCP、LACP などのプロトコルに対するセキュリティの脅威を防ぐための MACSec の構成がサポートされています。MACSec の構成方法の詳細については、「ExpressRoute Direct ポートの MACSec」を参照してください。",
+ "guid": "d495a140-702d-4e08-bb86-7ceac8141df2",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct リソースの MACSec を構成する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ExpressRoute 回線経由でサイト間 VPN トンネルを構成して、オンプレミス ネットワークと Azure 仮想ネットワーク間のデータ転送を暗号化します。トンネルは、プライベート ピアリングまたは Microsoft ピアリングを使用して構成できます。",
+ "guid": "7729c230-dbdf-4aec-9295-fcb0a0c365f2",
+ "service": "Azure Expressroute",
+ "text": "IPsecを使用したトラフィックの暗号化",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "43d6df90-c15b-494c-8d35-c4fc9180fbdb",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute の価格について理解しておいてください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "92065590-2f1a-4a81-a6a6-2b102f66f9e3",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線の SKU と必要な帯域幅を決定します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "f6e0770f-fa13-450e-8c81-baf51ba1b550",
+ "service": "Azure Expressroute",
+ "text": "必要な ExpressRoute 仮想ネットワーク ゲートウェイのサイズを決定します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "07d0ba21-7eef-47d1-8ba0-26fefa26c733",
+ "service": "Azure Expressroute",
+ "text": "コストを監視し、予算アラートを作成します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "d7be65f4-6500-49ea-92e3-3121fca4a076",
+ "service": "Azure Expressroute",
+ "text": "使用されなくなった ExpressRoute 回線のプロビジョニングを解除します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute の価格については、「Azure ExpressRoute の価格について」を参照してください。料金計算ツールを使用することもできます。オプションが容量の需要を満たすために適切なサイズに設定され、リソースを無駄にすることなく期待されるパフォーマンスを提供することを確認します。",
+ "guid": "f230ac81-7590-4300-9b9f-95d784e60ab2",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute の価格について理解する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute の使用に対する課金方法は、3 つの異なる SKU の種類によって異なります。ローカル SKU では、無制限のデータ プランが自動的に課金されます。Standard SKU と Premium SKU では、従量制課金または無制限のデータ プランを選択できます。すべてのイングレス データは、Global Reach アドオンを使用する場合を除いて無料です。コストと予算を最適化するには、ワークロードに最適な SKU の種類とデータ プランを理解することが重要です。ExpressRoute 回線のサイズ変更の詳細については、「ExpressRoute 回線の帯域幅のアップグレード」を参照してください。",
+ "guid": "3d8a5d49-af34-431f-b47f-ee8cf05479b5",
+ "service": "Azure Expressroute",
+ "text": "必要な SKU と帯域幅を決定する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 仮想ネットワーク ゲートウェイは、プライベート ピアリング経由で仮想ネットワークにトラフィックを渡すために使用されます。優先する Virtual Network Gateway SKU のパフォーマンスとスケールのニーズを確認します。オンプレミスから Azure へのワークロードで適切なゲートウェイ SKU を選択します。",
+ "guid": "82224292-a5a6-4b85-9b2f-b617117c4285",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 仮想ネットワーク ゲートウェイのサイズを決定する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 回線のコストを監視し、支出の異常と過剰支出のリスクに関するアラートを作成します。詳細については、「ExpressRoute のコストの監視」を参照してください。",
+ "guid": "e2e81918-e05e-49e1-a37c-cb65840c8699",
+ "service": "Azure Expressroute",
+ "text": "コストを監視し、予算アラートを作成する",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ExpressRoute 回線は、作成された瞬間から課金されます。不要なコストを削減するには、サービス プロバイダーで回線のプロビジョニングを解除し、サブスクリプションから ExpressRoute 回線を削除します。ExpressRoute 回線を削除する手順については、「ExpressRoute 回線のプロビジョニング解除」を参照してください。",
+ "guid": "131104a1-a17f-4b6b-9384-0b636a5d5265",
+ "service": "Azure Expressroute",
+ "text": "使用されなくなった ExpressRoute 回線のプロビジョニングを解除して削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "4c7d0c83-02a0-4535-a378-c2ab4c13469c",
+ "service": "Azure Expressroute",
+ "text": "オンプレミスと Azure ネットワーク間の接続監視を構成します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "69c4fb71-4d2c-4534-a4db-5e3146a31e1d",
+ "service": "Azure Expressroute",
+ "text": "通知を受信するための Service Health を構成します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "33b4fca5-1f90-4947-8091-6c23aba0651a",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Insights を通じて利用可能なメトリックとダッシュボードを Network Insights で確認します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "638c050d-7555-4575-bb8d-a4f2b613fa87",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute リソースのメトリックを確認します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "接続監視を使用すると、ExpressRoute プライベート ピアリングと Microsoft ピアリング接続を介して、オンプレミスのリソースと Azure の間の接続を監視できます。接続モニタは、ネットワーク パス上のどこに問題があるかを特定することでネットワークの問題を検出し、構成やハードウェアの障害を迅速に解決するのに役立ちます。",
+ "guid": "c6766a4e-7531-4335-af44-4fd1a3c706f4",
+ "service": "Azure Expressroute",
+ "text": "接続監視の構成",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "サービス正常性通知を設定して、サブスクリプション内のすべての ExpressRoute 回線に対して計画メンテナンスと今後のメンテナンスが発生したときにアラートを生成します。Service Health では、計画外のメンテナンスが発生した場合は、RCA と共に過去のメンテナンスも表示されます。",
+ "guid": "5ff3a7b5-974a-466d-ab01-ad90c143969d",
+ "service": "Azure Expressroute",
+ "text": "サービス正常性の構成",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ExpressRoute Insights と Network Insights を使用すると、ExpressRoute 回線、ゲートウェイ、接続メトリック、および正常性ダッシュボードを確認および分析できます。ExpressRoute Insights では、ExpressRoute 接続のトポロジ ビューも提供され、ピアリング コンポーネントの詳細をすべて 1 か所で表示できます。利用可能なメトリック:- 可用性- スループット- ゲートウェイメトリック",
+ "guid": "210546e8-29e3-40d9-869f-6236fddaadd0",
+ "service": "Azure Expressroute",
+ "text": "Network Insights でメトリクスを確認する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ExpressRoute では、Azure Monitor を使用してメトリックを収集し、構成に基づいてアラートを作成します。メトリックは、ExpressRoute 回線、ExpressRoute ゲートウェイ、ExpressRoute ゲートウェイ接続、ExpressRoute Direct について収集されます。これらのメトリックは、接続の問題を診断し、ExpressRoute 接続のパフォーマンスを理解するのに役立ちます。",
+ "guid": "8031ed87-7573-469a-9b05-01f4ff4d9231",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute リソースのメトリックを確認する",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "ワークロードの要件を満たすために ExpressRoute ゲートウェイのパフォーマンスをテストします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute ゲートウェイのサイズを大きくします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "102ee202-4b37-498a-8826-d698d11e3b03",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線の帯域幅をアップグレードします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "627c2d5f-e638-41fd-be98-9ba1bf195ce3",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute FastPath を有効にしてスループットを向上させます。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "040f4b75-2706-42f3-9a9c-cee611032d91",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線とゲートウェイのメトリックを監視します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Connectivity Toolkit を使用して ExpressRoute 回線全体のパフォーマンスをテストし、ネットワーク接続の帯域幅容量と待機時間を把握します。",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "ワークロードの要件を満たすために ExpressRoute ゲートウェイのパフォーマンスをテストします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "より高いゲートウェイ SKU にアップグレードして、オンプレミス環境と Azure 環境間のスループット パフォーマンスを向上させます。",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute ゲートウェイのサイズを大きくします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "作業負荷の要件を満たすために、回線帯域幅をアップグレードします。回線の帯域幅は、ExpressRoute 回線に接続されているすべての仮想ネットワーク間で共有されます。ワークロードによっては、1 つ以上の仮想ネットワークが回線上のすべての帯域幅を使い果たす可能性があります。",
+ "guid": "db8f8202-db07-497f-be72-17db8bda90c5",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線の帯域幅をアップグレードする",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Ultra パフォーマンスまたは ErGW3AZ 仮想ネットワーク ゲートウェイを使用している場合は、FastPath を有効にして、オンプレミス ネットワークと Azure 仮想ネットワーク間のデータ パスのパフォーマンスを向上させることができます。",
+ "guid": "01566559-f881-409b-b04e-7d79a71f18e4",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute FastPath を有効にしてスループットを向上させる",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ExpressRoute メトリックに基づいてアラートを設定し、特定のしきい値に達したときに事前に通知します。これらのメトリックは、ExpressRoute 回線で発生する停止やメンテナンスなど、ExpressRoute 接続で発生する可能性のある異常を理解するのに役立ちます。",
+ "guid": "6440df71-d371-4190-920f-01c1815446db",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 回線とゲートウェイのメトリックを監視する",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "94d626bf-3509-4311-8700-696d8d18617e",
+ "service": "Azure Files",
+ "text": "障害モード分析を使用する: 仮想ネットワーク、Azure Key Vault、Azure Content Delivery Network、Azure Front Door エンドポイントの可用性などの内部依存関係を考慮して、障害点を最小限に抑えます。Azure Files にアクセスするために資格情報が必要で、資格情報が Key Vault に見つからない場合、エラーが発生する可能性があります。または、ワークロードが欠落しているコンテンツ配信ネットワークに基づくエンドポイントを使用している場合は、エラーが発生する可能性があります。このような場合は、別のエンドポイントに接続するようにワークロードを設定する必要がある場合があります。故障モード分析の一般的な情報については、故障モード分析の実行に関する推奨事項を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "bedde06b-f58a-43ab-b6cc-76e41503e72a",
+ "service": "Azure Files",
+ "text": "信頼性と復旧のターゲットを定義する: Azure のサービス レベル アグリーメント (SLA) を確認します。ストレージ アカウントのサービス レベル目標 (SLO) を派生させます。たとえば、選択した冗長性構成が SLO に影響を与える可能性があります。リージョンの障害の影響、データ損失の可能性、および障害後のアクセスの復元に必要な時間を考慮してください。また、障害モード分析の一部として特定した内部依存関係の可用性も考慮してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Files",
+ "text": "データ冗長性の構成: 耐久性を最大限に高めるには、可用性ゾーンまたはグローバルリージョン間でデータをコピーする構成を選択します。可用性を最大にするには、プライマリ リージョンの停止中にクライアントがセカンダリ リージョンからデータを読み取ることができる構成を選択します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "61e937b4-1989-496a-af6f-5df76d352ed8",
+ "service": "Azure Files",
+ "text": "アプリケーションの設計: プライマリリージョンが使用できない場合にセカンダリリージョンからデータを読み取るように、アプリケーションをシームレスにシフトするように設計します。この設計上の考慮事項は、geo 冗長ストレージ (GRS) と geo ゾーン冗長ストレージ (GZRS) の構成にのみ適用されます。停止を適切に処理するようにアプリケーションを設計することで、顧客のダウンタイムを短縮します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "cb1c49d6-9cdb-48f6-a3f8-c35c2037fc92",
+ "service": "Azure Files",
+ "text": "回復目標の達成に役立つ機能を調べる: ファイルを復元可能にして、破損、編集、または削除されたファイルを回復できるようにします。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Files",
+ "text": "復旧計画を作成する: データ保護機能、バックアップと復元の操作、またはフェールオーバー手順を検討します。潜在的なデータ損失とデータの不整合、およびフェールオーバーの時間とコストに備えます。詳細については、「ディザスター リカバリー戦略の設計に関する推奨事項」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "8b151d5d-630d-438e-b7ad-aa487d6c5561",
+ "service": "Azure Files",
+ "text": "可用性に関する潜在的な問題を監視する: Azure Service Health ダッシュボードに登録して、可用性に関する潜在的な問題を監視します。Azure Monitor のストレージ メトリックと診断ログを使用して、アラートを調査します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "冗長性は、予期しない障害からデータを保護します。ZRS と GZRS の構成オプションは、さまざまな可用性ゾーン間でレプリケートされ、障害発生時にアプリケーションがデータの読み取りを続行できるようにします。詳細については、「停止シナリオ別の持続性と可用性」および「持続性と可用性のパラメーター」を参照してください。",
+ "guid": "5596d241-a342-4c47-b8db-29f7a519bf36",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントを冗長性のために構成します。可用性と持続性を最大限に高めるには、ゾーン冗長ストレージ (ZRS)、GRS、または GZRS を使用してアカウントを構成します。限られた Azure リージョンでは、Standard ファイル共有と Premium ファイル共有の ZRS がサポートされています。標準の SMB アカウントのみが GRS と GZRS をサポートします。Premium SMB 共有と NFS 共有では、GRS と GZRS はサポートされていません。Azure Files では、読み取りアクセス geo 冗長ストレージ (RA-GRS) または読み取りアクセス geo ゾーン冗長ストレージ (RA-GZRS) はサポートされていません。RA-GRS または RA-GZRS を使用するようにストレージ アカウントを構成すると、ファイル共有は GRS または GZRS として構成され、課金されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このプロパティは、アカウントのフェールオーバーを開始した場合に失われる可能性のあるデータの量を見積もるのに役立ちます。最終同期時刻より前に書き込まれたすべてのデータとメタデータはセカンダリリージョンで使用できますが、最終同期時刻より後に書き込まれたデータとメタデータは、セカンダリリージョンに書き込まれていないため、失われる可能性があります。",
+ "guid": "9fc3b4c1-257d-4bab-b373-1938930410a5",
+ "service": "Azure Files",
+ "text": "フェイルオーバーまたはフェイルバックを開始する前に、最終同期時刻プロパティの値を確認して、データ損失の可能性を評価してください。この推奨事項は、GRS および GZRS 構成にのみ適用されます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "論理的な削除は、ファイル共有レベルで機能し、Azure ファイル共有を誤って削除しないように保護します。ポイントインタイム リストアでは、ファイル共有を以前の状態に復元できるため、誤って削除や破損が発生するのを防ぐことができます。詳細については、「データ保護の概要」を参照してください。",
+ "guid": "8bcb6fde-bf94-4f36-8eae-347e5d4f0dea",
+ "service": "Azure Files",
+ "text": "バックアップとリカバリの戦略の一環として、論理的な削除を有効にし、スナップショットを使用してポイントインタイム リストアを行います。Azure Backup を使用して、SMB ファイル共有をバックアップできます。また、Azure File Sync を使用して、オンプレミスの SMB ファイル共有を Azure ファイル共有にバックアップすることもできます。 Azure Backup では、Azure Files の保管型バックアップ (プレビュー) を実行して、ランサムウェア攻撃や、悪意のあるアクターや悪意のある管理者によるソース データの損失からデータを保護することもできます。コンテナー バックアップを使用すると、Azure Backup は Recovery Services コンテナーにデータをコピーして格納します。これにより、データのオフサイトコピーが作成され、最大99年間保持できます。Azure Backup は、バックアップ ポリシーで定義されているスケジュールとリテンション期間に従って復旧ポイントを作成および管理します。詳細情報。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "2548e433-aeab-4738-bec1-0a3587ac4d15",
+ "service": "Azure Files",
+ "text": "Azure Storage のセキュリティ ベースラインを確認する: 開始するには、Storage のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "6121894c-398e-479f-b386-309e7cf3caa0",
+ "service": "Azure Files",
+ "text": "ネットワーク制御を使用してイングレス トラフィックとエグレス トラフィックを制限することを検討する: ID ベースの認証を使用してファイル共有へのアクセスを許可する場合など、特定の条件下では、ストレージ アカウントをパブリック インターネットに公開することに抵抗がない場合があります。ただし、ネットワーク制御を使用して、ユーザーとアプリケーションに必要最小限のアクセス権限を付与することをお勧めします。詳細については、「ストレージ アカウントのネットワーク セキュリティにアプローチする方法」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8395a636-8c19-4b22-a175-2a0f0d83f44f",
+ "service": "Azure Files",
+ "text": "攻撃対象領域を縮小する: 転送中の暗号化を使用し、セキュリティで保護されていない (HTTP) 接続を介したアクセスを防止して、攻撃対象領域を縮小します。最新バージョンのトランスポート層セキュリティ (TLS) プロトコルを使用してデータを送受信するようにクライアントに要求します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "62e5154f-98cb-4dc2-8e62-dd5c546d6a6d",
+ "service": "Azure Files",
+ "text": "ストレージ アカウント キーの使用を最小限に抑える: ID ベースの認証は、ストレージ アカウント キーを使用する場合よりも優れたセキュリティを提供します。ただし、ファイル共有の完全な管理制御 (ファイルの所有権を取得する機能など) を取得するには、ストレージ アカウント キーを使用する必要があります。セキュリティ プリンシパルには、タスクを実行するために必要なアクセス許可のみを付与します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "dd5352d4-faa0-4a85-83db-00395c1a9df8",
+ "service": "Azure Files",
+ "text": "機密情報の保護: ストレージ アカウント キーやパスワードなどの機密情報を保護します。これらの形式の認証を使用することはお勧めしませんが、使用する場合は、ローテーション、期限切れ、および安全に保管する必要があります。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1edd34b4-610b-483a-83a0-d8bcb5915558",
+ "service": "Azure Files",
+ "text": "脅威の検出: Microsoft Defender for Storage を有効にして、SMB または FileREST プロトコル経由で Azure ファイル共有にアクセスしたり、Azure ファイル共有を悪用したりする有害な可能性のある試みを検出します。サブスクリプション管理者は、疑わしいアクティビティの詳細と、脅威の調査と修復方法に関する推奨事項が記載された電子メール アラートを受け取ります。Defender for Storage では、Azure ファイル共有のウイルス対策機能はサポートされていません。Defender for Storage を使用する場合、トランザクションの多いファイル共有では大きなコストが発生するため、特定のストレージ アカウントに対して Defender for Storage をオプトアウトすることを検討してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "アカウントをロックして、ストレージ・アカウントが誤ってまたは悪意を持って削除され、データが失われるのを防ぎます。",
+ "guid": "e125f557-f42e-4462-b680-0e7375d89a99",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントに Azure Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.x はインターネットに安全なプロトコルですが、組織ポリシーや ISP ポリシーを変更できない場合があります。別のオプションとして、VPN ゲートウェイまたは ExpressRoute 接続を使用できます。",
+ "guid": "14cda8e5-c05a-4c69-9352-2f7b39b5d423",
+ "service": "Azure Files",
+ "text": "TCP ポート 445 を送信で開くか、Azure の外部のクライアントがファイル共有にアクセスするための VPN ゲートウェイまたは Azure ExpressRoute 接続を設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 1 は、古く、非効率的で、安全でないプロトコルです。クライアントで無効にして、セキュリティ体制を改善します。",
+ "guid": "e2ef284e-804b-4592-866f-5d577069b823",
+ "service": "Azure Files",
+ "text": "ポート 445 を開く場合は、Windows クライアントと Linux クライアントで SMBv1 を必ず無効にしてください。Azure Files では SMB 1 はサポートされていませんが、クライアントで無効にする必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワーク トラフィックは、パブリック インターネットではなく Microsoft バックボーン ネットワークを経由するため、パブリック インターネットからのリスクにさらされる必要がなくなります。",
+ "guid": "19d4b509-167c-4144-9705-9d65c48ec279",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントへのパブリック ネットワーク アクセスを無効にすることを検討してください。パブリック ネットワーク アクセスは、Azure の外部にある SMB クライアントとサービスがストレージ アカウントへのアクセスを必要とする場合にのみ有効にします。パブリック ネットワーク アクセスを無効にする場合は、ストレージ アカウントのプライベート エンドポイントを作成します。プライベートエンドポイントの標準的なデータ処理料金が適用されます。プライベート エンドポイントは、パブリック エンドポイントへの接続をブロックしません。前述のように、パブリックネットワークアクセスを無効にする必要があります。ファイル共有に静的 IP アドレスを必要とせず、プライベート エンドポイントのコストを回避したい場合は、代わりにパブリック エンドポイントのアクセスを特定の仮想ネットワークと IP アドレスに制限できます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "攻撃者に隙を与えるリスクを最小限に抑えます。",
+ "guid": "105c5f3d-dfc6-459b-93f0-c5046972f1ba",
+ "service": "Azure Files",
+ "text": "特定の仮想ネットワークへのアクセスを制限するファイアウォール規則を有効にします。ゼロアクセスから始めて、クライアントとサービスに必要な最小限のアクセスを系統的かつ段階的に提供します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ID ベースの認証を使用して、攻撃者がストレージ アカウント キーを使用してファイル共有にアクセスする可能性を減らします。",
+ "guid": "1ba283cb-62bf-4ee8-9657-ba59ddd6bccd",
+ "service": "Azure Files",
+ "text": "可能な場合は、AES-256 Kerberos チケット暗号化による ID ベースの認証を使用して、SMB Azure ファイル共有へのアクセスを承認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault を使用して、アプリケーションと共にキーを保存するのではなく、実行時にキーを取得します。また、Key Vault を使用すると、アプリケーションを中断することなくキーを簡単にローテーションできます。アカウント キーを定期的にローテーションして、データが悪意のある攻撃にさらされるリスクを軽減します。",
+ "guid": "7cf01b2b-1e7d-47fe-94e1-a65cc7750063",
+ "service": "Azure Files",
+ "text": "ストレージ アカウント キーを使用する場合は、Key Vault に格納し、定期的に再生成してください。共有の SMB セキュリティ設定から NTLMv2 を削除することで、ストレージ アカウント キーによるファイル共有へのアクセスを完全に禁止できます。ただし、管理者は一部のタスクでアカウント キーを使用する必要があるため、通常は共有の SMB セキュリティ設定から NTLMv2 を削除しないでください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この設定により、ストレージ アカウントに対して行われるすべての要求が、セキュリティで保護された接続 (HTTPS) 経由で行われるようになります。HTTP 経由で行われた要求はすべて失敗します。",
+ "guid": "4fbd14ad-9bf1-491f-b621-35f086b48ccd",
+ "service": "Azure Files",
+ "text": "ほとんどの場合、すべてのストレージ アカウントで [安全な転送が必要] オプションを有効にして、SMB ファイル共有の転送中の暗号化を有効にする必要があります。非常に古いクライアントが共有にアクセスできるようにする必要がある場合は、このオプションを有効にしないでください。安全な転送を無効にする場合は、ネットワーク制御を使用してトラフィックを制限してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 は、最新の暗号化アルゴリズムと暗号スイートをサポートしていない TLS 1.0 および 1.1 よりも安全で高速です。",
+ "guid": "65d8332d-6657-4466-9dc1-5d1497d14041",
+ "service": "Azure Files",
+ "text": "TLS 1.2 がクライアントがデータを送受信するための最小バージョンになるように、ストレージ アカウントを構成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Windows 10 と共にリリースされた SMB 3.1.1 には、重要なセキュリティ更新プログラムとパフォーマンス更新プログラムが含まれています。AES-256-GCM は、より安全なチャネル暗号化を提供します。",
+ "guid": "010a5a8d-db30-4c97-975e-db80658bdb4d",
+ "service": "Azure Files",
+ "text": "サポートされている最新の SMB プロトコル バージョン (現在は 3.1.1.) のみを使用し、SMB チャネルの暗号化には AES-256-GCM のみを使用します。Azure Files では、組織の要件に応じて、SMB プロトコルを切り替え、互換性や安全性を高めるために使用できる設定が公開されています。デフォルトでは、すべての SMB バージョンが許可されます。ただし、SMB 2.1 は転送中のデータの暗号化をサポートしていないため、[安全な転送が必要] を有効にした場合、SMB 2.1 は許可されません。これらの設定を高レベルのセキュリティに制限すると、一部のクライアントがファイル共有に接続できなくなる可能性があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "04493486-a5be-4bb2-8940-cea321db8380",
+ "service": "Azure Files",
+ "text": "Storage のセキュリティ ベースラインを確認する: 開始するには、Storage のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "85f4e9b5-aa91-4d96-ad22-9132f7412718",
+ "service": "Azure Files",
+ "text": "組織のセキュリティ要件を理解する: NFS Azure ファイル共有は、NFSv4.1 プロトコルを使用する Linux クライアントのみをサポートし、4.1 プロトコル仕様のほとんどの機能をサポートします。Kerberos 認証、アクセス制御リスト (ACL)、転送中の暗号化など、一部のセキュリティ機能はサポートされていません。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "7f1ac6f7-d832-4c71-adbd-ae31d36320a7",
+ "service": "Azure Files",
+ "text": "ネットワーク レベルのセキュリティと制御を使用してイングレス トラフィックとエグレス トラフィックを制限する: ID ベースの認証は NFS Azure ファイル共有では使用できないため、ネットワーク レベルのセキュリティと制御を使用して、ユーザーとアプリケーションに必要最小限のレベルのアクセス権を付与する必要があります。詳細については、「ストレージ アカウントのネットワーク セキュリティにアプローチする方法」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "アカウントをロックして、ストレージ アカウントが誤ってまたは悪意を持って削除され、データが失われる可能性があるのを防ぎます。",
+ "guid": "a51426ff-75f8-429b-940a-6ddd2c06d3fb",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントに Resource Manager ロックを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ポート 2049 を開いて、クライアントが NFS Azure ファイル共有と通信できるようにします。",
+ "guid": "af6d0dd1-6add-4f9b-96b6-e65dba4242a4",
+ "service": "Azure Files",
+ "text": "NFS 共有をマウントするクライアントでポート 2049 を開く必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワーク トラフィックは、パブリック インターネットではなく Microsoft バックボーン ネットワークを経由するため、パブリック インターネットからのリスクにさらされる必要がなくなります。",
+ "guid": "528b4915-a4d9-413d-9b79-e4078f5cd27d",
+ "service": "Azure Files",
+ "text": "NFS Azure ファイル共有には、制限されたネットワーク経由でのみアクセスできます。そのため、ストレージ アカウントのプライベート エンドポイントを作成するか、パブリック エンドポイントへのアクセスを選択した仮想ネットワークと IP アドレスに制限する必要があります。プライベートエンドポイントを作成することをお勧めします。Azure Files では NFS プロトコルを使用した転送中の暗号化がサポートされていないため、NFS 共有のネットワーク レベルのセキュリティを構成する必要があります。NFS Azure ファイル共有を使用するには、ストレージ アカウントの [セキュリティで保護された転送が必要] 設定を無効にする必要があります。プライベートエンドポイントには、標準のデータ処理料金が適用されます。ファイル共有に静的 IP アドレスを必要とせず、プライベート エンドポイントのコストを回避したい場合は、代わりにパブリック エンドポイントのアクセスを制限できます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ストレージ アカウント キーの使用を禁止して、ストレージ アカウントのセキュリティを強化します。",
+ "guid": "2f92995e-d1d1-411d-96cd-309faf0a6ada",
+ "service": "Azure Files",
+ "text": "ストレージ アカウント キーへのアクセスをストレージ アカウント レベルで禁止することを検討してください。NFS ファイル共有をマウントするために、このアクセス権は必要ありません。ただし、ファイル共有の完全な管理制御 (ファイルの所有権を取得する機能を含む) には、ストレージ アカウント キーの使用が必要であることに注意してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "bc87a075-cc79-46be-a413-106c995f41ef",
+ "service": "Azure Files",
+ "text": "ワークロードに Premium ファイル共有 (Azure Premium SSD) のパフォーマンスが必要かどうか、または Azure Standard HDD ストレージで十分かどうかを判断する: 必要なストレージの種類に基づいて、ストレージ アカウントの種類と課金モデルを決定します。大量の 1 秒あたりの入出力操作 (IOPS)、非常に高速なデータ転送速度、または非常に低い待機時間が必要な場合は、Premium Azure ファイル共有を選択する必要があります。NFS Azure ファイル共有は、Premium レベルでのみ使用できます。NFS ファイル共有と SMB ファイル共有は、Premium レベルで同じ価格です。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "fc9a86d1-8dcf-4e82-87fa-81d736ab60f4",
+ "service": "Azure Files",
+ "text": "ファイル共有のストレージ アカウントを作成し、冗長性レベルを選択する: Standard (GPv2) アカウントまたは Premium (FileStorage) アカウントを選択します。選択する冗長性レベルは、コストに影響します。冗長性が高いほど、コストは高くなります。ローカル冗長ストレージ (LRS) は、最も手頃な価格です。GRS は、標準の SMB ファイル共有でのみ使用できます。Standard ファイル共有では、ストレージ アカウント レベルでのトランザクション情報のみが表示されるため、課金を完全に可視化するために、各ストレージ アカウントに 1 つのファイル共有のみをデプロイすることをお勧めします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "1a78abc4-bed1-486b-952e-fd147db1123a",
+ "service": "Azure Files",
+ "text": "請求額の計算方法を理解する: Standard Azure ファイル共有は、従量課金制モデルを提供します。Premium 共有では、プロビジョニング モデルが使用され、一定量の容量、IOPS、スループットを事前に指定して支払います。従量課金制モデルでは、メーターは、アカウントに保存されているデータの量、容量、およびそのデータの使用状況に基づくトランザクションの数と種類を追跡します。従量課金制モデルは、使用した分だけ支払うため、コスト効率が高くなります。従量課金制モデルでは、パフォーマンス要件や需要の変動に基づいてストレージを過剰にプロビジョニングまたはプロビジョニング解除する必要はありません。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "52d8f743-4489-49a3-876c-0f36827a8f8e",
+ "service": "Azure Files",
+ "text": "容量と運用のコストを見積もる: Azure 料金計算ツールを使用して、データ ストレージ、イングレス、エグレスに関連するコストをモデル化できます。さまざまなリージョン、アカウントタイプ、および冗長性構成に関連するコストを比較します。詳細については、「Azure Files の価格」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "9dede643-062f-40d2-869e-10458f04859a",
+ "service": "Azure Files",
+ "text": "最もコスト効率の高いアクセス階層を選択する: Standard SMB Azure ファイル共有には、トランザクション最適化、ホット、クールの 3 つのアクセス階層が用意されています。3 つの層はすべて、同じ標準ストレージ ハードウェアに格納されます。これら 3 つの層の主な違いは、保存データの保管場所のストレージ料金がクーラー層で低く、トランザクション価格がクール層で高いことです。詳細については、「Standard レベルの違い」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "8ec1a7f3-7cff-41f4-9cd5-59656983c739",
+ "service": "Azure Files",
+ "text": "必要な付加価値サービスを決定する: Azure Files では、バックアップ、Azure File Sync、Defender for Storage などの付加価値サービスとの統合がサポートされています。これらのソリューションには独自のライセンスと製品コストがありますが、多くの場合、ファイルストレージの総所有コストの一部と見なされます。Azure File Sync を使用する場合は、他のコスト面を考慮してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "ae36a7c7-3255-4544-b751-bdbe08716cc2",
+ "service": "Azure Files",
+ "text": "ガードレールを作成する: サブスクリプションとリソース グループに基づいて予算を作成します。ガバナンスポリシーを使用して、リソースのタイプ、構成、および場所を制限します。さらに、ロールベースのアクセス制御 (RBAC) を使用して、過剰支出につながる可能性のあるアクションをブロックします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "b5ca80d5-d5c8-4d24-8a3c-b2d96a2bcd71",
+ "service": "Azure Files",
+ "text": "コストの監視: コストが予算内に収まっていることを確認し、コストを予測と比較し、過剰支出が発生している場所を確認します。Azure portal のコスト分析ウィンドウを使用して、コストを監視できます。また、コスト データをストレージ アカウントにエクスポートし、Excel または Power BI を使用してそのデータを分析することもできます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "a6bc4298-8317-4153-b281-2b83af53fd26",
+ "service": "Azure Files",
+ "text": "使用状況の監視: 使用パターンを継続的に監視して、未使用または十分に使用されていないストレージ アカウントとファイル共有を検出します。容量が予期せず増加していないか確認します。これは、多数のログ ファイルまたは論理的に削除されたファイルを収集していることを示している可能性があります。ファイルを削除したり、よりコスト効率の高いアクセス層にファイルを移動したりするための戦略を立てます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Files への移行は、トランザクション負荷の高い一時的なワークロードです。トランザクションの多いワークロードの価格を最適化して、移行コストを削減します。",
+ "guid": "4fc0a2e6-1138-4c55-9644-890104fecd40",
+ "service": "Azure Files",
+ "text": "標準の Azure ファイル共有に移行する場合は、初期移行時にトランザクション最適化レベルで開始することをお勧めします。移行中のトランザクション使用量は、通常、通常のトランザクション使用量を示すものではありません。この考慮事項は、プロビジョニングされた課金モデルではトランザクションに対して課金されないため、Premium ファイル共有には適用されません。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Standard ファイル共有に適切なアクセス層を選択して、コストを大幅に削減します。",
+ "guid": "4ee4d06f-ae90-4ba1-b87e-608a8871e182",
+ "service": "Azure Files",
+ "text": "ワークロードを移行した後、Standard ファイル共有を使用する場合は、ファイル共有に最もコスト効率の高いアクセス階層 (ホット、クール、またはトランザクション最適化) を慎重に選択します。数日または数週間定期的に使用した後、料金計算ツールにトランザクション数を挿入して、ワークロードに最適な階層を特定できます。ほとんどのお客様は、シェアを積極的に使用している場合でも、クールを選択する必要があります。ただし、各共有を調べ、ストレージ容量とトランザクションのバランスを比較して、階層を決定する必要があります。トランザクション コストが請求額のかなりの割合を占める場合、クール アクセス層の使用による節約により、多くの場合、このコストが相殺され、全体的なコスト全体が最小限に抑えられます。Standard ファイル共有をアクセス階層間で移動するのは、ワークロード パターンの変更を最適化するために必要な場合にのみ行うことをお勧めします。各移動にはトランザクションが発生します。詳細については、「Standard レベル間の切り替え」を参照してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "プレミアム ファイル共有を妥当な量だけオーバープロビジョニングして、パフォーマンスを維持し、将来の成長とパフォーマンス要件を考慮に入れます。",
+ "guid": "569b045f-3018-4487-be79-5ae7fe5f42f6",
+ "service": "Azure Files",
+ "text": "Premium 共有を使用する場合は、ワークロードに対して十分な容量とパフォーマンスをプロビジョニングし、不要なコストが発生するほど多くはプロビジョニングしないようにします。2 倍から 3 倍のオーバープロビジョニングをお勧めします。Premium ファイル共有は、ストレージと入出力 (IO) のパフォーマンス特性に応じて動的にスケールアップまたはスケールダウンできます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "3年間の予約では、ファイルストレージの総コストから最大36%の割引を受けることができます。予約はパフォーマンスに影響しません。",
+ "guid": "e4d7ee80-2657-4a1b-bf32-b16588f1511e",
+ "service": "Azure Files",
+ "text": "Azure Files の予約 (予約インスタンスとも呼ばれます) を使用して、ストレージの使用を事前にコミットし、割引を受けます。運用ワークロードまたは一貫したフットプリントの開発/テスト ワークロードに予約を使用します。詳細については、「ストレージ予約によるコストの最適化」を参照してください。予約には、トランザクション、帯域幅、データ転送、メタデータ ストレージの料金は含まれません。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "差分スナップショットを使用すると、同じデータを格納しても複数回課金されることはありません。ただし、Azure Files の請求額を削減するために、スナップショットの使用状況を監視する必要があります。",
+ "guid": "90fbd856-01ee-41d2-a912-039edc971236",
+ "service": "Azure Files",
+ "text": "スナップショットの使用状況を監視します。スナップショットには料金が発生しますが、各スナップショットのストレージ使用量の差分に基づいて課金されます。各スナップショットの差額に対してのみ支払います。詳細については、「スナップショット」を参照してください。Azure File Sync では、通常の使用の一部として共有レベルとファイルレベルのスナップショットが取得されるため、Azure Files の請求額が増加する可能性があります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "論理的に削除されたファイルが積み重なって容量のコストが増加しないように、保持期間を設定します。構成された保持期間が経過すると、完全に削除されたデータにはコストはかかりません。",
+ "guid": "d28f02bd-5de7-4d5b-bfbf-46ff161833b5",
+ "service": "Azure Files",
+ "text": "論理的な削除機能の保持期間を設定します (特に、最初に使用を開始するとき)。この機能が請求にどのように影響するかをよりよく理解するために、短い保持期間から始めることを検討してください。推奨される最小保持期間は 7 日間です。Standard ファイル共有と Premium ファイル共有を論理的な削除を行うと、プロビジョニングされた容量ではなく、使用済み容量として課金されます。また、Premium ファイル共有は、論理的な削除状態の間はスナップショット レートで課金されます。Standard ファイル共有は、論理的な削除状態の間、通常のレートで課金されます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Files",
+ "text": "メンテナンス計画と緊急時の復旧計画を作成する: データ保護機能、バックアップと復元の操作、フェールオーバー手順を検討します。潜在的なデータ損失とデータの不整合、およびフェールオーバーの時間とコストに備えます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "6fd27f65-59e7-41ee-8994-d93ef20dbd99",
+ "service": "Azure Files",
+ "text": "ストレージ アカウントの正常性を監視する: Storage insights ダッシュボードを作成して、可用性、パフォーマンス、回復性のメトリックを監視します。アラートを設定して、顧客が気付く前にシステムの問題を特定して対処します。診断設定を使用して、リソース ログを Azure Monitor ログ ワークスペースにルーティングします。その後、ログをクエリして、アラートをより深く調査できます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "e6d6588e-c646-4221-832a-0e289e272531",
+ "service": "Azure Files",
+ "text": "ファイル共有のアクティビティを定期的に確認する: 共有のアクティビティは、時間の経過と共に変化する可能性があります。Standard ファイル共有をよりクール アクセス層に移動するか、Premium 共有の容量をプロビジョニングまたはプロビジョニング解除できます。Standard ファイル共有を別のアクセス層に移動すると、トランザクション料金が発生します。標準のファイル共有は、毎月の請求額を減らすために必要な場合にのみ移動します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "既存の DevOps プロセスを使用して新しいストレージ アカウントをデプロイし、Azure Policy を使用してその構成を適用できます。",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Files",
+ "text": "コードとしてのインフラストラクチャ (IaC) を使用して、Azure Resource Manager テンプレート (ARM テンプレート)、Bicep、または Terraform でストレージ アカウントの詳細を定義します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各アカウントの健康状態と操作を追跡できます。ダッシュボードとレポートを簡単に作成して、関係者がストレージ アカウントの正常性を追跡できます。",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Files",
+ "text": "Storage insights を使用して、ストレージ アカウントの正常性とパフォーマンスを追跡します。Storage insights は、すべてのストレージ アカウントの障害、パフォーマンス、可用性、容量の統合ビューを提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Monitor は、ファイル共有の可用性、パフォーマンス、回復性を表示します。",
+ "guid": "a4946cee-c1bc-4f12-9819-fddf25f093c4",
+ "service": "Azure Files",
+ "text": "Monitor を使用して、可用性、待機時間、使用状況などのメトリックを分析し、アラートを作成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "6c44da65-6a81-442d-87e7-dd1ecdbca0a5",
+ "service": "Azure Files",
+ "text": "スケールの計画: ストレージ アカウント、Azure Files、Azure File Sync のスケーラビリティとパフォーマンスのターゲットを理解します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "d9878efd-6174-4cf7-b7f4-429d8e82e577",
+ "service": "Azure Files",
+ "text": "アプリケーションと使用パターンを理解して予測可能なパフォーマンスを実現する: レイテンシ感度、IOPS とスループットの要件、ワークロードの期間と頻度、ワークロードの並列化を決定します。マルチスレッド アプリケーションに Azure Files を使用すると、サービスのパフォーマンスの上限を達成できます。ほとんどのリクエストがメタデータ中心 (createfile、openfile、closefile、queryinfo、querydirectory など) である場合、リクエストは読み取り操作と書き込み操作よりも短いレイテンシーを生み出します。この問題が発生した場合は、ファイル共有を同じストレージ アカウント内の複数のファイル共有に分割することを検討してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "3e382c2e-26ee-459d-967e-19377821c26e",
+ "service": "Azure Files",
+ "text": "最適なストレージ アカウントの種類を選択する: ワークロードで大量の IOPS、非常に高速なデータ転送速度、または非常に低い待機時間が必要な場合は、プレミアム (FileStorage) ストレージ アカウントを選択する必要があります。標準の汎用 v2 アカウントは、ほとんどの SMB ファイル共有ワークロードに使用できます。2 つのストレージ アカウントの種類間の主なトレードオフは、コストとパフォーマンスです。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "a0564644-9831-4f33-b4e7-6a56a6a658fb",
+ "service": "Azure Files",
+ "text": "クライアントを接続するのと同じリージョンにストレージ アカウントを作成して待機時間を短縮する: Azure Files サービスから離れるほど、待機時間が長くなり、パフォーマンス スケールの制限を達成するのが難しくなります。この考慮事項は、オンプレミス環境から Azure Files にアクセスする場合に特に当てはまります。可能であれば、ストレージ アカウントとクライアントが同じ Azure リージョンに併置されていることを確認してください。ネットワーク待機時間を最小限に抑えるか、ExpressRoute 接続を使用してオンプレミス ネットワークをプライベート接続経由で Microsoft クラウドに拡張することで、オンプレミス クライアント用に最適化します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "0dfbbd8e-9f88-4e9d-b13c-01f12078faef",
+ "service": "Azure Files",
+ "text": "パフォーマンス データの収集: レイテンシ、可用性、使用状況のメトリクスなど、ワークロードのパフォーマンスをモニタリングします。ログを分析して、タイムアウトや調整などの問題を診断します。ファイル共有が調整されている、調整されようとしている、または待機時間が長い場合に通知するアラートを作成します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "86f0acc5-ce95-4ea0-b0b7-b733f1b2b10b",
+ "service": "Azure Files",
+ "text": "ハイブリッド デプロイの最適化: Azure File Sync を使用する場合、同期のパフォーマンスは、Windows Server と基になるディスク構成、サーバーと Azure ストレージ間のネットワーク帯域幅、ファイル サイズ、データセットの合計サイズ、データセットのアクティビティなど、多くの要因によって異なります。Azure File Sync に基づくソリューションのパフォーマンスを測定するには、ファイルやディレクトリなど、1 秒あたりに処理するオブジェクトの数を決定します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "スループットとIOPSを向上させながら、総所有コストを削減します。パフォーマンス上の利点は、負荷を分散するファイルの数とともに増加します。",
+ "guid": "24a072d9-074d-4bcf-a65d-9a14336f8075",
+ "service": "Azure Files",
+ "text": "Premium SMB ファイル共有の SMB マルチチャネルを有効にします。SMB マルチチャネルを使用すると、SMB 3.1.1 クライアントは SMB Azure ファイル共有への複数のネットワーク接続を確立できます。SMB マルチチャネルは、クライアント側 (クライアント) とサービス側 (Azure) の両方で機能が有効になっている場合にのみ機能します。Windows クライアントでは、SMB マルチチャネルは既定で有効になっていますが、ストレージ アカウントで有効にする必要があります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "大規模なパフォーマンスを向上させ、NFS ファイル共有の総保有コストを削減します。",
+ "guid": "c06bc804-3315-43f1-96ca-70169c020494",
+ "service": "Azure Files",
+ "text": "Linux クライアント上の NFS Azure ファイル共有で nconnect クライアント側マウント オプションを使用します。Nconnect を使用すると、クライアントと NFSv4.1 の Azure Files Premium サービスとの間で、より多くの TCP 接続を使用できます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "可能な限り最高のクライアント エクスペリエンスを提供するために、調整を回避します。",
+ "guid": "494347eb-d007-45b5-b13c-9a28ee4f8e9a",
+ "service": "Azure Files",
+ "text": "ファイル共有またはストレージ アカウントが調整されていないことを確認します。これにより、待機時間が長くなったり、スループットが低くなったり、IOPS が低くなったりする可能性があります。要求は、IOPS、イングレス、またはエグレスの制限に達すると調整されます。Standard ストレージ アカウントの場合、調整はアカウント レベルで行われます。Premium ファイル共有の場合、通常、調整は共有レベルで行われます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "5820ff87-d98e-490e-93a0-28028bbb05e6",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall をハブ仮想ネットワークにデプロイするか、Azure Virtual WAN ハブの一部としてデプロイします。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "7c605481-a9d5-480f-8738-ac2022ef28ed",
+ "service": "Azure Firewall",
+ "text": "Availability Zones の回復性を活用します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "2ceafe5f-6511-42a6-9687-cebaf586b293",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall ポリシー構造を作成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "85a53628-bd7b-43bb-a817-b6f0c11c34c9",
+ "service": "Azure Firewall",
+ "text": "既知の問題リストを確認します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "74a2596f-1cc9-4715-8de2-5afdde7b9f9a",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の正常性状態を監視します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "ハブアンドスポーク型で推移的なアーキテクチャを簡単に作成でき、トラフィックのガバナンスと保護のためのネイティブセキュリティサービスを利用できます。 ネットワーク トポロジの詳細については、Azure クラウド導入フレームワークのドキュメントを参照してください。",
+ "guid": "21f4d348-c086-4e96-b5bc-91f8a3c25841",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager を従来のハブ & スポークまたは Azure Virtual WAN ネットワーク トポロジと共に使用して、Azure Firewall のインスタンスをデプロイおよび管理します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall ポリシーは、中央の基本ポリシーをオーバーレイするために階層構造に配置できます。特定のリージョンの要件を満たすためのきめ細かなポリシーを許可します。ロールベースのアクセス制御 (RBAC) を通じて、増分ファイアウォール ポリシーをローカル セキュリティ チームに委任します。DNAT ルールや DNS 設定など、一部の設定はインスタンスごとに固有ですが、複数の特殊なポリシーが必要になる場合があります。",
+ "guid": "1e604a31-46f0-4fcc-9f0e-1ca46cc3f677",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall ポリシーを作成して、グローバル ネットワーク環境全体のセキュリティ体制を管理します。Azure Firewall のすべてのインスタンスにポリシーを割り当てます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "既存のデプロイの場合は、Azure Firewall ルールを Azure Firewall Manager ポリシーに移行します。Azure Firewall Manager を使用して、ファイアウォールとポリシーを一元的に管理します。 詳細については、「Azure Firewall Premium への移行」を参照してください。",
+ "guid": "d17fbf01-c796-45dd-9ca4-99af38b2ae9b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall クラシック ルールを既存のデプロイの Azure Firewall Manager ポリシーに移行します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall 製品グループは、この場所で既知の問題の最新の一覧を保持しています。このリストには、設計上の動作、開発中の修正、プラットフォームの制限、および可能な回避策または軽減策に関連する重要な情報が含まれています。",
+ "guid": "b7623c43-bb6b-4629-a655-551c92e2dffa",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の既知の問題の一覧を確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ポリシーの構造には、ルールとルール コレクション グループの数、ポリシーの合計サイズ、ソース/ターゲットの宛先など、制限があります。必ずポリシーを作成し、文書化されたしきい値を超えないようにしてください。",
+ "guid": "9230da4d-4e27-4106-9552-294b1a93d780",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall ポリシーが Azure Firewall の制限と推奨事項に準拠していることを確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall では、1 つの可用性ゾーンにデプロイされる場合と、複数のゾーンにデプロイされる場合で異なる SLA が提供されます。詳細については、「Azure Firewall の SLA」を参照してください。すべての Azure SLA の詳細については、「Azure サービスの SLA の概要」を参照してください。",
+ "guid": "6a88967d-b182-437d-ac3b-1cb45ddfaa86",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall を複数の可用性ゾーンにデプロイして、より高いサービス レベル アグリーメント (SLA) を実現します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "従来のハブ&スポークアーキテクチャについては、この記事でマルチリージョンの詳細について説明します。セキュリティ保護付き仮想ハブ (Azure Virtual WAN) の場合、ルーティング インテントとポリシーを構成して、ハブ間通信とブランチ間通信をセキュリティで保護する必要があります。障害に対する耐性とフォールト トレラント性を考慮して設計されたワークロードの場合は、Azure Firewall と Azure Virtual Network のインスタンスをリージョン リソースと見なすことを忘れないでください。",
+ "guid": "a4b78865-a047-4afc-b7e6-b2f54cee83cb",
+ "service": "Azure Firewall",
+ "text": "マルチリージョン環境では、リージョンごとに Azure Firewall インスタンスをデプロイします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Firewall の正常性状態の主要なメトリック インジケーター (スループット、ファイアウォールの正常性状態、SNAT ポート使用率、AZFW 待機時間プローブ メトリックなど) を綿密に監視します。さらに、Azure Firewall は Azure Resource Health と統合されるようになりました。Azure Firewall リソース正常性チェックを使用すると、Azure Firewall の正常性状態を表示し、Azure Firewall リソースに影響を与える可能性のあるサービスの問題に対処できるようになりました。",
+ "guid": "9621bb59-3034-4e42-8344-5ce24b47425b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall のメトリックとリソースの正常性状態を監視します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "b0b563a2-ec75-4a12-981a-6c6138175122",
+ "service": "Azure Firewall",
+ "text": "強制トンネリングが必要かどうかを判断します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c39df35c-43a4-4bc2-ae65-3201a1b274a4",
+ "service": "Azure Firewall",
+ "text": "最小特権のアクセス基準に基づいてポリシーのルールを作成します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "08bebd22-0d6a-469c-ae5b-fed8774452de",
+ "service": "Azure Firewall",
+ "text": "脅威インテリジェンスを活用。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "89484b0c-7b36-4fa2-9064-ae6db7dc411a",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall DNS プロキシを有効にします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a875d2e4-5476-450f-8206-aa79ecdcb2e3",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 経由でネットワーク トラフィックを転送します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "50dc96a3-9dca-4aab-97f5-9f8654d4f49c",
+ "service": "Azure Firewall",
+ "text": "サードパーティの Security as a Service (SECaaS) プロバイダーを使用するかどうかを決定します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "98318578-48f2-4870-adc0-a6a2cf9ce25e",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall のパブリック IP アドレスを DDoS で保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall には、インターネットに直接接続できる必要があります。AzureFirewallSubnet が Border Gateway プロトコルを介してオンプレミス ネットワークへの既定のルートを学習する場合は、Azure Firewall を強制トンネリング モードで構成する必要があります。強制トンネリング機能を使用すると、Azure Firewall Management サブネット用に別の /26 アドレス空間が必要になります。これが強制トンネリング モードで再構成できない既存の Azure Firewall インスタンスである場合は、0.0.0.0/0 ルートで UDR を作成します。NextHopType の値を Internet に設定します。AzureFirewallSubnet に関連付けて、インターネット接続を維持します。",
+ "guid": "a845b563-f080-4a92-83b0-400feb87ee4e",
+ "service": "Azure Firewall",
+ "text": "インターネットへのすべてのトラフィックを、インターネットに直接アクセスするのではなく、指定された次ホップにルーティングする必要がある場合は、Azure Firewall を強制トンネリング モードで構成します (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "新しい Azure Firewall インスタンスをデプロイするときに、強制トンネリング モードを有効にすると、パブリック IP アドレスを None に設定して、完全にプライベート データ プレーンをデプロイできます。ただし、管理プレーンには、管理目的のみにパブリック IP が必要です。仮想ネットワークとオンプレミス ネットワークからの内部トラフィックでは、そのパブリック IP は使用されません。強制トンネリングの詳細については、「Azure Firewall の強制トンネリング」を参照してください。",
+ "guid": "176ae9e3-7a07-4885-ab4e-72a9ea2ee7fc",
+ "service": "Azure Firewall",
+ "text": "強制トンネリング モードで Azure Firewall を構成するときに、完全にプライベート データ プレーンをデプロイするには、パブリック IP アドレスを [なし] に設定します (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall ポリシーは、中央の基本ポリシーをオーバーレイするために階層構造に配置できます。特定のリージョンの要件を満たすためのきめ細かなポリシーを許可します。各ポリシーには、特定の優先度、アクション、および処理順序を持つDNAT、ネットワーク、およびアプリケーションルールの異なるセットを含めることができます。最小特権アクセスゼロトラストの原則に基づいてルールを作成します。ルールの処理方法については、この記事で説明します。",
+ "guid": "f1c5e5d4-9e41-4b27-b53f-fb36ddce75b7",
+ "service": "Azure Firewall",
+ "text": "最小特権アクセス基準に基づいてファイアウォールポリシーのルールを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "IDPS は、最も強力な Azure Firewall (Premium) セキュリティ機能の 1 つであり、有効にする必要があります。セキュリティとアプリケーションの要件に基づいて、パフォーマンスへの影響 (以下の「コスト」セクションを参照) を考慮して、アラート モードまたはアラートと拒否モードを選択できます。",
+ "guid": "0722a8f4-bea5-4309-93de-d93fb93e0733",
+ "service": "Azure Firewall",
+ "text": "IDPSをアラートまたはアラートと拒否モードで有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この機能を有効にすると、VNet 内のクライアントは DNS サーバーとして Azure Firewall にポイントされます。直接アクセスされたり公開されたりしない内部DNSインフラストラクチャを保護します。Azure Firewall は、DNS クエリの転送に使用されるカスタム DNS を使用するようにも構成する必要があります。",
+ "guid": "8afc40b9-179e-4b5d-ba89-897925ad6d09",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall (DNS) プロキシ構成を有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "従来のハブ & スポーク アーキテクチャでは、'SpoketoSpoke'、'SpoketoInternet'、'SpoketoHybrid' 接続のために Azure Firewall 経由のトラフィックを強制するように UDR を構成します。代わりに、Azure Virtual WAN では、ルーティングの意図とポリシーを構成して、ハブに統合された Azure Firewall インスタンスを介してプライベートまたはインターネットのトラフィックをリダイレクトします。",
+ "guid": "54cc495b-54f8-4dc9-9ed9-e20c15a8beb9",
+ "service": "Azure Firewall",
+ "text": "ユーザー定義ルート (UDR) を構成して、Azure Firewall 経由のトラフィックを強制します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "送信パスで明示的なプロキシ機能を有効にすると、プロキシとして構成された Azure Firewall を使用して、送信側の Web アプリケーション (Web ブラウザーなど) でプロキシ設定を構成できます。その結果、Web トラフィックはファイアウォールのプライベート IP アドレスに到達するため、UDR を使用せずにファイアウォールから直接送信されます。また、この機能により、既存のネットワークルートを変更することなく、複数のファイアウォールの使用が容易になります。",
+ "guid": "18462426-38d0-444b-aaec-99aa97aefc57",
+ "service": "Azure Firewall",
+ "text": "UDR を適用できず、Web トラフィックのリダイレクトのみが必要な場合は、Azure Firewall を明示的なプロキシとして使用することを検討してください",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使い慣れた、最高のサードパーティであるSECaaS製品を使用して、ユーザーのインターネットアクセスを保護できます。このシナリオでは、IPSec トンネルを使用してプロバイダーのインフラストラクチャに接続するため、ハブに S2S VPN ゲートウェイを備えた Azure Virtual WAN が必要です。SECaaS プロバイダーは、追加のライセンス料金を請求し、IPSec 接続のスループットを制限する場合があります。ZScaler Cloud Connectorなどの代替ソリューションが存在し、より適している可能性があります。",
+ "guid": "cfcce0d3-c52d-4405-9316-d503ffcf5349",
+ "service": "Azure Firewall",
+ "text": "サポートされているサードパーティ製の SaaS (Software as a Service) セキュリティプロバイダーを使用してアウトバウンド接続を保護する場合は、Firewall Manager 内でこれらのソリューションを設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN は、Azure Firewall とファイアウォール ポリシーの DNS 解決に基づいて使用できます。この機能により、任意の TCP/UDP プロトコル (NTP、SSH、RDP など) で送信トラフィックをフィルタリングできます。ネットワーク規則で FQDN を使用するには、Azure Firewall DNS プロキシ構成を有効にする必要があります。そのしくみについては、「ネットワーク ルールでの Azure Firewall FQDN フィルタリング」を参照してください。",
+ "guid": "ce2815a6-eee5-4c54-91e7-9ee1e95a191a",
+ "service": "Azure Firewall",
+ "text": "ネットワークルールで完全修飾ドメイン名 (FQDN) フィルタリングを使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "サービス タグは、セキュリティ ルール作成の複雑さを最小限に抑えるために、IP アドレス プレフィックスのグループを表します。ネットワークルールでサービスタグを使用すると、さまざまなIPアドレスを開かずに、Azure、Dynamics、およびOffice 365の特定のサービスへのアウトバウンドアクセスを有効にすることができます。Azure では、これらのタグと各サービスで使用される基になる IP アドレスとの間のマッピングが自動的に維持されます。Azure Firewall で使用できるサービス タグの一覧は、「Az Firewall サービス タグ」の一覧です。",
+ "guid": "55fe92cd-c2a0-4b0b-bd8b-691291c73651",
+ "service": "Azure Firewall",
+ "text": "ネットワーク ルールでサービス タグを使用して、特定の Microsoft サービスへの選択的なアクセスを有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN タグは、既知の Microsoft サービスに関連付けられている完全修飾ドメイン名 (FQDN) のグループを表します。アプリケーション規則で FQDN タグを使用すると、特定の Azure サービス (Office 365、Windows 365、Intune) のファイアウォール経由に必要な送信ネットワーク トラフィックを許可できます。",
+ "guid": "c9cac1b2-3969-4de0-b36f-6f9992d9ebc6",
+ "service": "Azure Firewall",
+ "text": "アプリケーションルールでFQDNタグを使用して、特定のMicrosoftサービスへの選択的なアクセスを有効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "DDoS 保護プランでは、DDoS 攻撃からファイアウォールを保護するための強化された軽減機能が提供されます。Azure Firewall Manager は、ファイアウォール インフラストラクチャと DDoS 保護プランを作成するための統合ツールです。詳細については、「Azure Firewall Manager を使用して Azure DDoS Protection プランを構成する」を参照してください。",
+ "guid": "e7925fd9-7502-4cb4-9b51-cbf8f546a5b2",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager を使用して、DDoS 保護プランを作成し、ハブ仮想ネットワークに関連付けます (Azure Virtual WAN には適用されません)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Firewall Premium では、TLS 検査機能を使用する場合は、運用環境に内部のエンタープライズ証明機関 (CA) を活用することをお勧めします。自己署名証明書は、テスト/PoCの目的でのみ使用する必要があります。",
+ "guid": "2e318870-f258-484d-aef6-ed2972db1f44",
+ "service": "Azure Firewall",
+ "text": "エンタープライズ PKI を使用して、TLS インスペクション用の証明書を生成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティ要件により、Webアプリケーションにゼロトラストアプローチ(検査と暗号化)を実装する必要がある場合は、このガイドに従うことをお勧めします。このドキュメントでは、従来のハブ アンド スポークと Virtual WAN の両方のシナリオで、Azure Firewall と Application Gateway を統合する方法について説明します。",
+ "guid": "34821124-0275-4c49-8f1c-20eb84027df3",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall と Application Gateway のゼロトラスト構成ガイドを確認する",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ffdfd2b7-e799-4c09-9c76-1471fe5f8db9",
+ "service": "Azure Firewall",
+ "text": "デプロイする Azure Firewall SKU を選択します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "cca81cf9-4d7f-4e04-99e9-8ecfb533d814",
+ "service": "Azure Firewall",
+ "text": "一部のインスタンスに永続的な 24x7 割り当てが必要ないかどうかを判断します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "50c204ab-2e28-456c-a731-3ecf2e38d6d7",
+ "service": "Azure Firewall",
+ "text": "ワークロード間でファイアウォールの使用を最適化できる場所を決定します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "365207d2-1008-4a6e-ad87-f4191a31a004",
+ "service": "Azure Firewall",
+ "text": "ファイアウォールインスタンスの使用状況を監視および最適化して、費用対効果を判断します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "39b1fd82-3efb-459b-b789-a9dc631f9f90",
+ "service": "Azure Firewall",
+ "text": "必要なパブリック IP アドレスの数と使用するポリシーを確認して最適化します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "46753a55-3740-4a6d-808b-fbe485bc66e5",
+ "service": "Azure Firewall",
+ "text": "ロギング要件を確認し、コストを見積もり、長期にわたって管理します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Firewall は、Basic、Standard、Premium の 3 つの異なる SKU でデプロイできます。Azure Firewall Premium は、機密性の高いアプリケーション (支払い処理など) をセキュリティで保護するために推奨されます。Azure Firewall Standard は、レイヤー 3 からレイヤー 7 のファイアウォールをお探しのお客様で、最大 30 Gbps のピーク トラフィック期間を処理するために自動スケーリングが必要な場合に推奨されます。Azure Firewall Basic は、250 Mbps のスループットが必要な SMB のお客様にお勧めします。必要に応じて、こちらに記載されているように、Standard と Premium の間でダウングレードまたはアップグレードが可能です。 詳細については、「ニーズに合わせて適切な Azure Firewall SKU を選択する」を参照してください。",
+ "guid": "ba45f704-2456-4d6a-999d-57db4dbf3ff5",
+ "service": "Azure Firewall",
+ "text": "適切な Azure Firewall SKU をデプロイします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "営業時間内のみ使用される開発環境またはテスト環境がある場合があります。詳細については、「Azure Firewall の割り当て解除と割り当て」を参照してください。",
+ "guid": "2ef42b67-50cc-4d54-bd3d-324ad2044fc7",
+ "service": "Azure Firewall",
+ "text": "24x7 で実行する必要のない Azure Firewall のデプロイを停止します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ハブ仮想ネットワークまたは Virtual WAN セキュア ハブで Azure Firewall の中央インスタンスを使用し、同じリージョンから同じハブに接続されている多くのスポーク仮想ネットワークで同じファイアウォールを共有できます。ハブスポークトポロジの一部として予期しないリージョン間トラフィックがないことを確認します。",
+ "guid": "ae5816a1-1766-425a-a117-2873865a9f10",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の同じインスタンスを複数のワークロードと Azure Virtual Network で共有します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "上位フロー ログ (業界では Fat Flows) は、ファイアウォールを介して最高のスループットに貢献している上位の接続を示します。Azure Firewall によって処理されるトラフィックを定期的に確認し、ファイアウォールを通過するトラフィックの量を減らすための最適化の可能性を検索することをお勧めします。",
+ "guid": "791f974e-8c73-46ee-9b9e-26dd3a6c6845",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall によって処理されたトラフィックを定期的に確認し、発生元のワークロードの最適化を探します",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "未使用の Azure Firewall デプロイを特定するには、まず、ファイアウォールのプライベート IP を指すサブネットに関連付けられている監視メトリックと UDR を分析します。その情報を、Azure Firewall のインスタンスに NAT、ネットワーク、アプリケーションのルール (クラシック) があるかどうか、DNS プロキシ設定が [無効] に構成されているかどうかなど、他の検証と組み合わせ、環境とデプロイに関する内部ドキュメントと組み合わせます。時間の経過とともにコスト効率の高いデプロイを検出できます。 ログとメトリックの監視の詳細については、「Azure Firewall のログとメトリックと SNAT ポートの使用率を監視する」を参照してください。",
+ "guid": "6590ab7b-01d8-487c-ad40-c325eada375c",
+ "service": "Azure Firewall",
+ "text": "使用率の低い Azure Firewall インスタンスを確認します。未使用の Azure Firewall デプロイを特定して削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Firewall Manager のポリシー、関連付け、および継承を慎重に確認してください。ポリシーは、ファイアウォールの関連付けに基づいて請求されます。ファイアウォールの関連付けが 0 個または 1 個のポリシーは無料です。複数のファイアウォールの関連付けを持つポリシーは、固定料金で請求されます。詳細については、「価格 - Azure Firewall Manager」を参照してください。",
+ "guid": "c82f1a0b-3dd1-4da7-9006-5b870e0ea843",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager とそのポリシーを使用して、運用コストを削減し、効率を高め、管理オーバーヘッドを削減します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "関連付けられているすべてのパブリック IP アドレスが使用中かどうかを検証します。使用していない場合は、関連付けを解除して削除します。IP アドレスを削除する前に、SNAT ポートの使用率を評価します。ファイアウォールに必要な数のパブリック IP のみを使用します。詳細については、「Azure Firewall のログとメトリックの監視」および「SNAT ポートの使用率」を参照してください。",
+ "guid": "58401f6a-8858-4d03-bf00-7f6d8747297a",
+ "service": "Azure Firewall",
+ "text": "未使用のパブリック IP アドレスを削除します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Firewall には、表示されるすべてのトラフィックのメタデータを、Event Hubs を介して Log Analytics ワークスペース、ストレージ、またはサードパーティのソリューションに包括的に記録する機能があります。ただし、すべてのロギングソリューションでは、データの処理と保存にコストがかかります。非常に大量のコストがかかると、これらのコストは大きくなる可能性があるため、コスト効率の高いアプローチと Log Analytics の代替手段を検討し、コストを見積もる必要があります。すべてのロギングカテゴリのトラフィックメタデータをログに記録し、必要に応じて診断設定で変更する必要があるかどうかを検討します。",
+ "guid": "a9f71813-ccf8-427a-9ce3-676b4123eff4",
+ "service": "Azure Firewall",
+ "text": "ログ記録の要件を確認します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "c8e11b57-bc16-4a60-9c0d-aeae7239fe91",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の構成とポリシーのインベントリとバックアップを維持します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "be3e8ab7-db2a-40f7-a76a-fba15b34b88d",
+ "service": "Azure Firewall",
+ "text": "診断ログをファイアウォールの監視とトラブルシューティングに活用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "af454d15-f640-47db-9864-7c31cbdcdffc",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 監視ブックを活用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "010e0c46-9d19-46fb-9a85-4bb79828db8a",
+ "service": "Azure Firewall",
+ "text": "ポリシーに関するインサイトと分析を定期的に見直します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "e455cf35-374c-4e02-9432-e0dc531b829b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall を Microsoft Defender for Cloud および Microsoft Sentinel と統合します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Firewall は、VNet 間、VNet とオンプレミス ネットワーク間のトラフィック、インターネットへの送信トラフィック、および受信 HTTP/s トラフィックを制御するために使用する必要があります。VNet 内のトラフィック制御には、ネットワーク セキュリティ グループを使用することをお勧めします。",
+ "guid": "337df674-237d-4b82-ac92-ae45f34a6e3d",
+ "service": "Azure Firewall",
+ "text": "VNet 内のトラフィック制御に Azure Firewall を使用しないでください。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "コードとしてのインフラストラクチャ (IaC) アプローチを使用して Azure Firewall とすべての依存関係を維持する場合は、Azure Firewall ポリシーのバックアップとバージョン管理が既に実施されている必要があります。そうでない場合は、外部ロジック アプリに基づくコンパニオン メカニズムをデプロイして、効果的なソリューションを自動化し、提供できます。",
+ "guid": "174e4ca6-77d4-4b83-8f05-0c54c43792ec",
+ "service": "Azure Firewall",
+ "text": "Azure Policy 成果物の定期的なバックアップを維持します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断ログは、Azure Firewall の多くの監視ツールと戦略の主要なコンポーネントであり、有効にする必要があります。Azure Firewall は、ファイアウォールのログまたはブックを使用して監視できます。アクティビティ ログを使用して、Azure Firewall リソースに対する操作を監査することもできます。",
+ "guid": "7e27b44b-e8c0-4f25-9fce-78a85810d715",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall の診断ログを有効にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "構造化ファイアウォールログは、特定の新しい形式で整理されたログデータの一種です。事前定義されたスキーマを使用して、検索、フィルタリング、分析を容易にする方法でログデータを構造化します。最新の監視ツールはこのタイプのログに基づいているため、多くの場合、前提条件となります。以前の診断ログ形式は、前提条件を持つ既存のツールがある場合にのみ使用してください。両方のログ形式を同時に有効にしないでください。",
+ "guid": "078ab6f4-2ef5-4f91-856c-be9e3c2748a1",
+ "service": "Azure Firewall",
+ "text": "構造化ファイアウォールログ形式を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Firewall ポータル エクスペリエンスに、監視セクション UI の下に新しいブックが含まれるようになり、個別のインストールは不要になりました。Azure Firewall ブックを使用すると、Azure Firewall イベントから貴重な分析情報を抽出し、アプリケーションとネットワークのルールを詳しく調べ、URL、ポート、アドレス間のファイアウォール アクティビティに関する統計を調べることができます。",
+ "guid": "a246ca16-d2da-4ebc-ad28-0bcbb0813be0",
+ "service": "Azure Firewall",
+ "text": "組み込みの Azure Firewall 監視ブックを使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "アラートは、少なくともスループット、ファイアウォールの正常性状態、SNAT ポートの使用率、AZFW 待機時間プローブのメトリックを監視するために作成する必要があります。ログとメトリックの監視については、「Azure Firewall のログとメトリックを監視する」を参照してください。",
+ "guid": "0c405dff-403a-4ead-94d9-5539ba1eaea6",
+ "service": "Azure Firewall",
+ "text": "主要なメトリックを監視し、Azure Firewall 容量の使用率を示すインジケーターのアラートを作成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "これらのツールが環境で使用できる場合は、Microsoft Defender for Cloud および Microsoft Sentinel ソリューションとの統合を活用することをお勧めします。Microsoft Defender for Cloud の統合により、すべての VNet にわたる Azure ネットワーク セキュリティや、Azure のさまざまなリージョンに分散した仮想ハブなど、ネットワーク インフラストラクチャとネットワーク セキュリティの全体的な状態を 1 か所で視覚化できます。Microsoft Sentinel との統合により、脅威の検出と防止の機能が実現します。",
+ "guid": "6643f4d1-ee99-4466-9175-164787d00fc3",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall と Microsoft Defender for Cloud および Microsoft Sentinel との統合を構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ポリシー分析は、Azure Firewall ポリシーの影響に関する分析情報を提供する新機能です。これは、ポリシーの潜在的な問題 (ポリシー制限のヒット、使用率の低いルール、冗長なルール、汎用すぎるルール、IP グループの使用に関する推奨事項) を特定するのに役立ち、セキュリティ体制とルール処理のパフォーマンスを向上させるための推奨事項を提供します。",
+ "guid": "43d91873-4442-40ae-b2a3-263bc7fdcaab",
+ "service": "Azure Firewall",
+ "text": "ポリシー分析ダッシュボードを定期的に確認して、潜在的な問題を特定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Firewall のサンプル クエリが用意されています。これにより、ファイアウォール内で何が起こっているかをすばやく特定し、トリガーされたルールや、リクエストを許可/ブロックしているルールを確認できます。",
+ "guid": "8bc24ea6-da9e-48b8-a05c-4fce251d2046",
+ "service": "Azure Firewall",
+ "text": "KQL (Kusto 照会言語) クエリに慣れると、Azure Firewall ログを使用した迅速な分析とトラブルシューティングが可能になります。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "9469b3e2-6be2-470b-a10b-9fb0150c5733",
+ "service": "Azure Firewall",
+ "text": "ファイアウォールルールを定期的に見直し、最適化します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "9efe3606-1aa2-4e06-bf6a-2e5214cf080f",
+ "service": "Azure Firewall",
+ "text": "ポリシーの要件と機会を確認して、IP 範囲と URL のリストをまとめます。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "93db9b9d-c43d-47e2-a1cf-e81841274059",
+ "service": "Azure Firewall",
+ "text": "SNAT ポートの要件を評価します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "fbe59997-e12b-497b-bdbd-d2a5e3f728e7",
+ "service": "Azure Firewall",
+ "text": "負荷テストを計画して、環境内の自動スケールのパフォーマンスをテストします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "c68f8c08-fe1e-4515-a877-67daaa008ab0",
+ "service": "Azure Firewall",
+ "text": "診断ツールとロギングは、必要でない場合は有効にしないでください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ポリシー分析は、Azure Firewall ポリシーの影響に関する分析情報を提供する新機能です。これは、ポリシーの潜在的な問題 (ポリシー制限のヒット、使用率の低いルール、冗長なルール、汎用すぎるルール、IP グループの使用に関する推奨事項) を特定するのに役立ち、セキュリティ体制とルール処理のパフォーマンスを向上させるための推奨事項を提供します。",
+ "guid": "cbbaf175-2b8e-4a1f-af5a-a9cbfb798ffb",
+ "service": "Azure Firewall",
+ "text": "ポリシー分析ダッシュボードを使用して、ファイアウォール ポリシーの潜在的な最適化を特定します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "パブリック インターネット サイトの長いリストを明示的に構築して維持する代わりに、Azure Firewall Web カテゴリの使用を検討してください。この機能は、Webコンテンツを動的に分類し、コンパクトなアプリケーションルールの作成を可能にします。",
+ "guid": "b8bc28b7-69d4-49d3-8a1e-8dd7ba71ebbe",
+ "service": "Azure Firewall",
+ "text": "Web カテゴリで、送信アクセスを一括で許可または拒否することを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall を IDPS モードのアラートと拒否で動作させる必要がある場合は、このページに記載されているパフォーマンスへの影響を慎重に検討してください。",
+ "guid": "b91be607-0c6b-4c0d-bdd2-367879f7632d",
+ "service": "Azure Firewall",
+ "text": "アラート モードと拒否モードでの IDPS のパフォーマンスへの影響を評価します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall では現在、バックエンド仮想マシン スケール セット インスタンスごとにパブリック IP アドレスあたり 2496 ポートがサポートされています。既定では、2 つの Virtual Machine Scale Set インスタンスがあります。したがって、フローの宛先IP、宛先ポート、およびプロトコル(TCPまたはUDP)ごとに4992ポートがあります。ファイアウォールは、最大 20 インスタンスまでスケールアップできます。この制限を回避するには、SNAT の枯渇の影響を受けやすいデプロイに対して、少なくとも 5 つのパブリック IP アドレスを使用して Azure Firewall デプロイを構成します。",
+ "guid": "a5847147-e7ef-48d1-ba16-d896fdce1b9f",
+ "service": "Azure Firewall",
+ "text": "SNAT ポートの枯渇の潜在的な問題を評価します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ロード テストに含まれない初期トラフィックは、テストの 20 分前に作成します。診断設定を使用して、スケールアップとスケールダウンのイベントをキャプチャします。Azure Load Testing サービスを使用して、初期トラフィックを生成できます。Azure Firewall インスタンスがインスタンスを最大までスケールアップできるようにします。",
+ "guid": "908a8bfa-9e9f-4199-8b5a-f2a031ab22e0",
+ "service": "Azure Firewall",
+ "text": "パフォーマンス テストの前に、Azure Firewall を適切にウォームアップします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall は、仮想ネットワーク内の専用デプロイです。仮想ネットワーク内では、Azure Firewall のインスタンスに専用のサブネットが必要です。Azure Firewall は、スケーリングに応じてより多くの容量をプロビジョニングします。サブネットの /26 アドレス空間により、ファイアウォールはスケーリングに対応するのに十分な IP アドレスを確保できます。Azure Firewall には、/26 より大きいサブネットは必要ありません。Azure Firewall サブネット名は AzureFirewallSubnet にする必要があります。",
+ "guid": "d0e66443-59f1-48cb-995f-eaa6688c4f3b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall サブネット (AzureFirewallSubnet) を /26 アドレス空間で構成します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Firewall には、常にアクティブに保つにはコストがかかる可能性のある高度なログ機能がいくつか用意されています。代わりに、トラブルシューティングの目的でのみ使用し、期間を制限し、不要になったら無効にする必要があります。たとえば、上位フローとフロー トレース ログは高価です は、Azure Firewall インフラストラクチャで CPU とストレージの過剰な使用を引き起こす可能性があります。",
+ "guid": "2c51e141-6e45-42cd-8c22-c55b219ffe83",
+ "service": "Azure Firewall",
+ "text": "不要な場合は、詳細ログを有効にしないでください",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "59ed40bd-06a0-4125-ab99-afc88a248aa5",
+ "service": "Azure Front Door",
+ "text": "トラフィックのパターンと量を推定します。クライアントから Azure Front Door エッジへの要求の数は、レベルの選択に影響を与える可能性があります。大量の要求をサポートする必要がある場合は、パフォーマンスが最終的に可用性に影響を与えるため、Azure Front Door Premium レベルを検討してください。ただし、コストのトレードオフがあります。これらの階層については、パフォーマンス効率で説明されています。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "51f023f3-53b4-4878-8548-2b08a6b095ab",
+ "service": "Azure Front Door",
+ "text": "デプロイ戦略を選択します。基本的なデプロイ アプローチは、アクティブ/アクティブとアクティブ/パッシブです。アクティブ/アクティブ デプロイとは、ワークロードを実行する複数の環境またはスタンプがトラフィックを処理することを意味します。アクティブ/パッシブ デプロイとは、プライマリ リージョンのみがすべてのトラフィックを処理しますが、必要に応じてセカンダリ リージョンにフェールオーバーすることを意味します。マルチリージョン デプロイでは、トラフィックを分散する Azure Front Door などのグローバル ロード バランサーを使用して、可用性を高めるために、スタンプは異なるリージョンで実行されます。そのため、適切なデプロイ方法に合わせてロードバランサーを設定することが重要です。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "486f318a-8747-45e5-a5f4-97642d4fada6",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door サーバーと配信元サーバーで同じホスト名を使用します。Cookie またはリダイレクト URL が正しく機能するようにするには、Web アプリケーションの前でロードバランサーなどのリバースプロキシを使用するときは、元の HTTP ホスト名を保持します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "9bc96e35-d25f-4521-86f8-8cadefb23576",
+ "service": "Azure Front Door",
+ "text": "正常性エンドポイント監視パターンを実装します。アプリケーションでは、アプリケーションが要求を処理するために必要な重要なサービスと依存関係の状態を集約する正常性エンドポイントを公開する必要があります。Azure Front Door の正常性プローブでは、エンドポイントを使用して配信元サーバーの正常性を検出します。詳細については、「 正常性エンドポイント監視パターン」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "96c8dc89-cafe-411e-9080-35c13fffb8b3",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door の組み込みのコンテンツ配信ネットワーク機能を活用します。Azure Front Door のコンテンツ配信ネットワーク機能には、数百のエッジ ロケーションがあり、分散型サービス拒否 (DDoS) 攻撃に耐えるのに役立ちます。これらの機能は、信頼性の向上に役立ちます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "750bc3ba-30aa-44fc-88aa-bc93cdf29cdf",
+ "service": "Azure Front Door",
+ "text": "冗長なトラフィック管理オプションを検討してください。Azure Front Door は、環境内でシングルトンとして実行されるグローバルに分散されたサービスです。Azure Front Door は、システム内の潜在的な単一障害点です。サービスが失敗した場合、ダウンタイム中はクライアントがアプリケーションにアクセスできません。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "最適なオリジンリソースを選択するには、一連の決定手順と設計を使用します。選択したオリジンは、指定されたウェイトの比率で許容レイテンシ範囲内のトラフィックを提供します。",
+ "guid": "1a6fba56-5098-4506-9be0-940fe556996c",
+ "service": "Azure Front Door",
+ "text": "デプロイ戦略をサポートするルーティング方法を選択します。 設定された重み係数に基づいてトラフィックを分散する加重方式は、アクティブ/アクティブモデルをサポートします。 プライマリ リージョンがすべてのトラフィックを受信し、バックアップとしてセカンダリ リージョンにトラフィックを送信するように設定する優先度ベースの値は、アクティブ/パッシブ モデルをサポートします。 上記の方法とレイテンシを組み合わせて、レイテンシが最も低いオリジンがトラフィックを受信するようにします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "複数のオリジンは、アプリケーションの複数のインスタンスにトラフィックを分散することで冗長性をサポートします。1 つのインスタンスが使用できない場合でも、他のバックエンド配信元は引き続きトラフィックを受信できます。",
+ "guid": "00f51ce2-46a9-4051-ab0e-762743d0837d",
+ "service": "Azure Front Door",
+ "text": "1 つ以上のバックエンド プールに複数の配信元を持つことで冗長性をサポートします。アプリケーションの冗長インスタンスを常に用意し、各インスタンスがエンドポイントまたはオリジンを公開していることを確認します。これらの配信元は、1 つ以上のバックエンド プールに配置できます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "有効な正常性プローブは、正常性監視パターンの実装の一部です。正常性プローブは、Azure Front Door が要求を処理するのに十分な正常なインスタンスにのみトラフィックをルーティングすることを確認します。 詳細については、「正常性プローブのベスト プラクティス」を参照してください。",
+ "guid": "17fbec2c-ddb4-4490-946c-a151ae0fadd4",
+ "service": "Azure Front Door",
+ "text": "配信元で正常性プローブを設定します。バックエンド インスタンスが使用可能で、引き続き要求を受信する準備ができているかどうかを判断するための正常性チェックを実行するように Azure Front Door を構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "タイムアウトは、完了までに予想以上に時間がかかる要求を終了することで、パフォーマンスの問題と可用性の問題を防ぐのに役立ちます。",
+ "guid": "1a308f11-1d93-4d57-bd84-cbd8f6198dd2",
+ "service": "Azure Front Door",
+ "text": "バックエンドへの要求の転送にタイムアウトを設定します。 エンドポイントのニーズに応じてタイムアウト設定を調整します。そうしないと、配信元が応答を送信する前に Azure Front Door が接続を閉じる可能性があります。 また、すべての配信元のタイムアウトが短い場合は、Azure Front Door の既定のタイムアウトを下げることもできます。 詳細については、「応答しない要求のトラブルシューティング」を参照してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セッションのアフィニティ、認証、および承認の誤動作を防ぐために、同じホスト名を設定します。詳細については、「リバース プロキシとそのバックエンド Web アプリケーション間で元の HTTP ホスト名を保持する」を参照してください。",
+ "guid": "7af90aa7-b21f-432f-858b-2d872c752d7f",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door と配信元で同じホスト名を使用します。Azure Front Door では、受信要求のホスト ヘッダーを書き換えることができるため、1 つの配信元にルーティングする複数のカスタム ドメイン名がある場合に便利です。ただし、ホストヘッダーを書き換えると、リクエスト Cookie と URL リダイレクトで問題が発生する可能性があります。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "セッション アフィニティを使用すると、ユーザー接続はユーザー セッション中に同じオリジンに留まります。そのオリジンが使用できなくなった場合、ユーザーエクスペリエンスが中断される可能性があります。",
+ "guid": "f66a8d49-8d0a-4952-9db2-ac2e526f08ad",
+ "service": "Azure Front Door",
+ "text": "アプリケーションにセッション アフィニティが必要かどうかを判断します。高い信頼性要件がある場合は、セッション アフィニティを無効にすることをお勧めします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "要求を制限して、クライアントがアプリケーションに大量のトラフィックを送信しないようにします。レート制限は、再試行ストームのような問題を回避するのに役立ちます。",
+ "guid": "63faaf18-da4b-4274-ac3c-d955f2a2e01b",
+ "service": "Azure Front Door",
+ "text": "Web アプリケーション ファイアウォール (WAF) に含まれるレート制限ルールを利用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "ad186a96-5de2-4bf7-acd4-5b534cdb3e97",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b31346d7-4fde-42c2-82fe-2e4d54aa8f1b",
+ "service": "Azure Front Door",
+ "text": "バックエンド サーバーを保護します。フロントエンドは、アプリケーションへの単一の入力ポイントとして機能します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "903b1844-994a-49e8-8e08-6ef445aec4f7",
+ "service": "Azure Front Door",
+ "text": "コントロールプレーンへの許可されたアクセスのみを許可します。Azure Front Door のロールベースのアクセス制御 (RBAC) を使用して、必要な ID のみにアクセスを制限します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "329c0516-9a14-45ea-ad04-fe75453c8d88",
+ "service": "Azure Front Door",
+ "text": "エッジで一般的な脅威をブロックします。WAF は Azure Front Door と統合されています。フロントエンドでWAFルールを有効にして、攻撃元に近いネットワークエッジで一般的なエクスプロイトや脆弱性からアプリケーションを保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d323ca3c-f7df-4f7e-b7c9-698d2bdad3e2",
+ "service": "Azure Front Door",
+ "text": "予期しないトラフィックから Azure Front Door を保護します。Azure Front Door では、Azure DDoS Protection の基本プランを使用して、アプリケーション エンドポイントを DDoS 攻撃から保護します。アプリケーションから他のパブリック IP アドレスを公開する必要がある場合は、高度な保護機能と検出機能のために、それらのアドレスに DDoS Protection 標準プランを追加することを検討してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "fcb4a654-3e3b-408c-9538-a1dfefdef774",
+ "service": "Azure Front Door",
+ "text": "転送中のデータを保護します。エンドツーエンドのトランスポート層セキュリティ (TLS)、HTTP から HTTPS へのリダイレクト、およびマネージド TLS 証明書 (該当する場合) を有効にします。詳細については、「Azure Front Door の TLS のベスト プラクティス」を参照してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "451f9871-3ca1-40b9-a1f6-c5eb0a37213b",
+ "service": "Azure Front Door",
+ "text": "異常なアクティビティを監視します。ログを定期的に確認して、攻撃や誤検知がないか確認します。Azure Front Door から WAF ログを組織の一元化されたセキュリティ情報およびイベント管理 (SIEM) (Microsoft Sentinel など) に送信して、脅威のパターンを検出し、ワークロードの設計に予防策を組み込みます。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "既定のルール セットは、OWASP の上位 10 種類の攻撃の種類と Microsoft 脅威インテリジェンスからの情報に基づいて頻繁に更新されます。 特殊なルール・セットは、特定のユースケースを検出します。たとえば、ボット ルールは、クライアントの IP アドレスに基づいてボットを良好、不良、または不明に分類します。また、悪意のあるボットや既知のIPアドレスをブロックし、発信者の地理的な場所に基づいてトラフィックを制限します。 ルールセットを組み合わせて使用することで、さまざまなインテントによる攻撃を検知し、ブロックすることができます。",
+ "guid": "711c450c-ac42-4570-b2fd-22319b4a7913",
+ "service": "Azure Front Door",
+ "text": "悪意のある可能性のあるトラフィックを検出してブロックする WAF ルールセットを有効にします。この機能は、Premium レベルで使用できます。次のルールセットをお勧めします: - デフォルト - ボット保護 - IP制限 - ジオフィルタリング - レート制限",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "誤検知を減らし、アプリケーションに対する正当な要求を許可します。",
+ "guid": "a6fe49f4-0b1f-4677-af1f-b766f073ac6c",
+ "service": "Azure Front Door",
+ "text": "マネージド ルール セットの除外を作成します。 WAF ポリシーを検出モードで数週間テストし、誤検出がある場合は調整してからデプロイします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS により、ブラウザー、Azure Front Door、バックエンドの配信元間のデータ交換が暗号化され、改ざんが防止されます。 Key Vault は、マネージド証明書のサポートと、簡単な証明書の更新とローテーションを提供します。",
+ "guid": "450b511f-9e82-45ce-986b-769ea00dbeaa",
+ "service": "Azure Front Door",
+ "text": "エンドツーエンド TLS、HTTP から HTTPS へのリダイレクト、およびマネージド TLS 証明書 (該当する場合) を有効にします。 Azure Front Door の TLS のベスト プラクティスを確認します。 TLS バージョン 1.2 を最小許容バージョンとして使用し、アプリケーションに関連する暗号を使用します。 Azure Front Door で管理される証明書は、操作を容易にするために既定の選択肢にする必要があります。ただし、証明書のライフサイクルを管理する場合は、Azure Front Door カスタム ドメイン エンドポイントで独自の証明書を使用し、Key Vault に格納します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "baeb625f-93ac-4181-be7b-07f474584985",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door のレベルと価格を確認します。料金計算ツールを使用して、各レベルの現実的なコストを見積もります。シナリオに適した各層の機能と適合性を比較します。たとえば、Private Link を介した配信元への接続をサポートしているのは Premium レベルのみです。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "ed02627c-4a6d-4d6e-982f-a1fbee4a7259",
+ "service": "Azure Front Door",
+ "text": "帯域幅のコストを考慮してください。Azure Front Door の帯域幅コストは、選択したレベルとデータ転送の種類によって異なります。Azure Front Door には、課金対象のメトリックの組み込みレポートが用意されています。帯域幅に関連するコストと、最適化作業に集中できる場所を評価するには、「Azure Front Door レポート」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "e2e0bb7e-521d-4729-9579-5c9539a68867",
+ "service": "Azure Front Door",
+ "text": "受信要求を最適化します。Azure Front Door は、受信した要求を請求します。設計構成で制限を設定できます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "337e7030-494e-4be5-8920-9144cb02c399",
+ "service": "Azure Front Door",
+ "text": "リソースを効率的に使用します。Azure Front Door では、リソースの最適化に役立つルーティング方法が使用されます。ワークロードのレイテンシの影響が極端に大きい場合を除き、デプロイされたリソースを効果的に使用するために、トラフィックをすべての環境に均等に分散します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "add1a775-b13c-477b-acc7-38dbcccd51fe",
+ "service": "Azure Front Door",
+ "text": "組織が提供する共有インスタンスの使用を検討してください。一元化されたサービスから発生したコストは、ワークロード間で共有されます。ただし、信頼性とのトレードオフを考慮してください。高可用性の要件があるミッションクリティカルなアプリケーションには、自律型インスタンスをお勧めします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "48f2f718-1ae7-476f-a0a1-d6b83e47bbaa",
+ "service": "Azure Front Door",
+ "text": "ログに記録されるデータの量に注意してください。帯域幅とストレージの両方に関連するコストは、特定の要求が不要な場合、またはログ データが長期間保持される場合に発生する可能性があります。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "キャッシュを使用すると、Azure Front Door インスタンスから配信元への呼び出しの数が減るため、データ転送コストが最適化されます。",
+ "guid": "5a9023b8-c181-41d5-aeb5-9c09a85b0792",
+ "service": "Azure Front Door",
+ "text": "キャッシュをサポートするエンドポイントにはキャッシュを使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "圧縮により、帯域幅の消費が削減され、パフォーマンスが向上します。",
+ "guid": "84da68ee-7bb0-4a7d-ad70-d53c186ffd3e",
+ "service": "Azure Front Door",
+ "text": "ファイル圧縮を有効にすることを検討してください。この構成では、アプリケーションが圧縮をサポートし、キャッシュを有効にする必要があります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ルーティングの決定に必要のない要求を無効にすることで、帯域幅のコストを節約できます。",
+ "guid": "5d3ad5cb-d897-4ae7-8d1c-ae8398c79ed6",
+ "service": "Azure Front Door",
+ "text": "単一のバックエンド・プールのヘルス・チェックを無効にします。Azure Front Door の配信元グループに配信元が 1 つしか構成されていない場合、これらの呼び出しは不要です。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "5e8bfd0e-20d9-441f-814d-c2b49e7033ea",
+ "service": "Azure Front Door",
+ "text": "コードとしてのインフラストラクチャ (IaC) テクノロジを使用します。Bicep や Azure Resource Manager テンプレートなどの IaC テクノロジを使用して、Azure Front Door インスタンスをプロビジョニングします。これらの宣言型アプローチにより、一貫性と簡単なメンテナンスが提供されます。たとえば、IaC テクノロジを使用すると、新しいルールセットバージョンを簡単に採用できます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "e9bd20e3-6e61-4907-9b84-4bd50b867875",
+ "service": "Azure Front Door",
+ "text": "構成を簡素化。Azure Front Door を使用すると、構成を簡単に管理できます。たとえば、アーキテクチャがマイクロサービスをサポートしているとします。Azure Front Door はリダイレクト機能をサポートしているため、パスベースのリダイレクトを使用して個々のサービスをターゲットにすることができます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "bb3943fb-6d97-458d-be6a-d9b71e8898d7",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door のルーティング方法を使用して、プログレッシブ エクスポージャーを処理します。加重負荷分散アプローチでは、カナリアデプロイを使用して、特定の割合のトラフィックをバックエンドに送信できます。このアプローチは、新機能とリリースをロールアウトする前に、制御された環境でテストするのに役立ちます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "5e1264a9-c6cc-4d4e-8e73-7ca4b3f05c17",
+ "service": "Azure Front Door",
+ "text": "ワークロード監視の一環として、Azure Front Door の運用データを収集して分析します。Azure Monitor ログを使用して、関連する Azure Front Door のログとメトリックをキャプチャします。このデータは、トラブルシューティング、ユーザー行動の理解、運用の最適化に役立ちます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "8bdff2ab-0800-45ef-acab-ff7d320856aa",
+ "service": "Azure Front Door",
+ "text": "証明書管理を Azure にオフロードします。認定資格のローテーションと更新に関連する運用上の負担を軽減します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "リダイレクトを有効にすると、Azure Front Door は、セキュリティで保護されたエクスペリエンスのために、古いプロトコルを使用しているクライアントを自動的にリダイレクトして HTTPS を使用します。",
+ "guid": "829f4fea-1653-4093-aaf7-93b6a30aae1f",
+ "service": "Azure Front Door",
+ "text": "HTTP から HTTPS へのリダイレクトを使用して、上位互換性をサポートします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "イングレス フローの監視は、アプリケーションの監視の重要な部分です。要求を追跡し、パフォーマンスとセキュリティを改善したい。Azure Front Door の構成をデバッグするには、データが必要です。 アラートを設定すると、重大な運用上の問題について即座に通知を受け取ることができます。",
+ "guid": "8ad83783-d01c-4772-a76b-39f7c9d61cc7",
+ "service": "Azure Front Door",
+ "text": "ログとメトリクスをキャプチャします。 リソース アクティビティ ログ、アクセス ログ、正常性プローブ ログ、WAF ログを含めます。アラートを設定します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Front Door プロファイルの全体像を把握すると、WAF メトリックを通じてトラフィックとセキュリティのレポートに基づいて改善を推進するのに役立ちます。",
+ "guid": "e5e56ee9-79e4-4fa8-9fdb-600748d7df10",
+ "service": "Azure Front Door",
+ "text": "組み込みの分析レポートを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Front Door では、証明書を発行して管理できます。この機能により、証明書の更新が不要になり、TLS証明書が無効または期限切れであることによる停止のリスクが最小限に抑えられます。",
+ "guid": "c2fcfdfb-fedb-4b47-93ac-1988250f76cd",
+ "service": "Azure Front Door",
+ "text": "可能な場合は、マネージド TLS 証明書を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "各サブドメインを個別に追加または指定するために、設定を変更する必要はありません。",
+ "guid": "0d7deaf4-ec0e-4e32-8b6b-64f3190d10f6",
+ "service": "Azure Front Door",
+ "text": "ワイルドカード TLS 証明書を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "d18003c9-2d90-4e52-b503-5fcdb4ffcd96",
+ "service": "Azure Front Door",
+ "text": "予想されるトラフィックパターンを分析して、容量を計画します。徹底的なテストを実施して、さまざまな負荷の下でアプリケーションがどのように動作するかを理解します。同時トランザクション、要求レート、データ転送などの要素を考慮してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "87c450a0-6a4a-453c-ae38-b8f21952ab79",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door レポートを定期的に確認して、パフォーマンス データを分析します。これらのレポートは、テクノロジー レベルでのパフォーマンス指標として機能するさまざまなメトリックに関する分析情報を提供します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "a9d9ffe4-3fa7-48c8-bc1d-d0685e495dbe",
+ "service": "Azure Front Door",
+ "text": "データ転送を最適化します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "161bc803-0586-4d21-b2ea-018d78209565",
+ "service": "Azure Front Door",
+ "text": "ヘルスプローブの使用を最適化します。正常性プローブから正常性情報を取得するのは、配信元の状態が変更されたときのみです。監視の精度と不要なトラフィックの最小化のバランスを取ります。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "8596ddcf-3f3c-4b1c-baa1-a7eb844b2fb6",
+ "service": "Azure Front Door",
+ "text": "起点のルーティング方法を確認します。Azure Front Door には、配信元への待機時間ベース、優先度ベース、加重、セッション アフィニティベースのルーティングなど、さまざまなルーティング方法が用意されています。これらの方法は、アプリケーションのパフォーマンスに大きく影響します。シナリオに最適なトラフィック ルーティング オプションの詳細については、「配信元へのトラフィック ルーティング方法」を参照してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "205d3288-088c-4f24-af39-f9cb610c54a1",
+ "service": "Azure Front Door",
+ "text": "配信元サーバーの場所を確認します。オリジンサーバーの場所は、アプリケーションの応答性に影響します。オリジンサーバーは、ユーザーの近くに配置する必要があります。Azure Front Door は、特定の場所のユーザーが最も近い Azure Front Door エントリ ポイントにアクセスできるようにします。パフォーマンス上の利点には、ユーザー エクスペリエンスの高速化、Azure Front Door による待機時間ベースのルーティングのより効果的な使用、ユーザーの近くにコンテンツを格納するキャッシュの使用によるデータ転送時間の最小化などがあります。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Front Door は、ネットワークのエッジでコンテンツをキャッシュする堅牢なコンテンツ配信ネットワーク ソリューションを提供します。キャッシングにより、バックエンド サーバーの負荷が軽減され、ネットワーク経由でのデータ移動が削減されるため、帯域幅の使用量を軽減できます。",
+ "guid": "2f6a39a1-884a-4661-accd-f534bf795a96",
+ "service": "Azure Front Door",
+ "text": "キャッシュを有効にします。 キャッシュ用にクエリ文字列を最適化できます。純粋に静的なコンテンツの場合は、クエリ文字列を無視して、キャッシュを最大限に活用します。 アプリケーションでクエリ文字列を使用する場合は、それらをキャッシュキーに含めることを検討してください。キャッシュ キーにクエリ文字列を含めると、Azure Front Door は、構成に基づいてキャッシュされた応答またはその他の応答を提供できます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Azure Front Door の圧縮は、最適な形式でコンテンツを配信し、ペイロードを小さくし、コンテンツをユーザーに迅速に配信するのに役立ちます。",
+ "guid": "09c90ce3-ade6-413a-9c1b-45d33d6d9069",
+ "service": "Azure Front Door",
+ "text": "ダウンロード可能なコンテンツにアクセスするときは、ファイル圧縮を使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "'HEAD' リクエストを使用すると、コンテンツ全体をフェッチせずに状態変更をクエリできます。",
+ "guid": "15daeecf-bcbf-4c46-b196-030839fd4864",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door で正常性プローブを構成する場合は、'GET' 要求ではなく 'HEAD' 要求を使用することを検討してください。 正常性プローブは、コンテンツではなく、状態コードのみを読み取ります。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "ユーザーセッションのパフォーマンスを最適化し、継続性を維持します。特に、アプリケーションが状態情報をローカルで保持することに依存している場合に顕著です。",
+ "guid": "2a92f55e-a422-49f4-9a26-8ba819a17323",
+ "service": "Azure Front Door",
+ "text": "同じユーザーからの要求を同じバックエンド・サーバーに送信する必要がある場合に、セッション・アフィニティーを有効にする必要があるかどうかを評価します。 信頼性の観点から、このアプローチはお勧めしません。このオプションを使用すると、アプリケーションはユーザー・セッションを中断することなく正常にリカバリできます。 また、負荷分散にはトレードオフがあり、複数のバックエンドにトラフィックを均等に分散する柔軟性が制限されます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "ad7540f5-4cb1-4fc5-b168-e1cd97a0aef6",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 重要なワークロードの場合は、AKS クラスターの可用性ゾーンを使用します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "904fdfa5-af9a-4195-b683-e3bb7627b394",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: マルチクラスター トポロジでのフェールオーバー トラフィックの処理など、クラスターが確実にスケーリングできるように IP アドレス空間を計画します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "2c1ab1ce-ee84-4737-b426-d236a98d3ae5",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Container insights を有効にして、クラスターを監視し、信頼性に影響を与えるイベントのアラートを構成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "fa12c27b-df70-41fd-a93a-680e3cacf7ac",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: ワークロードが水平スケーリングをサポートし、アプリケーションの準備状況と正常性を報告するように構築されていることを確認します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "f2297ffc-fec7-43c6-9187-9739264c9d66",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ワークロードがユーザー ノード プールで実行されていることを確認し、適切なサイズの SKU を選択します。少なくとも、ユーザーノードプール用に 2 つのノードと、システムノードプール用に 3 つのノードを含めます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "0b542d27-1846-4d1b-9c5e-bd7c0d079cb3",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: AKS アップタイム SLA を使用して、運用ワークロードの可用性目標を達成します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "Kubernetes スケジューラがノード内のハードウェアによってワークロードを論理的に分離できるようにします。容認とは異なり、一致するノードセレクターのないPodは、ラベル付きノードでスケジュールできるため、ノード上の未使用のリソースを消費できますが、一致するノードセレクターを定義するPodが優先されます。ノード アフィニティを使用すると、柔軟性が向上し、ポッドがノードと一致しない場合に何が起こるかを定義できます。",
+ "guid": "b11892cd-f678-4399-bac8-b98095e250c6",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ノードセレクターとアフィニティーを使用してポッドのスケジューリングを制御します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure CNI は、Windows ベースのノード プール、特定のネットワーク要件、Kubernetes ネットワーク ポリシーなど、特定のシナリオに必要です。詳細については、「Kubenet と Azure CNI」を参照してください。",
+ "guid": "9e3e8182-95e7-4953-9a2b-9cc2f77bf717",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: ネットワーク要件とクラスターのサイズに基づいて、ネットワークプラグインを適切に選択していることを確認します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "AKS アップタイム SLA では、Azure Availability Zones を使用する AKS クラスターの Kubernetes API サーバー エンドポイントの \"99.95%\" の可用性、または Azure Availability Zones を使用しない AKS クラスターの \"99.9%\" の可用性が保証されます。",
+ "guid": "4bfaa73e-a949-404a-a93b-a2b0a7feeff5",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 運用グレードのクラスターには、AKS アップタイム SLA を使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテナの分析情報は、Metrics API を介して Kubernetes で使用できるコントローラー、ノード、およびコンテナの正常性とパフォーマンスを監視するのに役立ちます。Prometheus との統合により、アプリケーションとワークロードのメトリクスを収集できます。",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "ノードプールを複数のゾーンに分散させることで、1つのノードプール内のノードは、別のゾーンがダウンしても実行を続けます。コローカリティ要件が存在する場合は、1 つのゾーンへの通常の VMSS ベースの AKS デプロイまたは近接配置グループを使用して、ノード間の待機時間を最小限に抑えることができます。",
+ "guid": "74ff8612-55b7-4029-81bc-da363b133f16",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 可用性ゾーンを使用して、AKS エージェント ノードを物理的に分離されたデータ センターに分散することで、Azure リージョン内の回復性を最大化します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "インターネットに接続するワークロードでは、Azure Front Door または Azure Traffic Manager を利用して、AKS クラスター間でトラフィックをグローバルにルーティングする必要があります。",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 異なる Azure リージョンにデプロイされた AKS クラスターをデプロイすることで、マルチリージョン戦略を採用して、可用性を最大化し、ビジネス継続性を提供します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテナの CPU とメモリのリソース制限は、Kubernetes クラスタのリソース枯渇を防ぐために必要です。",
+ "guid": "f1a92d3f-eab5-4dc2-b0e8-75865842f205",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ポッド リソースの要求と制限をアプリケーションのデプロイ マニフェストで定義し、Azure Policy を使用して適用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "システム ノード プールには、少なくとも 2 つの vCPU と 4 GB のメモリの VM SKU が必要ですが、4 つ以上の vCPU をお勧めします。詳細な要件については、システムおよびユーザーノードプールを参照してください。",
+ "guid": "55429203-5f2a-4ed1-9107-22d2c47b8ef1",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: システム ノード プールをアプリケーション ワークロードから分離します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションは同じ構成を共有し、GPU 対応 VM、CPU またはメモリ最適化 VM、またはゼロへのスケーリング機能が必要な場合があります。ノードプールの数が多くならないようにして、余分な管理オーバーヘッドを削減します。",
+ "guid": "3603ec74-ada6-4050-baa3-fb25386fb7df",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 特定の要件に基づいて、アプリケーションを専用のノード プールに分離します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "Azure Load Balancer の制限による信頼性の問題を回避するために、同時送信トラフィックが多い場合は、代わりに NAT ゲートウェイを使用して、信頼性の高いエグレス トラフィックを大規模にサポートします。",
+ "guid": "d441f009-ca99-4caf-9544-c71de5949d10",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: NAT ゲートウェイは、多数の同時送信接続を行うワークロードを実行するクラスターに使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "ff274266-a326-4c2c-9b85-7ce50c679b36",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: マネージド ID を使用して、サービス原則の管理とローテーションを回避します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d44b3684-99d7-4946-ab75-fb58d9d8626e",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Kubernetes ロールベースのアクセス制御 (RBAC) と Microsoft Entra ID を使用して最小限の特権アクセスを実現し、管理者特権の付与を最小限に抑えて構成とシークレットのアクセスを保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "12e0cc02-b585-4d6f-97be-1b073e57522c",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Sentinel でコンテナーに Microsoft Defender を使用して、クラスターとそれらで実行されているワークロード全体の脅威を検出し、迅速に対応します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8e9c196f-b93a-46c5-9507-1e5cad83dd21",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: プライベート AKS クラスターをデプロイして、API サーバーへのクラスター管理トラフィックがプライベート ネットワーク上に留まるようにします。または、非プライベートクラスターの API サーバー許可リストを使用します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Web Application Firewall を使用して HTTP(S) トラフィックをセキュリティで保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "feba8909-0760-4a87-833a-b36fabbe722e",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: CI/CID パイプラインがコンテナ対応スキャンで強化されていることを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "Microsoft Entra ID を使用すると、ID 管理コンポーネントが一元化されます。ユーザー アカウントまたはグループの状態を変更すると、AKS クラスターへのアクセスで自動的に更新されます。Kubernetes クラスターの開発者とアプリケーション所有者は、さまざまなリソースにアクセスする必要があります。",
+ "guid": "463da713-377d-46e1-a9cf-a384a0657537",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Entra 統合を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "AKS と Microsoft Entra ID を使用すると、'imagePullSecrets' シークレットを使用せずに Azure Container Registry による認証が可能になります。詳細については、「Azure Kubernetes Service から Azure Container Registry を使用した認証」を参照してください。",
+ "guid": "f9f7946f-b9b6-40d1-9f30-0bfb38be5c74",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Entra ID を使用して Azure Container Registry に認証します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "デフォルトでは、ノード プールと API サーバー間のネットワーク トラフィックは、Microsoft のバックボーン ネットワークを移動します。プライベートクラスターを使用すると、API サーバーへのネットワークトラフィックがプライベートネットワーク上にのみ留まるようにすることができます。",
+ "guid": "10d61300-19e4-403c-bf22-a554c56b4afc",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: プライベート AKS クラスターを使用して、API サーバーへのネットワーク トラフィックをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "公開クラスターを使用する場合でも、許可された IP 範囲機能を使用して、クラスター API サーバーに到達できるトラフィックを制限できます。デプロイ ビルド エージェントのパブリック IP、運用管理、ノード プールのエグレス ポイント (Azure Firewall など) などのソースを含めます。",
+ "guid": "b845e9a6-c5f3-4cf7-a956-6f1ffde88569",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: プライベートでない AKS クラスターの場合は、API サーバーによって承認された IP 範囲を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Kubernetes APIサーバーへのアクセスを保護することは、クラスターを保護するために実行できる最も重要なことの1つです。Kubernetes のロールベースのアクセス制御 (RBAC) を Microsoft Entra ID と統合して、API サーバーへのアクセスを制御します。ローカル アカウントを無効にして、Microsoft Entra ID ベースの ID を使用してすべてのクラスター アクセスを強制します。",
+ "guid": "0b3a4624-de6e-4cfe-af5b-19ad4708087d",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Microsoft Entra RBAC を使用して API サーバーを保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスター内のポッド間のネットワーク トラフィックを保護および制御します。",
+ "guid": "caabd1f2-e6a9-4c55-9115-349d1d6716bb",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure ネットワーク ポリシーまたは Calico を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Policy は、一元化された一貫した方法で、クラスターに大規模な適用と保護を適用するのに役立ちます。また、ポッドに付与される機能や、会社のポリシーに対して実行されているものがあるかどうかも制御できます。",
+ "guid": "d65686d0-3988-49b5-8a98-59818ba81c50",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Policy を使用してクラスターとポッドをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "コンテナが実行できるアクションへのアクセスを制限します。最小限の権限を付与し、ルートまたは特権エスカレーションの使用を避けます。",
+ "guid": "f1e41c15-87e4-4135-ab6c-fb6803194f12",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: リソースへのコンテナー アクセスをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "受信トラフィックをスキャンして潜在的な攻撃を検出するには、Azure Application Gateway または Azure Front Door 上の Azure Web Application Firewall (WAF) などの Web アプリケーション ファイアウォールを使用します。",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Web Application Firewall を使用して HTTP(S) トラフィックをセキュリティで保護します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスターの送信トラフィックが、Azure Firewall や HTTP プロキシなどのネットワーク セキュリティ ポイントを通過していることを確認します。",
+ "guid": "fa580200-65eb-4cc8-9c23-a5e68f1d86a7",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: クラスターのエグレス トラフィックを制御します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Key Vault のシークレット、証明書、接続文字列を強力な暗号化で保護し、ローテーションします。アクセス監査ログを提供し、コアシークレットをデプロイメントパイプラインから保持します。",
+ "guid": "0f5b5089-02fc-4f46-839c-7ff86610366a",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: オープンソースの Microsoft Entra ワークロード ID とシークレット ストア CSI ドライバーを Azure Key Vault と共に使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "クラスター、コンテナ、およびそれらのアプリケーションのセキュリティを監視および維持します。",
+ "guid": "d2895e72-e9c1-4af7-9e5a-53edc92423e7",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Microsoft Defender for Containers を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c5148caa-6478-4ba8-993b-1a8640716d66",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: ノード プールと、長期的な容量が予想される予約インスタンスごとに適切な VM SKU を使用します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "90ac2d0c-790e-4b2b-be35-60a55a19397a",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 適切なマネージド ディスク階層とサイズを使用します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "df9bb42d-c34f-488f-a50c-0624ca247647",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: CPU、メモリ、ストレージ、ネットワークから始まるパフォーマンス メトリクスをレビューして、クラスター、ノード、名前空間ごとにコスト最適化の機会を特定します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "43ffe0b7-7bc4-42b0-a370-af4a943b19c0",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: オートスケーラーを使用して、ワークロードのアクティブ度が低いときにスケールインします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "ワークロードの要求に合わせて選択することで、不要なリソースにお金を払う必要がなくなります。",
+ "guid": "c4ce3529-2891-41f1-aa3f-e87a791b01a3",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: SKU の選択とマネージド ディスクのサイズをワークロードの要件に合わせて調整します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "適切な仮想マシン インスタンスの種類を選択することは、AKS でアプリケーションを実行するコストに直接影響するため、非常に重要です。適切な使用率を欠いて高パフォーマンスのインスタンスを選択すると、無駄な支出につながる可能性があり、強力なインスタンスを選択すると、パフォーマンスの問題やダウンタイムの増加につながる可能性があります。適切な仮想マシンインスタンスタイプを決定するには、ワークロードの特性、リソース要件、および可用性のニーズを考慮します。",
+ "guid": "1088060f-7467-48db-950d-5890503e2974",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 適切な仮想マシン インスタンスの種類を選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "AKS では、ARM64 Ubuntu エージェント ノードの作成と、クラスター内の Intel アーキテクチャと ARM アーキテクチャ ノードの組み合わせの作成がサポートされており、低コストでパフォーマンスを向上させることができます。",
+ "guid": "ce50c713-ad3e-4781-9193-63485491aa48",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Arm アーキテクチャに基づいて仮想マシンを選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スポット VM を使用すると、未使用の Azure 容量を大幅な割引 (従量課金制と比較して最大 90%) で利用できます。Azure で容量を戻す必要がある場合、Azure インフラストラクチャはスポット ノードを削除します。",
+ "guid": "7a281f48-217a-4668-aa30-c9d2c84d0d72",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: [Azure Spot Virtual Machines] を選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "多くの要因により、リソースのコストは Azure のリージョンごとに異なります。コスト、レイテンシ、コンプライアンスの要件を評価して、ワークロードをコスト効率よく実行し、エンドユーザーに影響を与えたり、追加のネットワーク料金が発生したりしないようにします。",
+ "guid": "433efe5b-3776-459c-8560-058f87773838",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 適切なリージョンを選択します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "イメージを合理化すると、新しいノードがこれらのイメージをダウンロードする必要があるため、コストを削減できます。コンテナをできるだけ早く起動できるようにイメージをビルドすると、アプリケーションの起動中にユーザーリクエストの失敗やタイムアウトが発生し、オーバープロビジョニングにつながる可能性を回避できます。",
+ "guid": "65d3f70e-457a-4d62-8140-de2b0c4f7f99",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: 小さく最適化されたイメージを維持します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "AKS クラスター内のノード数を自動的にスケールダウンすると、需要が少ないときに効率的なクラスターを実行し、需要が戻ったときにスケールアップできます。",
+ "guid": "b4d583e3-7268-41d9-9e93-0394bed77298",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Cluster Autoscaler を有効にして、過剰なリソース容量に対応してエージェント ノードの数を自動的に減らします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ノード自動プロビジョニングは、SKU の選択プロセスを簡素化し、保留中のポッド リソース要件に基づいて、最も効率的でコスト効率の高い方法でワークロードを実行するための最適な VM 構成を決定します。",
+ "guid": "48ae7de4-26f7-457c-b1a4-a18467b7401d",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: ノードの自動プロビジョニングを有効にして、VM SKU の選択を自動化します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "デプロイ内のポッドの数は、CPU 使用率やその他の選択メトリクス (クラスターのスケールイン操作をサポートする) に応じて調整します。",
+ "guid": "d3194174-d037-4a35-9cd5-244d377cfabb",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Horizontal Pod Autoscaler を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "ポッドのサイズを適正化し、過去の使用状況に基づいてリクエストと制限を動的に設定します。",
+ "guid": "091dc052-7bf8-4dd1-aca1-d514ddcb2aa8",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Vertical Pod Autoscaler (プレビュー) を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "処理中のイベントの数に基づいてスケーリングします。50+ KEDAスケーラーの豊富なカタログからお選びください。",
+ "guid": "fe3d7c5f-f5a9-4b5e-a4f9-81bf76930967",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Kubernetes イベント駆動型自動スケーリング (KEDA) を使用します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コスト最適化を可能にするための基盤は、コスト削減クラスターの普及です。財務運用アプローチ(FinOps)は、組織がクラウドのコストを削減するためによく使用されます。これは、財務、運用、エンジニアリングの各チームが協力して、コスト削減目標の調整を推進し、クラウドコストに透明性をもたらすための手法です。",
+ "guid": "3a7d1aa1-37a0-40aa-acbf-ff1852c15c93",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: クラウドの財務規律と文化的な実践を採用して、クラウドの使用の所有権を促進します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "容量を適切に計画し、ワークロードが予測可能で、長期間存在する場合は、Azure 予約または節約プランにサインアップして、リソース コストをさらに削減します。",
+ "guid": "ed669535-43d7-4988-9ec5-3b70762e54eb",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Reservations または Azure Savings Plan にサインアップします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Container insights は、クラスターのアイドル状態と未割り当てのリソースに関する実用的な分析情報を提供します。Container insights は、Prometheus メトリックの収集もサポートし、Azure Managed Grafana と統合して、アプリケーションとインフラストラクチャの全体像を把握します。",
+ "guid": "5742c5ca-120a-4b6e-a5cf-51f13b04966c",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コスト分析クラスター拡張機能を使用すると、クラスターまたは名前空間内のさまざまな Kubernetes リソースに関連するコストに関する詳細な分析情報を取得できます。",
+ "guid": "6588bddb-d7b6-41a6-8b87-628a758df2fe",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: AKS Cost Analysis アドオンを構成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "38e28f4f-7465-4e3a-bf05-4d6072d4bae6",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター アーキテクチャ: Bicep や Terraform などを使用したテンプレートベースのデプロイを使用します。すべてのデプロイが反復可能で、追跡可能であり、ソース コード リポジトリに格納されていることを確認します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "1255b75f-0f3b-4fd7-96c5-17e4e30bbe11",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 自動化されたプロセスを構築して、クラスターが必要なクラスター全体の構成とデプロイでブートストラップされるようにします。これは、多くの場合、GitOps を使用して実行されます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "07b2d10f-e373-484e-9ece-f182a1b714b2",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: ソフトウェア開発ライフサイクル内のワークロードに対して、反復可能で自動化されたデプロイ プロセスを使用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "6ec1af22-6132-43a6-9286-20333ee6e244",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 診断設定を有効にして、コントロール プレーンまたはコア API サーバーの操作がログに記録されるようにします。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "4811307d-53ce-4cf9-b022-2c2ab1be5596",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Container insights を有効にして、メトリクス、ログ、診断を収集し、クラスターとそれで実行されているワークロードの可用性とパフォーマンスを監視します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "20301c55-a815-4a3a-83ec-fe6d1789e697",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: ワークロードは、収集可能なテレメトリを出力するように設計する必要があり、これには活性度と準備状態も含まれる必要があります。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "13d37985-5266-4064-97f0-7c7aa7491941",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Kubernetes を対象とするカオス エンジニアリング プラクティスを使用して、アプリケーションまたはプラットフォームの信頼性の問題を特定します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "d96fea7e-598f-4f59-95c6-d75fc8db1c7a",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: ワークロードを最適化して、コンテナ内で効率的に運用およびデプロイします。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "8e8fbde0-f037-4eec-bac2-634ab73d7b0a",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Azure Policy を使用して、クラスターとワークロードのガバナンスを適用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "AKS でアプリケーションを正常にビルドして実行するには、理解して実装する必要がある重要な考慮事項があります。これらの領域には、マルチテナンシーとスケジューラ機能、クラスタとポッドのセキュリティ、またはビジネス継続性とディザスタリカバリが含まれます。",
+ "guid": "95ee25c6-37fc-47c0-a3e1-eea5c1324edb",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: AKS のベスト プラクティスに関するドキュメントを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Chaos Studio は、障害をシミュレートし、ディザスター リカバリー状況をトリガーするのに役立ちます。",
+ "guid": "2695b4b9-e125-4644-a27c-977eefdbce73",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Azure Chaos Studio を確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Container insights は、Metrics API とコンテナ ログを通じて Kubernetes で使用可能なコントローラー、ノード、およびコンテナからメモリとプロセッサのメトリクスを収集することで、コンテナのパフォーマンスを監視するのに役立ちます。",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: Container insights を使用してクラスターの監視を構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "AKS クラスターで実行されているアプリケーションのコードベースの監視のために Application Insights を構成します。",
+ "guid": "405f6de4-e769-4066-8e8c-f7887a66d42a",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Azure Monitor を使用してアプリケーションのパフォーマンスを監視します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Monitor の一部であるコンテナー分析情報は、Prometheus メトリックを収集するためのシームレスなオンボード エクスペリエンスを提供します。詳細については、「Prometheus メトリックのスクレイピングの設定」を参照してください。",
+ "guid": "3c42907d-254e-4b0f-b579-7362e0f37eaa",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: Container insights を使用して Prometheus メトリックのスクレイピングを構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "インターネットに接続するワークロードでは、Azure Front Door または Azure Traffic Manager を利用して、AKS クラスター間でトラフィックをグローバルにルーティングする必要があります。",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: 異なる Azure リージョンにデプロイされた AKS クラスターをデプロイすることで、マルチリージョン戦略を採用して、可用性を最大化し、ビジネス継続性を提供します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Azure Policy は、一元化された一貫した方法で、クラスターに大規模な適用と保護を適用するのに役立ちます。また、ポッドに付与される機能や、会社のポリシーに対して実行されているものがあるかどうかも制御できます。",
+ "guid": "02f47a84-6d0c-4243-a5ab-743c85dcce67",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: Azure Policy を使用して、クラスターとポッドの構成標準を運用可能にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "KubernetesとIngressコントローラーは、リリースエンジニアリングプロセスに含めるための多くの高度なデプロイパターンをサポートしています。ブルーグリーンデプロイやカナリアリリースなどのパターンを考えてみましょう。",
+ "guid": "ecbf4266-e97a-4b02-8d02-ca2fd42cea5b",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: リリースエンジニアリングプロセスでプラットフォーム機能を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "デプロイメントやテストなど、ミッションクリティカルな設計領域を自動化します。",
+ "guid": "4646ab36-8c28-4740-afac-c9819f0f6ac9",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ミッションクリティカルなワークロードの場合は、スタンプレベルのブルー/グリーンデプロイを使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "de0e6d8d-65a5-46b0-891b-2ad2aa09de11",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: SKU、自動スケール設定、IP アドレス指定、フェールオーバーに関する考慮事項を含む詳細な容量計画の演習を実行し、反復処理します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "b78aea0e-3fd2-4dcc-b617-34a26892aa76",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: クラスター オートスケーラーを有効にして、ワークロードの要求に応じてエージェント ノードの数を自動的に調整します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "9b168db7-a88b-4e2c-b555-bc525c7e48da",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスター・アーキテクチャ: Horizontal ポッド・オートスケーラーを使用して、CPU 使用率またはその他の選択メトリックに応じてデプロイメント内のポッドの数を調整します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "deadeedd-dab6-4774-84df-f5223ed6ede1",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ポッドとクラスター オートスケーラーの両方を実行する継続的なロード テスト アクティビティを実行します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "7b1e9a65-2d5d-4eeb-a349-136895131b06",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ワークロードを異なるノードプールに分離し、独立したスキャリングを可能にします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "容量計画を形式化した後は、クラスターのリソース使用率を継続的に観察して、容量計画を頻繁に更新する必要があります。",
+ "guid": "7b4e5e8b-6e55-4db7-a330-19990bd1e0d2",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: 詳細な容量計画を作成し、継続的に見直して改訂します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "AKS クラスター内のノード数を自動的にスケールアップまたはスケールダウンする機能により、効率的でコスト効率の高いクラスターを実行できます。",
+ "guid": "631272b4-9ca7-4e6f-ae9b-3c55946b3924",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターのアーキテクチャ: クラスター オートスケーラーを有効にして、リソースの制約に応じてエージェント ノードの数を自動的に調整します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "常に実行中のノードを必要とするシステムノードプールとは異なり、ユーザーノードプールではスケールアップまたはスケールダウンできます。",
+ "guid": "85ffe644-7c4b-4f2d-b2fa-ed8e7c8d2e84",
+ "service": "Azure Kubernetes Service",
+ "text": "クラスターとワークロードのアーキテクチャ: ワークロードを異なるノードプールに分割し、ユーザーノードプールのスケーリングを検討します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "リソースを必要とするワークロードのリソースのバランスを制御するのに役立ちます。",
+ "guid": "bb7f1396-6a84-4e6d-b6d8-5fc48b4c2b5f",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロード アーキテクチャ: AKS の高度なスケジューラ機能を使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "すべてのスケール決定が CPU またはメモリのメトリクスから導き出されるわけではありません。多くの場合、スケールに関する考慮事項は、より複雑なデータ ポイントや外部のデータ ポイントから得られます。KEDA を使用して、ワークロードに固有のシグナルに基づいて意味のある自動スケール ルールセットを構築します。",
+ "guid": "bc908693-9e21-478c-9fde-e92ba949c89e",
+ "service": "Azure Kubernetes Service",
+ "text": "ワークロードのアーキテクチャ: 意味のあるワークロードスケーリングメトリクスを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "f4804af8-4f42-450d-916c-5593c145ccf9",
+ "service": "Azure Machine Learning",
+ "text": "回復性: AKS などの可用性ゾーンをサポートする環境にモデルをデプロイします。デプロイが可用性ゾーン全体に分散されていることを確認することで、データセンターに障害が発生した場合でもデプロイを利用できるようになります。信頼性と可用性を向上させるには、マルチリージョンのデプロイトポロジを検討してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "995d097a-0de2-4431-947f-561b49a60f21",
+ "service": "Azure Machine Learning",
+ "text": "回復性: トレーニングと推論の両方に十分なコンピューティングがあることを確認します。リソース計画を通じて、コンピューティング SKU とスケール設定がワークロードの要件を満たしていることを確認します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "d494b7f5-ad32-471f-9fc7-18945ca454ab",
+ "service": "Azure Machine Learning",
+ "text": "回復性: 探索的作業に使用される Machine Learning ワークスペースと運用に使用されるワークスペースを分離します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "6f1dd2cc-e0af-4203-ab0b-b7c65b7b18ae",
+ "service": "Azure Machine Learning",
+ "text": "回復性: 推論にマネージド オンライン エンドポイントを使用する場合は、ブルーグリーン デプロイなどのリリース戦略を使用して、ダウンタイムを最小限に抑え、新しいバージョンのデプロイに関連するリスクを軽減します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "558fcdcf-33e7-4385-82fd-424bc8ae64bc",
+ "service": "Azure Machine Learning",
+ "text": "ビジネス要件: 信頼性のニーズに基づいて、コンピューティング クラスター、コンピューティング インスタンス、および外部化された推論ホストの使用を選択し、サービス レベル アグリーメント (SLA) を要素として考慮します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "de5be058-1d22-4f38-96aa-3fbca5071a8f",
+ "service": "Azure Machine Learning",
+ "text": "復旧: 大規模なモデルをトレーニングする場合は、Machine Learning でサポートされているチェックポイント機能などの自己復旧機能があることを確認します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "20104165-9764-4920-98dd-63fddc5f58d3",
+ "service": "Azure Machine Learning",
+ "text": "リカバリ: リカバリ戦略が定義されていることを確認します。Machine Learning には自動フェールオーバーはありません。そのため、ワークスペースとそのすべての依存関係 (Key Vault、Azure Storage、Azure Container Registry など) を網羅する戦略を設計する必要があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "マルチリージョンのデプロイにより、1 つのリージョンで障害が発生した場合でも、Machine Learning ワークロードが引き続き実行されます。マルチリージョン デプロイにより、リージョン間の負荷分散が改善され、異なる地理的領域にいるユーザーのパフォーマンスが向上する可能性があります。詳細については、「ビジネス継続性とディザスター リカバリーのためのフェールオーバー」を参照してください。",
+ "guid": "046ff188-7d68-492f-850c-c65ee0c9a962",
+ "service": "Azure Machine Learning",
+ "text": "マルチリージョン モデルのデプロイ: 信頼性と可用性を向上させるために、可能な場合はマルチリージョンのデプロイ環境を検討してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "モデルのチェックポイント処理では、トレーニング中に機械学習モデルの状態が定期的に保存されるため、中断、障害、または終了が発生した場合に復元できます。詳細については、「Nebula によるチェックポイント速度の向上とコストの削減」を参照してください。",
+ "guid": "8eaf992c-ccd9-495f-b625-d4f544d38d38",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニングの回復性: Azure Container for PyTorch、TensorFlow Estimator クラス、モデルのチェックポイント処理をサポートする Run オブジェクトと FileDataset クラスなど、Machine Learning でサポートされているチェックポイント機能を使用します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "低優先度の仮想マシンは、価格が割引されますが、プリエンプティブです。専用仮想マシン層を使用するクラスターは割り込まれません。",
+ "guid": "19720202-b456-44c4-8ff1-28eaa20e1a7d",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティング クラスターに専用仮想マシン層を使用する: バッチ推論にコンピューティング クラスターに専用仮想マシン層を使用して、バッチ ジョブが割り込まれないようにします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "303116b4-65cb-43e5-8ceb-7bebaf16b568",
+ "service": "Azure Machine Learning",
+ "text": "可用性: ワークスペースへのアクセスを仮想ネットワーク内のリソースに制限することで、Machine Learning ワークスペースの攻撃対象領域を減らします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "eb9cc8b2-c9a3-4fe7-9578-8918ab53eae6",
+ "service": "Azure Machine Learning",
+ "text": "機密性: ネットワークの分離を実装することで、Machine Learning ワークスペースからのデータ流出から保護します。すべての外部リソースへのアクセスが明示的に承認され、他のすべての外部リソースへのアクセスが許可されていないことを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1cb53633-f0c7-45f4-a98b-76b0314a94ba",
+ "service": "Azure Machine Learning",
+ "text": "整合性: 最小特権の原則に基づいて、外部リソースの Machine Learning ワークスペースを認証および承認するアクセス制御を実装します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "30341513-1f91-480e-bc19-8031f1851087",
+ "service": "Azure Machine Learning",
+ "text": "整合性: 特定のユース ケースまたはプロジェクトに基づいてワークスペースを設定することで、Machine Learning ワークスペースのユース ケースの分離を実装します。このアプローチは、最小特権の原則に準拠しており、ワークスペースにアクセスできるのは、ユースケースまたはプロジェクトのデータおよび実験アセットへのアクセスを必要とする個人のみであることを保証します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1274dc7a-a81c-409d-8cd6-e3bda0ee8687",
+ "service": "Azure Machine Learning",
+ "text": "整合性: 基本モデルへのアクセスを規制します。承認されたレジストリのみがモデル レジストリ内のモデルにアクセスできることを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ca17ad83-954c-4eba-a30f-9e7c3c2079f6",
+ "service": "Azure Machine Learning",
+ "text": "完全性: 承認されたコンテナレジストリへのアクセスを規制します。Machine Learning コンピューティングが承認されたレジストリにのみアクセスできるようにします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1ffe0cf7-a26a-4018-bef8-4d7fdf3291e2",
+ "service": "Azure Machine Learning",
+ "text": "整合性: Machine Learning コンピューティングで実行できる Python パッケージを規制します。Python パッケージを規制すると、信頼できるパッケージのみが実行されます。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8d9aea78-3ebe-4ec6-968d-3daa07abc239",
+ "service": "Azure Machine Learning",
+ "text": "整合性: Machine Learning コンピューティング環境でのトレーニングに使用されるコードに署名する必要があります。コード署名を要求すると、実行中のコードが信頼できるソースからのものであり、改ざんされていないことが保証されます。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a6664b76-0292-4bd4-841e-859b65a569c0",
+ "service": "Azure Machine Learning",
+ "text": "機密性: Machine Learning ワークスペースおよび関連リソース (ワークスペース ストレージ アカウントなど) に対するロールベースのアクセス制御 (RBAC) の最小特権の原則に準拠して、各自のロールに必要なアクセス許可のみが付与されるようにし、潜在的なセキュリティ リスクを最小限に抑えます。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "2a509fe2-ce1d-410c-a5cb-780eb8dfaf15",
+ "service": "Azure Machine Learning",
+ "text": "整合性: 保存データと転送中のデータの暗号化を実装することで、信頼と検証済みのアクセスを確立します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティ ベースラインは、ネットワーク セキュリティ、ID 管理、データ保護、特権アクセスなどの重要なセキュリティ側面に関するカスタマイズされたガイダンスを提供します。最適なセキュリティを確保するには、Microsoft Defender for Cloud を使用してこれらの側面を監視します。",
+ "guid": "0e30e670-0c69-4c8a-82f5-b88494e56879",
+ "service": "Azure Machine Learning",
+ "text": "セキュリティ ベースライン: Machine Learning Service のセキュリティとコンプライアンスを強化するには、Machine Learning の Azure セキュリティ ベースラインを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "マネージド仮想ネットワークの分離は、ワークスペースを他のネットワークから分離することでセキュリティを強化し、不正アクセスのリスクを軽減します。組織内の別のネットワークで侵害が発生した場合、Machine Learning ワークスペースの分離されたネットワークは影響を受けず、機械学習ワークロードが保護されます。",
+ "guid": "aeb66f5c-45bc-45d8-a7bf-a6bd5c6e5f9a",
+ "service": "Azure Machine Learning",
+ "text": "マネージド仮想ネットワークの分離: Machine Learning のマネージド仮想ネットワークの分離を構成します。マネージド仮想ネットワークの分離を有効にすると、ワークスペースのマネージド仮想ネットワークが作成されます。ワークスペース用に作成したマネージド コンピューティング リソースでは、このマネージド仮想ネットワークが自動的に使用されます。マネージド仮想ネットワークの分離を実装できない場合は、ネットワーク トポロジの推奨事項に従って、コンピューティングをソリューション内の他のリソース (ワークスペース リソースのプライベート エンドポイントを含む) から離れた専用サブネットに分離する必要があります。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Machine Learning ネットワークの分離により、ワークスペースへのアクセスが安全で制御されることで、セキュリティが強化されます。ワークスペースにプライベート エンドポイントを構成すると、ワークスペースへのアクセスをプライベート IP アドレス経由でのみ行われるように制限できます。",
+ "guid": "af44fe21-713a-435f-97bd-34ec8221f729",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning ネットワークの分離: Machine Learning ワークスペースのプライベート エンドポイントを構成し、そのプライベート エンドポイント経由でワークスペースに接続します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "この構成により、データ流出のリスクが最小限に抑えられ、データのセキュリティが向上します。この設定を有効にすると、システムにアクセスした悪意のあるアクターは、承認されていない外部の宛先にデータを送信できなくなります。",
+ "guid": "d1cdc5a5-eb9a-43d7-ad74-6169482b28d0",
+ "service": "Azure Machine Learning",
+ "text": "承認された送信アクセスのみを許可する: データ流出のリスクを最小限に抑えるために、Machine Learning ワークスペースのマネージド アウトバウンド アクセスの送信モードを [承認されたアウトバウンドのみを許可する] に構成します。アクセスする必要があるリソースのプライベートエンドポイント、サービスタグ、または完全修飾ドメイン名(FQDN)を設定します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ネットワークの分離により、Azure のサービスとしてのプラットフォーム (PaaS) ソリューションへのアクセスをプライベート IP アドレスのみに制限することで、セキュリティが強化されます。",
+ "guid": "0d8346f9-f2fe-4a4e-b153-662c5c6e4510",
+ "service": "Azure Machine Learning",
+ "text": "依存サービスの仮想ネットワーク分離: Storage、Key Vault、Container Registry などの依存サービスをプライベート エンドポイントで構成し、パブリック アクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "マネージド ID は、資格情報を保存し、サービス プリンシパルを手動で管理およびローテーションする必要をなくすことで、セキュリティを向上させます。",
+ "guid": "bf2a8ddf-263e-46fb-b73a-ca8b9ba168e7",
+ "service": "Azure Machine Learning",
+ "text": "マネージド ID: Machine Learning と他のサービスとの間の認証にマネージド ID を使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "ローカル認証を無効にすると、Machine Learning コンピューティングのセキュリティが向上し、ID とリソース資格情報の一元的な制御と管理が可能になります。",
+ "guid": "70477454-0ddb-4ad6-9342-1ad6290bbb06",
+ "service": "Azure Machine Learning",
+ "text": "ローカル認証を無効にする: Machine Learning コンピューティング クラスターとインスタンスのローカル認証を無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SSHアクセスを無効にすると、権限のない個人がアクセスを取得してシステムに害を及ぼす可能性を防ぎ、ブルートフォース攻撃から保護できます。",
+ "guid": "cbd359bc-8057-4a9c-9183-c4fc1e70a69b",
+ "service": "Azure Machine Learning",
+ "text": "パブリック SSH ポートを無効にする: 'remoteLoginPortPublicAccess' を 'Disabled' に設定して、Machine Learning コンピューティング クラスターでパブリック Secure Shell (SSH) ポートが閉じていることを確認します。別のコンピューティングを使用する場合は、同様の構成を適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "パブリックIPアドレスのプロビジョニングは控えて、コンピュート・インスタンスまたはクラスタへの不正アクセスの可能性を制限することでセキュリティを強化します。",
+ "guid": "cc532133-2bba-484f-b316-035b93b3ee6a",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning コンピューティングのパブリック IP アドレスをプロビジョニングしない: Machine Learning コンピューティング クラスターまたはコンピューティング インスタンスをプロビジョニングするときは、enableNodePublicIp を 'false' に設定します。別のコンピューティングを使用する場合は、同様の構成を適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最新のイメージを使用することで、最新のセキュリティパッチを確実に適用するなど、一貫性があり、安定した、安全な環境を維持できます。",
+ "guid": "cb49b636-1011-43a0-a12b-25378f677153",
+ "service": "Azure Machine Learning",
+ "text": "最新のオペレーティング・システム・イメージの取得: コンピュート・インスタンスを再作成して、最新のオペレーティング・システム・イメージを取得します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "厳格なワークスペースアクセス制御により、各個人が自分の役割に必要な権限のみを持つようにすることで、セキュリティを強化します。たとえば、データ サイエンティストは、実験を実行するためのアクセス権はあるが、セキュリティ設定を変更するためのアクセス権は持たない場合があるため、潜在的なセキュリティ リスクを最小限に抑えることができます。",
+ "guid": "17cac647-8c6f-4a6f-a66d-c436e17c91c8",
+ "service": "Azure Machine Learning",
+ "text": "厳格な Machine Learning ワークスペースのアクセス制御: Microsoft Entra ID グループを使用してワークスペースのアクセスを管理し、RBAC の最小特権の原則に従います。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "モデルカタログからのデプロイメントを特定のレジストリに制限すると、承認されたレジストリにのみモデルをデプロイできます。このアプローチは、オープンソースの基本モデルへのアクセスを規制するのに役立ちます。",
+ "guid": "18a61ee3-34d2-484a-a740-3c90d23c64b9",
+ "service": "Azure Machine Learning",
+ "text": "モデル・カタログ・デプロイメントの制限: モデル・デプロイメントを特定のレジストリに制限します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保存データを暗号化すると、直接管理されるキーを使用して機密データが暗号化されるため、データのセキュリティが強化されます。独自の暗号化キーを管理する規制要件がある場合は、この機能を使用してその要件に準拠します。",
+ "guid": "5e14c11e-83fb-40f1-a8dc-d96767d73a13",
+ "service": "Azure Machine Learning",
+ "text": "保存データを暗号化する: Machine Learning でカスタマー マネージド キーを使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "データ流出のリスクを最小限に抑えるには、受信と送信の要件を制限します。",
+ "guid": "6782cd14-a63d-466c-a7c9-8a92afe3b396",
+ "service": "Azure Machine Learning",
+ "text": "データ流出のリスクを最小限に抑える: データ流出防止を実装します。たとえば、エグレス仮想ネットワーク トラフィックをフィルター処理し、特定の Azure Storage アカウントに対してのみデータ流出を許可するサービス エンドポイント ポリシーを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cac38d1e-d21e-4af5-834d-d607469c6439",
+ "service": "Azure Machine Learning",
+ "text": "使用量の最適化: 適切なリソースを選択して、ワークロード要件に合っていることを確認します。たとえば、CPU や GPU、さまざまな SKU、優先度の低い VM と通常の VM などを選択します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "8e98fc4b-2fa4-44b9-9aa7-1c01f67aecb7",
+ "service": "Azure Machine Learning",
+ "text": "使用量の最適化: 使用されていないコンピューティング リソースをスケールダウンまたはアイドル時にシャットダウンして、無駄を減らします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "dfafcc35-c8fb-429b-92c0-53f045884794",
+ "service": "Azure Machine Learning",
+ "text": "使用量の最適化: ポリシーを適用し、設計の上限と下限に準拠するようにクォータを構成します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "14149f48-97d8-4614-9236-681f5fd42b34",
+ "service": "Azure Machine Learning",
+ "text": "使用量の最適化: トレーニング ワークロードの並列化をテストして、低コストの SKU でトレーニング要件を満たすことができるかどうかを判断します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "945e262b-3a0f-4ac9-ac51-69b5500f9ee6",
+ "service": "Azure Machine Learning",
+ "text": "レートの最適化: 今後 1 年から 3 年間の使用量の見積もりが適切である場合は、Azure Reserved Virtual Machine Instances を購入します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "563a3c8d-4168-4f18-a056-efb624734ecf",
+ "service": "Azure Machine Learning",
+ "text": "監視と最適化: モデルをトレーニングするときに、CPU や GPU の使用量などのリソース使用量を監視します。リソースが完全に使用されていない場合は、リソースをより適切に使用するようにコードを変更するか、より小さいまたは安価な VM サイズにスケールダウンします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "適切なコンピューティングを選択することは、ワークロードの実行コストに直接影響するため、非常に重要です。適切な使用をせずに GPU や高パフォーマンスの SKU を選択すると、無駄な支出につながる可能性があり、サイズが小さいコンピューティングを選択すると、トレーニング時間が法外に長くなり、パフォーマンスの問題が発生する可能性があります。",
+ "guid": "3d87f935-99a6-4aee-aac2-069994de09ff",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティングリソースの最適化: ワークロードの要件に基づいてコンピューティングリソースを最適化します。ワークロードに最適なSKUを選択してください:
- 汎用 – バランスの取れたCPUとメモリの比率で、すべての目的に適しています。
- コンピューティング最適化 – CPU とメモリの比率が高く、数学を多用する計算に適しています。
- メモリ最適化 – CPU に対するメモリ容量が多く、メモリ内計算やデータベース アプリケーションに適しています。
- Mシリーズ – 大量のメモリとCPUを搭載した非常に大きなマシン。
- GPU – 変数の数が多く、より高い並列処理と特殊なコア命令の恩恵を受けることができるモデルに適しています。一般的なアプリケーションは、ディープラーニング、画像またはビデオ処理、科学シミュレーション、データマイニング、およびGPU開発フレームワークの活用です。複数のファミリーでテストし、結果をベースラインとして文書化します。モデルとデータが進化するにつれて、最適なコンピューティング リソースが変わる可能性があります。実行時間を監視し、必要に応じて再評価します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コンピューティング クラスターの自動スケールを構成して、使用量が少ないときにスケールダウンします。 ノードの最小数を 0 に設定して、トレーニング クラスターが使用されていないときに 0 にスケールダウンします。",
+ "guid": "d30cfeeb-6c61-4a9d-9a56-c8296cec72cb",
+ "service": "Azure Machine Learning",
+ "text": "コンピューティングのスケーリングを最適化する: コンピューティング クラスターを自動スケーリング用に構成して、必要なものだけを使用するようにします。トレーニング クラスターの場合は、ノードの最小数を 0 に設定し、ノードがアイドル状態になる時間を適切な時間に構成します。反復的な実験を減らすには、時間を短縮してコストを節約します。より反復的な実験を行うには、変更のたびにスケールアップまたはスケールダウンにかかる費用が発生しないように、時間を長くします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "終了ポリシーを設定すると、不良実行を早期に停止することでコストを節約できます。",
+ "guid": "098a7bee-444c-4351-aeb1-8bd97036299c",
+ "service": "Azure Machine Learning",
+ "text": "トレーニング終了ポリシーを設定する: トレーニング実行の期間を制限するか、早期に終了するために、早期終了ポリシーを設定します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "低優先度の仮想マシンを使用すると、大量のコンピューティング能力を低コストで使用できます。Azure の余剰容量を利用します。",
+ "guid": "41f2dd91-5765-4dfb-9db0-9b3e976b4afb",
+ "service": "Azure Machine Learning",
+ "text": "バッチ ワークロードに低優先度の仮想マシンを使用する: 時間に敏感ではなく、中断が回復可能なバッチ ワークロードには、低優先度の仮想マシンを使用することを検討してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "デフォルトでは、コンピュート・インスタンスは使用可能であり、コストが発生します。アイドル状態のときにシャットダウンするようにコンピュート・インスタンスを構成するか、それらのスケジュールを構成すると、使用されていないときのコストを節約できます。",
+ "guid": "e3150ddd-f553-425f-bb91-249a9598e25e",
+ "service": "Azure Machine Learning",
+ "text": "コンピュート・インスタンスのアイドル・シャットダウンの有効化: コンピュート・インスタンスのアイドル・シャットダウンを有効にするか、使用時間がわかっている場合は開始時間と停止時間をスケジュールします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "並列ワークロードは、複数の小さなインスタンスで実行できるため、コストを節約できる可能性があります。",
+ "guid": "8b47ec85-0e9e-428b-9290-c590a7f4ab1a",
+ "service": "Azure Machine Learning",
+ "text": "トレーニング ワークロードを並列化する: トレーニング ワークロードを並列化することを検討してください。Machine Learning の並列コンポーネントを使用して、それらを実行してテストします。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "Azure Reserved VM Instances を購入して、仮想マシンの使用料金を前払いし、従量課金制の価格で割引を提供します。割引は、予約に一致する仮想マシンの使用量に自動的に適用されます。",
+ "guid": "b4470844-d54d-4a1c-980c-37d09e17940d",
+ "service": "Azure Machine Learning",
+ "text": "Azure 予約 VM インスタンス: 今後 1 年から 3 年間の使用量の見積もりが適切である場合は、Azure 予約 VM インスタンスを購入します。サービスの予約容量オプションは、使用量の見積もりが適切である場合は、活用してください。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "4dace40c-2627-4eb1-9d18-4a6c03901283",
+ "service": "Azure Machine Learning",
+ "text": "開発標準: Machine Learning モデルのカタログとレジストリを利用して、機械学習資産を格納、バージョン管理、共有します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "2fe1daf9-b388-4d25-8ff8-39908ada7f27",
+ "service": "Azure Machine Learning",
+ "text": "効率化のための自動化: 機械学習の優れた運用 (MLOps) プラクティスに従います。可能であれば、データの準備、トレーニング、スコアリング プロセスのためのエンドツーエンドの自動パイプラインを構築します。開発では、スクリプトを自動パイプラインに簡単に統合できるため、モデルのトレーニングにはノートブックの代わりにスクリプトを使用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "7b5de736-4956-4313-82be-0a0ff07d7ab6",
+ "service": "Azure Machine Learning",
+ "text": "自信を持ってデプロイする: Machine Learning ワークスペース、コンピューティング クラスター、コンピューティング インスタンス、その他のデプロイ環境に対して、コードとしてのインフラストラクチャ (IaC) を実装します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "f8196404-8f76-4e65-9b32-46d8d777d1d3",
+ "service": "Azure Machine Learning",
+ "text": "可観測性: デプロイされたモデルのパフォーマンス (データ ドリフトを含む) を監視します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "d212d648-752b-480f-bda5-0d45d0185312",
+ "service": "Azure Machine Learning",
+ "text": "監視: モデルがオンライン エンドポイントにデプロイされている場合は、Application Insights を有効にしてオンライン エンドポイントとデプロイを監視できるようにします。トレーニング インフラストラクチャを監視して、ベースライン要件を満たしていることを確認します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "afd5b803-c151-4b8d-ae08-63cc8961a378",
+ "service": "Azure Machine Learning",
+ "text": "シンプルさ: 利用可能な場合は、Machine Learning 用に最適化されたキュレーションされた環境を使用します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "ワークスペースの数を制限することで、メンテナンスの労力と運用コストが削減されます。セキュリティなどの要件については、複数の個別のワークスペースが必要になる場合があります。可能な限り、ワークスペースの数を最小限に抑えます。",
+ "guid": "bb6c4c2f-65f4-4fab-ada7-ebe079bde9cb",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning ワークスペース インスタンスを最小限に抑える: 可能であれば、ワークスペースの数を最小限に抑えて、メンテナンスを減らします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "Machine Learning モデル レジストリを使用して、機械学習モデルを格納およびバージョン管理し、変更を追跡し、トレーニングに使用されるジョブとデータセットの系列を維持します。機械学習モデル カタログを使用すると、データ サイエンス チームは、事前トレーニング済みの基本的な機械学習モデルを検出、評価、微調整できます。バージョン管理されたモデルを Machine Learning モデル レジストリに格納すると、A/B リリース、カナリア リリース、ロールバックなどのデプロイ戦略がサポートされます。",
+ "guid": "31841d05-3372-4bd4-b8bc-efcaaee1bd88",
+ "service": "Azure Machine Learning",
+ "text": "モデル カタログとレジストリを活用する: Machine Learning モデル カタログとレジストリを利用して、機械学習資産を格納、バージョン管理、共有します。Machine Learning モデル カタログを使用して、モデルの A/B テストとデプロイを実装します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "デプロイされたモデルを監視することで、モデルがパフォーマンス要件を満たしていることを確認できます。データ ドリフトを監視すると、モデルのパフォーマンスの低下につながる可能性のある入力データの変化を検出するのに役立ちます。データ ドリフトを管理すると、モデルが時間の経過と共に正確な結果を提供することを確認できます。",
+ "guid": "90a72a7e-6fb5-4e02-a159-7a4d907eb098",
+ "service": "Azure Machine Learning",
+ "text": "モデルのパフォーマンスの監視: デプロイされたモデルのパフォーマンスを監視し、データセットのデータ ドリフトを検出します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "エンドポイントを監視すると、リクエストのレイテンシーや 1 分あたりのリクエスト数などのメトリクスを可視化できます。パフォーマンスとベースラインを比較し、この情報を使用してコンピューティング リソースに変更を加えることができます。ネットワーク バイト数などのメトリクスを監視することで、クォータ制限に近づいている場合にアラートを発し、スロットリングを防ぐことができます。同様に、トレーニング環境を監視すると、トレーニング環境に変更を加えるための情報が得られます。その情報を使用して、スケールインまたはスケールアウト、さまざまなパフォーマンスの高い SKU でのスケールアップまたはスケールダウン、または CPU と GPU の選択を決定します。",
+ "guid": "b1d87076-b253-47ae-8727-97f804e49a3c",
+ "service": "Azure Machine Learning",
+ "text": "インフラストラクチャの監視: モデルがオンライン エンドポイントにデプロイされている場合は、Application Insights を有効にしてオンライン エンドポイントとデプロイを監視します。トレーニング インフラストラクチャを監視して、ベースライン要件を満たしていることを確認します。Machine Learning のリソース ログを収集していることを確認します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "キュレーションされた環境は、Machine Learning によって提供される事前に作成された環境であり、デプロイ時間を短縮し、デプロイとトレーニングの待機時間を短縮します。キュレーションされた環境を使用すると、トレーニングとデプロイの成功率が向上し、不要なイメージ ビルドが回避されます。Azure Container for PyTorch などのキュレーションされた環境は、Machine Learning で大規模なモデルをトレーニングするために最適化することもできます。",
+ "guid": "4c6895ce-abd9-4c90-a386-c31bc0681869",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニング環境をキュレーションする: 機械学習用に最適化されたキュレーションされた環境 (使用可能な場合) を使用します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "82ffebb1-2e91-46a4-b796-3fa55c4c20e3",
+ "service": "Azure Machine Learning",
+ "text": "パフォーマンス目標: モデルの許容可能なトレーニング時間と再トレーニング頻度を決定します。トレーニング時間の明確な目標をテストと共に設定すると、トレーニング時間の目標を達成するために必要なコンピューティング リソース、CPU と GPU、および CPU SKU を決定するのに役立ちます。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "5e526216-1b94-4cfe-86ef-bbce971f7f3a",
+ "service": "Azure Machine Learning",
+ "text": "パフォーマンス目標: デプロイされたモデルに対して許容されるパフォーマンス目標 (応答時間、1 秒あたりのリクエスト数、エラー率、稼働時間など) を定義します。パフォーマンス目標は、デプロイされたモデルの効率のベンチマークとして機能します。ターゲットは、CPU と GPU の決定、CPU SKU の選択、スケーリング要件の作成に役立ちます。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "2d6ddbe2-2bcc-4629-a316-5d56d74ef68a",
+ "service": "Azure Machine Learning",
+ "text": "容量要件を満たす: モデル トレーニングに適したコンピューティング リソースを選択します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "0ab74767-80ac-454e-aab6-b546e38411f8",
+ "service": "Azure Machine Learning",
+ "text": "容量要件を満たす: モデル デプロイに適したコンピューティング リソースを選択します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "d47bd862-5302-4ecb-a551-37cb0d15e802",
+ "service": "Azure Machine Learning",
+ "text": "容量要件を満たす: 自動スケーリング機能を備えたデプロイ環境を選択して、需要の変動に応じて容量を追加および削除します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "e10dead3-58c0-40b2-aa9b-39c64a68c555",
+ "service": "Azure Machine Learning",
+ "text": "パフォーマンスの達成と維持: デプロイされたモデルのパフォーマンスを継続的に監視し、結果を確認して、適切なアクションを実行します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "e257de8e-a8ef-4b91-81a3-3d832682b1eb",
+ "service": "Azure Machine Learning",
+ "text": "パフォーマンスの達成と維持: デプロイされたモデルのインフラストラクチャのパフォーマンスを継続的に監視し、結果を確認して、適切なアクションを実行します。トレーニングインフラストラクチャを監視して、トレーニング時間の要件を満たしていることを確認します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "適切なコンピューティングを選択することは、トレーニング時間に直接影響するため、非常に重要です。適切な SKU と CPU と GPU を選択することで、モデル トレーニングが要件とパフォーマンス目標を確実に満たすことができます。過度に使用される低パフォーマンスの SKU を選択すると、トレーニング時間が非常に長くなり、パフォーマンスの問題が発生する可能性があります。コンピューティングクラスターは、水平スケーリングをサポートするワークロードをスケールアウトすることでパフォーマンスを向上させる機能を提供します。この方法では、さまざまな要求を持つワークロードを柔軟に処理でき、必要に応じてマシンを追加または削除できます。",
+ "guid": "352a223c-dabd-46da-8752-56a87c6f18b7",
+ "service": "Azure Machine Learning",
+ "text": "モデル トレーニングに適したコンピューティング サービスを選択する: 自動スケールが必要な場合は、モデル トレーニングのコンピューティング インスタンスよりも Machine Learning コンピューティング クラスターを検討してください。トレーニング要件に基づいてコンピューティング リソースを最適化します。まず、CPUとGPUのどちらかを選択します。デフォルトでは CPU を使用しますが、ディープラーニング、画像やビデオの処理、大量のデータなどのワークロードには GPU を検討してください。次に、ワークロードに最適なイメージ SKU を選択します。テストを使用して、ベースラインを決定する際にトレーニング時間に対してコストを最適化するコンピューティング オプションを選択します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "自動スケールは、デプロイされたモデルのインスタンスの数を需要に合わせて調整します。",
+ "guid": "683ae603-156f-4186-8a82-aa2907fbb9bd",
+ "service": "Azure Machine Learning",
+ "text": "モデル デプロイ環境のスケーリング: デプロイ環境の自動スケーリング機能を使用します。AKS デプロイ環境の場合は、クラスター オートスケーラーを使用して、需要に合わせてスケーリングします。オンライン エンドポイントの場合は、Azure Monitor 自動スケール機能との統合により、自動的にスケーリングされます。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "本番環境でのモデルのパフォーマンスを追跡すると、データドリフト、予測ドリフト、データ品質、特徴属性ドリフトなどの潜在的な問題が警告されます。データ ドリフトを監視すると、モデルのパフォーマンスの低下につながる可能性のある入力データの変化を検出するのに役立ちます。データ ドリフトを管理すると、モデルが時間の経過と共に正確な結果を提供することを確認できます。",
+ "guid": "eccdaab6-7458-4967-9cd4-da6a89e3ce8c",
+ "service": "Azure Machine Learning",
+ "text": "モデルのパフォーマンスの監視: デプロイされたモデルのパフォーマンスを監視します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "エンドポイントを監視すると、リクエストのレイテンシーや 1 分あたりのリクエスト数などのメトリクスを可視化できます。パフォーマンスとベースラインを比較し、この情報を使用してコンピューティング リソースに変更を加えることができます。ネットワーク バイト数などのメトリクスを監視することで、クォータ制限に近づいている場合にアラートを発し、スロットリングを防ぐことができます。同様に、トレーニング環境を監視すると、トレーニング環境に変更を加えるための情報が得られます。その情報を使用して、スケールインまたはスケールアウト、さまざまなパフォーマンスの高い SKU でのスケールアップまたはスケールダウン、または CPU と GPU の選択を決定します。",
+ "guid": "76b80c26-8252-416e-aae1-ace03a9403dd",
+ "service": "Azure Machine Learning",
+ "text": "インフラストラクチャの監視: オンライン エンドポイントを監視し、監視と統合して、適切なメトリックとログを追跡および監視します。オンライン デプロイを作成するときに Application Insights を有効にします。トレーニング インフラストラクチャを監視し、モデルをトレーニングするときにメモリや CPU または GPU の使用量などのリソース使用量を確認して、ベースライン要件を満たしていることを確認します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "154d9075-f8f8-4dc8-b8f4-651d875d5dfe",
+ "service": "Azure Openai",
+ "text": "耐障害性: ユース ケースに基づいて、従量課金制またはプロビジョニングされたスループットのいずれかの適切なデプロイ オプションを選択します。予約容量は回復性を向上させるため、運用ソリューションにはプロビジョニングされたスループットを選択します。従量課金制のアプローチは、開発/テスト環境に最適です。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "571ddd3c-601e-46a7-bf80-c52f04a301fb",
+ "service": "Azure Openai",
+ "text": "冗長性: Azure OpenAI デプロイの前に適切なゲートウェイを追加します。ゲートウェイには、調整などの一時的な障害に耐える機能があり、複数の Azure OpenAI インスタンスにルーティングする機能も必要です。リージョンの冗長性を構築するために、異なるリージョンのインスタンスへのルーティングを検討してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "4b6855b3-069d-4bb2-b9c6-f1c021803f77",
+ "service": "Azure Openai",
+ "text": "回復性: プロビジョニングされたスループットを使用している場合は、オーバーフローを処理するために従量課金制インスタンスをデプロイすることも検討してください。プロビジョニングされたスループットモデルが調整されているときに、ゲートウェイ経由で従量課金制インスタンスに通話をルーティングできます。また、モニタリングを使用して、モデルがスロットリングされるタイミングを予測し、通話を従量課金制インスタンスにプリエンプティブにルーティングすることもできます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "7fd57f22-417b-47d5-88c9-ab7a2ceb5599",
+ "service": "Azure Openai",
+ "text": "回復性: 容量の使用状況を監視して、スループットの制限を超えていないことを確認します。容量の使用状況を定期的に確認して、より正確な予測を実現し、容量の制約によるサービスの中断を防ぎます。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "c41d1ed1-6f1d-4e6e-9dde-2d8172365170",
+ "service": "Azure Openai",
+ "text": "回復性: 大きなデータ ファイルのガイダンスに従い、Azure BLOB ストアからデータをインポートします。100 MB 以上の大きなファイルは、マルチパート フォームを介してアップロードすると、要求がアトミックであり、再試行または再開できないため、不安定になる可能性があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "088c617d-fce0-4fab-b4cd-9f9eb6a96cff",
+ "service": "Azure Openai",
+ "text": "復旧: 微調整されたモデルと Azure OpenAI にアップロードされたトレーニング データの復旧計画を含む復旧戦略を定義します。Azure OpenAI には自動フェールオーバーがないため、サービス全体とすべての依存関係 (トレーニング データを含むストレージなど) を網羅する戦略を設計する必要があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "この重要なスループット情報は、デプロイの需要を満たすためにクォータから十分な TPM を割り当てるために必要な情報を提供します。十分なクォータを割り当てると、デプロイされたモデルへの呼び出しの調整が防止されます。",
+ "guid": "f109deb2-54f9-4405-a9f0-f90fd0f76adf",
+ "service": "Azure Openai",
+ "text": "従量課金制のレート制限を監視する: 従量課金制のアプローチを使用している場合は、モデル デプロイのレート制限を管理し、1 分あたりのトークン (TPM) と 1 分あたりの要求 (RPM) の使用状況を監視します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "プロビジョニング管理された使用率を監視して 100% を超えないようにし、デプロイされたモデルへの呼び出しの調整を防ぐことが重要です。",
+ "guid": "ef12f5c3-dbe2-4040-be82-724eebc6f87e",
+ "service": "Azure Openai",
+ "text": "プロビジョニングされたスループットのプロビジョニング管理された使用率をモニタリングする: プロビジョニングされたスループット支払いモデルを使用している場合は、プロビジョニング管理された使用状況をモニタリングします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "コンテンツ フィルターは、不透明なリスク分析に基づいてプロンプトまたは完了をブロックします。コンテンツフィルターが、ワークロードで予想される使用量を許容するように調整されていることを確認します。",
+ "guid": "efcf5f6a-02bb-4cc8-8018-055ebf2e57e0",
+ "service": "Azure Openai",
+ "text": "コンテンツ フィルターの調整: コンテンツ フィルターを調整して、過度に攻撃的なフィルターによる誤検知を最小限に抑えます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "a61b826b-9f3b-4f51-8e0e-a32a92865386",
+ "service": "Azure Openai",
+ "text": "機密性を保護する: トレーニング データを Azure OpenAI にアップロードする場合は、データ暗号化にカスタマー マネージド キーを使用し、キーローテーション戦略を実装し、トレーニング、検証、トレーニング結果データを削除します。トレーニング データに外部データ ストアを使用する場合は、そのストアのセキュリティに関するベスト プラクティスに従ってください。たとえば、Azure Blob Storage の場合は、暗号化にカスタマー マネージド キーを使用し、キーのローテーション戦略を実装します。マネージド ID ベースのアクセスを使用し、プライベート エンドポイントを使用してネットワーク境界を実装し、アクセス ログを有効にします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "9f4bdfff-2c6c-4662-9139-1de51d2dbd20",
+ "service": "Azure Openai",
+ "text": "機密性を保護する: Azure OpenAI リソースがアクセスできる送信 URL を制限することで、データ流出から保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b8463e8d-daaa-4209-9944-0fb0587219a8",
+ "service": "Azure Openai",
+ "text": "整合性の保護: システムへのユーザー アクセスを認証および承認するためのアクセス制御を実装するには、最小特権の原則を使用し、キーの代わりに個々の ID を使用します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "714249d8-2b60-4920-89a2-eab4a338ac02",
+ "service": "Azure Openai",
+ "text": "整合性の保護: ジェイルブレイク リスク検出を実装して、言語モデルのデプロイをプロンプト インジェクション攻撃から保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "e0383d3b-71f1-4fda-9759-24cfd293abff",
+ "service": "Azure Openai",
+ "text": "可用性の保護: セキュリティ制御を使用して、モデルの使用クォータを使い果たす可能性のある攻撃を防ぎます。ネットワーク上のサービスを分離するようにコントロールを構成できます。インターネットからサービスにアクセスできる必要がある場合は、ゲートウェイを使用して、ルーティングまたは調整を使用して不正使用の疑いをブロックすることを検討してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "シークレットを Key Vault に格納してコードから分離すると、シークレットが漏洩する可能性が低くなります。また、分離により、シークレットの一元管理が容易になり、キーのローテーションなどの責任が軽減されます。",
+ "guid": "c4310e87-1366-4523-b2e1-244e1074fbb0",
+ "service": "Azure Openai",
+ "text": "セキュリティで保護されたキー: アーキテクチャで Azure OpenAI キーベースの認証が必要な場合は、それらのキーをアプリケーション コードではなく Azure Key Vault に格納します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure OpenAI へのアクセスを制御すると、承認されていないユーザーからの攻撃を防ぐのに役立ちます。プライベートエンドポイントを使用すると、アプリケーションとプラットフォーム間のネットワークトラフィックのプライベートが保たれます。",
+ "guid": "4a7a9a07-0229-4175-b784-9a99eded4d54",
+ "service": "Azure Openai",
+ "text": "アクセスを制限する: ワークロードで必要とされない限り、Azure OpenAI へのパブリック アクセスを無効にします。Azure 仮想ネットワーク内のコンシューマーから接続する場合は、プライベート エンドポイントを作成します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Microsoft Entra ID を使用すると、ID 管理コンポーネントが一元化され、API キーの使用がなくなります。RBAC を Microsoft Entra ID と共に使用すると、ユーザーまたはグループがジョブを実行するために必要なアクセス許可を正確に持つことができます。このようなきめ細かなアクセス制御は、Azure OpenAI API キーでは実現できません。",
+ "guid": "d5892190-2da9-43f4-b1e1-76b38b369643",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID: Microsoft Entra ID を使用して、認証を行い、ロールベースのアクセス制御 (RBAC) を使用して Azure OpenAI へのアクセスを承認します。Azure AI Services でローカル認証を無効にし、'disableLocalAuth' を 'true' に設定します。入力候補または画像生成を実行する ID に Cognitive Services OpenAI ユーザー ロールを付与します。モデル自動化パイプラインとアドホック データ サイエンス アクセスに、Cognitive Services OpenAI Contributor のようなロールを付与します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "カスタマー管理キーを使用すると、アクセス制御の作成、ローテーション、無効化、取り消しを柔軟に行うことができます。",
+ "guid": "60a4703c-1086-45e1-9384-ebb32ab50696",
+ "service": "Azure Openai",
+ "text": "カスタマー マネージド キーを使用する: Azure OpenAI にアップロードされる微調整されたモデルとトレーニング データには、カスタマー マネージド キーを使用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "脱獄の試みを検出して、Azure OpenAI デプロイの安全メカニズムを回避しようとするプロンプトを特定してブロックします。",
+ "guid": "ce66eba7-5972-4cb5-8db0-b75c3720b220",
+ "service": "Azure Openai",
+ "text": "脱獄攻撃から保護する: Azure AI Content Safety Studio を使用して、脱獄のリスクを検出します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "08f7b66c-7679-479b-8e2f-41b3305613dc",
+ "service": "Azure Openai",
+ "text": "コスト管理: プロンプトのサイズを考慮して、コストモデルを開発します。プロンプトの入力と応答のサイズ、およびテキストがトークンにどのように変換されるかを理解することは、実行可能なコストモデルを作成するのに役立ちます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "3f66f351-a073-40bb-94d2-326e1ea1a696",
+ "service": "Azure Openai",
+ "text": "使用量の最適化: トークンの使用量が予測可能になるまで、Azure OpenAI の従量課金制の価格から始めます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "3802ce2d-2a46-445d-92e2-2a23b2e40705",
+ "service": "Azure Openai",
+ "text": "レートの最適化: トークンの使用量が十分に高く、一定期間にわたって予測可能な場合は、プロビジョニングされたスループット価格モデルを使用して、コストの最適化を改善します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "2b2303c0-e057-431d-9a02-20a1a0b2b5b9",
+ "service": "Azure Openai",
+ "text": "使用量の最適化: モデルを選択するときは、モデルの価格と機能を考慮してください。テキスト生成や完了タスクなどの複雑でないタスクのために、低コストのモデルから始めます。言語翻訳やコンテンツの理解など、より複雑なタスクの場合は、より高度なモデルの使用を検討してください。テキストの埋め込み、画像の生成、文字起こしのシナリオなどのユースケースに適したモデルを選択するときは、さまざまなモデル機能とトークンの最大使用制限を考慮してください。お客様のニーズに最適なモデルを慎重に選択することで、コストを最適化しながら、必要なアプリケーション性能を達成することができます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "c4104d7c-4a4f-4b8a-9928-558a7c5c61d8",
+ "service": "Azure Openai",
+ "text": "使用の最適化: API 呼び出しによって提供されるトークン制限制約 (生成する完了の数を示す 'max_tokens' や 'n' など) を使用します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "fb44ea80-44a3-465f-9d50-98b800a90fd6",
+ "service": "Azure Openai",
+ "text": "使用の最適化: Azure OpenAI の価格ブレークポイントを最大化します (たとえば、画像生成などのブレークポイントの微調整やモデル化など)。微調整は時間単位で課金されるため、1時間あたりに利用できる時間を最大限に活用して、次の請求期間にずれ込むことなく微調整の結果を改善します。同様に、100 枚の画像を生成するためのコストは、1 つの画像に対するコストと同じです。価格のブレークポイントを最大化して有利にします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "5f027af8-e168-4b86-8255-4ea6f74cfd87",
+ "service": "Azure Openai",
+ "text": "使用量の最適化: 未使用の微調整されたモデルは、継続的なホスティング料金が発生しないように、消費されなくなったら削除します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "23756c91-3a66-4733-98b7-448bc8441f56",
+ "service": "Azure Openai",
+ "text": "使用状況の調整: プロンプトの入力と応答の長さを最適化します。プロンプトが長いほど、より多くのトークンを消費するため、コストが増加します。ただし、十分なコンテキストが欠落しているプロンプトは、モデルが適切な結果を生み出すのに役立ちません。モデルが有用な応答を生成するのに十分なコンテキストを提供する簡潔なプロンプトを作成します。また、応答長の制限を最適化してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "160154da-ea9e-4a84-ac35-8a731658c0fd",
+ "service": "Azure Openai",
+ "text": "コスト効率: 可能な限りリクエストをバッチ処理して、呼び出しごとのオーバーヘッドを最小限に抑え、全体的なコストを削減できます。バッチ サイズを最適化してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "739c80f6-0570-435b-ab82-2c8ce9d2deb8",
+ "service": "Azure Openai",
+ "text": "コスト効率: モデルには異なる微調整コストがあるため、ソリューションで微調整が必要な場合は、これらのコストを考慮してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "518fd651-b13e-427e-a0de-f634a014f5b2",
+ "service": "Azure Openai",
+ "text": "監視と最適化: モデルの使用状況を監視するコスト追跡システムを設定します。その情報を使用して、モデルの選択とプロンプトのサイズを通知します。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "API 機能を使用して使用を制限すると、サービスの使用がクライアントのニーズに合わせて調整されます。これにより、モデルが必要以上にトークンを消費する過度に長い応答を生成しないようにすることで、コストを節約できます。",
+ "guid": "afb53b41-825a-4310-b445-bf391792c568",
+ "service": "Azure Openai",
+ "text": "制限を設定するクライアント コードを設計する: カスタム クライアントでは、モデルあたりのトークン数の上限 ('max_tokens') や生成までの完了数 ('n') など、Azure OpenAI 入力候補 API の制限機能を使用する必要があります。制限を設定すると、サーバーが必要以上に生成されなくなります。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "TPM と RPM を継続的に監視することで、Azure OpenAI モデルのコストを最適化するための関連メトリックが得られます。この監視をモデルの特徴およびモデルの価格設定と組み合わせて、モデルの使用を最適化できます。このモニタリングを使用して、プロンプトのサイズを最適化することもできます。",
+ "guid": "e91029f2-ddf4-41f3-8358-f31b5afbe8ba",
+ "service": "Azure Openai",
+ "text": "従量課金制の使用状況を監視する: 従量課金制のアプローチを使用する場合は、TPM と RPM の使用状況を監視します。その情報を使用して、使用するモデルなどのアーキテクチャ設計の決定を通知し、プロンプト サイズを最適化します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "プロビジョニング管理された使用率を継続的にモニタリングすることで、プロビジョニングされたスループットが十分に活用されていないかどうかを理解するために必要な情報が得られます。",
+ "guid": "06a0b95c-b014-4205-8d0c-f074ec393239",
+ "service": "Azure Openai",
+ "text": "プロビジョニングされたスループットの使用状況を監視する: プロビジョニングされたスループットを使用する場合は、プロビジョニング管理された使用状況を監視して、購入したプロビジョニングされたスループットが十分に活用されていないことを確認します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "コストの監視、予算の設定、アラートの設定により、ガバナンスに適切な説明責任プロセスが提供されます。",
+ "guid": "f18aba52-5587-43e6-b994-8cab7022167f",
+ "service": "Azure Openai",
+ "text": "コスト管理: OpenAI のコスト管理機能を使用して、コストを監視し、コストを管理するための予算を設定し、リスクや異常を利害関係者に通知するアラートを作成します。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "3c5f9e8e-c1a9-4c18-ac05-72877f24ff22",
+ "service": "Azure Openai",
+ "text": "Azure DevOps カルチャ: 開発、テスト、運用など、さまざまな環境に Azure OpenAI インスタンスを確実にデプロイします。開発サイクル全体を通じて継続的な学習と実験をサポートする環境があることを確認します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "56e72e7c-32bb-414b-bf04-d2883871aacb",
+ "service": "Azure Openai",
+ "text": "可観測性: 適切なメトリックを監視、集計、視覚化します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "63aedcb9-e01e-4df3-b9a6-13c13d6971d4",
+ "service": "Azure Openai",
+ "text": "監視: Azure OpenAI 診断がニーズに不十分な場合は、Azure OpenAI の前で Azure API Management などのゲートウェイを使用して、受信プロンプトと送信応答の両方をログに記録することを検討してください (許可されている場合)。この情報は、受信プロンプトに対するモデルの有効性を理解するのに役立ちます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "fe7a8e0a-b53a-48f0-a204-4e1e7e20ea4b",
+ "service": "Azure Openai",
+ "text": "自信を持ってデプロイする: コードとしてのインフラストラクチャ (IaC) を使用して、Azure OpenAI、モデル デプロイ、およびモデルの微調整に必要なその他のインフラストラクチャをデプロイします。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "3dffb456-4675-4acb-b797-a5bf591e003a",
+ "service": "Azure Openai",
+ "text": "自信を持ってデプロイする: 大規模言語モデル操作 (LLMOps) のプラクティスに従って、デプロイ、微調整、プロンプト エンジニアリングなど、Azure OpenAI LLM の管理を運用化します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "4c82d2b3-c083-4a0e-9cd2-92d2b00b4c96",
+ "service": "Azure Openai",
+ "text": "効率化のための自動化: キーベースの認証を使用する場合は、自動キーローテーション戦略を実装します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "診断では、メトリックとログが収集および分析され、Azure OpenAI の可用性、パフォーマンス、操作の監視に役立ちます。",
+ "guid": "ff3d2610-e8e8-4a78-aba5-556758a2798c",
+ "service": "Azure Openai",
+ "text": "Azure 診断を有効にして構成する: Azure OpenAI Service の診断を有効にして構成します。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "63dbbc6a-f840-4893-979c-2afcea82bf5f",
+ "service": "Azure Openai",
+ "text": "容量:消費者の弾力性の要求を推定します。同期応答を必要とする優先度の高いトラフィックと、非同期およびバッチ処理が可能な優先度の低いトラフィックを特定します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "14677a1d-0b65-455a-997b-1490c397fbc8",
+ "service": "Azure Openai",
+ "text": "容量:消費者からの推定需要に基づくトークン消費要件のベンチマーク。プロビジョニングされたスループット ユニット (PTU) デプロイを使用している場合は、Azure OpenAI ベンチマーク ツールを使用してスループットを検証することを検討してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "59c8767d-1b78-4016-92d5-ebd83032fafa",
+ "service": "Azure Openai",
+ "text": "容量: 運用ワークロードにプロビジョニングされたスループットを使用します。プロビジョニングされたスループットは、指定されたモデル バージョンに対して、専用のメモリとコンピューティング、予約容量、および一貫した最大レイテンシを提供します。従量課金制のオファリングは、レイテンシの増加や使用頻度の高い地域でのスロットリングなど、うるさい隣人の問題に悩まされる可能性があります。また、従量課金制のアプローチでは、容量が保証されていません。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "a318b299-9d54-4dfc-8f20-b00ceed43ed0",
+ "service": "Azure Openai",
+ "text": "容量: Azure OpenAI デプロイの前に適切なゲートウェイを追加します。ゲートウェイが同じリージョンまたは異なるリージョンの複数のインスタンスにルーティングできることを確認します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "ceb21879-94da-485e-a24b-b30180fb566c",
+ "service": "Azure Openai",
+ "text": "容量: 予測される使用量をカバーするように PTU を割り当て、その制限を超える弾力性を処理するための TPM デプロイでこれらの PTU を補完します。このアプローチでは、基本スループットとエラスティック スループットを組み合わせて効率を高めます。他の考慮事項と同様に、このアプローチでは、PTU の制限に達したときに要求を TPM デプロイにルーティングするためのカスタム ゲートウェイ実装が必要です。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "dd313c03-7429-4cb1-84e9-d982664c2dfc",
+ "service": "Azure Openai",
+ "text": "容量: 優先度の高い要求を同期的に送信します。優先度の低いリクエストをキューに入れ、需要が少ないときにバッチで送信します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "cdf82e76-ee07-47e6-9985-6b1c0a39dd42",
+ "service": "Azure Openai",
+ "text": "容量: 速度と出力の複雑さのトレードオフを考慮して、パフォーマンス要件に合ったモデルを選択してください。モデルのパフォーマンスは、選択したモデルタイプによって大きく異なります。スピードを重視して設計されたモデルは、応答時間が短縮されるため、迅速な操作が必要なアプリケーションに役立ちます。逆に、より洗練されたモデルでは、応答時間が長くなる代わりに、より高品質の出力が得られる可能性があります。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "9aa6da24-6a00-4381-9da6-66c9d5cbf41f",
+ "service": "Azure Openai",
+ "text": "パフォーマンスの達成: チャットボットや会話型インターフェイスなどのアプリケーションの場合は、ストリーミングの実装を検討してください。ストリーミングは、ユーザーに段階的に応答を提供することで、Azure OpenAI アプリケーションの体感的なパフォーマンスを向上させ、ユーザー エクスペリエンスを向上させることができます。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "456cbf54-9c2f-4c6e-9739-eca408fa6baf",
+ "service": "Azure Openai",
+ "text": "パフォーマンスの達成: 微調整を行う前に、いつ微調整を使用するかを決定します。モデルのステアリングに必要な情報が長すぎたり複雑すぎてプロンプトに収まらない場合など、微調整には良いユースケースがありますが、プロンプトエンジニアリングと検索拡張生成(RAG)のアプローチが機能しないか、明らかにコストが高いことを確認してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "2dc38e31-8e03-40f4-842d-58ac317c5106",
+ "service": "Azure Openai",
+ "text": "パフォーマンスを実現する: コンシューマー グループごとに専用のモデル デプロイを使用して、コンシューマー グループ間のうるさい隣人を防ぐのに役立つモデルごとの使用分離を提供することを検討してください。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "999ecfef-c272-4cd8-8bd0-9cd5335fb695",
+ "service": "Virtual Machines",
+ "text": "設計上の制限が生じる可能性がある Virtual Machines のクォータと制限を確認します。VM には特定の制限とクォータがあり、VM の種類またはリージョンによって異なります。サブスクリプションあたりの VM の数や VM あたりのコア数など、サブスクリプションの制限がある場合があります。他のワークロードがサブスクリプションを共有している場合、データを使用する能力が低下する可能性があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "bf605fe8-6171-4c01-8290-d6c79a21cf10",
+ "service": "Virtual Machines",
+ "text": "障害モード分析を実施して、VM とネットワークおよびストレージ コンポーネントとの相互作用を分析することにより、障害点を最小限に抑えます。エフェメラル オペレーティング システム (OS) ディスクなどの構成を選択して、ディスク アクセスをローカライズし、ネットワーク ホップを回避します。ロード バランサーを追加すると、ネットワーク トラフィックを複数の VM に分散して自己保存を強化し、可用性と信頼性が向上します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "4cd18dd0-57e4-4fc9-a8ad-74c3333b6d8b",
+ "service": "Virtual Machines",
+ "text": "Azure のサービス レベル アグリーメント (SLA) に基づいて、複合的なサービス レベル目標 (SLO) を計算します。非現実的な期待や潜在的な問題を回避するために、SLO が Azure SLA を超えていないことを確認します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "90e0bce0-bc44-42ba-be28-2f3dde2f4b37",
+ "service": "Virtual Machines",
+ "text": "状態の分離を作成します。ワークロード データは、OS ディスクとの干渉を防ぐために、別のデータ ディスクに配置する必要があります。VM に障害が発生した場合は、同じデータ ディスクを使用して新しい OS ディスクを作成できるため、回復性と障害の分離が保証されます。詳細については、「エフェメラル OS ディスク」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "6d76e7b9-52d3-4878-83ab-2a08df23c8f6",
+ "service": "Virtual Machines",
+ "text": "VM とその依存関係をゾーン間で冗長化します。VM に障害が発生した場合でも、冗長性のためにワークロードは引き続き機能する必要があります。冗長性の選択肢に依存関係を含めます。たとえば、ディスクで使用できる組み込みの冗長性オプションを使用します。ゾーン冗長 IP を使用して、データの可用性と高いアップタイムを確保します。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "56d104f5-469e-4ead-bf17-7c81c746dabe",
+ "service": "Virtual Machines",
+ "text": "スケールアップとスケールアウトを準備して、サービスレベルの低下を防ぎ、障害を回避します。Virtual Machine Scale Sets には、必要に応じて新しいインスタンスを作成し、複数の VM と可用性ゾーンに負荷を分散する自動スケール機能があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "3395416e-27c6-4ded-941a-de4e562c5c00",
+ "service": "Virtual Machines",
+ "text": "自動回復オプションを確認します。Azure では、VM の正常性低下の監視と自己修復機能がサポートされています。たとえば、スケール セットでは、インスタンスの自動修復が提供されます。より高度なシナリオでは、自己修復には、Azure Site Recovery の使用、フェールオーバー先のパッシブ スタンバイの使用、またはコードとしてのインフラストラクチャ (IaC) からの再デプロイが含まれます。選択する方法は、ビジネス要件と組織の運用に一致させる必要があります。詳細については、「VM サービスの中断」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "3d633098-6fc7-4752-907c-5a02d53ffba2",
+ "service": "Virtual Machines",
+ "text": "VM とその依存関係のサイズを適切に設定します。VM の予想される作業を理解して、サイズが小さすぎず、最大負荷を処理できることを確認します。障害を軽減するための追加の容量があります。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "cbe651de-8754-4078-8066-803f94814634",
+ "service": "Virtual Machines",
+ "text": "包括的なディザスタリカバリ計画を作成します。災害への備えとは、総合的な計画を立て、復旧のための技術を決定することです。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "6bbb44ad-f6ed-4990-b519-a56e4d995170",
+ "service": "Virtual Machines",
+ "text": "厳密に操作を実行します。信頼性設計の選択は、監視の原則に基づく効果的な運用、本番環境でのレジリエンシー テスト、自動化されたアプリケーション VM のパッチとアップグレード、およびデプロイの一貫性によってサポートされる必要があります。運用上のガイダンスについては、「オペレーショナル エクセレンス」を参照してください。",
+ "type": "checklist",
+ "waf": "確実"
+ },
+ {
+ "description": "アプリケーションのスケーリングを将来にわたって保証し、リージョンまたは可用性ゾーン内の障害ドメインに VM を分散する高可用性保証を活用します。",
+ "guid": "bb45d3f7-dae7-4eb6-a823-76737e6d0d88",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)Virtual Machine Scale Sets をフレキシブル オーケストレーション モードにして VM をデプロイします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "インスタンスが異常であると見なされた場合でも可用性を維持します。自動修復は、障害のあるインスタンスを置き換えることによって回復を開始します。時間枠を設定すると、不注意による修復操作や時期尚早な修復操作を防ぐことができます。",
+ "guid": "29912435-4c36-465e-91e2-6c8fcb42b33f",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM でインスタンスの正常性状態を出力する正常性エンドポイントを実装します。 (スケールセット)スケール セットで自動修復を有効にするには、優先する修復アクションを指定します。 VM の状態が変化した場合に自動修復が一時停止する時間枠を設定することを検討してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "オーバープロビジョニングにより、デプロイ時間が短縮され、追加の VM は課金されないため、コスト面でのメリットがあります。",
+ "guid": "71982e91-2b16-4f49-b91e-7c52a6e0042a",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)スケール セットでオーバープロビジョニングを有効にします。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "このオプションは、障害ドメインを分離します。メンテナンス期間中、1つのフォルト・ドメインが更新されると、VMインスタンスは他のフォルト・ドメインで使用できます。",
+ "guid": "07b6117e-18f8-4df2-9816-9bba2f028219",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)フレキシブル オーケストレーションにより、VM インスタンスをできるだけ多くの障害ドメインに分散できます。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "VM インスタンスは、各 Azure リージョン内の物理的に分離された場所にプロビジョニングされ、ローカルの障害に対して耐性があります。 リソースの可用性によっては、ゾーン間でインスタンスの数が不均一になる場合があることに注意してください。ゾーン バランシングは、1 つのゾーンがダウンした場合に、他のゾーンに十分なインスタンスがあることを確認することで可用性をサポートします。 各ゾーンの 2 つのインスタンスは、アップグレード中にバッファーを提供します。",
+ "guid": "056b1e06-a521-4662-9c87-19371260efe6",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)スケール セットの可用性ゾーン全体にデプロイします。各ゾーンに少なくとも 2 つのインスタンスを設定します。ゾーンバランシングは、インスタンスをゾーン間で均等に分散します。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "容量はお客様専用に予約されており、適用される SLA の範囲内で利用できます。キャパシティーの予約は不要になったときに削除でき、請求は使用量ベースです。",
+ "guid": "2554bcd7-c6b8-4461-aaaa-071092d5483f",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)キャパシティーの予約機能を活用してください。",
+ "type": "recommendation",
+ "waf": "確実"
+ },
+ {
+ "description": "",
+ "guid": "fa5e017f-a99c-4fcc-883b-e16427f4e05d",
+ "service": "Virtual Machines",
+ "text": "Linux と Windows の VM と Virtual Machine Scale Sets のセキュリティ ベースラインを確認します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "63866f61-ef77-4793-9257-dfc53e87a550",
+ "service": "Virtual Machines",
+ "text": "タイムリーで自動化されたセキュリティパッチ適用とアップグレードを確保します。更新プログラムが自動的にロールアウトされ、明確に定義されたプロセスを使用して検証されることを確認します。Azure Automation などのソリューションを使用して、OS の更新を管理し、重要な更新を行うことでセキュリティ コンプライアンスを維持します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5bc85e31-f7fa-4102-8e43-6fbe7add0d89",
+ "service": "Virtual Machines",
+ "text": "状態を保持している VM を特定します。データが組織から提供された秘密度ラベルに従って分類されていることを確認します。適切なレベルの保存および転送中の暗号化などのセキュリティ制御を使用してデータを保護します。高い感度要件がある場合は、二重暗号化や Azure コンフィデンシャル コンピューティングなどの高セキュリティ制御を使用して、使用中のデータを保護することを検討してください。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d5320544-6d25-46c7-ab46-e81e5d85d9b3",
+ "service": "Virtual Machines",
+ "text": "ネットワーク境界とアクセス制御を設定することで、VM とスケール セットにセグメント化を提供します。VM は、同じライフサイクルを共有するリソース グループに配置します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "becd6031-a256-4186-995e-75817fc7783c",
+ "service": "Virtual Machines",
+ "text": "VM にアクセスしようとする ID と、他のリソースに到達する VM にアクセス制御を適用します。認証と承認のニーズには、Microsoft Entra ID を使用します。強力なパスワード、多要素認証、ロールベースのアクセス制御 (RBAC) を VM とその依存関係 (シークレットなど) に設定して、許可された ID がロールに期待される操作のみを実行できるようにします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cc96d188-8a1f-4b48-9525-d6f3f867f322",
+ "service": "Virtual Machines",
+ "text": "ネットワーク制御を使用して、イングレス トラフィックとエグレス トラフィックを制限します。Azure Virtual Network で VM とスケール セットを分離し、トラフィックをフィルター処理するネットワーク セキュリティ グループを定義します。分散型サービス拒否(DDoS)攻撃から保護します。ロードバランサーとファイアウォールルールを使用して、悪意のあるトラフィックやデータ流出攻撃から保護します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "66e5f683-0d57-4ed1-b2bd-68e4549631bc",
+ "service": "Virtual Machines",
+ "text": "OSイメージを強化し、未使用のコンポーネントを削除することで、攻撃対象領域を縮小します。小さいイメージを使用し、ワークロードの実行に必要のないバイナリを削除します。VM の構成を強化するには、既定のアカウントやポートなど、不要な機能を削除します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "961b264a-fddf-43d4-b137-a132429c2874",
+ "service": "Virtual Machines",
+ "text": "転送中のデータを保護するために必要な証明書などのシークレットを保護します。キー コンテナーに格納されている証明書を自動的に更新する Windows または Linux 用の Azure Key Vault 拡張機能の使用を検討してください。証明書の変更を検出すると、拡張機能は対応する証明書を取得してインストールします。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "39b32108-5423-42aa-beaa-1601df1971f6",
+ "service": "Virtual Machines",
+ "text": "脅威の検出。VM の脅威と設定ミスを監視します。Defender for Servers を使用して、VM と OS の変更をキャプチャし、アクセス、新しいアカウント、アクセス許可の変更の監査証跡を維持します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "fb9921a8-884c-40df-a588-a554143809f2",
+ "service": "Virtual Machines",
+ "text": "脅威の防止。ファイアウォール、ウイルス対策ソフトウェア、侵入検知システムなどのセキュリティ制御を実装することで、マルウェアの攻撃や悪意のある攻撃者から保護します。Trusted Execution Environment(TEE)が必要かどうかを判断します。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "VM が他のリソースと通信する場合、VM は信頼境界を越えます。スケール セットと VM は、通信を許可する前に ID を認証する必要があります。Microsoft Entra ID は、マネージド ID を使用してその認証を処理します。",
+ "guid": "21e2209a-6217-464b-9886-1914124b0721",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)マネージド ID をスケール セットに割り当てます。スケール セット内のすべての VM は、指定された VM プロファイルを通じて同じ ID を取得します。 (仮想マシン)また、個々の VM を作成するときにマネージド ID を割り当て、必要に応じてスケール セットに追加することもできます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure が提供する機能は、多くのテナント間でキャプチャされるシグナルに基づいており、カスタム コントロールよりもリソースをより適切に保護できます。ポリシーを使用して、これらの制御を適用することもできます。",
+ "guid": "f13132ec-ac80-4a27-a14e-b7b357523df1",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)セキュリティ機能を備えた VM SKU を選択します。たとえば、一部の SKU では BitLocker 暗号化がサポートされており、コンフィデンシャル コンピューティングでは使用中のデータの暗号化が提供されます。 機能を確認して、制限事項を理解してください。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "タグ付けは、リソースをセグメント化して整理する一般的な方法であり、インシデント管理中に重要になる場合があります。詳細については、「名前付けとタグ付けの目的」を参照してください。",
+ "guid": "944802d9-671c-479f-b973-fd6111a18486",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)プロビジョニングされたリソースに組織が推奨するタグを適用します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セキュリティ プロファイルの機能は、VM の作成時に自動的に有効になります。 詳細については、「Virtual Machine Scale Sets の Azure セキュリティ ベースライン」を参照してください。",
+ "guid": "a6b12603-c2e3-43fd-9a79-6e6317817278",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM 構成で有効にするセキュリティ機能を使用して、セキュリティ プロファイルを設定します。 たとえば、プロファイルでホストでの暗号化を指定すると、VM ホストに格納されているデータは保存時に暗号化され、フローはストレージ サービスに暗号化されます。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "セグメンテーション制御は、ネットワーキングプロファイルで設定できます。 攻撃者はパブリック IP アドレスをスキャンするため、VM は脅威に対して脆弱になります。",
+ "guid": "3c83a4bb-2b58-4fae-9a65-37490fecaf1c",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM のネットワーク プロファイルのセキュリティで保護されたネットワーク オプションを選択します。 パブリック IP アドレスを VM に直接関連付けたり、IP 転送を有効にしたりしないでください。 すべての仮想ネットワーク インターフェイスにネットワーク セキュリティ グループが関連付けられていることを確認します。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "パブリックネットワークアクセスを無効にすると、データやリソースへの不正アクセスを防ぐことができます。",
+ "guid": "fe1df647-99c3-43ea-b8ed-507b23f120e0",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)VM のストレージ プロファイルの安全なストレージ オプションを選択します。 ディスクの暗号化と保存データの暗号化をデフォルトで有効にします。VM ディスクへのパブリック ネットワーク アクセスを無効にします。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "拡張機能は、VM へのアクセスと VM からのアクセスを保護する適切なソフトウェアを使用して VM をブートストラップするために使用されます。 Microsoft が提供する拡張機能は、進化するセキュリティ標準に対応するために頻繁に更新されます。",
+ "guid": "06c4068a-2562-4cc4-9269-8bdb6b349c3a",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)脅威から保護する拡張機能を VM に含めます。 たとえば、Windows と Linux 用の Key Vault 拡張機能 - Microsoft Entra ID 認証 - Azure Cloud Services と Virtual Machines 用の Microsoft マルウェア対策 - Windows と Linux 用の Azure Disk Encryption 拡張機能です。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3e760d37-8430-4da5-833d-95bff2d43e4f",
+ "service": "Virtual Machines",
+ "text": "現実的なコストを見積もります。料金計算ツールを使用して、VM のコストを見積もります。VM セレクターを使用して、ワークロードに最適な VM を特定します。詳細については、「Linux と Windows の価格」を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "284bc1f9-59a6-491e-8070-d05e31e29ee7",
+ "service": "Virtual Machines",
+ "text": "コストガードレールを実装します。ガバナンスポリシーを使用して、リソースのタイプ、構成、および場所を制限します。RBAC を使用して、過剰支出につながる可能性のあるアクションをブロックします。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "353f0d7a-b104-43c3-b3e9-926af6458844",
+ "service": "Virtual Machines",
+ "text": "適切なリソースを選択してください。VM プランのサイズと SKU の選択は、全体的なコストに直接影響します。ワークロードの特性に基づいて VM を選択します。ワークロードはCPUに負荷がかかりますか、それとも割り込み可能なプロセスが実行されていますか?各 SKU には、全体的なコストに影響を与えるディスク オプションが関連付けられています。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "dff9f383-b459-4359-907e-bd33a92d4bd6",
+ "service": "Virtual Machines",
+ "text": "依存リソースに適した機能を選択します。コンテナー Standard レベルのバックアップ ストレージのコストを節約するには、予約容量のある Azure Backup ストレージを使用します。1年または3年の予約を確定すると割引が適用されます。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "24cfa2c5-9e77-48e8-82ad-c5e98c636a69",
+ "service": "Virtual Machines",
+ "text": "適切な請求モデルを選択します。コンピューティングのコミットメントベースのモデルが、ワークロードのビジネス要件に基づいてコストを最適化するかどうかを評価します。次の Azure オプションを検討してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "046215f1-13ee-4fbf-893d-eeafa28ab76b",
+ "service": "Virtual Machines",
+ "text": "使用状況を監視します。使用パターンを継続的に監視し、未使用または使用率の低いVMを検出します。これらのインスタンスでは、使用されていない VM インスタンスをシャットダウンします。モニタリングは、オペレーショナルエクセレンスの主要なアプローチです。詳細については、「オペレーショナル エクセレンス」の推奨事項を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "877c04dd-441f-4202-9b87-9eeb3c60b564",
+ "service": "Virtual Machines",
+ "text": "最適化する方法を探します。いくつかの戦略には、既存のシステムのリソースを増やすか、スケールアップしてそのシステムのインスタンスを追加するか、スケールアウトするかの間で、最もコスト効率の高いアプローチを選択することが含まれます。需要を他のリソースに分散して負荷を軽減することも、優先キュー、ゲートウェイ オフロード、バッファリング、およびレート制限を実装することで需要を減らすこともできます。詳細については、「パフォーマンス効率」の推奨事項を参照してください。",
+ "type": "checklist",
+ "waf": "費用"
+ },
+ {
+ "description": "SKU は、提供する機能に応じて価格が設定されます。高度な機能が必要ない場合は、SKU に過剰に費やさないでください。 スポット仮想マシンは、Azure の余剰容量を低コストで活用できます。",
+ "guid": "90700d86-70f6-433f-b995-b9ad8cfdec84",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)適切な VM プランのサイズと SKU を選択します。ワークロードに最適な VM サイズを特定します。 VM セレクターを使用して、ワークロードに最適な VM を特定します。「Windows と Linux の価格」を参照してください。 多少の中断を許容できる高並列バッチ処理ジョブなどのワークロードの場合は、Azure Spot Virtual Machines の使用を検討してください。スポット仮想マシンは、大規模なソリューションの実験、開発、テストに適しています。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "一部の高パフォーマンス ディスク タイプには、追加のコスト最適化機能と戦略が用意されています。 Premium SSD v2 ディスクの調整機能は、オーバープロビジョニングなしで高いパフォーマンスを提供するため、コストを削減できます。これにより、リソースが十分に活用されない可能性があります。",
+ "guid": "14211a5a-ea48-4aa1-9f24-e46689328dda",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM の SKU に関連付けられているディスク オプションを評価します。 ストレージ容量のニーズを念頭に置き、変動するワークロードパターンを考慮しながら、パフォーマンスのニーズを決定します。 たとえば、Azure Premium SSD v2 ディスクを使用すると、ディスクのサイズに関係なく、パフォーマンスをきめ細かく調整できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "スポット仮想マシンの大幅な割引を適用することで、コンピューティング インフラストラクチャのコストを削減します。",
+ "guid": "38d3a88b-a84f-46f3-95ce-76a4e245027b",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)通常の VM とスポット仮想マシンを混在させます。 柔軟なオーケストレーションにより、指定した割合に基づいてスポット仮想マシンを分散できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "使用されていないリソースをスケールインまたは停止すると、スケール セットで実行されている VM の数が減り、コストが節約されます。 スタート/ストップ機能は、低コストの自動化オプションです。",
+ "guid": "eccee9b1-70f3-4c96-8223-35e24d842201",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)需要が減少した場合は、VM インスタンスの数を減らします。条件に基づいてスケールインポリシーを設定します。 営業時間外に VM を停止します。Azure Automation の開始/停止機能を使用して、ビジネス ニーズに応じて構成できます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "オンプレミスのライセンスを最大限に活用しながら、クラウドのメリットを享受できます。",
+ "guid": "3c34c3e4-5715-472e-953e-2d5030bf18a0",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)Azure ハイブリッド特典を使用して、ライセンス モビリティを活用します。VM には、オンプレミスの Windows Server OS ライセンスを Azure に持ち込むことができるライセンス オプションがあります。 Azure ハイブリッド特典では、特定の Linux サブスクリプションを Azure に持ち込むこともできます。",
+ "type": "recommendation",
+ "waf": "費用"
+ },
+ {
+ "description": "",
+ "guid": "fc1734b9-fefe-403d-bfc9-c2beca6f12a2",
+ "service": "Virtual Machines",
+ "text": "VM インスタンスを監視します。VMインスタンスからログとメトリックを収集して、リソースの使用状況を監視し、インスタンスの正常性を測定します。一般的なメトリクスには、CPU 使用率、リクエスト数、入出力 (I/O) レイテンシなどがあります。Azure Monitor アラートを設定して、問題に関する通知を受け取り、環境内の構成変更を検出します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "724b847d-caf4-4e90-83e7-f4c71e68c4f7",
+ "service": "Virtual Machines",
+ "text": "VM とその依存関係の正常性を監視します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "f99e71a9-05ee-41c2-81b7-8d794763040b",
+ "service": "Virtual Machines",
+ "text": "日常的な運用の一部として定期的なシステムパッチ適用を含むメンテナンス計画を作成します。パッチをすぐに適用できる緊急プロセスを含めます。修正プログラムの適用を管理したり、タスクを Azure に部分的に委任したりするためのカスタム プロセスを持つことができます。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "ca34b9c2-69db-4256-a354-c491877f79ac",
+ "service": "Virtual Machines",
+ "text": "ブートストラップ、スクリプトの実行、VMの構成のプロセスを自動化します。拡張機能またはカスタムスクリプトを使用してプロセスを自動化できます。次のオプションをお勧めします。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "821779c7-588f-40af-a740-8dd41fb585fd",
+ "service": "Virtual Machines",
+ "text": "自動更新をインストールするためのプロセスを用意します。重要なパッチとセキュリティパッチをタイムリーにロールアウトするために、VM ゲストの自動パッチ適用の使用を検討してください。Azure Update Manager を使用して、Azure の Windows および Linux 仮想マシンの OS 更新プログラムを管理します。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "079c8821-00dd-4eaf-9cae-5a3dbfd6fdfa",
+ "service": "Virtual Machines",
+ "text": "運用環境に密接に一致するテスト環境を構築して、更新と変更を運用環境にデプロイする前にテストします。セキュリティ更新プログラム、パフォーマンス ベースライン、および信頼性障害をテストするためのプロセスを用意します。Azure Chaos Studio の障害ライブラリを利用して、エラー状態を挿入し、シミュレートします。詳細については、「Azure Chaos Studio の障害とアクション ライブラリ」を参照してください。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "77cdbef0-ba18-4ef0-9ef4-088931e331c7",
+ "service": "Virtual Machines",
+ "text": "クォータを管理します。ワークロードに必要なクォータのレベルを計画し、ワークロードの進化に合わせてそのレベルを定期的に見直します。クォータを増減する必要がある場合は、早めに変更をリクエストしてください。",
+ "type": "checklist",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "柔軟なオーケストレーションにより、VMインスタンスを大規模に管理できます。個々の VM を処理すると、運用上のオーバーヘッドが増加します。 たとえば、VM インスタンスを削除すると、関連付けられているディスクと NIC も自動的に削除されます。VM インスタンスは複数の障害ドメインに分散されるため、更新操作によってサービスが中断されることはありません。",
+ "guid": "3049efb5-d3ae-4e36-a8fa-12f2c4a44144",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)フレキシブル オーケストレーション モードの Virtual Machine Scale Sets は、ワークロードのデプロイと管理を簡略化するのに役立ちます。たとえば、自動修復を使用して自己修復を簡単に管理できます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "セキュリティは、アップグレードの主な理由です。インスタンスのセキュリティ保証は、時間の経過とともに衰えてはなりません。 ローリングアップグレードはバッチで行われるため、すべてのインスタンスが同時にダウンすることはありません。",
+ "guid": "19de83a6-2f87-49b1-8241-d1d687f46658",
+ "service": "Virtual Machines",
+ "text": "(スケールセット)アップグレード ポリシーを設定して、VM を最新の状態に保ちます。ローリングアップグレードをお勧めします。ただし、きめ細かな制御が必要な場合は、手動でアップグレードすることを選択します。 柔軟なオーケストレーションの場合は、Azure Update Manager を使用できます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "スケール セット内の VM が作成され、指定したアプリがプレインストールされるため、管理が容易になります。",
+ "guid": "65c832e8-2882-45ed-b239-0e68f74975aa",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)プロファイルでアプリケーションを定義することにより、Azure Compute Gallery から VM アプリケーションを自動的にデプロイします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "拡張機能を使用すると、各 VM でソフトウェアを手動でインストール、構成、またはアップグレードすることなく、大規模なソフトウェアのインストールを簡略化できます。",
+ "guid": "40266c61-9685-4ee1-8cb6-a899a6b573f2",
+ "service": "Virtual Machines",
+ "text": "ブートストラップの一部として、ビルド済みのソフトウェアコンポーネントを拡張機能としてインストールします。 Azure では、VM のユーティリティ アプリケーションを構成、監視、セキュリティ保護、提供するために使用できる多くの拡張機能がサポートされています。 拡張機能の自動アップグレードを有効にします。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "データの監視は、インシデント解決の中核をなすものです。包括的な監視スタックは、VM のパフォーマンスとその正常性に関する情報を提供します。インスタンスを継続的に監視することで、パフォーマンスの過負荷や信頼性の問題などの障害に備えたり、防止したりできます。",
+ "guid": "72e210dc-5abb-4569-b650-ec27003bb1cf",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)VM インスタンスの正常性を監視および測定します。 Monitor エージェント拡張機能を VM にデプロイして、OS 固有のデータ収集ルールを使用してゲスト OS から監視データを収集します。 VM insights を有効にして、正常性とパフォーマンスを監視し、収集されたデータから傾向を表示します。ブート診断を使用して、VM のブート時に情報を取得します。ブート診断では、ブート障害も診断されます。",
+ "type": "recommendation",
+ "waf": "オペレーションズ"
+ },
+ {
+ "description": "",
+ "guid": "0303e75c-321d-42b0-9226-b05f43633d50",
+ "service": "Virtual Machines",
+ "text": "パフォーマンス目標を定義する。追跡するVMメトリックを特定し、応答時間、CPU使用率、メモリ使用率などのパフォーマンス指標と、1秒あたりのトランザクション数、同時ユーザー数、可用性と正常性などのワークロードメトリックに対して測定します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "f2c0ba97-9170-43ab-90b5-b30f159913ba",
+ "service": "Virtual Machines",
+ "text": "容量計画では、VM、スケール セット、ディスク構成のパフォーマンス プロファイルを考慮します。各 SKU には、メモリと CPU の異なるプロファイルがあり、ワークロードの種類に応じて動作が異なります。パイロットと概念実証を実施して、特定のワークロードでのパフォーマンス動作を理解します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "ffee7b2f-b57c-40cc-a8ab-9044dead9dc7",
+ "service": "Virtual Machines",
+ "text": "VM のパフォーマンス チューニング。パフォーマンスの最適化と、ワークロードの必要に応じて機能の強化を活用します。たとえば、高パフォーマンスのユース ケースと高速ネットワークには、ローカルに接続された Non-Volatile Memory Express (NVMe) を使用し、パフォーマンスとスケーラビリティを向上させるために Premium SSD v2 を使用します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "75cf3a03-3d7c-4199-8138-45ff62b1f7a5",
+ "service": "Virtual Machines",
+ "text": "依存するサービスを考慮に入れます。VM と対話するワークロードの依存関係 (キャッシュ、ネットワーク トラフィック、コンテンツ配信ネットワークなど) は、パフォーマンスに影響を与える可能性があります。また、ゾーンやリージョンなどの地理的な分布も考慮すると、レイテンシーが増加する可能性があります。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "739525ea-4d0a-4965-baef-ab0325fbed67",
+ "service": "Virtual Machines",
+ "text": "パフォーマンスデータを収集します。監視のためのオペレーショナルエクセレンスのベストプラクティスに従い、適切な拡張機能をデプロイして、パフォーマンス指標に対して追跡するメトリクスを表示します。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "",
+ "guid": "39acd43b-a405-439b-83c9-b9d79d9cdba6",
+ "service": "Virtual Machines",
+ "text": "近接配置グループ。低レイテンシが必要なワークロードでは、近接配置グループを使用して、VM が物理的に互いに近接して配置されるようにします。",
+ "type": "checklist",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "VM の適切なサイズ設定は、ワークロードのパフォーマンスに大きく影響する基本的な決定事項です。適切な VM のセットがないと、パフォーマンスの問題が発生し、不要なコストが発生する可能性があります。",
+ "guid": "67cc04db-4b74-40f4-9bf6-0ba5f758b45e",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)容量計画に適した VM の SKU を選択します。コア数、メモリ、ストレージ、ネットワーク帯域幅など、ワークロードの要件を十分に理解して、不適切な SKU を除外できるようにします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "近接通信配置グループを使用すると、Azure コンピューティング リソース間の物理的な距離が短縮されるため、スタンドアロン VM、複数の可用性セット内の VM、または複数のスケール セット内の VM 間のパフォーマンスが向上し、ネットワーク待機時間を短縮できます。",
+ "guid": "ef3de2ad-d5b6-4931-9fc7-28249d9300c0",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)待機時間の影響を受けやすいワークロード VM を近接配置グループにデプロイします。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "Premium SSD は、I/O 集中型のワークロードを備えた高パフォーマンスで低遅延のディスク サポート VM を提供します。 Premium SSD v2 ではディスクのサイズを変更する必要がないため、過剰なオーバープロビジョニングを行わずに高パフォーマンスを実現し、未使用の容量のコストを最小限に抑えます。 VM SKU で使用できる場合、ローカルに接続された NVMe または同様のデバイスは、特に高い 1 秒あたりの入出力操作 (IOPS) と低待機時間を必要とするユース ケースで、高いパフォーマンスを提供できます。",
+ "guid": "a91aae92-2b2c-4c88-b268-2c70b995a952",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット) 既存のワークロードと VM SKU のディスク パフォーマンスを分析して、ストレージ プロファイルを設定します。 運用 VM には Premium SSD を使用します。Premium SSD v2 を使用してディスクのパフォーマンスを調整します。ローカルに接続された NVMe デバイスを使用します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "これにより、VM へのシングル ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワーク パフォーマンスが大幅に向上します。",
+ "guid": "57e446da-1b2e-4bdc-abc9-3e978a11e940",
+ "service": "Virtual Machines",
+ "text": "(仮想マシン)高速ネットワークを有効にすることを検討してください。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ },
+ {
+ "description": "アプリケーションの需要が増加すると、スケール セット内の VM インスタンスの負荷が増加します。自動スケール ルールにより、需要を満たすのに十分なリソースが確保されます。",
+ "guid": "785858b0-2f0b-476d-9f1e-af92b57314c9",
+ "service": "Virtual Machines",
+ "text": "(VM、スケール セット)自動スケール ルールを設定して、需要に基づいてスケール セット内の VM インスタンスの数を増減します。",
+ "type": "recommendation",
+ "waf": "パフォーマンス"
+ }
+ ],
+ "metadata": {
+ "name": "WAF Service Guides",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "このチェックはまだ見ていません",
+ "name": "未確認"
+ },
+ {
+ "description": "このチェックにはアクションアイテムが関連付けられています",
+ "name": "開ける"
+ },
+ {
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
+ "name": "達成"
+ },
+ {
+ "description": "現在のデザインには適用されません",
+ "name": "該当なし"
+ },
+ {
+ "description": "必須ではありません",
+ "name": "必須ではありません"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "費用"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "確実"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "パフォーマンス"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "オペレーションズ"
+ },
+ {
+ "name": "パフォーマンス"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "はい"
+ },
+ {
+ "name": "いいえ"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.ko.json b/checklists-ext/wafsg_checklist.ko.json
new file mode 100644
index 000000000..6454d73da
--- /dev/null
+++ b/checklists-ext/wafsg_checklist.ko.json
@@ -0,0 +1,5618 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "",
+ "guid": "a549f1f2-55ec-4094-b8c5-1be6fd4f4d38",
+ "service": "App Service Web Apps",
+ "text": "사용자 흐름 우선 순위 지정: 모든 흐름이 똑같이 중요한 것은 아닙니다. 각 흐름에 우선 순위를 할당하여 설계 결정을 안내합니다. 사용자 흐름 디자인은 App Service 계획 및 구성에 대해 선택하는 서비스 계층과 인스턴스 수에 영향을 줄 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "a67a6739-c1af-48d6-a3d1-001fb5105139",
+ "service": "App Service Web Apps",
+ "text": "잠재적 오류 예측: 잠재적 오류에 대한 완화 전략을 계획합니다. 다음 표에서는 고장 모드 분석의 예를 보여 줍니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "b47d664a-75c8-4739-80d8-6cf9f60abb56",
+ "service": "App Service Web Apps",
+ "text": "Build redundancy: 응용 프로그램 및 지원 인프라에서 중복성을 구축합니다. 가용 영역에 인스턴스를 분산하여 내결함성을 개선합니다. 한 영역에 장애가 발생하면 트래픽이 다른 영역으로 라우팅됩니다. 여러 지역에 응용 프로그램을 배포하여 전체 지역에서 중단이 발생하더라도 앱을 계속 사용할 수 있도록 합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "6b8fa1ed-cfa0-4435-9146-b3d1a8edb432",
+ "service": "App Service Web Apps",
+ "text": "신뢰할 수 있는 확장 전략 수립: 응용 프로그램에 예기치 않은 부하가 발생하면 응용 프로그램을 신뢰할 수 없게 만들 수 있습니다. 워크로드 특성에 따라 올바른 크기 조정 방법을 고려합니다. 경우에 따라 부하를 처리하기 위해 확장할 수 있습니다. 그러나 부하가 계속 증가하면 새 인스턴스로 확장합니다. 수동 접근 방식보다 자동 크기 조정을 선호합니다. 성능 저하를 방지하기 위해 크기 조정 작업 중에 항상 추가 용량의 버퍼를 유지 관리합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "ac7f205b-9117-4b49-8f22-9f31528dfdbd",
+ "service": "App Service Web Apps",
+ "text": "복구 가능성 계획: 중복성은 비즈니스 연속성에 매우 중요합니다. 한 인스턴스에 연결할 수 없는 경우 다른 인스턴스로 장애 조치합니다. App Service의 자동 복구 기능(예: 인스턴스 자동 복구)을 살펴보세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "55917a7d-4410-45fc-bba7-42e64d85c9cd",
+ "service": "App Service Web Apps",
+ "text": "신뢰성 테스트 수행: 부하 테스트를 수행하여 부하 상태에서 응용 프로그램의 안정성과 성능을 평가합니다. 테스트 계획에는 자동화된 복구 작업의 유효성을 검사하는 시나리오가 포함되어야 합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "dcceb232-19d6-48dc-a91f-5b4907cc3dda",
+ "service": "App Service Web Apps",
+ "text": "상태 프로브를 사용하여 응답하지 않는 작업자 식별: App Service에는 웹 애플리케이션의 특정 경로를 주기적으로 ping하는 기본 제공 기능이 있습니다. 응답하지 않는 인스턴스는 로드 밸런서에서 제거되고 새 인스턴스로 바뀝니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "프리미엄 App Service 플랜은 고급 크기 조정 기능을 제공하고 오류가 발생할 경우 중복성을 보장합니다.",
+ "guid": "696fd187-e2a8-45e8-bbe7-a6d3cb1fca62",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 프로덕션 워크로드에 대한 App Service 계획의 프리미엄 계층을 선택합니다. 용량 계획에 따라 최대 및 최소 작업자 수를 설정합니다. 자세한 내용은 App Service 계획 개요를 참조하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "응용 프로그램은 여러 인스턴스가 여러 영역에 분산되어 있는 경우 단일 영역에서 오류를 견딜 수 있습니다. 트래픽은 자동으로 다른 영역의 정상 인스턴스로 이동하고 한 영역을 사용할 수 없는 경우 애플리케이션 안정성을 유지합니다.",
+ "guid": "830faa5e-7767-4526-8550-547a345dd398",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 영역 중복을 사용하도록 설정합니다. 내결함성을 향상시키기 위해 세 개 이상의 인스턴스를 프로비전하는 것이 좋습니다. 모든 지역에서 이 기능을 제공하는 것은 아니므로 영역 중복에 대한 지역 지원을 확인합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "들어오는 요청은 ARR 선호도를 사용하지 않도록 설정할 때 사용 가능한 모든 노드에 균등하게 분산됩니다. 균등하게 분산된 요청은 트래픽이 단일 노드를 압도하는 것을 방지합니다. 노드를 사용할 수 없는 경우 요청을 다른 정상 노드로 원활하게 리디렉션할 수 있습니다. App Service 인스턴스가 상태 비저장 상태로 유지되도록 세션 선호도를 피합니다. 상태 비저장 App Service는 복잡성을 줄이고 노드 간에 일관된 동작을 보장합니다. App Service가 인스턴스를 추가하거나 제거하여 수평으로 확장할 수 있도록 고정 세션을 제거합니다.",
+ "guid": "3551bbd4-1f44-4bca-b25c-53e16f79cafe",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) ARR(애플리케이션 요청 라우팅) 선호도 기능을 사용하지 않도록 설정하는 것이 좋습니다. ARR 선호도는 사용자를 이전 요청을 처리한 노드로 리디렉션하는 고정 세션을 만듭니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "자동 복구 규칙은 응용 프로그램이 예기치 않은 문제로부터 자동으로 복구되는 데 도움이 됩니다. 구성된 규칙은 임계값이 위반될 때 복구 작업을 트리거합니다. 자동 복구는 자동 사전 예방적 유지 관리를 가능하게 합니다.",
+ "guid": "2a428ce1-dc25-4a1b-baf4-5edc909369fe",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 요청 수, 느린 요청, 메모리 제한 및 성능 기준의 일부인 기타 지표를 기반으로 자동 복구 규칙을 정의합니다. 이 구성을 크기 조정 전략의 일부로 간주합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "상태 확인은 문제를 조기에 감지할 수 있습니다. 그런 다음 시스템은 상태 확인 요청이 실패할 때 자동으로 수정 작업을 수행할 수 있습니다. 로드 밸런서는 비정상 인스턴스에서 트래픽을 라우팅하여 사용자를 정상 노드로 안내합니다.",
+ "guid": "4dd04acd-7d69-45b8-aa22-223c4ecc0a8c",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 상태 확인 기능을 활성화하고 상태 확인 요청에 응답하는 경로를 제공합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "e13358d7-cf1a-4356-a8eb-afe901ca3b36",
+ "service": "App Service Web Apps",
+ "text": "보안 기준 검토: App Service 계획에서 호스트되는 애플리케이션의 보안 태세를 강화하려면 App Service에 대한 보안 기준을 검토합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "cedf41d1-6f8a-4898-9cbd-064e66931bfa",
+ "service": "App Service Web Apps",
+ "text": "최신 런타임 및 라이브러리 사용: 업데이트를 수행하기 전에 애플리케이션 빌드를 철저하게 테스트하여 문제를 조기에 파악하고 새 버전으로 원활하게 전환할 수 있도록 합니다. App Service는 기존 스택을 업데이트하고 지원 종료 스택을 사용 중지하기 위한 언어 런타임 지원 정책을 지원합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "469151fd-f51c-43ab-84f7-5d6c01e99fba",
+ "service": "App Service Web Apps",
+ "text": "격리 경계를 통해 위반을 방지하기 위한 세분화 생성: ID 세분화를 적용합니다. 예를 들어 RBAC(역할 기반 액세스 제어)를 구현하여 역할에 따라 특정 권한을 할당합니다. 최소 권한의 원칙에 따라 필요한 경우에만 액세스 권한을 제한합니다. 또한 네트워크 수준에서 세그멘테이션을 생성합니다. 격리를 위해 Azure 가상 네트워크에 App Service 앱을 삽입하고 NSG(네트워크 보안 그룹)를 정의하여 트래픽을 필터링합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "794e1680-facc-4258-89cb-a07f1fa6e4d0",
+ "service": "App Service Web Apps",
+ "text": "ID에 대한 액세스 제어 적용: 웹앱에 대한 내부 액세스와 웹앱에서 다른 리소스로의 외부 액세스를 모두 제한합니다. 이 구성은 ID에 대한 액세스 제어를 적용하고 워크로드의 전반적인 보안 태세를 유지하는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "0ff3e194-df50-4856-b798-7487e5fc4d34",
+ "service": "App Service Web Apps",
+ "text": "애플리케이션에서 들어오고 나가는 네트워크 트래픽 제어: 애플리케이션 엔드포인트를 공용 인터넷에 노출하지 마세요. 대신, 전용 서브넷에 배치된 웹앱에 프라이빗 엔드포인트를 추가합니다. 해당 프라이빗 엔드포인트와 통신하는 역방향 프록시를 사용하여 응용 프로그램을 전면에 배치합니다. 해당 용도로 Application Gateway 또는 Azure Front Door를 사용하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "a6fcbd07-0da4-4386-902d-6708c5a5cc23",
+ "service": "App Service Web Apps",
+ "text": "데이터 암호화: 엔드 투 엔드 TLS(전송 계층 보안)를 통해 전송 중인 데이터를 보호합니다. 미사용 데이터의 전체 암호화를 위해 고객 관리형 키를 사용합니다. 자세한 내용은 고객 관리형 키를 사용한 미사용 암호화를 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "410bf979-2e37-4dfc-82ba-33dc8e9fbbf0",
+ "service": "App Service Web Apps",
+ "text": "공격 표면 줄이기: 필요하지 않은 기본 구성을 제거합니다. 예를 들어 원격 디버깅, SCM(소스 제어 관리자) 사이트에 대한 로컬 인증 및 기본 인증을 사용하지 않도록 설정합니다. HTTP 및 FTP(파일 전송 프로토콜)와 같은 안전하지 않은 프로토콜을 비활성화합니다. Azure 정책을 통해 구성을 적용합니다. 자세한 내용은 Azure 정책을 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "7157fe29-fe06-4c84-965d-8d450ac4bfe0",
+ "service": "App Service Web Apps",
+ "text": "애플리케이션 비밀 보호: API 키 또는 인증 토큰과 같은 민감한 정보를 처리해야 합니다. 이러한 비밀을 애플리케이션 코드 또는 구성 파일에 직접 하드 코딩하는 대신 앱 설정에서 Azure Key Vault 참조를 사용할 수 있습니다. 애플리케이션이 시작되면 App Service는 앱의 관리 ID를 사용하여 Key Vault에서 비밀 값을 자동으로 검색합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "ae9e2e30-a31e-4459-ae31-fbcb8307016e",
+ "service": "App Service Web Apps",
+ "text": "응용 프로그램에 리소스 로그 사용: 응용 프로그램에 대한 리소스 로그를 사용하도록 설정하여 보안 인시던트 후속 조사 중에 중요한 데이터를 제공하는 포괄적인 활동 추적을 만듭니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "애플리케이션은 Key Vault에서 비밀을 검색하여 애플리케이션의 외부 통신을 인증합니다. Azure는 ID를 관리하며 비밀을 프로비전하거나 회전할 필요가 없습니다. 제어의 세분성에 대한 고유한 ID가 있습니다. 고유한 ID를 사용하면 ID가 손상된 경우 쉽게 해지할 수 있습니다.",
+ "guid": "8f1a9e86-9309-4e41-bde5-0828c15daebf",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 웹앱에 관리 ID를 할당합니다. 격리 경계를 유지하려면 애플리케이션 간에 ID를 공유하거나 다시 사용하지 마세요. 배포에 컨테이너를 사용하는 경우 컨테이너 레지스트리에 안전하게 연결해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "사용자 지정 도메인은 TLS(전송 계층 보안) 프로토콜을 사용하여 HTTPS를 통해 보안 통신을 가능하게 하여 중요한 데이터를 보호하고 사용자 신뢰를 구축합니다.",
+ "guid": "cb4271e8-40e1-4cd3-ad1e-5d4584c485d7",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 응용 프로그램에 대한 사용자 지정 도메인을 구성합니다. HTTP를 비활성화하고 HTTPS 요청만 수락합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 기능을 사용하면 애플리케이션 코드에서 인증 라이브러리를 사용할 필요가 없으므로 복잡성이 줄어듭니다. 요청이 애플리케이션에 도달할 때 사용자는 이미 인증된 상태입니다.",
+ "guid": "0e19e111-ccad-457f-94b5-ee2deebc553c",
+ "service": "App Service Web Apps",
+ "text": "(App Service) App Service 기본 제공 인증이 애플리케이션에 액세스하는 사용자를 인증하는 데 적합한 메커니즘인지 여부를 평가합니다. App Service 기본 제공 인증은 Microsoft Entra ID와 통합됩니다. 이 기능은 여러 로그인 공급자에서 토큰 유효성 검사 및 사용자 ID 관리를 처리하고 OpenID Connect를 지원합니다. 이 기능을 사용하면 세분화된 수준의 권한 부여가 없으며 인증을 테스트할 메커니즘이 없습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure 가상 네트워크 사용의 보안 이점을 누리세요. 예를 들어, 애플리케이션은 네트워크 내의 리소스에 안전하게 액세스할 수 있습니다. 애플리케이션을 보호하는 데 도움이 되는 프라이빗 엔드포인트를 추가합니다. 프라이빗 엔드포인트는 공용 네트워크에 대한 직접 노출을 제한하고 역방향 프록시를 통해 제어된 액세스를 허용합니다.",
+ "guid": "1835b31e-37b4-431a-b783-eb28fec46518",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 가상 네트워크 통합을 위해 응용 프로그램을 구성합니다. App Service 앱에 프라이빗 엔드포인트를 사용합니다. 모든 공용 트래픽을 차단합니다. 가상 네트워크 통합을 통해 컨테이너 이미지 풀을 라우팅합니다. 애플리케이션에서 나가는 모든 트래픽은 가상 네트워크를 통과합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기본 인증은 보안 배포 방법으로 권장되지 않습니다. Microsoft Entra ID는 기본 인증과 관련된 제한 사항을 해결하는 많은 이점과 향상된 기능을 제공하는 OAuth 2.0 토큰 기반 인증을 사용합니다. 정책은 애플리케이션 리소스에 대한 액세스를 제한하고, 특정 도메인의 요청만 허용하며, 리전 간 요청을 보호합니다.",
+ "guid": "07adcdee-eecc-43c4-9cf8-40e06efa96cc",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 강화를 구현하려면 다음을 수행합니다. - Microsoft Entra ID 기반 인증을 위해 사용자 이름과 암호를 사용하는 기본 인증을 사용하지 않도록 설정합니다. - 인바운드 포트가 열리지 않도록 원격 디버깅을 끕니다. - CORS 정책을 활성화하여 들어오는 요청을 강화합니다. - FTP와 같은 프로토콜을 비활성화합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "비밀은 앱의 구성과 별도로 보관됩니다. 앱 설정은 미사용 시 암호화됩니다. App Service는 비밀 회전도 관리합니다.",
+ "guid": "298db56c-a733-4a8c-a009-224a1417de53",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 항상 Key Vault 참조를 앱 설정으로 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "App Service 계획에서 실행되는 리소스에 대한 실시간 보호를 받으세요. 위협으로부터 보호하고 전반적인 보안 태세를 강화합니다.",
+ "guid": "6cd4ee41-8ebd-4a7e-9da4-793705575ea0",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) App Service에 대해 클라우드용 Microsoft Defender를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "로깅은 액세스 패턴을 캡처합니다. 사용자가 애플리케이션 또는 플랫폼과 상호 작용하는 방식에 대한 귀중한 통찰력을 제공하는 관련 이벤트를 기록합니다. 이 정보는 책임, 규정 준수 및 보안 목적에 매우 중요합니다.",
+ "guid": "93a4781a-8e68-4ad4-af67-4ae28d534e6e",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 진단 로깅을 사용하도록 설정하고 앱에 계측을 추가합니다. 로그는 Azure Storage 계정, Azure Event Hubs 및 Log Analytics로 전송됩니다. 감사 로그 유형에 대한 자세한 내용은 지원되는 로그 유형을 참조하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "bb84a1f1-7f43-4656-bc0d-70abc288979b",
+ "service": "App Service Web Apps",
+ "text": "초기 비용 예측: 비용 모델링 연습의 일환으로 Azure 가격 계산기를 사용하여 실행하려는 인스턴스 수를 기준으로 다양한 계층과 관련된 대략적인 비용을 평가합니다. 각 App Service 계층은 서로 다른 컴퓨팅 옵션을 제공합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "8616b469-c0d7-4da8-afe4-28a9c55941b5",
+ "service": "App Service Web Apps",
+ "text": "할인된 옵션 평가: 상위 계층에는 전용 컴퓨팅 인스턴스가 포함됩니다. 워크로드에 예측 가능하고 일관된 사용 패턴이 있는 경우 예약 할인을 적용할 수 있습니다. 사용량 현황 데이터를 분석하여 워크로드에 적합한 예약 유형을 결정해야 합니다. 자세한 내용은 App Service 예약 인스턴스로 비용 절감을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "08ccd533-7d3f-438e-8274-a30d3e10d81e",
+ "service": "App Service Web Apps",
+ "text": "사용량 미터 이해: Azure는 App Service 플랜의 가격 책정 계층에 따라 초 단위로 비례 배분된 시간당 요금을 청구합니다. 요금은 VM 인스턴스를 할당하는 시간을 기준으로 계획의 각 스케일 아웃 인스턴스에 적용됩니다. 최적화되지 않은 SKU 선택 또는 잘못 구성된 축소 구성으로 인한 초과 할당의 결과로 비용이 증가할 수 있는 사용량이 부족한 컴퓨팅 리소스에 주의를 기울여야 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "9d33583d-156b-4a49-b361-1eae39f5d6df",
+ "service": "App Service Web Apps",
+ "text": "밀도와 격리 간의 장단점 고려: App Service 계획을 사용하여 동일한 컴퓨팅에서 여러 애플리케이션을 호스트할 수 있으며, 이는 공유 환경에서 비용을 절감합니다. 자세한 내용은 Tradeoffs를 참조하십시오.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "19d66260-5bfe-466e-89b0-f2573223acf9",
+ "service": "App Service Web Apps",
+ "text": "크기 조정 전략이 비용에 미치는 영향 평가: 자동 크기 조정을 구현할 때 확장 및 축소를 적절하게 설계, 테스트 및 구성해야 합니다. 자동 크기 조정에 대한 정확한 최대 및 최소 제한을 설정합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "b4798bde-d65a-4c44-a75e-e7c8c05df60e",
+ "service": "App Service Web Apps",
+ "text": "환경 비용 최적화: 사전 프로덕션 환경을 실행하기 위해 기본 또는 무료 계층을 고려합니다. 이러한 계층은 성능이 낮고 비용이 저렴합니다. 기본 또는 무료 티어를 사용하는 경우 거버넌스를 사용하여 티어를 적용하고, 인스턴스 및 CPU 수를 제한하고, 크기 조정을 제한하고, 로그 보존을 제한합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "0cfc5cbc-61b7-4b64-a2eb-52e15c243cad",
+ "service": "App Service Web Apps",
+ "text": "디자인 패턴 구현: 이 전략은 워크로드에서 생성되는 요청의 볼륨을 줄입니다. 프런트 엔드용 백엔드 패턴 및 게이트웨이 집계 패턴과 같은 패턴을 사용하여 요청 수를 최소화하고 비용을 줄일 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "300e19c7-7406-47ca-aeca-bca5032f2b8a",
+ "service": "App Service Web Apps",
+ "text": "데이터 관련 비용을 정기적으로 확인: 데이터 보존 기간이 길어지거나 비용이 많이 드는 스토리지 계층으로 인해 스토리지 비용이 높아질 수 있습니다. 대역폭 사용과 로깅 데이터의 장기 보존으로 인해 더 많은 비용이 누적될 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "085263b2-cffe-4537-9ecb-75ef967c2985",
+ "service": "App Service Web Apps",
+ "text": "배포 비용 최적화: 배포 슬롯을 활용하여 비용을 최적화합니다. 슬롯은 프로덕션 인스턴스와 동일한 컴퓨팅 환경에서 실행됩니다. 슬롯 간에 전환하는 파란색-녹색 배포와 같은 시나리오에 전략적으로 사용합니다. 이 접근 방식은 다운타임을 최소화하고 원활한 전환을 보장합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "무료 및 기본 계층은 상위 계층에 비해 예산 친화적입니다. 프리미엄 플랜의 전체 기능과 성능이 필요하지 않은 비프로덕션 환경을 위한 비용 효율적인 솔루션을 제공합니다.",
+ "guid": "df7294a6-460e-4d50-b4a9-66141caada1d",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 더 낮은 환경에 대해 무료 또는 기본 계층을 선택합니다. 이러한 계층은 실험적으로 사용하는 것이 좋습니다. 더 이상 필요하지 않은 계층을 제거합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "개발/테스트 계획은 Azure 서비스에 대해 할인된 요금을 제공하므로 비프로덕션 환경에서 비용 효율적입니다. 예약 인스턴스를 사용하여 컴퓨팅 리소스에 대한 비용을 선불로 지불하고 상당한 할인을 받으세요.",
+ "guid": "a4bd3bc2-554f-483f-9707-dcf9f1b7cdd2",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 할인 혜택을 누리고 선호하는 가격을 살펴보세요. - 개발/테스트 계획으로 환경을 줄입니다. - 프리미엄 V3 계층 및 App Service Environment에서 프로비전하는 전용 컴퓨팅에 대한 Azure 예약 및 Azure 절약 플랜. 사용 패턴을 예측할 수 있는 안정적인 워크로드를 위해 예약 인스턴스를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 급증, 비효율성 또는 예상치 못한 비용을 조기에 식별할 수 있습니다. 이러한 사전 예방적 접근 방식은 초과 지출을 방지하기 위한 예산 제어를 제공하는 데 도움이 됩니다.",
+ "guid": "12f02b69-d400-403d-9e8a-1a67ed102764",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) App Service 리소스에서 발생하는 비용을 모니터링합니다. Azure Portal에서 비용 분석 도구를 실행합니다. 예산과 경고를 만들어 이해 관계자에게 알립니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "낭비를 방지하고 불필요한 비용을 줄입니다.",
+ "guid": "e48373a3-b551-4715-853c-dee4f114466e",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 수요가 감소할 때 축소합니다. 규모를 축소하려면 크기 조정 규칙을 정의하여 Azure Monitor의 인스턴스 수를 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "3aa6c22d-807b-4efd-9ebe-b290c995d0b3",
+ "service": "App Service Web Apps",
+ "text": "릴리스 관리: 배포 슬롯을 사용하여 릴리스를 효과적으로 관리합니다. 응용 프로그램을 슬롯에 배포하고, 테스트를 수행하고, 해당 기능을 검증할 수 있습니다. 확인 후 앱을 프로덕션으로 원활하게 이동할 수 있습니다. 이 프로세스는 슬롯이 프로덕션 인스턴스와 동일한 가상 머신(VM) 환경에서 실행되기 때문에 추가 비용이 발생하지 않습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "751098a9-7103-4250-bd52-f48a5fbe8b73",
+ "service": "App Service Web Apps",
+ "text": "자동화된 테스트 실행: 웹앱의 릴리스를 홍보하기 전에 성능, 기능 및 다른 구성 요소와의 통합을 철저하게 테스트합니다. 성능 테스트에 널리 사용되는 도구인 Apache JMeter와 통합되는 Azure Load Testing을 사용합니다. 기능 테스트를 위한 Phantom과 같은 다른 유형의 테스트를 위한 자동화된 도구를 살펴보십시오.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "0de22a93-9404-4512-b374-6c753628943e",
+ "service": "App Service Web Apps",
+ "text": "변경할 수 없는 단위 배포: 배포 스탬프 패턴을 구현하여 App Service를 변경할 수 없는 스탬프로 구분합니다. App Service는 기본적으로 변경할 수 없는 컨테이너의 사용을 지원합니다. App Service 웹앱에 대한 사용자 지정 컨테이너를 고려합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "3175ebdb-2846-4f48-b450-278df163c188",
+ "service": "App Service Web Apps",
+ "text": "프로덕션 환경을 안전하게 유지: 프로덕션 및 사전 프로덕션 환경을 실행하기 위한 별도의 App Service 계획을 만듭니다. 안정성과 신뢰성을 보장하기 위해 프로덕션 환경에서 직접 변경하지 마세요. 별도의 인스턴스를 사용하면 변경 사항을 프로덕션으로 승격하기 전에 개발 및 테스트의 유연성을 확보할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "b883e190-a830-4bf4-8c08-ee3b85248abf",
+ "service": "App Service Web Apps",
+ "text": "인증서 관리: 사용자 지정 도메인의 경우 TLS 인증서를 관리해야 합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "문제를 즉시 감지하고 가용성과 성능을 유지하기 위해 필요한 조치를 취할 수 있습니다.",
+ "guid": "75f6aad9-2abc-4171-9715-ba708928d39a",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 인스턴스의 상태를 모니터링하고 인스턴스 상태 프로브를 활성화합니다. 상태 프로브 요청을 처리하기 위한 특정 경로를 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그는 앱의 동작에 대한 중요한 인사이트를 제공합니다. 트래픽 패턴을 모니터링하고 이상 징후를 식별합니다.",
+ "guid": "91d861ad-a4ae-462e-8775-56cbecb31951",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) 응용 프로그램 및 인스턴스에 대한 진단 로그를 사용하도록 설정합니다. 잦은 로깅은 시스템 성능을 저하시키고, 스토리지 비용을 증가시키며, 로그에 안전하지 않은 액세스 권한이 있는 경우 위험을 초래할 수 있습니다. 다음 모범 사례를 따르십시오. - 적절한 수준의 정보를 기록합니다. - 보존 정책을 설정합니다. - 승인된 액세스 및 무단 시도에 대한 감사 추적을 유지합니다. - 로그를 데이터로 처리하고 데이터 보호 제어를 적용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "App Service는 인증서 조달, 인증서 확인, 인증서 갱신 및 Key Vault에서 인증서 가져오기와 같은 프로세스를 자동으로 처리합니다. 또는 Key Vault에 인증서를 업로드하고 App Service 리소스 공급자에게 액세스할 수 있는 권한을 부여합니다.",
+ "guid": "70e24ecc-5113-4d7d-8a79-8ac24fe1f838",
+ "service": "App Service Web Apps",
+ "text": "(앱 서비스) App Service 관리형 인증서를 활용하여 인증 관리를 Azure로 오프로드합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "다운타임과 오류를 방지합니다. 스왑 후 문제를 감지하면 마지막으로 알려진 양호한 상태로 빠르게 되돌립니다.",
+ "guid": "7a592a00-a940-4d2e-a919-56ad3237092e",
+ "service": "App Service Web Apps",
+ "text": "(App Service 계획) 프로덕션 슬롯으로 교체하기 전에 스테이징 슬롯에서 앱 변경 사항의 유효성을 검사합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "018624c9-6396-4e1c-8b0c-83d39b40c2a1",
+ "service": "App Service Web Apps",
+ "text": "성능 지표 식별 및 모니터링: 들어오는 요청의 볼륨, 애플리케이션이 요청에 응답하는 데 걸리는 시간, 보류 중인 요청 및 HTTP 응답의 오류와 같은 애플리케이션의 주요 지표에 대한 목표를 설정합니다. 주요 지표를 워크로드에 대한 성능 기준의 일부로 고려합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "c66aabbd-8b2a-4295-9492-78cd5aea690a",
+ "service": "App Service Web Apps",
+ "text": "용량 평가: 다양한 사용자 시나리오를 시뮬레이션하여 예상 트래픽을 처리하는 데 필요한 최적의 용량을 결정합니다. 부하 테스트를 사용하여 응용 프로그램이 다양한 부하 수준에서 어떻게 동작하는지 이해할 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "7e11019e-4329-458a-b84a-9233aa8de1a5",
+ "service": "App Service Web Apps",
+ "text": "올바른 계층 선택: 프로덕션 워크로드에 전용 컴퓨팅을 사용합니다. 프리미엄 계층은 증가된 메모리 및 CPU 용량, 더 많은 인스턴스 및 영역 중복과 같은 더 많은 기능을 갖춘 더 큰 SKU를 제공합니다. 자세한 내용은 프리미엄 V3 가격 책정 계층을 참조하세요.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "97fdfb16-a73b-497a-853a-fe608cfc1750",
+ "service": "App Service Web Apps",
+ "text": "크기 조정 전략 최적화: 가능한 경우 애플리케이션 로드가 변경될 때 인스턴스 수를 수동으로 조정하는 대신 자동 크기 조정을 사용합니다. 자동 크기 조정을 통해 App Service는 미리 정의된 규칙 또는 트리거에 따라 서버 용량을 조정합니다. 적절한 성능 테스트를 수행하고 올바른 트리거에 대한 올바른 규칙을 설정해야 합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "45d7e1a5-2b7e-4b6b-8925-bf0b760a9d7e",
+ "service": "App Service Web Apps",
+ "text": "캐싱 사용: 자주 변경되지 않고 액세스 비용이 많이 드는 리소스에서 정보를 검색하면 성능에 영향을 줍니다. 조인 및 여러 조회를 포함한 복잡한 쿼리는 런타임에 기여합니다. 처리 시간과 대기 시간을 최소화하기 위해 캐싱을 수행합니다. 쿼리 결과를 캐시하여 데이터베이스 또는 백엔드에 대한 반복적인 왕복을 방지하고 후속 요청에 대한 처리 시간을 줄입니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "c8094d1c-6371-4984-98c1-ca5d72a7732d",
+ "service": "App Service Web Apps",
+ "text": "성능 안티패턴 검토: 웹 애플리케이션이 비즈니스 요구 사항에 따라 수행되고 확장되는지 확인하려면 일반적인 안티패턴을 피하십시오. 다음은 App Service에서 수정하는 몇 가지 안티패턴입니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "응용 프로그램은 Always On을 사용하도록 설정된 상태로 언로드되지 않습니다.",
+ "guid": "2c97ff90-e7cd-4888-a0c9-c21ea287071c",
+ "service": "App Service Web Apps",
+ "text": "애플리케이션이 단일 App Service 계획을 공유하는 경우 Always On 설정을 사용하도록 설정합니다. App Service 앱은 리소스를 절약하기 위해 유휴 상태일 때 자동으로 언로드됩니다. 다음 요청은 콜드 스타트를 트리거하여 요청 시간 초과를 유발할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "HTTP/2는 연결을 완전히 다중화하고, 오버헤드를 줄이기 위해 연결을 재사용하며, 데이터 전송을 최소화하기 위해 헤더를 압축하기 때문에 HTTP/1.1보다 HTTP/2를 선택합니다.",
+ "guid": "d735fb9e-9e87-415c-93d0-4918b5cf104e",
+ "service": "App Service Web Apps",
+ "text": "프로토콜 효율성을 개선하기 위해 애플리케이션에 HTTP/2를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "ee4fab35-3fcf-469c-aa4a-baaa7ea46a76",
+ "service": "Azure Application Gateway",
+ "text": "사용 가능한 경우 영역 인식 구성으로 인스턴스를 배포합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "897c9b7a-c56c-4390-9938-71ed0ee875d8",
+ "service": "Azure Application Gateway",
+ "text": "가상 네트워크 내에서 WAF(Web Application Firewall)와 함께 Application Gateway를 사용하여 인터넷의 인바운드 'HTTP/S' 트래픽을 보호합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "9d1d0113-dcc3-4309-bf89-57f43eff537c",
+ "service": "Azure Application Gateway",
+ "text": "새 배포에서는 Azure Application Gateway v1을 사용해야 하는 강력한 이유가 없는 한 Azure Application Gateway v2를 사용합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "규칙 업데이트 계획",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "상태 프로브를 사용하여 백 엔드 사용 불가 감지Use health probes to detect backend unavailability",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "간격 및 임계값 설정이 상태 프로브에 미치는 영향 검토Review the impact of the interval and threshold settings on health probes",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "상태 엔드포인트를 통해 다운스트림 종속성 확인Verify downstream dependencies through health endpoints",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Application Gateway에 액세스하거나 추가로 변경하기 전에 업데이트를 위한 충분한 시간을 계획합니다. 예를 들어 백 엔드 풀에서 서버를 제거하려면 기존 연결을 드레이닝해야 하기 때문에 시간이 걸릴 수 있습니다.",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "규칙 업데이트 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Application Gateway를 사용하여 여러 백 엔드 인스턴스를 통해 들어오는 트래픽의 부하를 분산하는 경우 상태 프로브를 사용하는 것이 좋습니다. 이렇게 하면 트래픽을 처리할 수 없는 백엔드로 트래픽이 라우팅되지 않습니다.",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "상태 프로브를 사용하여 백 엔드 사용 불가 감지Use health probes to detect backend unavailability",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "상태 프로브는 설정된 간격으로 구성된 엔드포인트로 요청을 보냅니다. 또한 백 엔드가 비정상으로 표시되기 전에 허용되는 실패한 요청의 임계값이 있습니다. 이 숫자는 절충안을 제시합니다.- 더 높은 간격을 설정하면 서비스에 더 많은 부하가 걸립니다. 각 Application Gateway 인스턴스는 자체 상태 프로브를 보내므로 30초마다 100개의 인스턴스는 30초당 100개의 요청을 의미합니다.- 간격을 낮게 설정하면 중단이 감지되기 전에 더 많은 시간이 남습니다.- 비정상 임계값을 낮게 설정하면 짧은 일시적인 오류로 인해 백 엔드가 중단될 수 있습니다. - 임계값을 높게 설정하면 백엔드를 회전에서 제외하는 데 시간이 더 오래 걸릴 수 있습니다.",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "간격 및 임계값 설정이 상태 프로브에 미치는 영향 검토Review the impact of the interval and threshold settings on health probes",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "각 백엔드에 실패를 격리하기 위해 자체 종속성이 있다고 가정합니다. 예를 들어 Application Gateway 뒤에서 호스트되는 애플리케이션에는 각각 다른 데이터베이스(복제본)에 연결된 여러 백 엔드가 있을 수 있습니다. 이러한 종속성이 실패하면 애플리케이션이 작동할 수 있지만 유효한 결과를 반환하지 않을 수 있습니다. 이러한 이유로 상태 엔드포인트는 이상적으로 모든 종속성의 유효성을 검사해야 합니다. 상태 엔드포인트에 대한 각 호출에 직접 종속성 호출이 있는 경우 해당 데이터베이스는 30초마다 1개가 아닌 100개의 쿼리를 수신합니다. 이를 방지하기 위해 상태 엔드포인트는 짧은 기간 동안 종속성의 상태를 캐시해야 합니다.",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "상태 엔드포인트를 통해 다운스트림 종속성 확인Verify downstream dependencies through health endpoints",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "특정 시나리오에서는 Application Gateway에서 특별히 규칙을 구현해야 할 수 있습니다. 예를 들어 ModSec CRS 2.2.9, CRS 3.0 또는 CRS 3.1 규칙이 필요한 경우 이러한 규칙은 Application Gateway에서만 구현할 수 있습니다. 반대로, 속도 제한 및 지역 필터링은 AppGateway가 아닌 Azure Front Door에서만 사용할 수 있습니다.",
+ "guid": "2cc68719-238d-40f1-9eda-37a4b77cabc2",
+ "service": "Azure Application Gateway",
+ "text": "Azure Front Door 및 Application Gateway를 사용하여 'HTTP/S' 애플리케이션을 보호하는 경우 Front Door에서 WAF 정책을 사용하고 Azure Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "보안 강화를 위한 TLS 정책 설정",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "TLS 종료에 AppGateway 사용",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault를 사용하여 TLS 인증서 저장",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "백엔드 트래픽을 다시 암호화할 때 백엔드 서버 인증서에 루트 및 중간 CA(인증 기관)가 모두 포함되어 있는지 확인합니다",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 풀 리소스에 적절한 DNS 서버를 사용합니다",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway에 대한 모든 NSG 제한 사항 준수",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "5ff5e810-ac1d-42ef-9a30-812c15c42be8",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷에서 UDR을 사용하지 마세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "WAF를 사용하도록 설정할 때 Application Gateway 용량 변경에 유의하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "추가 보안을 위해 TLS 정책을 설정합니다. 항상 사용 가능한 최신 TLS 정책 버전을 사용하고 있는지 확인합니다. 이렇게 하면 TLS 1.2 및 더 강력한 암호가 적용됩니다.",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "보안 강화를 위한 TLS 정책 설정",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 종료에 Application Gateway를 사용하면 다음과 같은 이점이 있습니다.- 다른 백 엔드로 이동하는 요청이 각 백 엔드에 다시 인증해야 하기 때문에 성능이 향상됩니다.- TLS 처리를 수행할 필요가 없으므로 백 엔드 서버의 활용도가 향상됩니다.- 요청 콘텐츠에 액세스하여 지능형 라우팅.- 인증서를 Application Gateway에만 설치하면 되므로 인증서 관리가 더 쉽습니다.",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "TLS 종료에 AppGateway 사용",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Application Gateway는 Key Vault와 통합할 수 있습니다. 이를 통해 보안이 강화되고, 역할과 책임이 더 쉽게 분리되고, 관리형 인증서가 지원되고, 인증서 갱신 및 순환 프로세스가 더 쉬워집니다.",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Azure Key Vault를 사용하여 TLS 인증서 저장",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "백엔드 서버의 TLS 인증서는 잘 알려진 CA에서 발급해야 합니다. 인증서가 신뢰할 수 있는 CA에서 발급되지 않은 경우 Application Gateway는 신뢰할 수 있는 CA 인증서를 찾을 때까지 인증서가 신뢰할 수 있는 CA에서 발급되었는지 확인합니다. 그런 다음에만 보안 연결이 설정됩니다. 그렇지 않으면 Application Gateway는 백 엔드를 비정상으로 표시합니다.",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "백엔드 트래픽을 다시 암호화할 때 백엔드 서버 인증서에 루트 및 중간 CA(인증 기관)가 모두 포함되어 있는지 확인합니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "백 엔드 풀에 확인 가능한 FQDN이 포함된 경우 DNS 확인은 프라이빗 DNS 영역 또는 사용자 지정 DNS 서버(VNet에 구성된 경우)를 기반으로 하거나 기본 Azure 제공 DNS를 사용합니다.",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 풀 리소스에 적절한 DNS 서버를 사용합니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "NSG는 Application Gateway 서브넷에서 지원되지만 몇 가지 제한 사항이 있습니다. 예를 들어, 특정 포트 범위와의 일부 통신은 금지됩니다. 이러한 제한 사항의 의미를 이해해야 합니다. 자세한 내용은 네트워크 보안 그룹을 참조하세요.",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway에 대한 모든 NSG 제한 사항 준수",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Application Gateway 서브넷에서 UDR(사용자 정의 경로)을 사용하면 몇 가지 문제가 발생할 수 있습니다. 백 엔드의 상태는 알 수 없음일 수 있습니다. Application Gateway 로그 및 메트릭이 생성되지 않을 수 있습니다. 백 엔드 상태, 로그 및 메트릭을 볼 수 있도록 Application Gateway 서브넷에서 UDR을 사용하지 않는 것이 좋습니다. 조직에서 Application Gateway 서브넷에서 UDR을 사용해야 하는 경우 지원되는 시나리오를 검토해야 합니다. 자세한 내용은 지원되는 사용자 정의 경로를 참조하세요.",
+ "guid": "96ac0266-6e5d-4944-bccb-0c6b3bd00b89",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷에서 UDR을 사용하지 마세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "WAF를 사용하도록 설정하면 완전히 도착할 때까지 Application Gateway에서 모든 요청을 버퍼링하고, 요청이 핵심 규칙 집합의 규칙 위반과 일치하는지 확인한 다음, 패킷을 백 엔드 인스턴스로 전달해야 합니다. 대용량 파일(30MB+ 크기)이 있는 경우 상당한 대기 시간이 발생할 수 있습니다. Application Gateway 용량 요구 사항은 WAF와 다르기 때문에 적절한 테스트 및 유효성 검사 없이 Application Gateway에서 WAF를 사용하도록 설정하지 않는 것이 좋습니다.",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "WAF를 사용하도록 설정할 때 Application Gateway 용량 변경에 유의하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 가격 책정을 숙지합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "활용도가 낮은 리소스 검토",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "03e1fbfa-86c2-4550-a6aa-e111d6ab895d",
+ "service": "Azure Application Gateway",
+ "text": "사용 중이 아닌 Application Gateway 인스턴스 중지",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "규모 감축 및 규모 확장 정책 수립",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "다양한 매개 변수에 대한 소비 메트릭 검토",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "Application Gateway 가격 책정에 대한 자세한 내용은 Azure Application Gateway 및 Web Application Firewall의 가격 책정 이해를 참조하세요. 가격 계산기를 활용할 수도 있습니다. 용량 수요를 충족하고 리소스 낭비 없이 예상 성능을 제공할 수 있도록 옵션의 크기가 적절하게 조정되었는지 확인합니다.",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 가격 책정을 숙지합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "빈 백 엔드 풀이 있는 Application Gateway 인스턴스를 식별하고 삭제하여 불필요한 비용을 방지합니다.",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "활용도가 낮은 리소스 검토",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Application Gateway가 중지된 상태일 때는 요금이 청구되지 않습니다. Application Gateway 인스턴스를 지속적으로 실행하면 불필요한 비용이 발생할 수 있습니다. 사용 패턴을 평가하고 필요하지 않을 때 인스턴스를 중지합니다. 예를 들어 개발/테스트 환경에서 업무 시간 이후의 사용량은 낮을 것으로 예상됩니다. 인스턴스를 중지하고 시작하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "6af81413-0516-4067-9e26-8aad8d2d06ca",
+ "service": "Azure Application Gateway",
+ "text": "사용하지 않을 때 Application Gateway 인스턴스 중지Stop Application Gateway instances when not in use",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스케일 아웃 정책은 들어오는 트래픽과 급증을 처리할 수 있는 충분한 인스턴스가 있는지 확인합니다. 또한 수요가 감소할 때 인스턴스 수를 줄이는 축소 정책이 있어야 합니다. 인스턴스 크기 선택을 고려합니다. 크기는 비용에 큰 영향을 미칠 수 있습니다. 몇 가지 고려 사항은 Application Gateway 인스턴스 수 예측에 설명되어 있습니다. 자세한 내용은 Azure Application Gateway v2란?을 참조하세요.",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "규모 감축 및 규모 확장 정책 수립",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure에서 추적한 메트릭을 기반으로 Application Gateway의 계량된 인스턴스를 기준으로 요금이 청구됩니다. 다양한 메트릭과 용량 단위를 평가하고 비용 동인을 결정합니다. 자세한 내용은 Microsoft Cost Management 및 청구를 참조하세요. 다음 메트릭은 Application Gateway의 핵심입니다. 이 정보는 프로비저닝된 인스턴스 수가 들어오는 트래픽의 양과 일치하는지 확인하는 데 사용할 수 있습니다.- 예상 청구 용량 단위 - 고정 청구 가능 용량 단위 - 현재 용량 단위자세한 내용은 Application Gateway 메트릭을 참조하세요. 대역폭 비용을 고려해야 합니다.",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "다양한 매개 변수에 대한 소비 메트릭 검토",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "용량 메트릭 모니터링",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 및 WAF(Web Application Firewall)에서 진단 사용Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights 사용",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 애플리케이션과 시간 제한 설정 일치Match timeout settings with the backend application",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor를 사용하여 Key Vault 구성 문제 모니터링",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "78bbcbf2-30c3-4c77-8e8f-8faf4c4b817d",
+ "service": "Azure Application Gateway",
+ "text": "SNAT 포트 제한 구성 및 모니터링",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "디자인에서 SNAT 포트 제한 사항 고려",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "이러한 메트릭을 프로비전된 Application Gateway 용량의 사용률 지표로 사용합니다. 용량에 대한 경고를 설정하는 것이 좋습니다. 자세한 내용은 Application Gateway 높은 트래픽 지원을 참조하세요.",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "용량 메트릭 모니터링",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Application Gateway 또는 백 엔드에서 문제를 나타낼 수 있는 다른 메트릭이 있습니다. - 비정상 호스트 수- 응답 상태(차원 4xx 및 5xx)- 백 엔드 응답 상태(차원 4xx 및 5xx)- 백 엔드 마지막 바이트 응답 시간- Application Gateway 총 시간자세한 내용은 Application Gateway에 대한 메트릭을 참조하세요.",
+ "guid": "af883a3e-1ece-4f8a-9732-95a461fe244c",
+ "service": "Azure Application Gateway",
+ "text": "메트릭 사용 문제 해결",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그를 사용하면 방화벽 로그, 성능 로그 및 액세스 로그를 볼 수 있습니다. 이러한 로그를 사용하여 Application Gateway 인스턴스와 관련된 문제를 관리하고 해결합니다. 자세한 내용은 Application Gateway에 대한 백 엔드 상태 및 진단 로그를 참조하세요.",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 및 WAF(Web Application Firewall)에서 진단 사용Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Monitor Network Insights는 Application Gateway를 포함한 네트워크 리소스의 상태 및 메트릭에 대한 포괄적인 보기를 제공합니다. Application Gateway에 대한 자세한 내용 및 지원되는 기능은 Azure Monitor 네트워크 인사이트를 참조하세요.",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Azure Monitor Network Insights 사용",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "백 엔드 애플리케이션의 리스너 및 트래픽 특성과 일치하도록 IdleTimeout 설정을 구성했는지 확인합니다. 기본값은 4분으로 설정되며 최대 30분으로 구성할 수 있습니다. 자세한 내용은 Load Balancer TCP 재설정 및 유휴 시간 제한을 참조하세요.워크로드 고려 사항은 안정성을 위한 애플리케이션 상태 모니터링을 참조하세요.",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "백 엔드 애플리케이션과 시간 제한 설정 일치Match timeout settings with the backend application",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Application Gateway는 4시간 간격으로 연결된 Key Vault에서 갱신된 인증서 버전을 확인합니다. 잘못된 Key Vault 구성으로 인해 액세스할 수 없는 경우 해당 오류를 기록하고 해당 Advisor 권장 사항을 푸시합니다. 제어 또는 데이터 플레인 관련 문제를 방지하기 위해 최신 상태를 유지하고 이러한 문제를 즉시 수정하도록 Advisor 경고를 구성해야 합니다. 자세한 내용은 키 자격 증명 모음 오류 조사 및 해결을 참조하세요. 이 특정 사례에 대한 경고를 설정하려면 권장 사항 유형을 Application Gateway에 대한 Azure Key Vault 문제 해결로 사용합니다.",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Azure Advisor를 사용하여 Key Vault 구성 문제 모니터링",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "SNAT 포트 제한은 Application Gateway의 백 엔드 연결에 중요합니다. Application Gateway가 SNAT 포트 제한에 도달하는 방식에 영향을 주는 별도의 요인이 있습니다. 예를 들어 백 엔드가 공용 IP 주소인 경우 자체 SNAT 포트가 필요합니다. SNAT 포트 제한을 방지하기 위해 Application Gateway당 인스턴스 수를 늘리거나, 백 엔드를 스케일 아웃하여 더 많은 IP 주소를 갖도록 하거나, 백 엔드를 동일한 가상 네트워크로 이동하고 백 엔드에 개인 IP 주소를 사용할 수 있습니다. SNAT 포트 제한에 도달하면 Application Gateway의 RPS(초당 요청 수)가 영향을 받습니다. 예를 들어 Application Gateway가 SNAT 포트 제한에 도달하면 백 엔드에 대한 새 연결을 열 수 없으며 요청이 실패합니다.",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "디자인에서 SNAT 포트 제한 사항 고려",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "261fdf60-ce3b-4abd-8a85-b39ebb208df9",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 인스턴스 수 예측",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "최대 인스턴스 수를 정의합니다",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "최소 인스턴스 수를 정의합니다",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷 크기 정의",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "958240c8-23f1-447d-9cb7-ce9edb5aa606",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway V2 기능을 활용하여 자동 크기 조정 및 성능 이점 제공",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "Application Gateway v2 SKU의 경우 추가 인스턴스 집합이 트래픽을 처리할 준비가 되기까지 자동 크기 조정에 약간의 시간(약 6-7분)이 걸립니다. 이 시간 동안 트래픽이 잠시 급증하는 경우 일시적인 대기 시간 또는 트래픽 손실이 예상됩니다. 최소 인스턴스 수를 최적의 수준으로 설정하는 것이 좋습니다. 평균 인스턴스 수를 예측하고 Application Gateway 자동 크기 조정 추세를 확인한 후에는 애플리케이션 패턴에 따라 최소 인스턴스 수를 정의합니다. 자세한 내용은 Application Gateway 높은 트래픽 지원을 참조하세요. 지난 1개월 동안의 현재 컴퓨팅 단위를 확인합니다. 이 메트릭은 게이트웨이의 CPU 사용률을 나타냅니다. 최소 인스턴스 수를 정의하려면 최대 사용량을 10으로 나눕니다. 예를 들어 지난 달의 평균 Current Compute 단위가 50인 경우 최소 인스턴스 수를 5로 설정합니다.",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "최소 인스턴스 수를 정의합니다",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "최대 자동 크기 조정 인스턴스 수로 125를 사용하는 것이 좋습니다. Application Gateway가 있는 서브넷에 스케일 업 인스턴스 집합을 지원할 수 있는 충분한 IP 주소가 있는지 확인합니다. 최대 인스턴스 수를 125로 설정하면 사용된 용량에 대해서만 요금이 청구되므로 비용에는 영향을 주지 않습니다.",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "최대 인스턴스 수를 정의합니다",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Application Gateway에는 가상 네트워크 내의 전용 서브넷이 필요합니다. 서브넷에는 배포된 Application Gateway 리소스의 여러 인스턴스가 있을 수 있습니다. 해당 서브넷, v1 또는 v2 SKU에 다른 Application Gateway 리소스를 배포할 수도 있습니다. 서브넷 크기를 정의하기 위한 몇 가지 고려 사항은 다음과 같습니다.- Application Gateway는 인스턴스당 하나의 개인 IP 주소를 사용하고, 개인 프런트 엔드 IP가 구성된 경우 다른 개인 IP 주소를 사용합니다.- Azure는 내부 사용을 위해 각 서브넷에서 5개의 IP 주소를 예약합니다.- Application Gateway(표준 또는 WAF SKU)는 최대 32개의 인스턴스를 지원할 수 있습니다. 인스턴스 IP 주소 32개 + 프라이빗 프런트 엔드 IP 1개 + Azure 예약 5개를 사용하는 경우 최소 서브넷 크기는 /26이 권장됩니다. Standard_v2 또는 WAF_v2 SKU는 최대 125개의 인스턴스를 지원할 수 있으므로 동일한 계산을 사용하여 서브넷 크기 /24를 사용하는 것이 좋습니다.- 동일한 서브넷에 추가 Application Gateway 리소스를 배포하려는 경우 표준 및 표준 v2 모두에 대한 최대 인스턴스 수에 필요한 추가 IP 주소를 고려합니다.",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Application Gateway 서브넷 크기 정의",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "v2 SKU는 트래픽이 증가함에 따라 Application Gateway를 확장할 수 있도록 자동 크기 조정을 제공합니다. v1 SKU와 비교할 때 v2에는 워크로드의 성능을 향상시키는 기능이 있습니다. 예를 들어 TLS 오프로드 성능 향상, 배포 및 업데이트 시간 단축, 영역 중복성 등이 있습니다. 자동 크기 조정 기능에 대한 자세한 내용은 Application Gateway v2 및 WAF v2 크기 조정을 참조하세요. v1 SKU Application gateway를 실행하는 경우 Application gateway v2 SKU로 마이그레이션하는 것이 좋습니다. 자세한 내용은 Azure Application Gateway 및 Web Application Firewall v1에서 v2로 마이그레이션을 참조하세요.",
+ "guid": "508791c8-897f-4490-8590-fc33a9df8f73",
+ "service": "Azure Application Gateway",
+ "text": "자동 크기 조정 및 성능 이점을 위한 기능 활용",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "d68b4fc0-fd9c-499a-9fd4-2c572735bd36",
+ "service": "Azure Blob Storage",
+ "text": "오류 모드 분석 사용: 가상 네트워크, Azure Key Vault 또는 Azure Content Delivery Network 또는 Azure Front Door 엔드포인트의 가용성과 같은 내부 종속성을 고려하여 실패 지점을 최소화합니다. 워크로드에서 Blob Storage에 액세스하는 데 필요한 자격 증명이 Key Vault에서 누락되거나 워크로드가 제거된 콘텐츠 배달 네트워크를 기반으로 하는 엔드포인트를 사용하는 경우 오류가 발생할 수 있습니다. 이러한 경우 워크로드는 대체 엔드포인트를 사용하여 연결해야 할 수 있습니다. 고장 모드 분석에 대한 일반적인 내용은 고장 모드 분석을 수행하기 위한 권장 사항을 참조하십시오.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "817f9103-607a-4e3d-ba94-1a3adffaff8f",
+ "service": "Azure Blob Storage",
+ "text": "안정성 및 복구 대상 정의: Azure SLA(서비스 수준 계약)를 검토합니다. 스토리지 계정에 대한 SLO(서비스 수준 목표)를 파생합니다. 예를 들어 SLO는 선택한 이중화 구성의 영향을 받을 수 있습니다. 지역 중단의 영향, 데이터 손실 가능성 및 중단 후 액세스를 복원하는 데 필요한 시간을 고려합니다. 또한 고장 모드 분석의 일부로 식별한 내부 종속성의 가용성을 고려합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Blob Storage",
+ "text": "데이터 중복 구성: 내구성을 극대화하려면 가용 영역 또는 글로벌 지역 간에 데이터를 복사하는 구성을 선택합니다. 가용성을 최대화하려면 주 지역이 중단된 동안 클라이언트가 보조 지역에서 데이터를 읽을 수 있도록 하는 구성을 선택합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "e71dbbd7-5e50-4ade-b5e5-4b9e59d10706",
+ "service": "Azure Blob Storage",
+ "text": "응용 프로그램 설계: 어떤 이유로든 주 지역을 사용할 수 없게 되는 경우 보조 지역에서 데이터를 읽도록 원활하게 전환하도록 응용 프로그램을 설계합니다. 이는 GRS(지역 중복 스토리지) 및 GZRS(지역 영역 중복 스토리지) 구성에만 적용됩니다. 중단을 처리하도록 애플리케이션을 설계하면 최종 사용자의 가동 중지 시간을 줄일 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "2243ff8e-7ce3-4999-9eee-3b3377f4df8b",
+ "service": "Azure Blob Storage",
+ "text": "복구 목표를 달성하는 데 도움이 되는 기능 탐색: 실수로 손상, 편집 또는 삭제된 경우 복구할 수 있도록 Blob을 복원 가능하게 만듭니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Blob Storage",
+ "text": "복구 계획 만들기: 데이터 보호 기능, 백업 및 복원 작업 또는 장애 조치(failover) 절차를 고려합니다. 잠재적인 데이터 손실 및 데이터 불일치와 장애 조치에 소요되는 시간 및 비용에 대비합니다. 자세한 내용은 재해 복구 전략 설계를 위한 권장 사항을 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "ffdb383d-6a9a-4ebb-b902-12320390dd84",
+ "service": "Azure Blob Storage",
+ "text": "잠재적인 가용성 문제 모니터링: Azure Service Health 대시보드를 구독하여 잠재적인 가용성 문제를 모니터링합니다. Azure Monitor 및 진단 로그의 스토리지 메트릭을 사용하여 경고를 조사합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "중복성은 예기치 않은 오류로부터 데이터를 보호합니다. ZRS 및 GZRS 구성 옵션은 서로 다른 가용성 영역에 복제되며 애플리케이션이 중단 중에도 데이터를 계속 읽을 수 있도록 합니다. 자세한 내용은 Durability and availability by outage scenario 및 Durability and availability parameters를 참조하세요.",
+ "guid": "e426149f-841f-4865-878e-311cfe914db9",
+ "service": "Azure Blob Storage",
+ "text": "중복을 위해 계정을 구성합니다. 가용성과 내구성을 최대화하려면 ZRS(영역 중복 스토리지) 또는 GZRS를 사용하여 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 속성은 계정 장애 조치(failover)를 시작하여 손실될 수 있는 데이터의 양을 예측하는 데 도움이 됩니다. 마지막 동기화 시간 이전에 작성된 모든 데이터 및 메타데이터는 보조 지역에서 사용할 수 있지만 마지막 동기화 시간 이후에 기록된 데이터 및 메타데이터는 보조 지역에 기록되지 않기 때문에 손실될 수 있습니다.",
+ "guid": "f42e13de-f6f3-4fad-97f3-f657b8aa1f6c",
+ "service": "Azure Blob Storage",
+ "text": "장애 조치(failover) 또는 장애 복구(failback)를 시작하기 전에 마지막 동기화 시간 속성의 값을 확인하여 데이터 손실 가능성을 평가합니다. 이 권장 사항은 GRS 및 GZRS 구성에만 적용됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "일시 삭제 옵션을 사용하면 스토리지 계정에서 삭제된 컨테이너 및 Blob을 복구할 수 있습니다. 버전 관리 옵션은 Blob에 대한 변경 내용을 자동으로 추적합니다. 이 옵션을 사용하면 Blob을 이전 상태로 복원할 수 있습니다. 특정 시점 복원 옵션을 사용하면 실수로 인한 Blob 삭제 또는 손상을 방지하고 블록 Blob 데이터를 이전 상태로 복원할 수 있습니다. 자세한 내용은 데이터 보호 개요를 참조하세요.",
+ "guid": "6ba14c6a-6f37-46a3-a2a8-e38373925d6f",
+ "service": "Azure Blob Storage",
+ "text": "백업 및 복구 전략의 일부로 컨테이너 일시 삭제, Blob 일시 삭제, 버전 관리 및 특정 시점 복원 옵션을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "5738d99e-ae27-47ca-959c-0dabef735931",
+ "service": "Azure Blob Storage",
+ "text": "Azure Storage에 대한 보안 기준 검토: 시작하려면 먼저 Storage에 대한 보안 기준을 검토합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "54dc05f5-631d-41ac-8ad7-40a451e48efd",
+ "service": "Azure Blob Storage",
+ "text": "네트워크 컨트롤을 사용하여 수신 및 송신 트래픽 제한: 스토리지 계정에 대한 모든 공용 트래픽을 사용하지 않도록 설정합니다. 계정 네트워크 컨트롤을 사용하여 사용자 및 응용 프로그램에 필요한 최소 수준의 액세스 권한을 부여합니다. 자세한 내용은 스토리지 계정에 대한 네트워크 보안에 접근하는 방법을 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "3d39bc4a-58c1-4d69-8116-751252d03104",
+ "service": "Azure Blob Storage",
+ "text": "공격 표면 감소: 익명 액세스, 계정 키 액세스 또는 비보안(HTTP) 연결을 통한 액세스를 방지하면 공격 노출 영역을 줄일 수 있습니다. 클라이언트가 최신 버전의 TLS(전송 계층 보안) 프로토콜을 사용하여 데이터를 보내고 받도록 요구합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "b0e33ead-c6ca-4386-acee-30e929390ca0",
+ "service": "Azure Blob Storage",
+ "text": "암호 또는 키를 사용하지 않고 액세스 권한 부여: Microsoft Entra ID는 공유 키 및 공유 액세스 서명에 비해 뛰어난 보안과 사용 편의성을 제공합니다. 보안 주체에게 작업을 수행하는 데 필요한 권한만 부여합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "c2d96110-7950-4f81-8c41-34e1fa015631",
+ "service": "Azure Blob Storage",
+ "text": "중요한 정보 보호: 계정 키 및 공유 액세스 서명 토큰과 같은 중요한 정보를 보호합니다. 이러한 형태의 권한 부여는 일반적으로 권장되지 않지만 안전하게 교체, 만료 및 저장해야 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "cd6916c2-09f8-4269-971d-60a07e57cbbd",
+ "service": "Azure Blob Storage",
+ "text": "보안 전송 필요 옵션 사용: 모든 스토리지 계정에 대해 이 설정을 사용하도록 설정하면 스토리지 계정에 대한 모든 요청이 보안 연결을 통해 수행되어야 합니다. HTTP를 통한 모든 요청이 실패합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "f944c199-636d-46b4-bc23-ee8bdfefa7a5",
+ "service": "Azure Blob Storage",
+ "text": "중요한 개체 보호: 불변성 정책을 적용하여 중요한 개체를 보호합니다. 정책은 법률, 규정 준수 또는 기타 비즈니스 목적으로 저장된 Blob이 수정되거나 삭제되지 않도록 보호합니다. 설정된 기간 동안 또는 관리자가 제한을 해제할 때까지 보류를 구성합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "80a10cbe-93f3-410a-b7ad-d7b5234add61",
+ "service": "Azure Blob Storage",
+ "text": "위협 검색: Microsoft Defender for Storage를 사용하여 위협을 감지할 수 있습니다. 보안 경고는 활동의 변칙이 발생할 때 트리거됩니다. 경고는 의심스러운 활동에 대한 세부 정보와 위협을 조사하고 수정하는 방법에 대한 권장 사항이 포함된 이메일을 통해 구독 관리자에게 알립니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "스토리지 계정에 대해 익명 액세스가 허용되는 경우 적절한 권한이 있는 사용자는 컨테이너의 익명 액세스 설정을 수정하여 해당 컨테이너의 데이터에 대한 익명 액세스를 사용하도록 설정할 수 있습니다.",
+ "guid": "4380d8e1-fdb6-45da-a1e1-109e162f43d3",
+ "service": "Azure Blob Storage",
+ "text": "컨테이너 및 blob에 대한 익명 읽기 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "계정을 잠그면 계정이 삭제되어 데이터가 손실되는 것을 방지할 수 있습니다.",
+ "guid": "09543d14-a0c7-49dc-89d1-74b1913c3b03",
+ "service": "Azure Blob Storage",
+ "text": "스토리지 계정에 Azure Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "제로 액세스부터 시작한 다음 클라이언트 및 서비스에 필요한 가장 낮은 수준의 액세스 권한을 증분 방식으로 부여하여 공격자에게 불필요한 틈을 만드는 위험을 최소화합니다.",
+ "guid": "1b8c4090-6b15-45e0-8833-ee5285ebd444",
+ "service": "Azure Blob Storage",
+ "text": "스토리지 계정의 퍼블릭 엔드포인트에 대한 트래픽을 사용하지 않도록 설정합니다. Azure에서 실행되는 클라이언트에 대한 프라이빗 엔드포인트를 만듭니다. Azure 외부의 클라이언트 및 서비스에 스토리지 계정에 대한 직접 액세스가 필요한 경우에만 퍼블릭 엔드포인트를 사용하도록 설정합니다. 특정 가상 네트워크에 대한 액세스를 제한하는 방화벽 규칙을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "RBAC를 사용하면 손상될 수 있는 암호나 키가 없습니다. 보안 주체(사용자, 그룹, 관리 ID 또는 서비스 주체)는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID로 인증됩니다. 토큰은 Blob Storage 서비스에 대한 요청을 승인하는 데 사용됩니다.",
+ "guid": "2ecbd38b-7ae5-4858-916a-0554e8f2d41d",
+ "service": "Azure Blob Storage",
+ "text": "Azure RBAC(역할 기반 액세스 제어)를 사용하여 액세스 권한을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Microsoft Entra ID로 권한이 부여된 보안 요청만 허용됩니다.",
+ "guid": "4d731629-d6d3-4aa9-b46f-6259451f08f0",
+ "service": "Azure Blob Storage",
+ "text": "공유 키 권한 부여를 허용하지 않습니다. 이렇게 하면 계정 키 액세스뿐만 아니라 서비스 및 계정 공유 액세스 서명 토큰도 계정 키를 기반으로 하기 때문에 비활성화됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Key Vault를 사용하면 애플리케이션을 사용하여 키를 저장하는 대신 런타임에 키를 검색할 수 있습니다. 또한 Key Vault를 사용하면 애플리케이션을 중단하지 않고 키를 쉽게 회전할 수 있습니다. 계정 키를 주기적으로 교체하면 데이터가 악의적인 공격에 노출될 위험을 줄일 수 있습니다.",
+ "guid": "62ae35d2-7f0b-4c63-b0ff-1a1f85d39b89",
+ "service": "Azure Blob Storage",
+ "text": "계정 키는 사용하지 않는 것이 좋습니다. 계정 키를 사용해야 하는 경우 Key Vault에 저장하고 주기적으로 다시 생성해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "모범 사례는 공유 액세스 서명 토큰이 유출되는 것을 방지하고 유출이 발생할 경우 신속하게 복구하는 데 도움이 될 수 있습니다.",
+ "guid": "e2163930-a35e-415f-bea3-a019e5c2a5c7",
+ "service": "Azure Blob Storage",
+ "text": "공유 액세스 서명 토큰을 사용하지 않는 것이 좋습니다. Blob Storage 리소스에 대한 액세스를 보호하기 위해 공유 액세스 서명 토큰이 필요한지 여부를 평가합니다. 공유 액세스 서명을 만들어야 하는 경우 공유 액세스 서명을 만들고 배포하기 전에 이 공유 액세스 서명 모범 사례 목록을 검토하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 1.2는 최신 암호화 알고리즘 및 암호 그룹을 지원하지 않는 TLS 1.0 및 1.1보다 안전하고 빠릅니다.",
+ "guid": "d586222d-d9d1-4f51-ba29-58021c0ee0ae",
+ "service": "Azure Blob Storage",
+ "text": "클라이언트가 최소 버전의 TLS 1.2를 사용하여 데이터를 보내고 받을 수 있도록 스토리지 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "고객 관리형 키는 더 큰 유연성과 제어를 제공합니다. 예를 들어 Key Vault에 암호화 키를 저장하고 자동으로 회전할 수 있습니다.",
+ "guid": "33303cd1-5b9c-4688-aa24-50cb53f5caac",
+ "service": "Azure Blob Storage",
+ "text": "사용자 고유의 암호화 키를 사용하여 스토리지 계정의 데이터를 보호하는 것이 좋습니다. 자세한 내용은 Azure Storage 암호화에 대한 고객 관리형 키를 참조하세요.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "6f7ce98b-ec2c-4535-9e6a-11c077c9bd3f",
+ "service": "Azure Blob Storage",
+ "text": "청구서를 계산하는 데 사용되는 미터 식별: 미터는 계정에 저장된 데이터의 양(데이터 용량)과 데이터를 쓰고 읽기 위해 수행되는 작업의 수 및 유형을 추적하는 데 사용됩니다. Blob 인덱스 태그, Blob 인벤토리, 변경 피드 지원, 암호화 범위 및 SFTP(SSH 파일 전송 프로토콜) 지원과 같은 선택적 기능 사용과 관련된 미터도 있습니다. 자세한 내용은 Blob Storage에 대한 요금 청구 방법을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "0c2e2825-34c7-4ad5-ad21-a270b1b402c0",
+ "service": "Azure Blob Storage",
+ "text": "각 측정기의 가격 이해: 적절한 가격 책정 페이지를 사용하고 해당 페이지에서 적절한 설정을 적용해야 합니다. 자세한 내용은 각 미터의 단가 찾기를 참조하세요. 각 가격과 관련된 작업 수를 고려합니다. 예를 들어 쓰기 및 읽기 작업과 관련된 가격은 10,000개 작업에 적용됩니다. 개별 작업의 가격을 확인하려면 나열된 가격을 10,000으로 나눕니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "31b047a5-abfe-4452-ad3e-a4b99cad0e4b",
+ "service": "Azure Blob Storage",
+ "text": "용량 및 운영 비용 예측: Azure 가격 계산기를 사용하여 데이터 스토리지, 수신 및 송신과 관련된 비용을 모델링할 수 있습니다. 필드를 사용하여 다양한 지역, 계정 유형, 네임스페이스 유형 및 중복 구성과 관련된 비용을 비교합니다. 특정 시나리오의 경우 Microsoft 설명서에서 사용할 수 있는 예제 계산 및 워크시트를 사용할 수 있습니다. 예를 들어 데이터 보관 비용을 예측하거나 AzCopy 명령을 사용하여 Blob을 전송하는 비용을 예측할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "51e5c8d4-4794-4514-bb01-54a517927a05",
+ "service": "Azure Blob Storage",
+ "text": "용량에 대한 청구 모델 선택: 약정 기반 모델을 사용하는 것이 사용량 기반 모델을 사용하는 것보다 비용 효율적인지 평가합니다. 필요한 용량이 확실하지 않은 경우 사용량 기반 모델로 시작하여 용량 메트릭을 모니터링한 다음 나중에 평가할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "8a5b488c-2b97-4e55-8997-659d64c62030",
+ "service": "Azure Blob Storage",
+ "text": "계정 유형, 중복 수준 및 기본 액세스 계층 선택: 저장소 계정을 만들 때 이러한 각 설정에 대한 값을 선택해야 합니다. 모든 값은 트랜잭션 요금과 용량 요금에 영향을 줍니다. 계정 유형을 제외한 이러한 모든 설정은 계정을 만든 후에 변경할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "b675b5be-352c-4a06-94ed-8457e3d5db8c",
+ "service": "Azure Blob Storage",
+ "text": "가장 비용 효율적인 기본 액세스 계층 선택: 각 Blob 업로드에 계층을 지정하지 않는 한 Blob은 기본 액세스 계층 설정에서 액세스 계층을 유추합니다. 스토리지 계정의 기본 액세스 계층 설정에 대한 변경 내용은 액세스 계층이 명시적으로 설정되지 않은 계정의 모든 Blob에 적용됩니다. 많은 수의 Blob을 수집한 경우 이 비용이 중요할 수 있습니다. 계층 변경이 각 기존 Blob에 미치는 영향에 대한 자세한 내용은 Blob의 액세스 계층 변경을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "fbf53f6f-f5af-47ef-8e28-e471bf173884",
+ "service": "Azure Blob Storage",
+ "text": "가장 비용 효율적인 액세스 등급에 직접 데이터 업로드: 예를 들어 계정의 기본 액세스 등급 설정이 핫이지만 보관 목적으로 파일을 업로드하는 경우 쿨 등급을 보관 파일로 지정하거나 업로드 작업의 일부로 콜드 등급을 지정합니다. Blob을 업로드한 후 수명 주기 관리 정책을 사용하여 마지막으로 액세스한 시간과 같은 사용량 메트릭에 따라 Blob을 가장 비용 효율적인 계층으로 이동합니다. 가장 최적의 계층을 미리 선택하면 비용을 절감할 수 있습니다. 이미 업로드한 블록 Blob의 계층을 변경하는 경우 Blob을 처음 업로드할 때 초기 계층에 대한 쓰기 비용을 지불한 다음, 원하는 계층에 대한 쓰기 비용을 지불합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "3549725f-8de2-4431-a8e2-fb88c2def5b4",
+ "service": "Azure Blob Storage",
+ "text": "데이터 수명 주기 관리를 위한 계획 수립: 액세스 계층 및 수명 주기 관리를 활용하여 트랜잭션 및 용량 비용을 최적화합니다. 자주 사용되지 않는 데이터는 더 따뜻한 액세스 계층에 배치해야 하고, 자주 사용되는 데이터는 더 따뜻한 액세스 계층에 배치해야 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "df99152b-4af1-4cea-b2bd-b06fd2425c57",
+ "service": "Azure Blob Storage",
+ "text": "필요한 기능 결정: 버전 관리 및 Blob 일시 삭제와 같은 일부 기능에는 추가 트랜잭션 및 용량 비용과 기타 요금이 발생합니다. 계정에 추가할 기능을 선택할 때 해당 기능을 설명하는 문서의 가격 책정 및 청구 섹션을 검토해야 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "b69e35ad-ee70-4787-bcb2-9cde1aa2600c",
+ "service": "Azure Blob Storage",
+ "text": "가드레일 만들기: 구독 및 리소스 그룹을 기반으로 예산을 만듭니다. 거버넌스 정책을 사용하여 리소스 종류, 구성 및 위치를 제한합니다. 또한 RBAC를 사용하여 초과 지출로 이어질 수 있는 작업을 차단합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "41cc33cd-773d-463f-b9e3-07256ea9e3f0",
+ "service": "Azure Blob Storage",
+ "text": "비용 모니터링: 비용이 예산 범위 내에서 유지되도록 하고, 비용을 예측과 비교하고, 초과 지출이 발생하는 위치를 확인합니다. Azure Portal의 비용 분석 창을 사용하여 비용을 모니터링할 수 있습니다. 비용 데이터를 스토리지 계정으로 내보내고 Excel 또는 Power BI를 사용하여 해당 데이터를 분석할 수도 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "94b3fa52-a17f-44ec-b4ba-9801c2764632",
+ "service": "Azure Blob Storage",
+ "text": "사용량 모니터링: 사용 패턴을 지속적으로 모니터링하고 사용되지 않거나 활용도가 낮은 계정 및 컨테이너를 감지합니다. Storage 인사이트를 사용하여 사용량이 없거나 적은 계정을 식별합니다. Blob 인벤토리 보고서를 사용하도록 설정하고 Azure Databricks 또는 Azure Synapse Analytics 및 Power BI와 같은 도구를 사용하여 비용 데이터를 분석합니다. 수많은 로그 파일, Blob 버전 또는 일시 삭제된 Blob을 수집하고 있음을 나타낼 수 있는 예기치 않은 용량 증가에 주의하세요. 객체를 만료하거나 보다 비용 효율적인 액세스 계층으로 전환하기 위한 전략을 개발합니다. 만료되는 객체를 계획하거나 객체를 보다 저렴한 액세스 계층으로 이동하기 위한 계획을 수립합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "쿨 계층은 데이터 전송 비용이 더 높습니다. 더 적은 수의 큰 파일을 보유하면 데이터를 전송하는 데 필요한 작업 수를 줄일 수 있습니다.",
+ "guid": "7eb7a0d4-912b-4d5c-af98-31200e20cc63",
+ "service": "Azure Blob Storage",
+ "text": "쿨 계층으로 이동하기 전에 작은 파일을 더 큰 파일로 압축합니다. TAR 또는 ZIP과 같은 파일 형식을 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "보관 계층의 우선 순위가 높은 리하이드레이션은 정상보다 높은 청구로 이어질 수 있습니다.",
+ "guid": "8d3e7da9-3091-4daf-8a07-37116d9e3f7e",
+ "service": "Azure Blob Storage",
+ "text": "보관 스토리지에서 Blob을 리하이드레이션할 때 표준 우선 순위 리하이드레이션을 사용합니다. 우선 순위가 높은 리하이드레이션은 응급 데이터 복원 상황에만 사용합니다. 자세한 내용은 보관된 Blob을 온라인 계층으로 리하이드레이션을 참조하세요.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "나중에 분석하기 위해 스토리지 계정에 리소스 로그를 저장하는 것이 더 저렴한 옵션일 수 있습니다. 수명 주기 관리 정책을 사용하여 스토리지 계정의 로그 보존을 관리하면 시간이 지남에 따라 많은 수의 로그 파일이 쌓이는 것을 방지할 수 있으며, 이로 인해 불필요한 용량 요금이 발생할 수 있습니다.",
+ "guid": "f29291b5-d170-453b-bdbb-379f229fdc5b",
+ "service": "Azure Blob Storage",
+ "text": "적절한 로그 저장 위치를 선택하고 로그 보존 기간을 관리하여 리소스 로그 사용 비용을 줄입니다. 가끔씩만 로그를 쿼리하려는 경우(예: 규정 준수 감사를 위해 로그를 쿼리하는 경우) 리소스 로그를 Azure Monitor 로그 작업 영역으로 보내는 대신 스토리지 계정으로 보내는 것이 좋습니다. Azure Synapse Analytics와 같은 서버리스 쿼리 솔루션을 사용하여 로그를 분석할 수 있습니다. 자세한 내용은 자주 발생하지 않는 쿼리에 대한 비용 최적화를 참조하세요. 수명 주기 관리 정책을 사용하여 로그를 삭제하거나 보관합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob에 대한 모든 쓰기 작업은 새 버전을 만듭니다. 이로 인해 용량 비용이 증가합니다. 더 이상 필요하지 않은 버전을 제거하여 비용을 확인할 수 있습니다.",
+ "guid": "496e994f-ae82-40c2-90cb-eb03a9e2205c",
+ "service": "Azure Blob Storage",
+ "text": "버전 관리를 사용하도록 설정하는 경우 수명 주기 관리 정책을 사용하여 이전 Blob 버전을 자동으로 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob을 덮어쓸 때마다 새 버전이 추가되어 스토리지 용량 요금이 증가합니다. 용량 요금을 줄이려면 버전 관리를 사용하지 않도록 설정된 별도의 스토리지 계정에 자주 덮어쓰는 데이터를 저장합니다.",
+ "guid": "91514322-4007-4a99-85f0-e73c181d95fa",
+ "service": "Azure Blob Storage",
+ "text": "버전 관리를 사용하도록 설정하는 경우 버전 관리를 사용하도록 설정하지 않은 계정에 자주 덮어쓰는 Blob을 배치합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Blob을 덮어쓸 때마다 새 스냅샷이 만들어집니다. 용량 요금 증가의 원인은 이러한 스냅샷의 생성이 로그에 표시되지 않기 때문에 액세스하기 어려울 수 있습니다. 용량 요금을 줄이려면 자주 덮어쓰는 데이터를 일시 삭제가 비활성화된 별도의 스토리지 계정에 저장합니다. 보존 기간은 일시 삭제된 Blob이 쌓여 용량 비용에 추가되는 것을 방지합니다.",
+ "guid": "7041f493-74f4-42e8-bbd2-15602763dc40",
+ "service": "Azure Blob Storage",
+ "text": "일시 삭제를 사용하도록 설정하는 경우 자주 덮어쓰는 Blob을 일시 삭제를 사용하도록 설정하지 않은 계정에 배치합니다. 보존 기간을 설정합니다. 기능이 청구서에 어떤 영향을 미치는지 더 잘 이해하기 위해 짧은 보존 기간부터 시작하는 것이 좋습니다. 최소 권장 보존 기간은 7일입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "SFTP 엔드포인트를 활성화하면 시간당 비용이 발생합니다. SFTP 지원을 신중하게 비활성화한 다음 필요에 따라 활성화하면 계정에 수동 요금이 발생하는 것을 방지할 수 있습니다.",
+ "guid": "c1d10494-a396-4add-aae2-aaf5aa5aa0da",
+ "service": "Azure Blob Storage",
+ "text": "데이터 전송에 사용되는 경우에만 SFTP 지원을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "암호화 범위에는 월별 요금이 부과됩니다.",
+ "guid": "b71aeb26-fc96-486c-8bed-c5c616c1d0b1",
+ "service": "Azure Blob Storage",
+ "text": "불필요한 요금을 방지하기 위해 필요하지 않은 암호화 범위를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Blob Storage",
+ "text": "유지 관리 및 응급 복구 계획 생성: 데이터 보호 기능, 백업 및 복원 작업, 장애 조치(failover) 절차를 고려합니다. 잠재적인 데이터 손실 및 데이터 불일치와 장애 조치에 소요되는 시간 및 비용에 대비합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "bdd60136-85dd-45cc-ac07-37d69124d9ab",
+ "service": "Azure Blob Storage",
+ "text": "스토리지 계정의 상태 모니터링: 스토리지 인사이트 대시보드를 만들어 가용성, 성능 및 복원력 메트릭을 모니터링합니다. 고객이 문제를 알아차리기 전에 시스템의 문제를 식별하고 해결할 수 있도록 경고를 설정합니다. 진단 설정을 사용하여 리소스 로그를 Azure Monitor 로그 작업 영역으로 라우팅합니다. 그런 다음 로그를 쿼리하여 경고를 보다 심층적으로 조사할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "b842f2e7-9ac7-4d2e-9c9a-a3fb2ddc2441",
+ "service": "Azure Blob Storage",
+ "text": "Blob 인벤토리 보고서 사용: Blob 인벤토리 보고서를 사용하도록 설정하여 스토리지 계정 콘텐츠의 보존, 법적 보존 또는 암호화 상태를 검토할 수 있습니다. 또한 Blob 인벤토리 보고서를 사용하여 데이터의 총 데이터 크기, 보존 기간, 계층 분포 또는 기타 특성을 이해할 수 있습니다. Azure Databricks 또는 Azure Synapse Analytics 및 Power BI와 같은 도구를 사용하여 인벤토리 데이터를 더 잘 시각화하고 이해 관계자를 위한 보고서를 만듭니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "b54e930b-e9fe-4b7b-adc2-b0f0d0b0f05c",
+ "service": "Azure Blob Storage",
+ "text": "Blob을 삭제하거나 비용 효율적인 액세스 계층으로 이동하는 정책 설정: 초기 조건 집합을 사용하여 수명 주기 관리 정책을 만듭니다. 정책 실행은 사용자가 정의한 조건에 따라 Blob의 액세스 계층을 자동으로 삭제하거나 설정합니다. 모니터 메트릭 및 Blob 인벤토리 보고서를 사용하여 컨테이너 사용을 주기적으로 분석하여 비용 효율성을 최적화하기 위한 조건을 구체화할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "기존 DevOps 프로세스를 사용하여 새 스토리지 계정을 배포하고 Azure Policy를 사용하여 구성을 적용할 수 있습니다.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Blob Storage",
+ "text": "IaC(Infrastructure as Code)를 사용하여 ARM 템플릿(Azure Resource Manager 템플릿), Bicep 또는 Terraform에서 스토리지 계정의 세부 정보를 정의합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 계정의 상태와 운영을 추적할 수 있습니다. 이해 관계자가 스토리지 계정의 상태를 추적하는 데 사용할 수 있는 대시보드 및 보고서를 쉽게 만들 수 있습니다.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Blob Storage",
+ "text": "Storage 인사이트를 사용하여 스토리지 계정의 상태와 성능을 추적합니다. Storage 인사이트는 모든 스토리지 계정에 대한 오류, 성능, 가용성 및 용량에 대한 통합 보기를 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "61755535-55a0-4064-8537-e9cdf07e1baa",
+ "service": "Azure Blob Storage",
+ "text": "크기 조정 계획: 스토리지 계정의 크기 조정 목표를 이해합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "bd64ef47-64e7-4c7e-b19f-ccfd451083e0",
+ "service": "Azure Blob Storage",
+ "text": "최적의 스토리지 계정 유형 선택: 워크로드에 높은 트랜잭션 속도, 더 작은 개체 및 일관되게 낮은 트랜잭션 대기 시간이 필요한 경우 프리미엄 블록 Blob Storage 계정을 사용하는 것이 좋습니다. 대부분의 경우 표준 범용 v2 계정이 가장 적합합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "b21b6a75-b065-43f1-8298-5778460e2ba0",
+ "service": "Azure Blob Storage",
+ "text": "클라이언트와 서버 간의 이동 거리 줄이기: 연결 클라이언트에 가장 가까운 지역(이상적으로는 동일한 지역)에 데이터를 배치합니다. 개체 복제 또는 콘텐츠 전송 네트워크를 사용하여 멀리 떨어진 지역에 있는 클라이언트에 대해 최적화합니다. 기본 네트워크 구성은 최상의 성능을 제공합니다. 보안을 강화하기 위해서만 네트워크 설정을 수정하십시오. 일반적으로 네트워크 설정은 이동 거리를 줄이지 않으며 성능을 향상시키지 않습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "ef4063df-4ac9-4e8b-9391-cf99ea520f3a",
+ "service": "Azure Blob Storage",
+ "text": "효율적인 명명 체계 선택: Blob 파티션 키(계정, 컨테이너, 가상 디렉터리 또는 Blob 이름)의 시작 부분에 가장 가까운 해시 태그 접두사를 사용하여 나열, 나열, 쿼리 및 읽기 작업의 대기 시간을 줄입니다. 이 체계는 대부분 플랫 네임스페이스가 있는 계정에 이점을 제공합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "45c2db00-baf4-4e7a-8ceb-871abc5f5d64",
+ "service": "Azure Blob Storage",
+ "text": "데이터 클라이언트의 성능 최적화: 워크로드의 데이터 크기, 전송 빈도 및 대역폭에 가장 적합한 데이터 전송 도구를 선택합니다. AzCopy와 같은 일부 도구는 성능에 최적화되어 있으며 개입이 거의 필요하지 않습니다. 대기 시간에 영향을 주는 요인을 고려하고 각 도구와 함께 게시된 성능 최적화 지침을 검토하여 성능을 미세 조정합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "97486b6a-ea0c-4100-86e0-319ce0c8ad21",
+ "service": "Azure Blob Storage",
+ "text": "사용자 지정 코드의 성능 최적화: Blob REST 작업에 대한 고유한 래퍼를 만드는 대신 Storage SDK를 사용하는 것이 좋습니다. Azure SDK는 성능에 최적화되어 있으며 성능을 미세 조정할 수 있는 메커니즘을 제공합니다. 애플리케이션을 만들기 전에 Blob Storage에 대한 성능 및 확장성 검사 목록을 검토합니다. 쿼리 가속을 사용하여 스토리지 요청 중에 원치 않는 데이터를 필터링하고 클라이언트가 네트워크를 통해 불필요하게 데이터를 전송하지 않도록 하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "0b2ed074-7dcb-460a-8455-144171d2fe8f",
+ "service": "Azure Blob Storage",
+ "text": "성능 데이터 수집: 스토리지 계정을 모니터링하여 제한으로 인해 발생하는 성능 병목 현상을 식별합니다. 자세한 내용은 Monitor Storage insights를 사용하여 스토리지 서비스 모니터링을 참조하세요. 메트릭과 로그를 모두 사용합니다. 메트릭은 제한 오류와 같은 수치를 제공합니다. 로그는 활동을 설명합니다. 제한 메트릭이 표시되면 로그를 사용하여 제한 오류를 수신하는 클라이언트를 식별할 수 있습니다. 자세한 내용은 데이터 플레인 작업 감사를 참조하세요.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "스토리지 계정과 VM, 서비스 및 온-프레미스 클라이언트 간의 물리적 거리를 줄이면 성능이 향상되고 네트워크 대기 시간이 줄어들 수 있습니다. 물리적 거리를 줄이면 단일 지역 내의 대역폭 사용량이 무료이기 때문에 Azure에서 호스팅되는 애플리케이션의 비용도 절감됩니다.",
+ "guid": "1a37ef87-aa18-44a6-9877-6665fb1dc486",
+ "service": "Azure Blob Storage",
+ "text": "종속 리소스가 배치된 동일한 지역에 저장소 계정을 프로비전합니다. 모바일 디바이스 앱 또는 온-프레미스 엔터프라이즈 서비스와 같이 Azure에서 호스트되지 않는 애플리케이션의 경우 해당 클라이언트에 더 가까운 지역에서 스토리지 계정을 찾습니다. 자세한 내용은 Azure 지역을 참조하세요. 다른 지역의 클라이언트에 동일한 데이터가 필요하지 않은 경우 각 지역에서 별도의 계정을 만듭니다. 다른 지역의 클라이언트에 일부 데이터만 필요한 경우 개체 복제 정책을 사용하여 관련 개체를 다른 지역의 스토리지 계정에 비동기적으로 복사하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "콘텐츠는 전 세계 수백 개의 글로벌 및 로컬 접속 지점이 있는 Microsoft 글로벌 에지 네트워크를 사용하기 때문에 클라이언트에게 더 빠르게 제공됩니다.",
+ "guid": "7ee0dea0-804f-457c-9660-1fe756011d25",
+ "service": "Azure Blob Storage",
+ "text": "웹 클라이언트(스트리밍 비디오, 오디오 또는 정적 웹 사이트 콘텐츠)에서 광범위하게 사용하려면 Azure Front Door를 통해 콘텐츠 배달 네트워크를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "파티션 키의 시작 부분에 가장 가까운 해시 코드 또는 초 값을 사용하면 Blob을 나열, 쿼리 및 읽는 데 필요한 시간이 줄어듭니다.",
+ "guid": "36fc9ddc-5d24-4ecc-a67e-3fd7bc0c4373",
+ "service": "Azure Blob Storage",
+ "text": "Blob의 파티션 키에 가능한 한 빨리 해시 문자 시퀀스(예: 3자리 숫자)를 추가합니다. 파티션 키는 계정 이름, 컨테이너 이름, 가상 디렉터리 이름 및 Blob 이름입니다. 이름에 타임스탬프를 사용하려는 경우 해당 스탬프의 시작 부분에 초 값을 추가하는 것이 좋습니다. 자세한 내용은 Partitioning을 참조하십시오.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Blob 또는 256KiB 이상의 블록 크기는 더 큰 Blob 및 블록 크기를 위해 특별히 제작된 플랫폼의 성능 향상을 활용합니다.",
+ "guid": "78872d9e-216b-4cc3-8686-0471d46a1acd",
+ "service": "Azure Blob Storage",
+ "text": "Blob 또는 블록을 업로드할 때 256KiB보다 큰 Blob 또는 블록 크기를 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "473b3683-6d53-4521-89c4-d8aa1d1df633",
+ "service": "Azure Expressroute",
+ "text": "비즈니스 요구 사항에 따라 ExpressRoute 회로 또는 ExpressRoute Direct 중에서 선택합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "b356e60e-cb41-4ee6-a8d5-290b429619f7",
+ "service": "Azure Expressroute",
+ "text": "온-프레미스와 Azure 간의 활성-활성 ExpressRoute 연결을 구성합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "877b9a2d-8171-441b-ba7f-b8c6191f12bc",
+ "service": "Azure Expressroute",
+ "text": "가용성 영역 인식 ExpressRoute Virtual Network 게이트웨이를 설정합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "64ad6a67-7f17-4d55-a365-0ec8716fb135",
+ "service": "Azure Expressroute",
+ "text": "다른 지역에서 ExpressRoute 가상 네트워크 게이트웨이를 구성합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "20bbf3a5-e3d8-42eb-9b88-9c4a811a483a",
+ "service": "Azure Expressroute",
+ "text": "사이트 간 VPN을 ExpressRoute 개인 피어링에 대한 백업으로 구성합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "198fd707-5344-46d9-a3f9-c05a90749ccb",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 유지 관리 알림을 받도록 서비스 상태를 구성합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "초기 계획 단계에서 ExpressRoute 회로를 구성할지 또는 ExpressRoute Direct 연결을 구성할지 결정하려고 합니다. ExpressRoute 회로를 사용하면 연결 공급자의 도움을 받아 Azure에 대한 프라이빗 전용 연결을 사용할 수 있습니다. ExpressRoute Direct를 사용하면 피어링 위치에서 온-프레미스 네트워크를 Microsoft 네트워크로 직접 확장할 수 있습니다. 또한 비즈니스 요구 사항에 대한 대역폭 요구 사항 및 SKU 유형 요구 사항을 식별해야 합니다.",
+ "guid": "09e0dd1a-b1f7-46c3-8df1-48e841f53dca",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 또는 ExpressRoute Direct 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "복원력을 높이려면 온-프레미스 에지와 피어링 위치(공급자/Microsoft 에지 위치) 간에 여러 경로를 계획합니다. 이 구성은 다른 서비스 공급자를 통하거나 온-프레미스 네트워크의 다른 위치를 통해 수행할 수 있습니다.",
+ "guid": "67812ddc-7c52-4b52-9569-b3f84d591def",
+ "service": "Azure Expressroute",
+ "text": "물리적 계층 다양성",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "재해 복구를 계획하려면 둘 이상의 피어링 위치에서 ExpressRoute 회로를 설정합니다. 동일한 메트로 또는 다른 메트로의 피어링 위치에 회로를 만들고 각 회로를 통한 다양한 경로에 대해 다른 서비스 공급자와 협력하도록 선택할 수 있습니다. 자세한 내용은 재해 복구를 위한 설계 및 고가용성을 위한 설계를 참조하세요.",
+ "guid": "257031a8-f034-436c-9f54-e82aab53c559",
+ "service": "Azure Expressroute",
+ "text": "지역 중복 회로 계획Plan for geo-redundant circuits",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "ExpressRoute 전용 회로는 온-프레미스와 Azure 간에 활성-활성 연결이 구성된 경우 '99.95%' 가용성을 보장합니다. 이 모드는 Expressroute 연결의 고가용성을 제공합니다. 또한 연결에 링크 오류가 있는 경우 더 빠른 장애 조치(failover)를 위해 BFD를 구성하는 것이 좋습니다.",
+ "guid": "068037d8-673f-4e86-bc9d-bf83fbe61d12",
+ "service": "Azure Expressroute",
+ "text": "액티브-액티브 연결 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "더 높은 복원력을 위해 가용성 영역 인식 Virtual Network Gateway를 만들고 재해 복구 및 고가용성을 위해 다른 지역의 Virtual Network 게이트웨이를 계획합니다.",
+ "guid": "21f65e89-ffe2-489f-89f2-16cbc2e257d9",
+ "service": "Azure Expressroute",
+ "text": "가상 네트워크 게이트웨이 계획",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "사용 가능한 다양한 메트릭에 따라 ExpressRoute 회로 및 Virtual Network 게이트웨이 상태에 대한 모니터링 및 경고를 설정합니다.",
+ "guid": "0f875bf3-de86-41b5-80d2-477de2f769a2",
+ "service": "Azure Expressroute",
+ "text": "회로 및 게이트웨이 상태 모니터링Monitor circuits and gateway health",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "ExpressRoute는 서비스 상태를 사용하여 계획된 유지 관리 및 계획되지 않은 유지 관리에 대해 알립니다. 서비스 상태를 구성하면 ExpressRoute 회로에 대한 변경 내용에 대해 알려 줍니다.",
+ "guid": "c84ca8b2-74f8-4d25-8fc3-5b30c9969b5f",
+ "service": "Azure Expressroute",
+ "text": "서비스 상태 사용",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "ca1c5676-1b0a-426e-baaf-da74ab806cb4",
+ "service": "Azure Expressroute",
+ "text": "로그를 보관하도록 활동 로그를 구성합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "ef124dcd-17e6-4b4e-9bdd-511ef1959a05",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 리소스에 액세스할 수 있는 관리 계정의 인벤토리를 유지 관리합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "23fbb2f6-a269-4fb5-a3a0-04aae0516c91",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로에서 MD5 해시를 구성합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "8e02b876-d810-498b-b9a5-e50730fb10d6",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct 리소스에 대해 MACSec을 구성합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "946a3e3d-bbaf-4b4a-ab80-2ef0a4631f30",
+ "service": "Azure Expressroute",
+ "text": "가상 네트워크 트래픽에 대한 개인 피어링 및 Microsoft 피어링을 통한 트래픽을 암호화합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "활동 로그는 ExpressRoute 리소스에 대한 구독 수준에서 수행된 작업에 대한 인사이트를 제공합니다. 활동 로그를 사용하면 컨트롤 플레인에서 작업이 수행된 사람과 시기를 확인할 수 있습니다. 데이터 보존 기간은 90일이며 Log Analytics, Event Hubs 또는 보관용 스토리지 계정에 저장해야 합니다.",
+ "guid": "9631d7ef-657c-4b07-9c75-96b2dcc5c5d2",
+ "service": "Azure Expressroute",
+ "text": "로그를 보관하도록 활동 로그 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure RBAC를 사용하여 ExpressRoute 회로에서 피어링 구성을 추가, 업데이트 또는 삭제할 수 있는 사용자 계정을 제한하는 역할을 구성합니다.",
+ "guid": "42b91c75-909f-4366-b014-48ab48639faf",
+ "service": "Azure Expressroute",
+ "text": "관리 계정의 인벤토리 유지 관리",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "개인 피어링 또는 Microsoft 피어링을 구성하는 동안 MD5 해시를 적용하여 온-프레미스 경로와 MSEE 라우터 간의 메시지를 보호합니다.",
+ "guid": "78f7d298-53bf-49ae-8ed7-994d46ccf2dd",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로에서 MD5 해시 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Media Access Control 보안은 데이터 링크 계층의 지점 간 보안입니다. ExpressRoute Direct는 이더넷 링크에서 일반적으로 보안되지 않는 ARP, DHCP, LACP와 같은 프로토콜에 대한 보안 위협을 방지하기 위해 MACSec 구성을 지원합니다. MACSec을 구성하는 방법에 대한 자세한 내용은 ExpressRoute Direct 포트에 대한 MACSec을 참조하세요.",
+ "guid": "d495a140-702d-4e08-bb86-7ceac8141df2",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute Direct 리소스에 대한 MACSec 구성",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "ExpressRoute 회로를 통해 사이트 간 VPN 터널을 구성하여 온-프레미스 네트워크와 Azure 가상 네트워크 간의 데이터 전송을 암호화합니다. 개인 피어링 또는 Microsoft 피어링을 사용하여 터널을 구성할 수 있습니다.",
+ "guid": "7729c230-dbdf-4aec-9295-fcb0a0c365f2",
+ "service": "Azure Expressroute",
+ "text": "IPsec을 사용하여 트래픽 암호화",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "43d6df90-c15b-494c-8d35-c4fc9180fbdb",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 가격 책정을 숙지하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "92065590-2f1a-4a81-a6a6-2b102f66f9e3",
+ "service": "Azure Expressroute",
+ "text": "필요한 ExpressRoute 회로 SKU 및 대역폭을 결정합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "f6e0770f-fa13-450e-8c81-baf51ba1b550",
+ "service": "Azure Expressroute",
+ "text": "필요한 ExpressRoute 가상 네트워크 게이트웨이 크기를 결정합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "07d0ba21-7eef-47d1-8ba0-26fefa26c733",
+ "service": "Azure Expressroute",
+ "text": "비용을 모니터링하고 예산 알림을 생성합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "d7be65f4-6500-49ea-92e3-3121fca4a076",
+ "service": "Azure Expressroute",
+ "text": "더 이상 사용되지 않는 ExpressRoute 회로의 프로비전을 해제합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 가격 책정에 대한 자세한 내용은 Azure ExpressRoute의 가격 책정 이해를 참조하세요. 가격 계산기를 사용할 수도 있습니다. 용량 수요를 충족하고 리소스 낭비 없이 예상 성능을 제공할 수 있도록 옵션의 크기가 적절하게 조정되었는지 확인합니다.",
+ "guid": "f230ac81-7590-4300-9b9f-95d784e60ab2",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 가격 책정 숙지",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 사용량에 대한 요금이 청구되는 방식은 세 가지 SKU 유형에 따라 다릅니다. 현지 SKU를 사용하면 무제한 데이터 요금제가 자동으로 청구됩니다. 표준 및 프리미엄 SKU를 사용하면 데이터 요금제 또는 무제한 요금제 중에서 선택할 수 있습니다. 모든 수신 데이터는 Global Reach 추가 기능을 사용하는 경우를 제외하고 무료입니다. 비용과 예산을 가장 잘 최적화하려면 워크로드에 가장 적합한 SKU 유형 및 데이터 요금제를 이해하는 것이 중요합니다. ExpressRoute 회로 크기 조정에 대한 자세한 내용은 ExpressRoute 회로 대역폭 업그레이드를 참조하세요.",
+ "guid": "3d8a5d49-af34-431f-b47f-ee8cf05479b5",
+ "service": "Azure Expressroute",
+ "text": "필요한 SKU 및 대역폭 확인",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 가상 네트워크 게이트웨이는 개인 피어링을 통해 가상 네트워크로 트래픽을 전달하는 데 사용됩니다. 선호하는 Virtual Network Gateway SKU의 성능 및 크기 조정 요구 사항을 검토합니다. 온-프레미스에서 Azure 워크로드에 대한 적절한 게이트웨이 SKU를 선택합니다.",
+ "guid": "82224292-a5a6-4b85-9b2f-b617117c4285",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 가상 네트워크 게이트웨이 크기 확인",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 회로의 비용을 모니터링하고 지출 변칙 및 초과 지출 위험에 대한 경고를 만듭니다. 자세한 내용은 ExpressRoute 비용 모니터링을 참조하세요.",
+ "guid": "e2e81918-e05e-49e1-a37c-cb65840c8699",
+ "service": "Azure Expressroute",
+ "text": "비용 모니터링 및 예산 알림 생성",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "ExpressRoute 회로는 만들어지는 순간부터 요금이 청구됩니다. 불필요한 비용을 줄이려면 서비스 공급자를 통해 회로의 프로비전을 해제하고 구독에서 ExpressRoute 회로를 삭제합니다. ExpressRoute 회로를 제거하는 방법에 대한 단계는 ExpressRoute 회로 프로비전 해제를 참조하세요.",
+ "guid": "131104a1-a17f-4b6b-9384-0b636a5d5265",
+ "service": "Azure Expressroute",
+ "text": "더 이상 사용되지 않는 ExpressRoute 회로의 프로비전을 해제하고 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "4c7d0c83-02a0-4535-a378-c2ab4c13469c",
+ "service": "Azure Expressroute",
+ "text": "온-프레미스와 Azure 네트워크 간의 연결 모니터링을 구성합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "69c4fb71-4d2c-4534-a4db-5e3146a31e1d",
+ "service": "Azure Expressroute",
+ "text": "알림을 받도록 Service Health를 구성합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "33b4fca5-1f90-4947-8091-6c23aba0651a",
+ "service": "Azure Expressroute",
+ "text": "Network Insights를 사용하여 ExpressRoute Insights를 통해 사용할 수 있는 메트릭 및 대시보드를 검토합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "638c050d-7555-4575-bb8d-a4f2b613fa87",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 리소스 메트릭을 검토합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "연결 모니터링을 사용하면 ExpressRoute 개인 피어링 및 Microsoft 피어링 연결을 통해 온-프레미스 리소스와 Azure 간의 연결을 모니터링할 수 있습니다. 연결 모니터는 네트워크 경로에서 문제가 발생한 위치를 식별하여 네트워킹 문제를 감지하고 구성 또는 하드웨어 오류를 신속하게 해결하는 데 도움이 될 수 있습니다.",
+ "guid": "c6766a4e-7531-4335-af44-4fd1a3c706f4",
+ "service": "Azure Expressroute",
+ "text": "연결 모니터링 구성",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Service Health 알림을 설정하여 구독의 모든 ExpressRoute 회로에 계획된 유지 관리 및 예정된 유지 관리가 발생할 때 경고합니다. 또한 Service Health는 계획되지 않은 유지 관리가 발생하는 경우 RCA와 함께 과거 유지 관리를 표시합니다.",
+ "guid": "5ff3a7b5-974a-466d-ab01-ad90c143969d",
+ "service": "Azure Expressroute",
+ "text": "서비스 상태 구성",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Network Insights를 사용하는 ExpressRoute Insights를 사용하면 ExpressRoute 회로, 게이트웨이, 연결 메트릭 및 상태 대시보드를 검토하고 분석할 수 있습니다. 또한 ExpressRoute Insights는 피어링 구성 요소의 세부 정보를 모두 한 곳에서 볼 수 있는 ExpressRoute 연결의 토폴로지 보기를 제공합니다. 사용 가능한 메트릭:- 가용성- 처리량- 게이트웨이 메트릭",
+ "guid": "210546e8-29e3-40d9-869f-6236fddaadd0",
+ "service": "Azure Expressroute",
+ "text": "Network Insights를 사용하여 메트릭 검토",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "ExpressRoute는 Azure Monitor를 사용하여 메트릭을 수집하고 구성에 따라 경고를 만듭니다. ExpressRoute 회로, ExpressRoute 게이트웨이, ExpressRoute 게이트웨이 연결 및 ExpressRoute Direct에 대한 메트릭이 수집됩니다. 이러한 메트릭은 연결 문제를 진단하고 ExpressRoute 연결의 성능을 이해하는 데 유용합니다.",
+ "guid": "8031ed87-7573-469a-9b05-01f4ff4d9231",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 리소스 메트릭 검토Review ExpressRoute resource metrics",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이 성능을 테스트하여 작업 부하 요구 사항을 충족합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이의 크기를 늘립니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "102ee202-4b37-498a-8826-d698d11e3b03",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 대역폭을 업그레이드합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "627c2d5f-e638-41fd-be98-9ba1bf195ce3",
+ "service": "Azure Expressroute",
+ "text": "처리량을 높이기 위해 ExpressRoute FastPath를 사용하도록 설정합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "040f4b75-2706-42f3-9a9c-cee611032d91",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 및 게이트웨이 메트릭을 모니터링합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Connectivity Toolkit를 사용하여 ExpressRoute 회로에서 성능을 테스트하여 네트워크 연결의 대역폭, 용량 및 대기 시간을 파악합니다.",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이 성능을 테스트하여 작업 부하 요구 사항을 충족합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "온-프레미스와 Azure 환경 간의 처리량 성능 향상을 위해 더 높은 게이트웨이 SKU로 업그레이드합니다.",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 게이트웨이의 크기를 늘립니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "작업 부하 요구 사항을 충족하도록 회로 대역폭을 업그레이드하십시오. 회로 대역폭은 ExpressRoute 회로에 연결된 모든 가상 네트워크 간에 공유됩니다. 작업 부하에 따라 하나 이상의 가상 네트워크가 회로의 모든 대역폭을 사용할 수 있습니다.",
+ "guid": "db8f8202-db07-497f-be72-17db8bda90c5",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 대역폭 업그레이드",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "울트라 성능 또는 ErGW3AZ 가상 네트워크 게이트웨이를 사용하는 경우 FastPath를 사용하도록 설정하여 온-프레미스 네트워크와 Azure 가상 네트워크 간의 데이터 경로 성능을 향상시킬 수 있습니다.",
+ "guid": "01566559-f881-409b-b04e-7d79a71f18e4",
+ "service": "Azure Expressroute",
+ "text": "처리량 증가를 위해 ExpressRoute FastPath 사용",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "ExpressRoute 메트릭을 기반으로 경고를 설정하여 특정 임계값이 충족될 때 사전에 알림을 제공합니다. 이러한 메트릭은 ExpressRoute 회로에서 발생하는 중단 및 유지 관리와 같이 ExpressRoute 연결에서 발생할 수 있는 변칙을 이해하는 데 유용합니다.",
+ "guid": "6440df71-d371-4190-920f-01c1815446db",
+ "service": "Azure Expressroute",
+ "text": "ExpressRoute 회로 및 게이트웨이 메트릭 모니터링",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "94d626bf-3509-4311-8700-696d8d18617e",
+ "service": "Azure Files",
+ "text": "오류 모드 분석 사용: 가상 네트워크, Azure Key Vault 또는 Azure Content Delivery Network 또는 Azure Front Door 엔드포인트의 가용성과 같은 내부 종속성을 고려하여 실패 지점을 최소화합니다. Azure Files에 액세스하기 위해 자격 증명이 필요하고 Key Vault에서 자격 증명이 누락된 경우 오류가 발생할 수 있습니다. 또는 워크로드가 누락된 콘텐츠 배달 네트워크를 기반으로 하는 엔드포인트를 사용하는 경우 오류가 발생할 수 있습니다. 이러한 경우 대체 엔드포인트에 연결하도록 워크로드를 구성해야 할 수 있습니다. 고장 모드 분석에 대한 일반적인 내용은 고장 모드 분석을 수행하기 위한 권장 사항을 참조하십시오.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "bedde06b-f58a-43ab-b6cc-76e41503e72a",
+ "service": "Azure Files",
+ "text": "안정성 및 복구 대상 정의: Azure SLA(서비스 수준 계약)를 검토합니다. 스토리지 계정에 대한 SLO(서비스 수준 목표)를 파생합니다. 예를 들어, 선택한 이중화 구성은 SLO에 영향을 줄 수 있습니다. 지역 중단의 영향, 데이터 손실 가능성 및 중단 후 액세스를 복원하는 데 필요한 시간을 고려합니다. 또한 고장 모드 분석의 일부로 식별한 내부 종속성의 가용성을 고려합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Files",
+ "text": "데이터 중복 구성: 내구성을 극대화하려면 가용 영역 또는 글로벌 지역 간에 데이터를 복사하는 구성을 선택합니다. 가용성을 최대화하려면 주 지역이 중단된 동안 클라이언트가 보조 지역에서 데이터를 읽을 수 있도록 하는 구성을 선택합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "61e937b4-1989-496a-af6f-5df76d352ed8",
+ "service": "Azure Files",
+ "text": "응용 프로그램 설계: 주 지역을 사용할 수 없는 경우 보조 지역에서 데이터를 읽을 수 있도록 원활하게 이동하도록 응용 프로그램을 디자인합니다. 이 디자인 고려 사항은 GRS(지역 중복 스토리지) 및 GZRS(지역 영역 중복 스토리지) 구성에만 적용됩니다. 중단을 적절하게 처리하도록 응용 프로그램을 설계하여 고객의 가동 중지 시간을 줄입니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "cb1c49d6-9cdb-48f6-a3f8-c35c2037fc92",
+ "service": "Azure Files",
+ "text": "복구 목표를 달성하는 데 도움이 되는 기능 살펴보기: 손상되었거나 편집되었거나 삭제된 파일을 복구할 수 있도록 파일을 복원 가능하게 만듭니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Files",
+ "text": "복구 계획 만들기: 데이터 보호 기능, 백업 및 복원 작업 또는 장애 조치(failover) 절차를 고려합니다. 잠재적인 데이터 손실 및 데이터 불일치와 장애 조치에 소요되는 시간 및 비용에 대비합니다. 자세한 내용은 재해 복구 전략 설계를 위한 권장 사항을 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "8b151d5d-630d-438e-b7ad-aa487d6c5561",
+ "service": "Azure Files",
+ "text": "잠재적인 가용성 문제 모니터링: Azure Service Health 대시보드를 구독하여 잠재적인 가용성 문제를 모니터링합니다. Azure Monitor에서 스토리지 메트릭 및 진단 로그를 사용하여 경고를 조사합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "중복성은 예기치 않은 오류로부터 데이터를 보호합니다. ZRS 및 GZRS 구성 옵션은 다양한 가용성 영역에서 복제되며 애플리케이션이 중단 중에도 데이터를 계속 읽을 수 있도록 합니다. 자세한 내용은 Durability and availability by outage scenario 및 Durability and availability parameters를 참조하세요.",
+ "guid": "5596d241-a342-4c47-b8db-29f7a519bf36",
+ "service": "Azure Files",
+ "text": "중복성을 위해 저장소 계정을 구성합니다. 가용성과 내구성을 최대화하려면 ZRS(영역 중복 스토리지), GRS 또는 GZRS를 사용하여 계정을 구성합니다. 제한된 Azure 지역은 표준 및 프리미엄 파일 공유에 대해 ZRS를 지원합니다. 표준 SMB 계정만 GRS 및 GZRS를 지원합니다. 프리미엄 SMB 공유 및 NFS 공유는 GRS 및 GZRS를 지원하지 않습니다. Azure Files는 RA-GRS(읽기 액세스 지역 중복 스토리지) 또는 RA-GZRS(읽기 액세스 지역 영역 중복 스토리지)를 지원하지 않습니다. RA-GRS 또는 RA-GZRS를 사용하도록 스토리지 계정을 구성하는 경우 파일 공유가 GRS 또는 GZRS로 구성되고 청구됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 속성은 계정 장애 조치(failover)를 시작할 경우 손실될 수 있는 데이터의 양을 예측하는 데 도움이 됩니다. 마지막 동기화 시간 이전에 기록된 모든 데이터 및 메타데이터는 보조 지역에서 사용할 수 있지만 마지막 동기화 시간 이후에 기록된 데이터 및 메타데이터는 보조 지역에 기록되지 않기 때문에 손실될 수 있습니다.",
+ "guid": "9fc3b4c1-257d-4bab-b373-1938930410a5",
+ "service": "Azure Files",
+ "text": "장애 조치(failover) 또는 장애 복구(failback)를 시작하기 전에 마지막 동기화 시간 속성의 값을 확인하여 데이터 손실 가능성을 평가합니다. 이 권장 사항은 GRS 및 GZRS 구성에만 적용됩니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "일시 삭제는 파일 공유 수준에서 작동하여 실수로 삭제되지 않도록 Azure 파일 공유를 보호합니다. 특정 시점 복원은 파일 공유를 이전 상태로 복원할 수 있으므로 실수로 인한 삭제 또는 손상을 방지합니다. 자세한 내용은 데이터 보호 개요를 참조하세요.",
+ "guid": "8bcb6fde-bf94-4f36-8eae-347e5d4f0dea",
+ "service": "Azure Files",
+ "text": "백업 및 복구 전략의 일환으로 일시 삭제를 활성화하고 특정 시점 복원을 위해 스냅샷을 사용합니다. Azure Backup을 사용하여 SMB 파일 공유를 백업할 수 있습니다. Azure 파일 동기화를 사용하여 온-프레미스 SMB 파일 공유를 Azure 파일 공유에 백업할 수도 있습니다. 또한 Azure Backup을 사용하면 Azure Files의 자격 증명 모음 백업(미리 보기)을 수행하여 악의적인 행위자 또는 악의적인 관리자로 인한 랜섬웨어 공격 또는 원본 데이터 손실로부터 데이터를 보호할 수 있습니다. Azure Backup은 자격 증명 모음 백업을 사용하여 Recovery Services 자격 증명 모음에 데이터를 복사하고 저장합니다. 이렇게 하면 최대 99년 동안 보존할 수 있는 데이터의 오프사이트 복사본이 만들어집니다. Azure Backup은 백업 정책에 정의된 일정 및 보존에 따라 복구 지점을 만들고 관리합니다. 더 알아보세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "2548e433-aeab-4738-bec1-0a3587ac4d15",
+ "service": "Azure Files",
+ "text": "Azure Storage에 대한 보안 기준 검토: 시작하려면 Storage에 대한 보안 기준을 검토하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "6121894c-398e-479f-b386-309e7cf3caa0",
+ "service": "Azure Files",
+ "text": "네트워크 컨트롤을 사용하여 수신 및 송신 트래픽 제한 고려: ID 기반 인증을 사용하여 파일 공유에 대한 액세스 권한을 부여하는 경우와 같은 특정 조건에서 스토리지 계정을 공용 인터넷에 노출하는 것이 편안할 수 있습니다. 그러나 네트워크 컨트롤을 사용하여 사용자 및 애플리케이션에 필요한 최소 수준의 액세스 권한을 부여하는 것이 좋습니다. 자세한 내용은 스토리지 계정에 대한 네트워크 보안에 접근하는 방법을 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "8395a636-8c19-4b22-a175-2a0f0d83f44f",
+ "service": "Azure Files",
+ "text": "공격 표면 줄이기: 전송 중 암호화를 사용하고 비보안(HTTP) 연결을 통한 액세스를 방지하여 공격 노출 영역을 줄입니다. 클라이언트가 최신 버전의 TLS(전송 계층 보안) 프로토콜을 사용하여 데이터를 보내고 받도록 요구합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "62e5154f-98cb-4dc2-8e62-dd5c546d6a6d",
+ "service": "Azure Files",
+ "text": "저장소 계정 키 사용 최소화: ID 기반 인증은 저장소 계정 키를 사용하는 것보다 뛰어난 보안을 제공합니다. 그러나 파일 소유권을 가져오는 기능을 포함하여 파일 공유에 대한 모든 관리 제어 권한을 얻으려면 스토리지 계정 키를 사용해야 합니다. 보안 주체에게 작업을 수행하는 데 필요한 권한만 부여합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "dd5352d4-faa0-4a85-83db-00395c1a9df8",
+ "service": "Azure Files",
+ "text": "중요한 정보 보호: 스토리지 계정 키 및 암호와 같은 중요한 정보를 보호합니다. 이러한 형태의 권한 부여를 사용하는 것은 권장되지 않지만, 사용하는 경우 안전하게 교체, 만료 및 저장해야 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "1edd34b4-610b-483a-83a0-d8bcb5915558",
+ "service": "Azure Files",
+ "text": "위협 검색: 스토리지용 Microsoft Defender를 사용하여 SMB 또는 FileREST 프로토콜을 통해 Azure 파일 공유에 액세스하거나 악용하려는 잠재적으로 유해한 시도를 감지할 수 있습니다. 구독 관리자는 의심스러운 활동에 대한 세부 정보와 위협을 조사하고 수정하는 방법에 대한 권장 사항이 포함된 이메일 경고를 받습니다. 스토리지용 Defender는 Azure 파일 공유에 대한 바이러스 백신 기능을 지원하지 않습니다. 스토리지용 Defender를 사용하는 경우 트랜잭션이 많은 파일 공유에는 상당한 비용이 발생하므로 특정 스토리지 계정에 대해 스토리지용 Defender를 옵트아웃하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "데이터 손실이 발생할 수 있는 스토리지 계정의 우발적 또는 악의적 삭제를 방지하기 위해 계정을 잠급니다.",
+ "guid": "e125f557-f42e-4462-b680-0e7375d89a99",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 Azure Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SMB 3.x는 인터넷 안전 프로토콜이지만 조직 또는 ISP 정책을 변경할 수 없는 경우가 있습니다. VPN 게이트웨이 또는 ExpressRoute 연결을 대체 옵션으로 사용할 수 있습니다.",
+ "guid": "14cda8e5-c05a-4c69-9352-2f7b39b5d423",
+ "service": "Azure Files",
+ "text": "TCP 포트 445 아웃바운드를 열거나 Azure 외부의 클라이언트가 파일 공유에 액세스할 수 있도록 VPN 게이트웨이 또는 Azure ExpressRoute 연결을 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SMB 1은 오래되고 비효율적이며 안전하지 않은 프로토콜입니다. 보안 태세를 강화하기 위해 클라이언트에서 비활성화합니다.",
+ "guid": "e2ef284e-804b-4592-866f-5d577069b823",
+ "service": "Azure Files",
+ "text": "포트 445를 여는 경우 Windows 및 Linux 클라이언트에서 SMBv1을 비활성화해야 합니다. Azure Files는 SMB 1을 지원하지 않지만 클라이언트에서 사용하지 않도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 트래픽은 공용 인터넷 대신 Microsoft 백본 네트워크를 통해 이동하므로 공용 인터넷에서 위험에 노출되지 않습니다.",
+ "guid": "19d4b509-167c-4144-9705-9d65c48ec279",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 대한 공용 네트워크 액세스를 사용하지 않도록 설정하는 것이 좋습니다. Azure 외부에 있는 SMB 클라이언트 및 서비스에 스토리지 계정에 액세스해야 하는 경우에만 공용 네트워크 액세스를 사용하도록 설정합니다. 공용 네트워크 액세스를 사용하지 않도록 설정하는 경우 스토리지 계정에 대한 프라이빗 엔드포인트를 만듭니다. 프라이빗 엔드포인트에 대한 표준 데이터 처리 요금이 적용됩니다. 프라이빗 엔드포인트는 퍼블릭 엔드포인트에 대한 연결을 차단하지 않습니다. 앞에서 설명한 대로 공용 네트워크 액세스를 사용하지 않도록 설정해야 합니다. 파일 공유에 고정 IP 주소가 필요하지 않고 프라이빗 엔드포인트 비용을 방지하려는 경우 대신 특정 가상 네트워크 및 IP 주소에 대한 퍼블릭 엔드포인트 액세스를 제한할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공격자에게 틈을 만들 위험을 최소화합니다.",
+ "guid": "105c5f3d-dfc6-459b-93f0-c5046972f1ba",
+ "service": "Azure Files",
+ "text": "특정 가상 네트워크에 대한 액세스를 제한하는 방화벽 규칙을 사용하도록 설정합니다. 제로 액세스부터 시작한 다음, 클라이언트 및 서비스에 필요한 최소한의 액세스 권한을 체계적이고 점진적으로 제공합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "ID 기반 인증을 사용하여 공격자가 스토리지 계정 키를 사용하여 파일 공유에 액세스할 가능성을 줄입니다.",
+ "guid": "1ba283cb-62bf-4ee8-9657-ba59ddd6bccd",
+ "service": "Azure Files",
+ "text": "가능한 경우 AES-256 Kerberos 티켓 암호화와 함께 ID 기반 인증을 사용하여 SMB Azure 파일 공유에 대한 액세스 권한을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Key Vault를 사용하여 애플리케이션과 함께 키를 저장하는 대신 런타임에 키를 검색합니다. 또한 Key Vault를 사용하면 애플리케이션을 중단하지 않고 키를 쉽게 회전할 수 있습니다. 계정 키를 주기적으로 교체하여 데이터가 악의적인 공격에 노출될 위험을 줄입니다.",
+ "guid": "7cf01b2b-1e7d-47fe-94e1-a65cc7750063",
+ "service": "Azure Files",
+ "text": "스토리지 계정 키를 사용하는 경우 Key Vault에 저장하고 주기적으로 다시 생성해야 합니다. 공유의 SMB 보안 설정에서 NTLMv2를 제거하여 파일 공유에 대한 스토리지 계정 키 액세스를 완전히 허용하지 않을 수 있습니다. 그러나 관리자는 여전히 일부 작업에 계정 키를 사용해야 하므로 일반적으로 공유의 SMB 보안 설정에서 NTLMv2를 제거해서는 안 됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 설정은 스토리지 계정에 대한 모든 요청이 보안 연결(HTTPS)을 통해 수행되도록 합니다. HTTP를 통한 모든 요청은 실패합니다.",
+ "guid": "4fbd14ad-9bf1-491f-b621-35f086b48ccd",
+ "service": "Azure Files",
+ "text": "대부분의 경우 모든 스토리지 계정에서 보안 전송 필요 옵션을 사용하도록 설정하여 SMB 파일 공유에 대해 전송 중 암호화를 사용하도록 설정해야 합니다. 매우 오래된 클라이언트가 공유에 액세스할 수 있도록 허용해야 하는 경우 이 옵션을 활성화하지 마세요. 보안 전송을 비활성화하는 경우 네트워크 제어를 사용하여 트래픽을 제한해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS 1.2는 최신 암호화 알고리즘 및 암호 그룹을 지원하지 않는 TLS 1.0 및 1.1보다 안전하고 빠릅니다.",
+ "guid": "65d8332d-6657-4466-9dc1-5d1497d14041",
+ "service": "Azure Files",
+ "text": "TLS 1.2가 클라이언트가 데이터를 보내고 받을 수 있는 최소 버전이 되도록 스토리지 계정을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Windows 10과 함께 릴리스된 SMB 3.1.1에는 중요한 보안 및 성능 업데이트가 포함되어 있습니다. AES-256-GCM은 보다 안전한 채널 암호화를 제공합니다.",
+ "guid": "010a5a8d-db30-4c97-975e-db80658bdb4d",
+ "service": "Azure Files",
+ "text": "지원되는 가장 최근의 SMB 프로토콜 버전(현재 3.1.1)만 사용하고 SMB 채널 암호화에는 AES-256-GCM만 사용합니다. Azure Files는 SMB 프로토콜을 전환하고 조직의 요구 사항에 따라 호환성을 높이거나 보안을 강화하는 데 사용할 수 있는 설정을 노출합니다. 기본적으로 모든 SMB 버전이 허용됩니다. 그러나 SMB 2.1은 전송 중인 데이터의 암호화를 지원하지 않으므로 보안 전송 필요를 사용하도록 설정하면 SMB 2.1이 허용되지 않습니다. 이러한 설정을 높은 수준의 보안으로 제한하면 일부 클라이언트가 파일 공유에 연결하지 못할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "04493486-a5be-4bb2-8940-cea321db8380",
+ "service": "Azure Files",
+ "text": "스토리지에 대한 보안 기준 검토: 시작하려면 스토리지에 대한 보안 기준을 검토하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "85f4e9b5-aa91-4d96-ad22-9132f7412718",
+ "service": "Azure Files",
+ "text": "조직의 보안 요구 사항 이해: NFS Azure 파일 공유는 NFSv4.1 프로토콜을 사용하는 Linux 클라이언트만 지원하며 4.1 프로토콜 사양의 대부분의 기능을 지원합니다. Kerberos 인증, ACL(액세스 제어 목록) 및 전송 중 암호화와 같은 일부 보안 기능은 지원되지 않습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "7f1ac6f7-d832-4c71-adbd-ae31d36320a7",
+ "service": "Azure Files",
+ "text": "네트워크 수준 보안 및 제어를 사용하여 수신 및 송신 트래픽 제한: NFS Azure 파일 공유에는 ID 기반 인증을 사용할 수 없으므로 네트워크 수준 보안 및 제어를 사용하여 사용자 및 애플리케이션에 필요한 최소 수준의 액세스 권한을 부여해야 합니다. 자세한 내용은 스토리지 계정에 대한 네트워크 보안에 접근하는 방법을 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "데이터 손실이 발생할 수 있는 스토리지 계정의 우발적 또는 악의적 삭제를 방지하기 위해 계정을 잠급니다.",
+ "guid": "a51426ff-75f8-429b-940a-6ddd2c06d3fb",
+ "service": "Azure Files",
+ "text": "스토리지 계정에 Resource Manager 잠금을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "포트 2049를 열어 클라이언트가 NFS Azure 파일 공유와 통신할 수 있도록 합니다.",
+ "guid": "af6d0dd1-6add-4f9b-96b6-e65dba4242a4",
+ "service": "Azure Files",
+ "text": "NFS 공유를 탑재하려는 클라이언트에서 포트 2049를 열어야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 트래픽은 공용 인터넷 대신 Microsoft 백본 네트워크를 통해 이동하므로 공용 인터넷에서 위험에 노출되지 않습니다.",
+ "guid": "528b4915-a4d9-413d-9b79-e4078f5cd27d",
+ "service": "Azure Files",
+ "text": "NFS Azure 파일 공유는 제한된 네트워크를 통해서만 액세스할 수 있습니다. 따라서 스토리지 계정에 대한 프라이빗 엔드포인트를 만들거나 선택한 가상 네트워크 및 IP 주소에 대한 퍼블릭 엔드포인트 액세스를 제한해야 합니다. 프라이빗 엔드포인트를 만드는 것이 좋습니다. Azure Files는 NFS 프로토콜을 사용한 전송 중 암호화를 지원하지 않으므로 NFS 공유에 대한 네트워크 수준 보안을 구성해야 합니다. NFS Azure 파일 공유를 사용하려면 스토리지 계정에서 보안 전송 필요 설정을 사용하지 않도록 설정해야 합니다. 프라이빗 엔드포인트에는 표준 데이터 처리 요금이 적용됩니다. 파일 공유에 고정 IP 주소가 필요하지 않고 프라이빗 엔드포인트 비용을 피하려면 대신 퍼블릭 엔드포인트 액세스를 제한할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "스토리지 계정을 더 안전하게 만들기 위해 스토리지 계정 키 사용을 허용하지 않습니다.",
+ "guid": "2f92995e-d1d1-411d-96cd-309faf0a6ada",
+ "service": "Azure Files",
+ "text": "스토리지 계정 수준에서 스토리지 계정 키 액세스를 허용하지 않는 것이 좋습니다. NFS 파일 공유를 탑재하는 데 이 액세스 권한이 필요하지 않습니다. 그러나 파일 소유권을 가져오는 기능을 포함하여 파일 공유에 대한 모든 관리 제어를 하려면 스토리지 계정 키를 사용해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "bc87a075-cc79-46be-a413-106c995f41ef",
+ "service": "Azure Files",
+ "text": "워크로드에 프리미엄 파일 공유(Azure Premium SSD)의 성능이 필요한지 또는 Azure Standard HDD 스토리지가 충분한지 결정: 필요한 스토리지 유형에 따라 스토리지 계정 유형 및 청구 모델을 결정합니다. 많은 양의 IOPS(초당 입력/출력 작업 수), 매우 빠른 데이터 전송 속도 또는 매우 짧은 대기 시간이 필요한 경우 프리미엄 Azure 파일 공유를 선택해야 합니다. NFS Azure 파일 공유는 프리미엄 계층에서만 사용할 수 있습니다. NFS 및 SMB 파일 공유는 프리미엄 계층에서 동일한 가격입니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "fc9a86d1-8dcf-4e82-87fa-81d736ab60f4",
+ "service": "Azure Files",
+ "text": "파일 공유에 대한 스토리지 계정 만들기 및 중복성 수준 선택: 표준(GPv2) 또는 프리미엄(FileStorage) 계정을 선택합니다. 선택하는 중복 수준은 비용에 영향을 줍니다. 중복성이 높을수록 비용이 높아집니다. LRS(로컬 중복 스토리지)가 가장 저렴합니다. GRS는 표준 SMB 파일 공유에만 사용할 수 있습니다. 표준 파일 공유는 스토리지 계정 수준에서만 트랜잭션 정보를 표시하므로 전체 청구 가시성을 보장하기 위해 각 스토리지 계정에 하나의 파일 공유만 배포하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "1a78abc4-bed1-486b-952e-fd147db1123a",
+ "service": "Azure Files",
+ "text": "청구서 계산 방법 이해: 표준 Azure 파일 공유는 종량제 모델을 제공합니다. 프리미엄 공유는 특정 용량, IOPS 및 처리량을 미리 지정하고 지불하는 프로비저닝된 모델을 사용합니다. 종량제 모델에서 미터는 계정에 저장된 데이터의 양 또는 용량, 해당 데이터의 사용량에 따른 트랜잭션 수 및 유형을 추적합니다. 종량제 모델은 사용한 만큼만 비용을 지불하기 때문에 비용 효율적일 수 있습니다. 종량제 모델을 사용하면 성능 요구 사항이나 수요 변동에 따라 스토리지를 과도하게 프로비저닝하거나 프로비저닝 해제할 필요가 없습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "52d8f743-4489-49a3-876c-0f36827a8f8e",
+ "service": "Azure Files",
+ "text": "용량 및 운영 비용 예측: Azure 가격 계산기를 사용하여 데이터 스토리지, 수신 및 송신과 관련된 비용을 모델링할 수 있습니다. 다양한 지역, 계정 유형 및 중복 구성과 관련된 비용을 비교합니다. 자세한 내용은 Azure Files 가격 책정을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "9dede643-062f-40d2-869e-10458f04859a",
+ "service": "Azure Files",
+ "text": "가장 비용 효율적인 액세스 계층 선택: 표준 SMB Azure 파일 공유는 트랜잭션 최적화, 핫 및 쿨의 세 가지 액세스 계층을 제공합니다. 세 계층 모두 동일한 표준 스토리지 하드웨어에 저장됩니다. 이 세 계층의 주요 차이점은 쿨 계층에서 더 낮은 미사용 데이터 스토리지 가격과 더 쿨 계층에서 더 높은 트랜잭션 가격입니다. 자세한 내용은 표준 계층의 차이점을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "8ec1a7f3-7cff-41f4-9cd5-59656983c739",
+ "service": "Azure Files",
+ "text": "필요한 부가 가치 서비스 결정: Azure Files는 Backup, Azure File Sync 및 Defender for Storage와 같은 부가 가치 서비스와의 통합을 지원합니다. 이러한 솔루션에는 자체 라이선스 및 제품 비용이 있지만 파일 스토리지의 총 소유 비용의 일부로 간주되는 경우가 많습니다. Azure 파일 동기화를 사용하는 경우 다른 비용 측면을 고려합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "ae36a7c7-3255-4544-b751-bdbe08716cc2",
+ "service": "Azure Files",
+ "text": "가드레일 만들기: 구독 및 리소스 그룹을 기반으로 예산을 만듭니다. 거버넌스 정책을 사용하여 리소스 종류, 구성 및 위치를 제한합니다. 또한 RBAC(역할 기반 액세스 제어)를 사용하여 초과 지출로 이어질 수 있는 작업을 차단합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "b5ca80d5-d5c8-4d24-8a3c-b2d96a2bcd71",
+ "service": "Azure Files",
+ "text": "비용 모니터링: 비용이 예산 범위 내에서 유지되도록 하고, 비용을 예측과 비교하고, 초과 지출이 발생하는 위치를 확인합니다. Azure Portal의 비용 분석 창을 사용하여 비용을 모니터링할 수 있습니다. 비용 데이터를 스토리지 계정으로 내보내고 Excel 또는 Power BI를 사용하여 해당 데이터를 분석할 수도 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "a6bc4298-8317-4153-b281-2b83af53fd26",
+ "service": "Azure Files",
+ "text": "사용량 모니터링: 사용량 패턴을 지속적으로 모니터링하여 사용되지 않거나 사용되지 않는 스토리지 계정 및 파일 공유를 검색합니다. 예기치 않은 용량 증가를 확인하여 많은 로그 파일 또는 일시 삭제된 파일을 수집하고 있음을 나타낼 수 있습니다. 파일을 삭제하거나 보다 비용 효율적인 액세스 계층으로 파일을 이동하기 위한 전략을 개발합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Files로 마이그레이션하는 것은 일시적이고 트랜잭션이 많은 워크로드입니다. 트랜잭션이 많은 워크로드에 대한 가격을 최적화하여 마이그레이션 비용을 줄일 수 있습니다.",
+ "guid": "4fc0a2e6-1138-4c55-9644-890104fecd40",
+ "service": "Azure Files",
+ "text": "표준 Azure 파일 공유로 마이그레이션하는 경우 초기 마이그레이션 중에 트랜잭션 최적화 계층에서 시작하는 것이 좋습니다. 마이그레이션 중 트랜잭션 사용량은 일반적으로 정상적인 트랜잭션 사용량을 나타내지 않습니다. 프로비저닝된 청구 모델은 트랜잭션에 대한 요금을 청구하지 않으므로 프리미엄 파일 공유에는 이 고려 사항이 적용되지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "표준 파일 공유에 적합한 액세스 계층을 선택하면 비용을 크게 줄일 수 있습니다.",
+ "guid": "4ee4d06f-ae90-4ba1-b87e-608a8871e182",
+ "service": "Azure Files",
+ "text": "워크로드를 마이그레이션한 후 표준 파일 공유를 사용하는 경우 파일 공유에 대해 가장 비용 효율적인 액세스 계층(핫, 쿨 또는 트랜잭션 최적화)을 신중하게 선택합니다. 며칠 또는 몇 주 동안 정기적으로 사용한 후 가격 계산기에 트랜잭션 수를 삽입하여 워크로드에 가장 적합한 계층을 파악할 수 있습니다. 대부분의 고객은 쉐어를 적극적으로 사용하더라도 쿨한 선택을 해야 합니다. 그러나 각 공유를 검사하고 스토리지 용량의 균형을 트랜잭션과 비교하여 계층을 결정해야 합니다. 트랜잭션 비용이 청구서의 상당 부분을 차지하는 경우 쿨 액세스 계층을 사용하여 절감된 금액이 이 비용을 상쇄하고 총 전체 비용을 최소화하는 경우가 많습니다. 워크로드 패턴의 변경을 최적화하기 위해 필요한 경우에만 액세스 계층 간에 표준 파일 공유를 이동하는 것이 좋습니다. 이동할 때마다 트랜잭션이 발생합니다. 자세한 내용은 표준 계층 간 전환을 참조하세요.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "성능을 유지하고 향후 성장 및 성능 요구 사항을 고려하는 데 도움이 되도록 프리미엄 파일 공유를 합리적인 금액만큼 과도하게 프로비저닝합니다.",
+ "guid": "569b045f-3018-4487-be79-5ae7fe5f42f6",
+ "service": "Azure Files",
+ "text": "프리미엄 공유를 사용하는 경우 워크로드에 충분한 용량과 성능을 프로비전해야 하지만 불필요한 비용이 발생할 정도는 아니어야 합니다. 2-3회 오버프로비저닝하는 것이 좋습니다. 프리미엄 파일 공유는 스토리지 및 IO(입력/출력) 성능 특성에 따라 동적으로 확장하거나 축소할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "3년 예약은 총 파일 스토리지 비용의 최대 36%를 할인받을 수 있습니다. 예약은 성능에 영향을 주지 않습니다.",
+ "guid": "e4d7ee80-2657-4a1b-bf32-b16588f1511e",
+ "service": "Azure Files",
+ "text": "예약 인스턴스라고도 하는 Azure Files 예약을 사용하여 스토리지 사용량을 미리 커밋하고 할인을 받으세요. 프로덕션 워크로드 또는 개발/테스트 워크로드에 대한 예약을 일관된 공간으로 사용합니다. 자세한 내용은 스토리지 예약을 사용하여 비용 최적화를 참조하세요. 예약에는 트랜잭션, 대역폭, 데이터 전송 및 메타데이터 스토리지 요금이 포함되지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "차등 스냅샷은 동일한 데이터를 저장하는 데 여러 번 요금이 청구되지 않도록 합니다. 그러나 Azure Files 청구액을 줄이기 위해 스냅샷 사용량을 계속 모니터링해야 합니다.",
+ "guid": "90fbd856-01ee-41d2-a912-039edc971236",
+ "service": "Azure Files",
+ "text": "스냅샷 사용량을 모니터링합니다. 스냅샷에는 요금이 발생하지만 각 스냅샷의 차등 스토리지 사용량에 따라 요금이 청구됩니다. 각 스냅샷의 차이에 대해서만 비용을 지불하면 됩니다. 자세한 내용은 스냅샷을 참조하십시오. Azure 파일 동기화는 일반 사용의 일부로 공유 수준 및 파일 수준 스냅샷을 사용하므로 총 Azure Files 청구액이 증가할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "일시 삭제된 파일이 쌓이지 않고 용량 비용이 증가하지 않도록 보존 기간을 설정합니다. 구성된 보존 기간이 지나면 영구적으로 삭제된 데이터에 비용이 발생하지 않습니다.",
+ "guid": "d28f02bd-5de7-4d5b-bfbf-46ff161833b5",
+ "service": "Azure Files",
+ "text": "일시 삭제 기능에 대한 보존 기간을 설정합니다(특히 처음 사용하기 시작할 때). 기능이 청구서에 어떤 영향을 미치는지 더 잘 이해하기 위해 짧은 보존 기간부터 시작하는 것이 좋습니다. 최소 권장 보존 기간은 7일입니다. 표준 및 프리미엄 파일 공유를 일시 삭제하면 프로비저닝된 용량이 아닌 사용된 용량으로 청구됩니다. 또한 프리미엄 파일 공유는 일시 삭제 상태에 있는 동안 스냅샷 요금으로 청구됩니다. 표준 파일 공유는 일시 삭제 상태에 있는 동안 일반 요금으로 청구됩니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Files",
+ "text": "유지 관리 및 응급 복구 계획 생성: 데이터 보호 기능, 백업 및 복원 작업, 장애 조치(failover) 절차를 고려합니다. 잠재적인 데이터 손실 및 데이터 불일치와 장애 조치에 소요되는 시간 및 비용에 대비합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "6fd27f65-59e7-41ee-8994-d93ef20dbd99",
+ "service": "Azure Files",
+ "text": "스토리지 계정의 상태 모니터링: 스토리지 인사이트 대시보드를 만들어 가용성, 성능 및 복원력 메트릭을 모니터링합니다. 고객이 문제를 알아차리기 전에 시스템의 문제를 식별하고 해결할 수 있도록 경고를 설정합니다. 진단 설정을 사용하여 리소스 로그를 Azure Monitor 로그 작업 영역으로 라우팅합니다. 그런 다음 로그를 쿼리하여 경고를 보다 심층적으로 조사할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "e6d6588e-c646-4221-832a-0e289e272531",
+ "service": "Azure Files",
+ "text": "정기적으로 파일 공유 활동 검토: 공유 활동은 시간이 지남에 따라 변경될 수 있습니다. 표준 파일 공유를 더 쿨한 액세스 계층으로 이동하거나 프리미엄 공유에 대한 용량을 프로비전하거나 프로비전 해제할 수 있습니다. 표준 파일 공유를 다른 액세스 계층으로 이동하면 트랜잭션 요금이 발생합니다. 월별 청구액을 줄이기 위해 필요한 경우에만 표준 파일 공유를 이동합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "기존 DevOps 프로세스를 사용하여 새 스토리지 계정을 배포하고 Azure Policy를 사용하여 구성을 적용할 수 있습니다.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Files",
+ "text": "IaC(Infrastructure as Code)를 사용하여 ARM 템플릿(Azure Resource Manager 템플릿), Bicep 또는 Terraform에서 스토리지 계정의 세부 정보를 정의합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 계정의 상태와 운영을 추적할 수 있습니다. 이해 관계자가 스토리지 계정의 상태를 추적하는 데 사용할 수 있는 대시보드 및 보고서를 쉽게 만들 수 있습니다.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Files",
+ "text": "Storage 인사이트를 사용하여 스토리지 계정의 상태와 성능을 추적합니다. Storage 인사이트는 모든 스토리지 계정에 대한 오류, 성능, 가용성 및 용량에 대한 통합 보기를 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Monitor는 파일 공유에 대한 가용성, 성능 및 복원력에 대한 보기를 제공합니다.",
+ "guid": "a4946cee-c1bc-4f12-9819-fddf25f093c4",
+ "service": "Azure Files",
+ "text": "Monitor를 사용하여 가용성, 대기 시간 및 사용량과 같은 메트릭을 분석하고 경고를 만듭니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "6c44da65-6a81-442d-87e7-dd1ecdbca0a5",
+ "service": "Azure Files",
+ "text": "크기 조정 계획: 스토리지 계정, Azure Files 및 Azure 파일 동기화에 대한 확장성 및 성능 목표를 이해합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "d9878efd-6174-4cf7-b7f4-429d8e82e577",
+ "service": "Azure Files",
+ "text": "예측 가능한 성능 달성을 위한 애플리케이션 및 사용 패턴 이해: 대기 시간 민감도, IOPS 및 처리량 요구 사항, 워크로드 기간 및 빈도, 워크로드 병렬화를 결정합니다. 다중 스레드 애플리케이션에 Azure Files를 사용하면 서비스의 성능 상한을 달성하는 데 도움이 됩니다. 대부분의 요청이 createfile, openfile, closefile, queryinfo 또는 querydirectory와 같은 메타데이터 중심인 경우 요청으로 인해 읽기 및 쓰기 작업보다 지연 시간이 짧아집니다. 이 문제가 있는 경우 파일 공유를 동일한 스토리지 계정 내의 여러 파일 공유로 분리하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "3e382c2e-26ee-459d-967e-19377821c26e",
+ "service": "Azure Files",
+ "text": "최적의 스토리지 계정 유형 선택: 워크로드에 많은 양의 IOPS, 매우 빠른 데이터 전송 속도 또는 매우 짧은 대기 시간이 필요한 경우 프리미엄(FileStorage) 스토리지 계정을 선택해야 합니다. 대부분의 SMB 파일 공유 워크로드에 표준 범용 v2 계정을 사용할 수 있습니다. 두 스토리지 계정 유형 간의 주요 절충안은 비용 대 성능입니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "a0564644-9831-4f33-b4e7-6a56a6a658fb",
+ "service": "Azure Files",
+ "text": "대기 시간을 줄이기 위해 클라이언트 연결과 동일한 지역에 스토리지 계정 만들기: Azure Files 서비스에서 멀어질수록 대기 시간이 길어지고 성능 확장 제한을 달성하기가 더 어려워집니다. 이 고려 사항은 온-프레미스 환경에서 Azure Files에 액세스할 때 특히 그렇습니다. 가능한 경우 스토리지 계정과 클라이언트가 동일한 Azure 지역에 함께 있는지 확인합니다. 네트워크 대기 시간을 최소화하거나 ExpressRoute 연결을 사용하여 프라이빗 연결을 통해 온-프레미스 네트워크를 Microsoft 클라우드로 확장하여 온-프레미스 클라이언트에 최적화합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "0dfbbd8e-9f88-4e9d-b13c-01f12078faef",
+ "service": "Azure Files",
+ "text": "성능 데이터 수집: 대기 시간, 가용성 및 사용량 메트릭을 포함한 워크로드 성능을 모니터링합니다. 로그를 분석하여 시간 제한 및 제한과 같은 문제를 진단합니다. 파일 공유가 제한되고 있거나, 제한되려고 하거나, 대기 시간이 길어지는 경우 알려주는 경고를 만듭니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "86f0acc5-ce95-4ea0-b0b7-b733f1b2b10b",
+ "service": "Azure Files",
+ "text": "하이브리드 배포 최적화: Azure 파일 동기화를 사용하는 경우 동기화 성능은 Windows Server 및 기본 디스크 구성, 서버와 Azure Storage 간의 네트워크 대역폭, 파일 크기, 총 데이터 세트 크기 및 데이터 세트에 대한 활동과 같은 여러 요인에 따라 달라집니다. Azure 파일 동기화를 기반으로 하는 솔루션의 성능을 측정하려면 초당 처리하는 개체 수(예: 파일 및 디렉터리)를 확인합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "처리량과 IOPS를 늘리는 동시에 총 소유 비용을 절감합니다. 성능 이점은 부하를 분산하는 파일 수에 따라 증가합니다.",
+ "guid": "24a072d9-074d-4bcf-a65d-9a14336f8075",
+ "service": "Azure Files",
+ "text": "프리미엄 SMB 파일 공유에 대해 SMB 다중 채널을 사용하도록 설정합니다. SMB 다중 채널을 사용하면 SMB 3.1.1 클라이언트가 SMB Azure 파일 공유에 대한 여러 네트워크 연결을 설정할 수 있습니다. SMB 다중 채널은 클라이언트 쪽(클라이언트)과 서비스 쪽(Azure) 모두에서 기능을 사용하도록 설정한 경우에만 작동합니다. Windows 클라이언트에서는 SMB 다중 채널이 기본적으로 사용하도록 설정되지만 스토리지 계정에서 사용하도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "규모에 맞게 성능을 높이고 NFS 파일 공유의 총 소유 비용을 줄입니다.",
+ "guid": "c06bc804-3315-43f1-96ca-70169c020494",
+ "service": "Azure Files",
+ "text": "Linux 클라이언트에서 NFS Azure 파일 공유와 함께 nconnect 클라이언트 쪽 탑재 옵션을 사용합니다. Nconnect를 사용하면 클라이언트와 NFSv4.1용 Azure Files 프리미엄 서비스 간에 더 많은 TCP 연결을 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "최상의 클라이언트 환경을 제공하기 위해 제한을 피합니다.",
+ "guid": "494347eb-d007-45b5-b13c-9a28ee4f8e9a",
+ "service": "Azure Files",
+ "text": "파일 공유 또는 스토리지 계정이 제한되어 대기 시간이 길거나 처리량이 낮거나 IOPS가 낮을 수 있는 상황이 아닌지 확인합니다. IOPS, 수신 또는 송신 제한에 도달하면 요청이 제한됩니다. 표준 스토리지 계정의 경우 계정 수준에서 제한이 발생합니다. 프리미엄 파일 공유의 경우 제한은 일반적으로 공유 수준에서 발생합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "5820ff87-d98e-490e-93a0-28028bbb05e6",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall을 허브 가상 네트워크에 배포하거나 Azure Virtual WAN 허브의 일부로 배포합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "7c605481-a9d5-480f-8738-ac2022ef28ed",
+ "service": "Azure Firewall",
+ "text": "가용 영역 복원력을 활용합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "2ceafe5f-6511-42a6-9687-cebaf586b293",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 정책 구조를 만듭니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "85a53628-bd7b-43bb-a817-b6f0c11c34c9",
+ "service": "Azure Firewall",
+ "text": "알려진 문제 목록을 검토합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "74a2596f-1cc9-4715-8de2-5afdde7b9f9a",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 성능 상태를 모니터링합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "허브 앤 스포크(hub-and-spoke) 및 전이적 아키텍처를 쉽게 생성할 수 있으며, 트래픽 관리 및 보호를 위한 기본 보안 서비스를 제공합니다. 네트워크 토폴로지에 대한 자세한 내용은 Azure Cloud Adoption Framework 설명서를 참조하세요.",
+ "guid": "21f4d348-c086-4e96-b5bc-91f8a3c25841",
+ "service": "Azure Firewall",
+ "text": "기존 허브 & 스포크 또는 Azure Virtual WAN 네트워크 토폴로지와 함께 Azure Firewall Manager를 사용하여 Azure Firewall 인스턴스를 배포하고 관리합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall 정책은 중앙 기본 정책을 오버레이하기 위해 계층 구조로 정렬할 수 있습니다. 특정 지역의 요구 사항을 충족하기 위해 세분화된 정책을 허용합니다. 역할 기반 액세스 제어(RBAC)를 통해 증분 방화벽 정책을 로컬 보안 팀에 위임합니다. 일부 설정은 인스턴스별로 구체적이며(예: DNAT 규칙 및 DNS 구성) 여러 특수 정책이 필요할 수 있습니다.",
+ "guid": "1e604a31-46f0-4fcc-9f0e-1ca46cc3f677",
+ "service": "Azure Firewall",
+ "text": "글로벌 네트워크 환경에서 보안 태세를 제어하는 Azure Firewall 정책을 만듭니다. Azure Firewall의 모든 인스턴스에 정책을 할당합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "기존 배포의 경우 Azure Firewall 규칙을 Azure Firewall Manager 정책으로 마이그레이션합니다. Azure Firewall Manager를 사용하여 방화벽 및 정책을 중앙에서 관리할 수 있습니다. 자세한 내용은 Azure Firewall 프리미엄으로 마이그레이션을 참조하세요.",
+ "guid": "d17fbf01-c796-45dd-9ca4-99af38b2ae9b",
+ "service": "Azure Firewall",
+ "text": "기존 배포에 대한 Azure Firewall 클래식 규칙을 Azure Firewall Manager 정책으로 마이그레이션합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall 제품 그룹은 이 위치에서 알려진 문제의 업데이트된 목록을 유지 관리합니다. 이 목록에는 설계별 동작, 건설 중인 수정 사항, 플랫폼 제한 사항, 가능한 해결 방법 또는 완화와 관련된 중요한 정보가 포함되어 있습니다.",
+ "guid": "b7623c43-bb6b-4629-a655-551c92e2dffa",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 알려진 문제 목록을 검토합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "규칙 및 규칙 수집 그룹의 수, 총 정책 크기, 소스/대상 대상을 포함한 정책 구조에는 제한이 있습니다. 정책을 작성하고 문서화된 임계값을 준수해야 합니다.",
+ "guid": "9230da4d-4e27-4106-9552-294b1a93d780",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 정책이 Azure Firewall 제한 및 권장 사항을 준수하는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure Firewall은 단일 가용성 영역에 배포될 때와 여러 영역에 배포될 때 서로 다른 SLA를 제공합니다. 자세한 내용은 Azure Firewall에 대한 SLA를 참조하세요. 모든 Azure SLA에 대한 자세한 내용은 Azure 서비스에 대한 SLA 요약을 참조하세요.",
+ "guid": "6a88967d-b182-437d-ac3b-1cb45ddfaa86",
+ "service": "Azure Firewall",
+ "text": "더 높은 SLA(서비스 수준 계약)를 위해 여러 가용성 영역에 Azure Firewall을 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "기존 Hub & Spokes 아키텍처의 경우 다중 지역 세부 정보가 이 문서에 설명되어 있습니다. 보안 가상 허브(Azure Virtual WAN)의 경우 허브 간 및 분기 간 통신을 보호하도록 라우팅 의도 및 정책을 구성해야 합니다. 오류에 대한 내성 및 내결함성을 갖도록 설계된 워크로드의 경우 Azure Firewall 및 Azure Virtual Network의 인스턴스를 지역 리소스로 고려해야 합니다.",
+ "guid": "a4b78865-a047-4afc-b7e6-b2f54cee83cb",
+ "service": "Azure Firewall",
+ "text": "다중 지역 환경에서는 지역당 Azure Firewall 인스턴스를 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "처리량, 방화벽 상태, SNAT 포트 사용률 및 AZFW 대기 시간 프로브 메트릭과 같은 Azure Firewall 건강 상태의 주요 메트릭 지표를 면밀히 모니터링합니다. 또한 Azure Firewall은 이제 Azure Resource Health와 통합됩니다. Azure Firewall 리소스 상태 검사를 통해 이제 Azure Firewall의 상태를 보고 Azure Firewall 리소스에 영향을 줄 수 있는 서비스 문제를 해결할 수 있습니다.",
+ "guid": "9621bb59-3034-4e42-8344-5ce24b47425b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 메트릭 및 리소스 상태 모니터링.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "b0b563a2-ec75-4a12-981a-6c6138175122",
+ "service": "Azure Firewall",
+ "text": "강제 터널링이 필요한지 확인합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "c39df35c-43a4-4bc2-ae65-3201a1b274a4",
+ "service": "Azure Firewall",
+ "text": "최소 권한 액세스 기준에 따라 정책에 대한 규칙을 생성합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "08bebd22-0d6a-469c-ae5b-fed8774452de",
+ "service": "Azure Firewall",
+ "text": "위협 인텔리전스를 활용합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "89484b0c-7b36-4fa2-9064-ae6db7dc411a",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall DNS 프록시를 사용하도록 설정합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "a875d2e4-5476-450f-8206-aa79ecdcb2e3",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall을 통해 네트워크 트래픽을 전달합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "50dc96a3-9dca-4aab-97f5-9f8654d4f49c",
+ "service": "Azure Firewall",
+ "text": "타사 SECaaS(Security as a Service) 제공자를 사용할지 여부를 결정합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "98318578-48f2-4870-adc0-a6a2cf9ce25e",
+ "service": "Azure Firewall",
+ "text": "DDoS를 사용하여 Azure Firewall 공용 IP 주소를 보호합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall은 인터넷에 직접 연결되어 있어야 합니다. AzureFirewallSubnet이 Border Gateway Protocol을 통해 온-프레미스 네트워크에 대한 기본 경로를 학습하는 경우 강제 터널링 모드에서 Azure Firewall을 구성해야 합니다. 강제 터널링 기능을 사용하면 Azure Firewall 관리 서브넷에 대한 또 다른 /26 주소 공간이 필요합니다. 이름을 AzureFirewallManagementSubnet으로 지정해야 합니다. 강제 터널링 모드에서 다시 구성할 수 없는 기존 Azure Firewall 인스턴스인 경우 0.0.0.0/0 경로를 사용하여 UDR을 만듭니다. NextHopType 값을 Internet으로 설정합니다. AzureFirewallSubnet과 연결하여 인터넷 연결을 유지합니다.",
+ "guid": "a845b563-f080-4a92-83b0-400feb87ee4e",
+ "service": "Azure Firewall",
+ "text": "모든 인터넷 바인딩 트래픽을 인터넷으로 직접 이동하는 대신 지정된 다음 홉으로 라우팅해야 하는 경우 강제 터널링 모드에서 Azure Firewall을 구성합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "새 Azure Firewall 인스턴스를 배포할 때 강제 터널링 모드를 사용하도록 설정하면 공용 IP 주소를 없음으로 설정하여 완전 프라이빗 데이터 평면을 배포할 수 있습니다. 그러나 관리 평면에는 관리 목적으로만 공용 IP가 필요합니다. 가상 및 온-프레미스 네트워크의 내부 트래픽은 해당 공용 IP를 사용하지 않습니다. 강제 터널링에 대한 자세한 내용은 Azure Firewall 강제 터널링을 참조하세요.",
+ "guid": "176ae9e3-7a07-4885-ab4e-72a9ea2ee7fc",
+ "service": "Azure Firewall",
+ "text": "강제 터널링 모드에서 Azure Firewall을 구성할 때 공용 IP 주소를 없음으로 설정하여 완전한 프라이빗 데이터 평면을 배포합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall 정책은 중앙 기본 정책을 오버레이하기 위해 계층 구조로 정렬할 수 있습니다. 특정 지역의 요구 사항을 충족하기 위해 세분화된 정책을 허용합니다. 각 정책에는 특정 우선 순위, 작업 및 처리 순서가 있는 서로 다른 DNAT, 네트워크 및 애플리케이션 규칙 집합이 포함될 수 있습니다. 최소 권한 액세스 제로 트러스트 원칙에 따라 규칙을 만듭니다. 규칙이 처리되는 방법은 이 문서에 설명되어 있습니다.",
+ "guid": "f1c5e5d4-9e41-4b27-b53f-fb36ddce75b7",
+ "service": "Azure Firewall",
+ "text": "최소 권한 액세스 기준에 따라 방화벽 정책에 대한 규칙을 생성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "IDPS는 가장 강력한 Azure Firewall(프리미엄) 보안 기능 중 하나이며 사용하도록 설정해야 합니다. 보안 및 응용 프로그램 요구 사항에 따라 성능에 미치는 영향(아래 비용 섹션 참조)을 고려하여 경고 또는 경고 및 거부 모드를 선택할 수 있습니다.",
+ "guid": "0722a8f4-bea5-4309-93de-d93fb93e0733",
+ "service": "Azure Firewall",
+ "text": "경고 또는 경고 및 거부 모드에서 IDPS를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 기능을 사용하도록 설정하면 VNet의 클라이언트가 Azure Firewall을 DNS 서버로 가리킵니다. 직접 액세스 및 노출되지 않는 내부 DNS 인프라를 보호합니다. 또한 DNS 쿼리를 전달하는 데 사용할 사용자 지정 DNS를 사용하도록 Azure Firewall을 구성해야 합니다.",
+ "guid": "8afc40b9-179e-4b5d-ba89-897925ad6d09",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall(DNS) 프록시 구성을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기존 Hub & Spokes 아키텍처에서는 'SpoketoSpoke', 'SpoketoInternet' 및 'SpoketoHybrid' 연결을 위해 Azure Firewall을 통해 트래픽을 강제 적용하도록 UDR을 구성합니다. 대신 Azure Virtual WAN에서 허브에 통합된 Azure Firewall 인스턴스를 통해 프라이빗 및/또는 인터넷 트래픽을 리디렉션하도록 라우팅 의도 및 정책을 구성합니다.",
+ "guid": "54cc495b-54f8-4dc9-9ed9-e20c15a8beb9",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall을 통해 트래픽을 강제 적용하도록 UDR(사용자 정의 경로)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "아웃바운드 경로에서 명시적 프록시 기능을 사용하도록 설정하면 Azure Firewall을 프록시로 구성하여 보내는 웹 애플리케이션(예: 웹 브라우저)에서 프록시 설정을 구성할 수 있습니다. 따라서 웹 트래픽은 방화벽의 개인 IP 주소에 도달하므로 UDR을 사용하지 않고 방화벽에서 직접 송신됩니다. 또한 이 기능을 사용하면 기존 네트워크 경로를 수정하지 않고도 여러 방화벽을 쉽게 사용할 수 있습니다.",
+ "guid": "18462426-38d0-444b-aaec-99aa97aefc57",
+ "service": "Azure Firewall",
+ "text": "UDR을 적용할 수 없고 웹 트래픽 리디렉션만 필요한 경우 Azure Firewall을 명시적 프록시로 사용하는 것이 좋습니다",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "익숙한 동급 최고의 타사 SECaaS 오퍼링을 사용하여 사용자의 인터넷 액세스를 보호할 수 있습니다. 이 시나리오에서는 IPSec 터널을 사용하여 공급자의 인프라에 연결하므로 허브에 S2S VPN Gateway가 있는 Azure Virtual WAN이 필요합니다. SECaaS 제공업체는 추가 라이선스 비용을 청구하고 IPSec 연결에 대한 처리량을 제한할 수 있습니다. ZScaler Cloud Connector와 같은 대체 솔루션이 있으며 더 적합할 수 있습니다.",
+ "guid": "cfcce0d3-c52d-4405-9316-d503ffcf5349",
+ "service": "Azure Firewall",
+ "text": "이러한 솔루션을 사용하여 아웃바운드 연결을 보호하려면 Firewall Manager 내에서 지원되는 타사 SaaS(Software as a Service) 보안 공급자를 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall 및 방화벽 정책에서 DNS 확인에 따라 FQDN을 사용할 수 있습니다. 이 기능을 사용하면 모든 TCP/UDP 프로토콜(NTP, SSH, RDP 등 포함)을 사용하여 아웃바운드 트래픽을 필터링할 수 있습니다. 네트워크 규칙에서 FQDN을 사용하려면 Azure Firewall DNS 프록시 구성을 사용하도록 설정해야 합니다. 작동 방식을 알아보려면 네트워크 규칙에서 Azure Firewall FQDN 필터링을 참조하세요.",
+ "guid": "ce2815a6-eee5-4c54-91e7-9ee1e95a191a",
+ "service": "Azure Firewall",
+ "text": "네트워크 규칙에서 FQDN(정규화된 도메인 이름) 필터링을 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "서비스 태그는 보안 규칙 생성의 복잡성을 최소화하는 데 도움이 되는 IP 주소 접두사 그룹을 나타냅니다. 네트워크 규칙에서 서비스 태그를 사용하면 광범위한 IP 주소를 열지 않고도 Azure, Dynamics 및 Office 365의 특정 서비스에 대한 아웃바운드 액세스를 사용하도록 설정할 수 있습니다. Azure는 이러한 태그와 각 서비스에서 사용하는 기본 IP 주소 간의 매핑을 자동으로 유지 관리합니다. Azure Firewall에서 사용할 수 있는 서비스 태그 목록은 Az Firewall 서비스 태그에 나열되어 있습니다.",
+ "guid": "55fe92cd-c2a0-4b0b-bd8b-691291c73651",
+ "service": "Azure Firewall",
+ "text": "네트워크 규칙에서 서비스 태그를 사용하여 특정 Microsoft 서비스에 대한 선택적 액세스를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "FQDN 태그는 잘 알려진 Microsoft 서비스와 연결된 FQDN(정규화된 도메인 이름) 그룹을 나타냅니다. 응용 프로그램 규칙에서 FQDN 태그를 사용하여 일부 특정 Azure 서비스, Office 365, Windows 365 및 Intune에 대해 방화벽을 통해 필요한 아웃바운드 네트워크 트래픽을 허용할 수 있습니다.",
+ "guid": "c9cac1b2-3969-4de0-b36f-6f9992d9ebc6",
+ "service": "Azure Firewall",
+ "text": "응용 프로그램 규칙에서 FQDN 태그를 사용하여 특정 Microsoft 서비스에 대한 선택적 액세스를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "DDoS 보호 계획은 DDoS 공격으로부터 방화벽을 보호하기 위한 향상된 완화 기능을 제공합니다. Azure Firewall Manager는 방화벽 인프라 및 DDoS 보호 계획을 만들기 위한 통합 도구입니다. 자세한 내용은 Azure Firewall Manager를 사용하여 Azure DDoS Protection 계획 구성을 참조하세요.",
+ "guid": "e7925fd9-7502-4cb4-9b51-cbf8f546a5b2",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager를 사용하여 DDoS 보호 계획을 만들고 허브 가상 네트워크와 연결합니다(Azure Virtual WAN에는 적용되지 않음).",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Firewall Premium에서 TLS 검사 기능을 사용하는 경우 프로덕션 환경에 내부 CA(엔터프라이즈 인증 기관)를 활용하는 것이 좋습니다. 자체 서명된 인증서는 테스트/PoC 목적으로만 사용해야 합니다.",
+ "guid": "2e318870-f258-484d-aef6-ed2972db1f44",
+ "service": "Azure Firewall",
+ "text": "엔터프라이즈 PKI를 사용하여 TLS 검사용 인증서를 생성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "보안 요구 사항에 따라 웹 애플리케이션(검사 및 암호화)에 대한 제로 트러스트 접근 방식을 구현해야 하는 경우 이 가이드를 따르는 것이 좋습니다. 이 문서에서는 기존 허브 및 스포크 및 Virtual WAN 시나리오 모두에서 Azure Firewall과 Application Gateway를 통합하는 방법을 설명합니다.",
+ "guid": "34821124-0275-4c49-8f1c-20eb84027df3",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 및 Application Gateway에 대한 제로 트러스트 구성 가이드 검토",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "ffdfd2b7-e799-4c09-9c76-1471fe5f8db9",
+ "service": "Azure Firewall",
+ "text": "배포할 Azure Firewall SKU를 선택합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "cca81cf9-4d7f-4e04-99e9-8ecfb533d814",
+ "service": "Azure Firewall",
+ "text": "일부 인스턴스에 영구적인 24x7 할당이 필요하지 않은지 확인합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "50c204ab-2e28-456c-a731-3ecf2e38d6d7",
+ "service": "Azure Firewall",
+ "text": "워크로드 전반에서 방화벽 사용을 최적화할 수 있는 위치를 결정합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "365207d2-1008-4a6e-ad87-f4191a31a004",
+ "service": "Azure Firewall",
+ "text": "방화벽 인스턴스 사용량을 모니터링하고 최적화하여 비용 효율성을 결정합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "39b1fd82-3efb-459b-b789-a9dc631f9f90",
+ "service": "Azure Firewall",
+ "text": "필요한 공용 IP 주소 수와 사용된 정책을 검토하고 최적화합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "46753a55-3740-4a6d-808b-fbe485bc66e5",
+ "service": "Azure Firewall",
+ "text": "로깅 요구 사항을 검토하고, 비용을 예측하고, 시간 경과에 따른 제어를 수행합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Firewall은 기본, 표준 및 프리미엄의 세 가지 SKU로 배포할 수 있습니다. Azure Firewall 프리미엄은 매우 중요한 애플리케이션(예: 결제 처리)을 보호하는 데 권장됩니다. Azure Firewall 표준은 계층 3–계층 7 방화벽을 찾는 고객에게 권장되며 최대 30Gbps의 최대 트래픽 기간을 처리하기 위해 자동 크기 조정이 필요합니다. Azure Firewall Basic은 처리량이 250Mbps인 SMB 고객에게 권장됩니다. 필요한 경우 여기에 설명된 대로 Standard와 Premium 간에 다운그레이드 또는 업그레이드가 가능합니다. 자세한 내용은 요구 사항에 맞는 올바른 Azure Firewall SKU 선택을 참조하세요.",
+ "guid": "ba45f704-2456-4d6a-999d-57db4dbf3ff5",
+ "service": "Azure Firewall",
+ "text": "적절한 Azure Firewall SKU를 배포합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "업무 시간 중에만 사용되는 개발 또는 테스트 환경이 있을 수 있습니다. 자세한 내용은 Azure Firewall 할당 취소 및 할당을 참조하세요.",
+ "guid": "2ef42b67-50cc-4d54-bd3d-324ad2044fc7",
+ "service": "Azure Firewall",
+ "text": "연중무휴(24x7) 실행할 필요가 없는 Azure Firewall 배포를 중지합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "허브 가상 네트워크 또는 Virtual WAN 보안 허브에서 Azure Firewall의 중앙 인스턴스를 사용하고 동일한 지역의 동일한 허브에 연결된 여러 스포크 가상 네트워크에서 동일한 방화벽을 공유할 수 있습니다. 허브-스포크 토폴로지의 일부로 예기치 않은 지역 간 트래픽이 없는지 확인합니다.",
+ "guid": "ae5816a1-1766-425a-a117-2873865a9f10",
+ "service": "Azure Firewall",
+ "text": "여러 워크로드 및 Azure Virtual Network에서 동일한 Azure Firewall 인스턴스를 공유합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "상위 흐름 로그(업계에서는 Fat Flows라고 함)는 방화벽을 통해 가장 높은 처리량에 기여하는 상위 연결을 보여 줍니다. Azure Firewall에서 처리한 트래픽을 정기적으로 검토하고 가능한 최적화를 검색하여 방화벽을 통과하는 트래픽의 양을 줄이는 것이 좋습니다.",
+ "guid": "791f974e-8c73-46ee-9b9e-26dd3a6c6845",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall에서 처리한 트래픽을 정기적으로 검토하고 원래 워크로드 최적화를 찾습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "사용되지 않는 Azure Firewall 배포를 식별하려면 먼저 방화벽의 개인 IP를 가리키는 서브넷과 연결된 모니터링 메트릭 및 UDR을 분석합니다. Azure Firewall 인스턴스에 NAT, 네트워크 및 애플리케이션에 대한 규칙(클래식)이 있는지 또는 DNS 프록시 설정이 사용 안 함으로 구성된 경우와 같은 다른 유효성 검사 및 환경 및 배포에 대한 내부 설명서와 해당 정보를 결합합니다. 시간이 지남에 따라 비용 효율적인 배포를 검색할 수 있습니다. 로그 및 메트릭 모니터링에 대한 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링 및 SNAT 포트 사용률을 참조하세요.",
+ "guid": "6590ab7b-01d8-487c-ad40-c325eada375c",
+ "service": "Azure Firewall",
+ "text": "활용도가 낮은 Azure Firewall 인스턴스를 검토합니다. 사용되지 않는 Azure Firewall 배포를 식별하고 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Firewall Manager 정책, 연결 및 상속을 주의 깊게 검토합니다. 정책은 방화벽 연결을 기준으로 청구됩니다. 방화벽 연결이 0개 또는 1개 있는 정책은 무료입니다. 여러 방화벽 연결이 있는 정책은 고정 요율로 청구됩니다. 자세한 내용은 가격 책정 - Azure Firewall Manager를 참조하세요.",
+ "guid": "c82f1a0b-3dd1-4da7-9006-5b870e0ea843",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall Manager 및 해당 정책을 사용하여 운영 비용을 줄이고, 효율성을 높이고, 관리 오버헤드를 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "연결된 모든 공용 IP 주소가 사용 중인지 확인합니다. 사용하지 않는 경우 연결을 끊고 삭제하십시오. IP 주소를 제거하기 전에 SNAT 포트 사용률을 평가합니다. 방화벽에 필요한 공용 IP 수만 사용합니다. 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링 및 SNAT 포트 사용률을 참조하세요.",
+ "guid": "58401f6a-8858-4d03-bf00-7f6d8747297a",
+ "service": "Azure Firewall",
+ "text": "사용하지 않는 공용 IP 주소를 삭제합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Firewall은 Event Hubs를 통해 Log Analytics 작업 영역, 스토리지 또는 타사 솔루션에 표시되는 모든 트래픽의 메타데이터를 포괄적으로 기록할 수 있습니다. 그러나 모든 로깅 솔루션에는 데이터 처리 및 저장 비용이 발생합니다. 매우 큰 볼륨에서는 이러한 비용이 상당할 수 있으므로 Log Analytics에 대한 비용 효율적인 접근 방식 및 대안을 고려하고 비용을 예측해야 합니다. 모든 로깅 범주에 대한 트래픽 메타데이터를 기록해야 하는지 여부를 고려하고 필요한 경우 진단 설정에서 수정해야 합니다.",
+ "guid": "a9f71813-ccf8-427a-9ce3-676b4123eff4",
+ "service": "Azure Firewall",
+ "text": "로깅 요구 사항을 검토합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "c8e11b57-bc16-4a60-9c0d-aeae7239fe91",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 구성 및 정책의 인벤토리 및 백업을 유지 관리합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "be3e8ab7-db2a-40f7-a76a-fba15b34b88d",
+ "service": "Azure Firewall",
+ "text": "방화벽 모니터링 및 문제 해결을 위해 진단 로그를 활용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "af454d15-f640-47db-9864-7c31cbdcdffc",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall 모니터링 통합 문서를 활용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "010e0c46-9d19-46fb-9a85-4bb79828db8a",
+ "service": "Azure Firewall",
+ "text": "정책 인사이트 및 분석을 정기적으로 검토합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "e455cf35-374c-4e02-9432-e0dc531b829b",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall을 클라우드용 Microsoft Defender 및 Microsoft Sentinel과 통합합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Firewall은 VNet 간, VNet과 온-프레미스 네트워크 간, 인터넷으로의 아웃바운드 트래픽 및 들어오는 비 HTTP/s 트래픽을 제어하는 데 사용해야 합니다. VNet 내 트래픽 제어의 경우 네트워크 보안 그룹을 사용하는 것이 좋습니다.",
+ "guid": "337df674-237d-4b82-ac92-ae45f34a6e3d",
+ "service": "Azure Firewall",
+ "text": "VNet 내 트래픽 제어에 Azure Firewall을 사용하지 마세요.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "IaC(Infrastructure-as-Code) 접근 방식을 사용하여 Azure Firewall 및 모든 종속성을 유지 관리하는 경우 Azure Firewall 정책의 백업 및 버전 관리가 이미 마련되어 있어야 합니다. 그렇지 않은 경우 외부 Logic App을 기반으로 하는 도우미 메커니즘을 배포하여 자동화하고 효과적인 솔루션을 제공할 수 있습니다.",
+ "guid": "174e4ca6-77d4-4b83-8f05-0c54c43792ec",
+ "service": "Azure Firewall",
+ "text": "Azure Policy 아티팩트의 정기적인 백업을 유지 관리합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "진단 로그는 Azure Firewall에 대한 많은 모니터링 도구 및 전략의 핵심 구성 요소이며 사용하도록 설정해야 합니다. 방화벽 로그 또는 통합 문서를 사용하여 Azure Firewall을 모니터링할 수 있습니다. Azure Firewall 리소스에 대한 작업을 감사하기 위해 활동 로그를 사용할 수도 있습니다.",
+ "guid": "7e27b44b-e8c0-4f25-9fce-78a85810d715",
+ "service": "Azure Firewall",
+ "text": "Azure Firewall에 대한 진단 로그를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "구조적 방화벽 로그는 새로운 특정 형식으로 구성된 로그 데이터 유형입니다. 사전 정의된 스키마를 사용하여 쉽게 검색, 필터링 및 분석할 수 있는 방식으로 로그 데이터를 구조화합니다. 최신 모니터링 도구는 이러한 유형의 로그를 기반으로 하므로 필수 구성 요소인 경우가 많습니다. 이전 진단 로그 형식은 필수 구성 요소가 있는 기존 도구가 있는 경우에만 사용합니다. 두 로깅 형식을 동시에 활성화하지 마십시오.",
+ "guid": "078ab6f4-2ef5-4f91-856c-be9e3c2748a1",
+ "service": "Azure Firewall",
+ "text": "구조적 방화벽 로그 형식을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "이제 Azure Firewall 포털 환경에는 모니터링 섹션 UI 아래에 새 통합 문서가 포함되므로 더 이상 별도의 설치가 필요하지 않습니다. Azure Firewall 통합 문서를 사용하면 Azure Firewall 이벤트에서 중요한 인사이트를 추출하고, 애플리케이션 및 네트워크 규칙을 자세히 살펴보고, URL, 포트 및 주소에서 방화벽 활동과 관련된 통계를 검사할 수 있습니다.",
+ "guid": "a246ca16-d2da-4ebc-ad28-0bcbb0813be0",
+ "service": "Azure Firewall",
+ "text": "기본 제공 Azure Firewall 모니터링 통합 문서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "최소한 처리량, 방화벽 상태, SNAT 포트 사용률 및 AZFW 대기 시간 프로브 메트릭을 모니터링하기 위해 경고를 만들어야 합니다. 로그 및 메트릭 모니터링에 대한 자세한 내용은 Azure Firewall 로그 및 메트릭 모니터링을 참조하세요.",
+ "guid": "0c405dff-403a-4ead-94d9-5539ba1eaea6",
+ "service": "Azure Firewall",
+ "text": "주요 메트릭을 모니터링하고 Azure Firewall 용량 사용률 지표에 대한 경고를 만듭니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "이러한 도구를 환경에서 사용할 수 있는 경우 클라우드용 Microsoft Defender 및 Microsoft Sentinel 솔루션과의 통합을 활용하는 것이 좋습니다. 클라우드용 Microsoft Defender 통합을 사용하면 Azure의 여러 지역에 분산된 모든 VNet 및 가상 허브의 Azure 네트워크 보안을 포함하여 네트워크 인프라 및 네트워크 보안의 전체 상태를 한 곳에서 시각화할 수 있습니다. Microsoft Sentinel과 통합하면 위협 탐지 및 방지 기능이 제공됩니다.",
+ "guid": "6643f4d1-ee99-4466-9175-164787d00fc3",
+ "service": "Azure Firewall",
+ "text": "클라우드용 Microsoft Defender 및 Microsoft Sentinel과 Azure Firewall 통합을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "정책 분석은 Azure Firewall 정책의 영향에 대한 인사이트를 제공하는 새로운 기능입니다. 정책에서 잠재적인 문제(정책 제한 적중, 낮은 사용률 규칙, 중복 규칙, 너무 일반적인 규칙, IP 그룹 사용 권장 사항)를 식별하는 데 도움이 되며 보안 상태 및 규칙 처리 성능을 개선하기 위한 권장 사항을 제공합니다.",
+ "guid": "43d91873-4442-40ae-b2a3-263bc7fdcaab",
+ "service": "Azure Firewall",
+ "text": "정책 분석 대시보드를 정기적으로 검토하여 잠재적인 문제를 식별합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Firewall에 대한 샘플 쿼리가 제공됩니다. 이를 통해 방화벽 내부에서 무슨 일이 일어나고 있는지 빠르게 식별하고 어떤 규칙이 트리거되었는지 또는 어떤 규칙이 요청을 허용/차단하는지 확인할 수 있습니다.",
+ "guid": "8bc24ea6-da9e-48b8-a05c-4fce251d2046",
+ "service": "Azure Firewall",
+ "text": "KQL(Kusto 쿼리 언어) 쿼리에 익숙해지면 Azure Firewall 로그를 사용하여 빠르게 분석하고 문제를 해결할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "9469b3e2-6be2-470b-a10b-9fb0150c5733",
+ "service": "Azure Firewall",
+ "text": "방화벽 규칙을 정기적으로 검토하고 최적화합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "9efe3606-1aa2-4e06-bf6a-2e5214cf080f",
+ "service": "Azure Firewall",
+ "text": "정책 요구 사항 및 IP 범위 및 URL 목록을 요약할 수 있는 기회를 검토합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "93db9b9d-c43d-47e2-a1cf-e81841274059",
+ "service": "Azure Firewall",
+ "text": "SNAT 포트 요구 사항을 평가합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "fbe59997-e12b-497b-bdbd-d2a5e3f728e7",
+ "service": "Azure Firewall",
+ "text": "부하 테스트를 계획하여 사용자 환경에서 자동 크기 조정 성능을 테스트합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "c68f8c08-fe1e-4515-a877-67daaa008ab0",
+ "service": "Azure Firewall",
+ "text": "필요하지 않은 경우 진단 도구 및 로깅을 사용하도록 설정하지 마십시오.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "정책 분석은 Azure Firewall 정책의 영향에 대한 인사이트를 제공하는 새로운 기능입니다. 정책에서 잠재적인 문제(정책 제한 적중, 낮은 사용률 규칙, 중복 규칙, 너무 일반적인 규칙, IP 그룹 사용 권장 사항)를 식별하는 데 도움이 되며 보안 상태 및 규칙 처리 성능을 개선하기 위한 권장 사항을 제공합니다.",
+ "guid": "cbbaf175-2b8e-4a1f-af5a-a9cbfb798ffb",
+ "service": "Azure Firewall",
+ "text": "정책 분석 대시보드를 사용하여 방화벽 정책에 대한 잠재적 최적화를 식별합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "공용 인터넷 사이트의 긴 목록을 명시적으로 빌드하고 유지 관리하는 대신 Azure Firewall 웹 범주를 사용하는 것이 좋습니다. 이 기능은 웹 콘텐츠를 동적으로 분류하고 컴팩트한 응용 프로그램 규칙을 만들 수 있도록 합니다.",
+ "guid": "b8bc28b7-69d4-49d3-8a1e-8dd7ba71ebbe",
+ "service": "Azure Firewall",
+ "text": "Web Categories를 사용하여 아웃바운드 액세스를 대량으로 허용하거나 거부하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall이 IDPS 모드 경고 및 거부에서 작동해야 하는 경우 이 페이지에 설명된 대로 성능 영향을 신중하게 고려합니다.",
+ "guid": "b91be607-0c6b-4c0d-bdd2-367879f7632d",
+ "service": "Azure Firewall",
+ "text": "경고 및 거부 모드에서 IDPS의 성능 영향을 평가합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 현재 백 엔드 Virtual Machine Scale Set 인스턴스당 공용 IP 주소당 2496개의 포트를 지원합니다. 기본적으로 두 개의 Virtual Machine Scale Set 인스턴스가 있습니다. 따라서 흐름 대상 IP, 대상 포트 및 프로토콜(TCP 또는 UDP)당 4992개의 포트가 있습니다. 방화벽은 최대 20개의 인스턴스까지 확장됩니다. SNAT 고갈에 취약한 배포에 대해 최소 5개의 공용 IP 주소로 Azure Firewall 배포를 구성하여 제한을 해결할 수 있습니다.",
+ "guid": "a5847147-e7ef-48d1-ba16-d896fdce1b9f",
+ "service": "Azure Firewall",
+ "text": "잠재적인 SNAT 포트 소모 문제를 평가합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "테스트 20분 전에 부하 테스트에 포함되지 않는 초기 트래픽을 만듭니다. 진단 설정을 사용하여 스케일 업 및 스케일 다운 이벤트를 캡처합니다. Azure Load Testing 서비스를 사용하여 초기 트래픽을 생성할 수 있습니다. Azure Firewall 인스턴스가 인스턴스를 최대로 확장할 수 있습니다.",
+ "guid": "908a8bfa-9e9f-4199-8b5a-f2a031ab22e0",
+ "service": "Azure Firewall",
+ "text": "성능 테스트 전에 Azure Firewall을 적절하게 워밍업합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 가상 네트워크의 전용 배포입니다. 가상 네트워크 내에서 Azure Firewall 인스턴스에 전용 서브넷이 필요합니다. Azure Firewall은 크기가 조정됨에 따라 더 많은 용량을 프로비전합니다. 서브넷에 대한 /26 주소 공간은 방화벽에 크기 조정을 수용할 수 있는 충분한 IP 주소가 있는지 확인합니다. Azure Firewall에는 /26보다 큰 서브넷이 필요하지 않습니다. Azure Firewall 서브넷 이름은 AzureFirewallSubnet이어야 합니다.",
+ "guid": "d0e66443-59f1-48cb-995f-eaa6688c4f3b",
+ "service": "Azure Firewall",
+ "text": "/26 주소 공간을 사용하여 Azure Firewall 서브넷(AzureFirewallSubnet)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Firewall은 항상 활성 상태를 유지하는 데 비용이 많이 들 수 있는 몇 가지 고급 로깅 기능을 제공합니다. 대신 문제 해결 목적으로만 사용해야 하며 기간을 제한한 다음 더 이상 필요하지 않을 때 비활성화해야 합니다. 예를 들어 상위 흐름 및 흐름 추적 로그가 비싸면 Azure Firewall 인프라에서 과도한 CPU 및 스토리지 사용량이 발생할 수 있습니다.",
+ "guid": "2c51e141-6e45-42cd-8c22-c55b219ffe83",
+ "service": "Azure Firewall",
+ "text": "필요하지 않은 경우 고급 로깅을 사용하도록 설정하지 마십시오.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "59ed40bd-06a0-4125-ab99-afc88a248aa5",
+ "service": "Azure Front Door",
+ "text": "트래픽 패턴과 볼륨을 추정합니다. 클라이언트에서 Azure Front Door 에지로의 요청 수는 계층 선택에 영향을 줄 수 있습니다. 많은 양의 요청을 지원해야 하는 경우 성능이 궁극적으로 가용성에 영향을 미치므로 Azure Front Door 프리미엄 계층을 고려합니다. 그러나 비용 절충안이 있습니다. 이러한 계층은 성능 효율성에 설명되어 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "51f023f3-53b4-4878-8548-2b08a6b095ab",
+ "service": "Azure Front Door",
+ "text": "배포 전략을 선택합니다. 기본 배포 접근 방식은 액티브-액티브 및 액티브-패시브입니다. 액티브-액티브 배포는 워크로드를 실행하는 여러 환경 또는 스탬프가 트래픽을 제공한다는 것을 의미합니다. 액티브-패시브 배포는 주 지역만 모든 트래픽을 처리하지만 필요한 경우 보조 지역으로 장애 조치(failover)하는 것을 의미합니다. 다중 지역 배포에서 스탬프는 트래픽을 분산하는 Azure Front Door와 같은 전역 부하 분산 장치를 사용하여 더 높은 가용성을 위해 다른 지역에서 실행됩니다. 따라서 적절한 배포 방법에 맞게 부하 분산 장치를 구성하는 것이 중요합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "486f318a-8747-45e5-a5f4-97642d4fada6",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 및 원본 서버에서 동일한 호스트 이름을 사용합니다. 쿠키 또는 리디렉션 URL이 제대로 작동하도록 하려면 웹 애플리케이션 앞에서 로드 밸런서와 같은 역방향 프록시를 사용할 때 원래 HTTP 호스트 이름을 보존합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "9bc96e35-d25f-4521-86f8-8cadefb23576",
+ "service": "Azure Front Door",
+ "text": "상태 엔드포인트 모니터링 패턴을 구현합니다. 응용 프로그램은 요청을 처리하는 데 필요한 중요한 서비스 및 종속성의 상태를 집계하는 상태 엔드포인트를 노출해야 합니다. Azure Front Door 상태 프로브는 엔드포인트를 사용하여 원본 서버의 상태를 감지합니다. 자세한 내용은 상태 엔드포인트 모니터링 패턴을 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "96c8dc89-cafe-411e-9080-35c13fffb8b3",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door의 기본 제공 콘텐츠 배달 네트워크 기능을 활용하세요. Azure Front Door의 콘텐츠 배달 네트워크 기능에는 수백 개의 에지 위치가 있으며 DDoS(분산 서비스 거부) 공격을 견디는 데 도움이 될 수 있습니다. 이러한 기능은 안정성을 향상시키는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "750bc3ba-30aa-44fc-88aa-bc93cdf29cdf",
+ "service": "Azure Front Door",
+ "text": "중복 트래픽 관리 옵션을 고려합니다. Azure Front Door는 환경에서 싱글톤으로 실행되는 전역적으로 분산된 서비스입니다. Azure Front Door는 시스템에서 발생할 수 있는 단일 실패 지점입니다. 서비스가 실패하면 클라이언트는 가동 중지 시간 동안 애플리케이션에 액세스할 수 없습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "일련의 의사 결정 단계와 설계를 사용하여 최상의 원본 리소스를 선택할 수 있습니다. 선택한 오리진은 지정된 가중치 비율로 허용 가능한 지연 시간 범위 내에서 트래픽을 처리합니다.",
+ "guid": "1a6fba56-5098-4506-9be0-940fe556996c",
+ "service": "Azure Front Door",
+ "text": "배포 전략을 지원하는 라우팅 방법을 선택합니다. 구성된 가중치 계수에 따라 트래픽을 분산하는 가중치 적용 방법은 액티브-액티브 모델을 지원합니다. 모든 트래픽을 수신하고 백업으로 보조 지역으로 트래픽을 보내도록 주 지역을 구성하는 우선 순위 기반 값은 활성-수동 모델을 지원합니다. 앞의 방법을 지연 시간과 결합하여 지연 시간이 가장 낮은 오리진이 트래픽을 수신하도록 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "다중 오리진은 애플리케이션의 여러 인스턴스에 트래픽을 분산하여 중복성을 지원합니다. 한 인스턴스를 사용할 수 없는 경우 다른 백 엔드 오리진은 여전히 트래픽을 수신할 수 있습니다.",
+ "guid": "00f51ce2-46a9-4051-ab0e-762743d0837d",
+ "service": "Azure Front Door",
+ "text": "하나 이상의 백 엔드 풀에 여러 원본을 두어 중복성을 지원합니다. 항상 응용 프로그램의 중복 인스턴스를 사용하고 각 인스턴스가 끝점 또는 원본을 노출하는지 확인합니다. 이러한 원본을 하나 이상의 백 엔드 풀에 배치할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "사용하도록 설정된 상태 프로브는 상태 모니터링 패턴 구현의 일부입니다. 상태 프로브는 Azure Front Door가 요청을 처리할 수 있을 만큼 건강한 인스턴스로만 트래픽을 라우팅하도록 합니다. 자세한 내용은 상태 프로브에 대한 모범 사례를 참조하세요.",
+ "guid": "17fbec2c-ddb4-4490-946c-a151ae0fadd4",
+ "service": "Azure Front Door",
+ "text": "원본에서 상태 프로브를 설정합니다. 백 엔드 인스턴스를 사용할 수 있고 요청을 계속 받을 준비가 되었는지 확인하기 위해 상태 검사를 수행하도록 Azure Front Door를 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "시간 제한은 완료하는 데 예상보다 오래 걸리는 요청을 종료하여 성능 문제 및 가용성 문제를 방지하는 데 도움이 됩니다.",
+ "guid": "1a308f11-1d93-4d57-bd84-cbd8f6198dd2",
+ "service": "Azure Front Door",
+ "text": "백 엔드에 대한 요청 전달에 대한 시간 제한을 설정합니다. 엔드포인트의 필요에 따라 시간 제한 설정을 조정합니다. 그렇지 않으면 원본이 응답을 보내기 전에 Azure Front Door가 연결을 닫을 수 있습니다. 모든 원본의 시간 제한이 더 짧은 경우 Azure Front Door의 기본 시간 제한을 낮출 수도 있습니다. 자세한 내용은 응답하지 않는 요청 문제 해결을 참조하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "세션 어피니티(affinity), 인증(authentication), 권한 부여(authorization)로 인한 오작동을 방지하기 위해 동일한 호스트 이름을 설정합니다. 자세한 내용은 역방향 프록시와 해당 백 엔드 웹 응용 프로그램 간의 원래 HTTP 호스트 이름 유지를 참조하세요.",
+ "guid": "7af90aa7-b21f-432f-858b-2d872c752d7f",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 및 원본에서 동일한 호스트 이름을 사용합니다. Azure Front Door는 들어오는 요청의 호스트 헤더를 다시 작성할 수 있으며, 이는 하나의 원본으로 라우팅되는 여러 사용자 지정 도메인 이름이 있는 경우에 유용합니다. 그러나 호스트 헤더를 다시 작성하면 요청 쿠키 및 URL 리디렉션에 문제가 발생할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "세션 선호도를 사용하면 사용자 세션 동안 사용자 연결이 동일한 원본에 유지됩니다. 해당 원본을 사용할 수 없게 되면 사용자 환경이 중단될 수 있습니다.",
+ "guid": "f66a8d49-8d0a-4952-9db2-ac2e526f08ad",
+ "service": "Azure Front Door",
+ "text": "응용 프로그램에 세션 선호도가 필요한지 여부를 결정합니다. 높은 안정성 요구 사항이 있는 경우 세션 선호도를 사용하지 않도록 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "클라이언트가 애플리케이션에 너무 많은 트래픽을 보내는 것을 방지하기 위해 요청을 제한합니다. 속도 제한은 재시도 폭풍과 같은 문제를 방지하는 데 도움이 될 수 있습니다.",
+ "guid": "63faaf18-da4b-4274-ac3c-d955f2a2e01b",
+ "service": "Azure Front Door",
+ "text": "WAF(웹 애플리케이션 방화벽)에 포함된 속도 제한 규칙을 활용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "ad186a96-5de2-4bf7-acd4-5b534cdb3e97",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door에 대한 보안 기준을 검토합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "b31346d7-4fde-42c2-82fe-2e4d54aa8f1b",
+ "service": "Azure Front Door",
+ "text": "백엔드 서버를 보호합니다. 프런트 엔드는 응용 프로그램에 대한 단일 수신 지점 역할을 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "903b1844-994a-49e8-8e08-6ef445aec4f7",
+ "service": "Azure Front Door",
+ "text": "컨트롤 플레인에 대한 권한 있는 액세스만 허용합니다. Azure Front Door RBAC(역할 기반 액세스 제어)를 사용하여 필요한 ID에 대한 액세스만 제한합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "329c0516-9a14-45ea-ad04-fe75453c8d88",
+ "service": "Azure Front Door",
+ "text": "엣지에서 일반적인 위협을 차단합니다. WAF는 Azure Front Door와 통합됩니다. 프런트 엔드에서 WAF 규칙을 사용하도록 설정하여 공격 소스에 더 가까운 네트워크 에지에서 일반적인 악용 및 취약성으로부터 애플리케이션을 보호합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "d323ca3c-f7df-4f7e-b7c9-698d2bdad3e2",
+ "service": "Azure Front Door",
+ "text": "예기치 않은 트래픽으로부터 Azure Front Door를 보호합니다. Azure Front Door는 Azure DDoS 보호의 기본 계획을 사용하여 DDoS 공격으로부터 애플리케이션 엔드포인트를 보호합니다. 애플리케이션에서 다른 공용 IP 주소를 노출해야 하는 경우 고급 보호 및 검색 기능을 위해 해당 주소에 대한 DDoS Protection 표준 계획을 추가하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "fcb4a654-3e3b-408c-9538-a1dfefdef774",
+ "service": "Azure Front Door",
+ "text": "전송 중인 데이터를 보호합니다. 엔드투엔드 TLS(전송 계층 보안), HTTP에서 HTTPS로 리디렉션 및 관리형 TLS 인증서를 사용하도록 설정합니다(해당하는 경우). 자세한 내용은 Azure Front Door에 대한 TLS 모범 사례를 참조하세요.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "451f9871-3ca1-40b9-a1f6-c5eb0a37213b",
+ "service": "Azure Front Door",
+ "text": "비정상적인 활동을 모니터링합니다. 로그를 정기적으로 검토하여 공격 및 오탐을 확인합니다. Azure Front Door에서 Microsoft Sentinel과 같은 조직의 중앙 집중식 SIEM(보안 정보 및 이벤트 관리)으로 WAF 로그를 보내 위협 패턴을 감지하고 워크로드 디자인에 예방 조치를 통합합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "기본 규칙 집합은 OWASP 상위 10개 공격 유형 및 Microsoft 위협 인텔리전스의 정보에 따라 자주 업데이트됩니다. 특수 규칙 집합은 특정 사용 사례를 감지합니다. 예를 들어, 봇 규칙은 클라이언트 IP 주소를 기반으로 봇을 양호, 불량 또는 알 수 없음으로 분류합니다. 또한 악성 봇과 알려진 IP 주소를 차단하고 호출자의 지리적 위치에 따라 트래픽을 제한합니다. 규칙 집합을 조합하여 사용하면 다양한 의도를 가진 공격을 탐지하고 차단할 수 있습니다.",
+ "guid": "711c450c-ac42-4570-b2fd-22319b4a7913",
+ "service": "Azure Front Door",
+ "text": "잠재적으로 악의적인 트래픽을 탐지하고 차단하는 WAF 규칙 집합을 사용하도록 설정합니다. 이 기능은 프리미엄 계층에서 사용할 수 있습니다. 다음 규칙 집합을 사용하는 것이 좋습니다. - 기본- 봇 보호- IP 제한- 지역 필터링- 속도 제한",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "거짓 긍정을 줄이고 애플리케이션에 대한 합법적인 요청을 허용합니다.",
+ "guid": "a6fe49f4-0b1f-4677-af1f-b766f073ac6c",
+ "service": "Azure Front Door",
+ "text": "관리형 규칙 집합에 대한 제외를 만듭니다. 몇 주 동안 검색 모드에서 WAF 정책을 테스트하고 배포하기 전에 가양성을 조정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "TLS는 브라우저, Azure Front Door 및 백 엔드 원본 간의 데이터 교환이 암호화되어 변조를 방지하도록 합니다. Key Vault는 관리형 인증서 지원과 간단한 인증서 갱신 및 회전을 제공합니다.",
+ "guid": "450b511f-9e82-45ce-986b-769ea00dbeaa",
+ "service": "Azure Front Door",
+ "text": "엔드투엔드 TLS, HTTP에서 HTTPS로 리디렉션 및 관리형 TLS 인증서(해당하는 경우)를 사용하도록 설정합니다. Azure Front Door에 대한 TLS 모범 사례를 검토합니다. TLS 버전 1.2를 애플리케이션과 관련된 암호와 함께 허용되는 최소 버전으로 사용합니다. Azure Front Door 관리형 인증서는 작업을 쉽게 하기 위해 기본 선택이어야 합니다. 그러나 인증서의 수명 주기를 관리하려면 Azure Front Door 사용자 지정 도메인 엔드포인트에서 사용자 고유의 인증서를 사용하고 Key Vault에 저장합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "baeb625f-93ac-4181-be7b-07f474584985",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 계층 및 가격 책정을 검토합니다. 가격 계산기를 사용하여 각 계층의 현실적인 비용을 추정합니다. 시나리오에 대한 각 계층의 기능과 적합성을 비교합니다. 예를 들어 프리미엄 계층만 Private Link를 통해 원본에 연결할 수 있도록 지원합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "ed02627c-4a6d-4d6e-982f-a1fbee4a7259",
+ "service": "Azure Front Door",
+ "text": "대역폭 비용을 고려합니다. Azure Front Door의 대역폭 비용은 선택한 계층과 데이터 전송 유형에 따라 달라집니다. Azure Front Door는 청구 가능한 메트릭에 대한 기본 제공 보고서를 제공합니다. 대역폭과 관련된 비용을 평가하고 최적화 작업에 집중할 수 있는 위치를 평가하려면 Azure Front Door 보고서를 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "e2e0bb7e-521d-4729-9579-5c9539a68867",
+ "service": "Azure Front Door",
+ "text": "들어오는 요청을 최적화합니다. Azure Front Door는 들어오는 요청에 대한 요금을 청구합니다. 설계 구성에서 제한을 설정할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "337e7030-494e-4be5-8920-9144cb02c399",
+ "service": "Azure Front Door",
+ "text": "리소스를 효율적으로 사용합니다. Azure Front Door는 리소스 최적화에 도움이 되는 라우팅 방법을 사용합니다. 워크로드가 대기 시간에 매우 민감하지 않는 한 모든 환경에 트래픽을 균등하게 분산하여 배포된 리소스를 효과적으로 사용합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "add1a775-b13c-477b-acc7-38dbcccd51fe",
+ "service": "Azure Front Door",
+ "text": "조직에서 제공하는 공유 인스턴스를 사용하는 것이 좋습니다. 중앙 집중식 서비스에서 발생하는 비용은 워크로드 간에 공유됩니다. 그러나 안정성과의 절충을 고려하십시오. 고가용성 요구 사항이 있는 미션 크리티컬 애플리케이션의 경우 자율 인스턴스를 사용하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "48f2f718-1ae7-476f-a0a1-d6b83e47bbaa",
+ "service": "Azure Front Door",
+ "text": "기록된 데이터의 양에 주의하십시오. 특정 요청이 필요하지 않거나 로깅 데이터가 장기간 보존되는 경우 대역폭 및 스토리지와 관련된 비용이 발생할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "캐싱은 Azure Front Door 인스턴스에서 원본으로의 호출 수를 줄이기 때문에 데이터 전송 비용을 최적화합니다.",
+ "guid": "5a9023b8-c181-41d5-aeb5-9c09a85b0792",
+ "service": "Azure Front Door",
+ "text": "캐싱을 지원하는 엔드포인트에 대해 캐싱을 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "압축은 대역폭 소비를 줄이고 성능을 향상시킵니다.",
+ "guid": "84da68ee-7bb0-4a7d-ad70-d53c186ffd3e",
+ "service": "Azure Front Door",
+ "text": "파일 압축을 활성화하는 것이 좋습니다. 이 구성의 경우 응용 프로그램이 압축을 지원해야 하며 캐싱을 사용하도록 설정해야 합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "라우팅 결정을 내리는 데 필요하지 않은 요청을 비활성화하여 대역폭 비용을 절약할 수 있습니다.",
+ "guid": "5d3ad5cb-d897-4ae7-8d1c-ae8398c79ed6",
+ "service": "Azure Front Door",
+ "text": "단일 백 엔드 풀에서 상태 검사를 사용하지 않도록 설정합니다. Azure Front Door 원본 그룹에 원본이 하나만 구성된 경우 이러한 호출이 필요하지 않습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "5e8bfd0e-20d9-441f-814d-c2b49e7033ea",
+ "service": "Azure Front Door",
+ "text": "코드형 인프라(IaC) 기술을 사용합니다. Bicep 및 Azure Resource Manager 템플릿과 같은 IaC 기술을 사용하여 Azure Front Door 인스턴스를 프로비전합니다. 이러한 선언적 접근 방식은 일관성과 간단한 유지 관리를 제공합니다. 예를 들어 IaC 기술을 사용하여 새 규칙 집합 버전을 쉽게 채택할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "e9bd20e3-6e61-4907-9b84-4bd50b867875",
+ "service": "Azure Front Door",
+ "text": "구성을 단순화합니다. Azure Front Door를 사용하여 구성을 쉽게 관리할 수 있습니다. 예를 들어 아키텍처가 마이크로서비스를 지원한다고 가정합니다. Azure Front Door는 리디렉션 기능을 지원하므로 경로 기반 리디렉션을 사용하여 개별 서비스를 대상으로 지정할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "bb3943fb-6d97-458d-be6a-d9b71e8898d7",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 라우팅 방법을 사용하여 점진적 노출을 처리합니다. 가중치 기반 로드 밸런싱 접근 방식의 경우 카나리아 배포를 사용하여 특정 비율의 트래픽을 백엔드로 보낼 수 있습니다. 이 접근 방식은 새로운 기능과 릴리스를 배포하기 전에 제어된 환경에서 테스트하는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "5e1264a9-c6cc-4d4e-8e73-7ca4b3f05c17",
+ "service": "Azure Front Door",
+ "text": "워크로드 모니터링의 일환으로 Azure Front Door 운영 데이터를 수집하고 분석합니다. Azure Monitor 로그를 사용하여 관련 Azure Front Door 로그 및 메트릭을 캡처합니다. 이 데이터는 문제를 해결하고, 사용자 행동을 이해하고, 작업을 최적화하는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "8bdff2ab-0800-45ef-acab-ff7d320856aa",
+ "service": "Azure Front Door",
+ "text": "인증서 관리를 Azure로 오프로드합니다. 인증 순환 및 갱신과 관련된 운영 부담을 덜어줍니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "리디렉션을 사용하도록 설정하면 Azure Front Door는 보안 환경을 위해 HTTPS를 사용하도록 이전 프로토콜을 사용하는 클라이언트를 자동으로 리디렉션합니다.",
+ "guid": "829f4fea-1653-4093-aaf7-93b6a30aae1f",
+ "service": "Azure Front Door",
+ "text": "HTTP에서 HTTPS로의 리디렉션을 사용하여 이후 버전 호환성을 지원합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "수신 흐름 모니터링은 응용 프로그램 모니터링의 중요한 부분입니다. 요청을 추적하고 성능 및 보안을 개선하려고 합니다. Azure Front Door 구성을 디버그하려면 데이터가 필요합니다. 경보가 적용되면 중요한 운영 문제에 대한 즉각적인 알림을 받을 수 있습니다.",
+ "guid": "8ad83783-d01c-4772-a76b-39f7c9d61cc7",
+ "service": "Azure Front Door",
+ "text": "로그 및 메트릭을 캡처합니다. 리소스 활동 로그, 액세스 로그, 상태 프로브 로그 및 WAF 로그를 포함합니다. 알림을 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Front Door 프로필의 전체적인 보기는 WAF 메트릭을 통해 트래픽 및 보안 보고서를 기반으로 개선을 추진하는 데 도움이 됩니다.",
+ "guid": "e5e56ee9-79e4-4fa8-9fdb-600748d7df10",
+ "service": "Azure Front Door",
+ "text": "기본 제공 분석 보고서를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Front Door는 인증서를 발급하고 관리할 수 있습니다. 이 기능을 사용하면 인증서를 갱신할 필요가 없으며 유효하지 않거나 만료된 TLS 인증서로 인한 중단 위험을 최소화할 수 있습니다.",
+ "guid": "c2fcfdfb-fedb-4b47-93ac-1988250f76cd",
+ "service": "Azure Front Door",
+ "text": "가능한 경우 관리형 TLS 인증서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "각 하위 도메인을 개별적으로 추가하거나 지정하기 위해 구성을 수정할 필요가 없습니다.",
+ "guid": "0d7deaf4-ec0e-4e32-8b6b-64f3190d10f6",
+ "service": "Azure Front Door",
+ "text": "와일드카드 TLS 인증서를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "d18003c9-2d90-4e52-b503-5fcdb4ffcd96",
+ "service": "Azure Front Door",
+ "text": "예상 트래픽 패턴을 분석하여 용량을 계획합니다. 응용 프로그램이 다양한 부하에서 어떻게 작동하는지 이해하기 위해 철저한 테스트를 수행합니다. 동시 트랜잭션, 요청 속도 및 데이터 전송과 같은 요소를 고려합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "87c450a0-6a4a-453c-ae38-b8f21952ab79",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door 보고서를 정기적으로 검토하여 성능 데이터를 분석합니다. 이러한 보고서는 기술 수준에서 성능 지표 역할을 하는 다양한 메트릭에 대한 통찰력을 제공합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "a9d9ffe4-3fa7-48c8-bc1d-d0685e495dbe",
+ "service": "Azure Front Door",
+ "text": "데이터 전송을 최적화합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "161bc803-0586-4d21-b2ea-018d78209565",
+ "service": "Azure Front Door",
+ "text": "상태 프로브의 사용을 최적화합니다. 원본의 상태가 변경되는 경우에만 상태 프로브에서 상태 정보를 가져옵니다. 모니터링 정확도와 불필요한 트래픽 최소화 간의 균형을 유지합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "8596ddcf-3f3c-4b1c-baa1-a7eb844b2fb6",
+ "service": "Azure Front Door",
+ "text": "오리진 라우팅 방법을 검토합니다. Azure Front Door는 대기 시간 기반, 우선 순위 기반, 가중치 및 세션 선호도 기반 라우팅을 비롯한 다양한 라우팅 방법을 원본에 제공합니다. 이러한 방법은 응용 프로그램의 성능에 큰 영향을 줍니다. 시나리오에 가장 적합한 트래픽 라우팅 옵션에 대한 자세한 내용은 원본에 대한 트래픽 라우팅 방법을 참조하세요.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "205d3288-088c-4f24-af39-f9cb610c54a1",
+ "service": "Azure Front Door",
+ "text": "원본 서버의 위치를 검토합니다. 원본 서버의 위치는 애플리케이션의 응답성에 영향을 줍니다. 원본 서버는 사용자에게 더 가까이 있어야 합니다. Azure Front Door는 특정 위치의 사용자가 가장 가까운 Azure Front Door 진입점에 액세스할 수 있도록 합니다. 성능 이점에는 더 빠른 사용자 환경, Azure Front Door의 대기 시간 기반 라우팅 더 나은 사용, 사용자에게 더 가까운 콘텐츠를 저장하는 캐싱을 사용하여 데이터 전송 시간 최소화 등이 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Front Door는 네트워크 에지에서 콘텐츠를 캐시하는 강력한 콘텐츠 배달 네트워크 솔루션을 제공합니다. 캐싱은 백 엔드 서버의 부하를 줄이고 네트워크를 통한 데이터 이동을 줄여 대역폭 사용을 오프로드하는 데 도움이 됩니다.",
+ "guid": "2f6a39a1-884a-4661-accd-f534bf795a96",
+ "service": "Azure Front Door",
+ "text": "캐싱을 활성화합니다. 캐싱을 위해 쿼리 문자열을 최적화할 수 있습니다. 순전히 정적인 콘텐츠의 경우 쿼리 문자열을 무시하여 캐시 사용을 최대화합니다. 응용 프로그램에서 쿼리 문자열을 사용하는 경우 캐시 키에 포함하는 것이 좋습니다. 캐시 키에 쿼리 문자열을 포함하면 Azure Front Door가 구성에 따라 캐시된 응답 또는 기타 응답을 제공할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "Azure Front Door의 압축은 최적의 형식으로 콘텐츠를 제공하고, 페이로드가 더 작고, 사용자에게 콘텐츠를 더 빠르게 제공하는 데 도움이 됩니다.",
+ "guid": "09c90ce3-ade6-413a-9c1b-45d33d6d9069",
+ "service": "Azure Front Door",
+ "text": "다운로드 가능한 콘텐츠에 액세스할 때 파일 압축을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "'HEAD' 요청을 사용하면 전체 콘텐츠를 가져오지 않고도 상태 변경을 쿼리할 수 있습니다.",
+ "guid": "15daeecf-bcbf-4c46-b196-030839fd4864",
+ "service": "Azure Front Door",
+ "text": "Azure Front Door에서 상태 프로브를 구성할 때 'GET' 요청 대신 'HEAD' 요청을 사용하는 것이 좋습니다. 상태 프로브는 콘텐츠가 아닌 상태 코드만 읽습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "성능을 최적화하고 사용자 세션의 연속성을 유지하며, 특히 응용 프로그램이 로컬에서 상태 정보를 유지 관리해야 하는 경우 더욱 그렇습니다.",
+ "guid": "2a92f55e-a422-49f4-9a26-8ba819a17323",
+ "service": "Azure Front Door",
+ "text": "동일한 사용자의 요청이 동일한 백엔드 서버로 전달되어야 하는 경우 세션 선호도를 활성화해야 하는지 여부를 평가합니다. 안정성 관점에서는 이 방법을 권장하지 않습니다. 이 옵션을 사용하면 응용 프로그램이 사용자 세션을 중단하지 않고 정상적으로 복구되어야 합니다. 또한 부하 분산에는 여러 백엔드에 트래픽을 균등하게 분산하는 유연성을 제한하기 때문에 절충안이 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "ad7540f5-4cb1-4fc5-b168-e1cd97a0aef6",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 중요한 워크로드의 경우 AKS 클러스터에 가용성 영역을 사용합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "904fdfa5-af9a-4195-b683-e3bb7627b394",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 다중 클러스터 토폴로지에서 장애 조치(failover) 트래픽 처리를 포함하여 클러스터가 안정적으로 확장될 수 있도록 IP 주소 공간을 계획합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "2c1ab1ce-ee84-4737-b426-d236a98d3ae5",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 컨테이너 인사이트를 사용하여 클러스터를 모니터링하고 안정성에 영향을 미치는 이벤트에 대한 경고를 구성할 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "fa12c27b-df70-41fd-a93a-680e3cacf7ac",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 워크로드가 수평적 확장을 지원하도록 구축되었는지 확인하고 애플리케이션 준비 상태 및 상태를 보고합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "f2297ffc-fec7-43c6-9187-9739264c9d66",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 워크로드가 사용자 노드 풀에서 실행 중인지 확인하고 올바른 크기의 SKU를 선택합니다. 최소한 사용자 노드 풀에 대한 두 개의 노드와 시스템 노드 풀에 대한 세 개의 노드를 포함합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "0b542d27-1846-4d1b-9c5e-bd7c0d079cb3",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: AKS 작동 시간 SLA를 사용하여 프로덕션 워크로드에 대한 가용성 목표를 충족합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Kubernetes 스케줄러가 노드의 하드웨어별로 워크로드를 논리적으로 격리할 수 있습니다. 허용 오차와 달리, 일치하는 노드 선택기가 없는 Pod는 레이블이 지정된 노드에서 예약할 수 있으며, 이는 노드에서 사용되지 않는 리소스를 사용할 수 있도록 허용하지만 일치하는 노드 선택기를 정의하는 Pod에 우선 순위를 부여합니다. 유연성을 높이기 위해 노드 어피니티를 사용하면 Pod를 노드와 일치시킬 수 없는 경우 발생하는 작업을 정의할 수 있습니다.",
+ "guid": "b11892cd-f678-4399-bac8-b98095e250c6",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 노드 선택기 및 선호도를 사용하여 Pod 스케줄링을 제어합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "Azure CNI는 Windows 기반 노드 풀, 특정 네트워킹 요구 사항 및 Kubernetes 네트워크 정책과 같은 특정 시나리오에 필요합니다. 자세한 내용은 Kubenet 및 Azure CNI를 참조하세요.",
+ "guid": "9e3e8182-95e7-4953-9a2b-9cc2f77bf717",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 네트워크 요구 사항 및 클러스터 크기 조정에 따라 네트워크 플러그인을 적절하게 선택해야 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "AKS 작동 시간 SLA는 - Azure 가용성 영역을 사용하는 AKS 클러스터에 대한 Kubernetes API 서버 엔드포인트의 '99.95%' 가용성 또는 - Azure 가용성 영역을 사용하지 않는 AKS 클러스터에 대한 '99.9%' 가용성을 보장합니다.",
+ "guid": "4bfaa73e-a949-404a-a93b-a2b0a7feeff5",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 프로덕션 등급 클러스터에 AKS 작동 시간 SLA를 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "컨테이너 인사이트는 메트릭 API를 통해 Kubernetes에서 사용할 수 있는 컨트롤러, 노드 및 컨테이너의 상태와 성능을 모니터링하는 데 도움이 됩니다. Prometheus와 통합하면 애플리케이션 및 워크로드 메트릭을 수집할 수 있습니다.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "노드 풀을 여러 영역에 분산하면 다른 영역이 다운되더라도 한 노드 풀의 노드가 계속 실행됩니다. 공동 지역성 요구 사항이 있는 경우 단일 영역에 일반 VMSS 기반 AKS 배포 또는 근접 배치 그룹을 사용하여 노드 간 대기 시간을 최소화할 수 있습니다.",
+ "guid": "74ff8612-55b7-4029-81bc-da363b133f16",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 가용성 영역을 사용하여 AKS 에이전트 노드를 물리적으로 분리된 데이터 센터에 분산하여 Azure 지역 내에서 복원력을 최대화합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "인터넷 연결 워크로드는 Azure Front Door 또는 Azure Traffic Manager를 활용하여 AKS 클러스터 간에 트래픽을 전역적으로 라우팅해야 합니다.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 여러 Azure 지역에 배포된 AKS 클러스터를 배포하여 다중 지역 전략을 채택하여 가용성을 최대화하고 비즈니스 연속성을 제공합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "컨테이너 CPU 및 메모리 리소스 제한은 Kubernetes 클러스터에서 리소스 고갈을 방지하는 데 필요합니다.",
+ "guid": "f1a92d3f-eab5-4dc2-b0e8-75865842f205",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 애플리케이션 배포 매니페스트에서 Pod 리소스 요청 및 제한을 정의하고 Azure Policy를 사용하여 적용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "시스템 노드 풀에는 최소 2개의 vCPU와 4GB 메모리의 VM SKU가 필요하지만 4개 이상의 vCPU를 사용하는 것이 좋습니다. 자세한 요구 사항은 시스템 및 사용자 노드 풀을 참조하십시오.",
+ "guid": "55429203-5f2a-4ed1-9107-22d2c47b8ef1",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 시스템 노드 풀을 애플리케이션 워크로드로부터 격리된 상태로 유지합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "애플리케이션은 동일한 구성을 공유할 수 있으며 GPU 지원 VM, CPU 또는 메모리 최적화 VM 또는 0으로 확장 기능이 필요할 수 있습니다. 추가 관리 오버헤드를 줄이기 위해 많은 수의 노드 풀을 피합니다.",
+ "guid": "3603ec74-ada6-4050-baa3-fb25386fb7df",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 특정 요구 사항에 따라 애플리케이션을 전용 노드 풀로 분리합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "동시 아웃바운드 트래픽이 많은 Azure Load Balancer 제한과 관련된 안정성 문제를 방지하려면 대신 NAT Gateway를 사용하여 대규모로 신뢰할 수 있는 송신 트래픽을 지원합니다.",
+ "guid": "d441f009-ca99-4caf-9544-c71de5949d10",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 동시 아웃바운드 연결이 많은 워크로드를 실행하는 클러스터에 NAT 게이트웨이를 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "ff274266-a326-4c2c-9b85-7ce50c679b36",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 관리 ID를 사용하여 서비스 주체를 관리하고 회전하지 않도록 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "d44b3684-99d7-4946-ab75-fb58d9d8626e",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 최소 권한 액세스를 위해 Microsoft Entra ID와 함께 Kubernetes RBAC(역할 기반 액세스 제어)를 사용하고 구성 및 비밀 액세스를 보호하기 위해 관리자 권한 부여를 최소화합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "12e0cc02-b585-4d6f-97be-1b073e57522c",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Sentinel과 함께 컨테이너용 Microsoft Defender를 사용하여 클러스터 및 클러스터에서 실행되는 워크로드에서 위협을 감지하고 신속하게 대응합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "8e9c196f-b93a-46c5-9507-1e5cad83dd21",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 프라이빗 AKS 클러스터를 배포하여 API 서버에 대한 클러스터 관리 트래픽이 프라이빗 네트워크에 유지되도록 합니다. 또는 비공개가 아닌 클러스터에 대한 API 서버 허용 목록을 사용합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Web Application Firewall을 사용하여 HTTP(S) 트래픽을 보호합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "feba8909-0760-4a87-833a-b36fabbe722e",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 컨테이너 인식 스캔을 통해 CI/CID 파이프라인을 강화합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "Microsoft Entra ID를 사용하면 ID 관리 구성 요소가 중앙 집중화됩니다. 사용자 계정 또는 그룹 상태의 모든 변경 내용은 AKS 클러스터에 대한 액세스에서 자동으로 업데이트됩니다. Kubernetes 클러스터의 개발자와 애플리케이션 소유자는 서로 다른 리소스에 액세스해야 합니다.",
+ "guid": "463da713-377d-46e1-a9cf-a384a0657537",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra 통합을 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "AKS 및 Microsoft Entra ID를 사용하면 'imagePullSecrets' 비밀을 사용하지 않고 Azure Container Registry로 인증할 수 있습니다. 자세한 내용은 Azure Kubernetes Service에서 Azure Container Registry를 사용하여 인증을 검토하세요.",
+ "guid": "f9f7946f-b9b6-40d1-9f30-0bfb38be5c74",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra ID를 사용하여 Azure Container Registry에 인증합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "기본적으로 노드 풀과 API 서버 간의 네트워크 트래픽은 Microsoft 백본 네트워크를 이동합니다. 개인 클러스터를 사용하면 API 서버에 대한 네트워크 트래픽이 개인 네트워크에서만 유지되도록 할 수 있습니다.",
+ "guid": "10d61300-19e4-403c-bf22-a554c56b4afc",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 프라이빗 AKS 클러스터를 사용하여 API 서버에 대한 네트워크 트래픽을 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공용 클러스터를 사용하는 경우에도 권한 있는 IP 범위 기능을 사용하여 클러스터 API 서버에 도달할 수 있는 트래픽을 제한할 수 있습니다. 배포 빌드 에이전트의 공용 IP, 작업 관리 및 노드 풀의 송신 지점(예: Azure Firewall)과 같은 원본을 포함합니다.",
+ "guid": "b845e9a6-c5f3-4cf7-a956-6f1ffde88569",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 프라이빗이 아닌 AKS 클러스터의 경우 API 서버 권한이 부여된 IP 범위를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "쿠버네티스 API 서버에 대한 액세스를 보호하는 것은 클러스터를 보호하기 위해 할 수 있는 가장 중요한 일 중 하나이다. Kubernetes RBAC(역할 기반 액세스 제어)를 Microsoft Entra ID와 통합하여 API 서버에 대한 액세스를 제어합니다. 로컬 계정을 사용하지 않도록 설정하여 Microsoft Entra ID 기반 ID를 사용하여 모든 클러스터 액세스를 적용합니다.",
+ "guid": "0b3a4624-de6e-4cfe-af5b-19ad4708087d",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Microsoft Entra RBAC를 사용하여 API 서버를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터의 Pod 간 네트워크 트래픽을 보호하고 제어합니다.",
+ "guid": "caabd1f2-e6a9-4c55-9115-349d1d6716bb",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure 네트워크 정책 또는 Calico를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure Policy는 중앙 집중화되고 일관된 방식으로 클러스터에 대규모 적용 및 보호 기능을 적용하는 데 도움이 될 수 있습니다. 또한 Pod에 부여되는 기능과 회사 정책에 반하는 항목이 있는지 여부를 제어할 수 있습니다.",
+ "guid": "d65686d0-3988-49b5-8a98-59818ba81c50",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Policy를 사용하여 클러스터 및 Pod를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "컨테이너가 수행할 수 있는 작업에 대한 액세스를 제한합니다. 최소한의 권한을 제공하고 루트 또는 권한 있는 에스컬레이션을 사용하지 않도록 합니다.",
+ "guid": "f1e41c15-87e4-4135-ab6c-fb6803194f12",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 리소스에 대한 컨테이너 액세스를 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "들어오는 트래픽에서 잠재적인 공격을 검색하려면 Azure Application Gateway 또는 Azure Front Door에서 Azure WAF(Web Application Firewall)와 같은 웹 애플리케이션 방화벽을 사용합니다.",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Web Application Firewall을 사용하여 HTTP(S) 트래픽을 보호합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터의 아웃바운드 트래픽이 Azure Firewall 또는 HTTP 프록시와 같은 네트워크 보안 지점을 통과하고 있는지 확인합니다.",
+ "guid": "fa580200-65eb-4cc8-9c23-a5e68f1d86a7",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 클러스터 송신 트래픽을 제어합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "강력한 암호화를 사용하여 Azure Key Vault에서 비밀, 인증서 및 연결 문자열을 보호하고 회전합니다. 액세스 감사 로그를 제공하고 핵심 비밀을 배포 파이프라인에서 제외합니다.",
+ "guid": "0f5b5089-02fc-4f46-839c-7ff86610366a",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Key Vault와 함께 오픈 소스 Microsoft Entra 워크로드 ID 및 비밀 저장소 CSI 드라이버를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "클러스터, 컨테이너 및 해당 애플리케이션의 보안을 모니터링하고 유지 관리합니다.",
+ "guid": "d2895e72-e9c1-4af7-9e5a-53edc92423e7",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 컨테이너용 Microsoft Defender를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "c5148caa-6478-4ba8-993b-1a8640716d66",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 장기 용량이 예상되는 노드 풀 및 예약 인스턴스당 적절한 VM SKU를 사용합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "90ac2d0c-790e-4b2b-be35-60a55a19397a",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 적절한 관리 디스크 계층 및 크기를 사용합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "df9bb42d-c34f-488f-a50c-0624ca247647",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: CPU, 메모리, 스토리지 및 네트워크부터 시작하여 성능 메트릭을 검토하여 클러스터, 노드 및 네임스페이스별로 비용 최적화 기회를 식별합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "43ffe0b7-7bc4-42b0-a370-af4a943b19c0",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 자동 확장 처리를 사용하여 워크로드의 활동이 적을 때 축소합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "워크로드 요구 사항에 맞게 선택 항목을 일치시키면 불필요한 리소스에 대한 비용을 지불하지 않아도 됩니다.",
+ "guid": "c4ce3529-2891-41f1-aa3f-e87a791b01a3",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: SKU 선택 및 관리 디스크 크기를 워크로드 요구 사항에 맞게 조정합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "올바른 가상 머신 인스턴스 유형을 선택하는 것은 AKS에서 애플리케이션을 실행하는 비용에 직접적인 영향을 미치므로 중요합니다. 적절한 사용률 없이 고성능 인스턴스를 선택하면 낭비적인 지출이 발생할 수 있으며, 강력한 인스턴스를 선택하면 성능 문제와 가동 중지 시간이 증가할 수 있습니다. 올바른 가상 머신 인스턴스 유형을 결정하려면 워크로드 특성, 리소스 요구 사항 및 가용성 요구 사항을 고려합니다.",
+ "guid": "1088060f-7467-48db-950d-5890503e2974",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 올바른 가상 머신 인스턴스 유형을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "AKS는 ARM64 Ubuntu 에이전트 노드뿐만 아니라 더 낮은 비용으로 더 나은 성능을 제공할 수 있는 클러스터 내에서 Intel 및 ARM 아키텍처 노드를 혼합하여 만들 수 있도록 지원합니다.",
+ "guid": "ce50c713-ad3e-4781-9193-63485491aa48",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Arm 아키텍처를 기반으로 가상 머신을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스폿 VM을 사용하면 사용하지 않는 Azure 용량을 대폭 할인된 가격(종량제 가격과 비교하여 최대 90%)으로 활용할 수 있습니다. Azure에 용량이 다시 필요한 경우 Azure 인프라는 스폿 노드를 제거합니다.",
+ "guid": "7a281f48-217a-4668-aa30-c9d2c84d0d72",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Spot Virtual Machines를 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "여러 요인으로 인해 리소스 비용은 Azure의 지역마다 다릅니다. 비용, 대기 시간 및 규정 준수 요구 사항을 평가하여 워크로드를 비용 효율적으로 실행하고 있는지, 최종 사용자에게 영향을 미치거나 추가 네트워킹 요금이 발생하지 않는지 확인합니다.",
+ "guid": "433efe5b-3776-459c-8560-058f87773838",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 적절한 지역을 선택합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "이미지를 간소화하면 새 노드가 이러한 이미지를 다운로드해야 하므로 비용을 줄이는 데 도움이 됩니다. 애플리케이션이 시작되는 동안 사용자 요청 실패 또는 시간 초과를 방지하여 잠재적으로 오버프로비저닝으로 이어질 수 있도록 컨테이너가 가능한 한 빨리 시작될 수 있는 방식으로 이미지를 빌드합니다.",
+ "guid": "65d3f70e-457a-4d62-8140-de2b0c4f7f99",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 작고 최적화된 이미지를 유지 관리합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "AKS 클러스터의 노드 수를 자동으로 축소하면 수요가 낮을 때 효율적인 클러스터를 실행하고 수요가 돌아올 때 확장할 수 있습니다.",
+ "guid": "b4d583e3-7268-41d9-9e93-0394bed77298",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Cluster Autoscaler를 활성화하여 과도한 리소스 용량에 대한 응답으로 에이전트 노드 수를 자동으로 줄입니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "노드 자동 프로비저닝은 SKU 선택 프로세스를 간소화하고 보류 중인 Pod 리소스 요구 사항에 따라 가장 효율적이고 비용 효율적인 방식으로 워크로드를 실행하기 위한 최적의 VM 구성을 결정합니다.",
+ "guid": "48ae7de4-26f7-457c-b1a4-a18467b7401d",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 노드 자동 프로비전을 사용하도록 설정하여 VM SKU 선택을 자동화합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "CPU 사용률 또는 클러스터 스케일 인 작업을 지원하는 기타 선택 메트릭에 따라 배포의 Pod 수를 조정합니다.",
+ "guid": "d3194174-d037-4a35-9cd5-244d377cfabb",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Horizontal Pod Autoscaler를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Pod의 크기를 적절하게 조정하고 과거 사용량에 따라 요청 및 제한을 동적으로 설정합니다.",
+ "guid": "091dc052-7bf8-4dd1-aca1-d514ddcb2aa8",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Vertical Pod Autoscaler(미리 보기)를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "처리되는 이벤트 수에 따라 크기를 조정합니다. 50+ KEDA 스케일러의 풍부한 카탈로그에서 선택하십시오.",
+ "guid": "fe3d7c5f-f5a9-4b5e-a4f9-81bf76930967",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: KEDA(Kubernetes Event Driven Autoscaling)를 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 최적화를 가능하게 하는 기반은 비용 절감 클러스터의 확산입니다. 재무 운영 접근 방식(FinOps)은 조직이 클라우드 비용을 절감하는 데 도움이 되는 데 자주 사용됩니다. 이는 재무, 운영 및 엔지니어링 팀 간의 협업을 통해 비용 절감 목표를 조정하고 클라우드 비용에 대한 투명성을 확보하는 관행입니다.",
+ "guid": "3a7d1aa1-37a0-40aa-acbf-ff1852c15c93",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 클라우드 재무 규율과 문화적 관행을 채택하여 클라우드 사용에 대한 소유권을 촉진합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "용량을 적절하게 계획한 경우 워크로드를 예측 가능하고 장기간 동안 존재하므로 Azure 예약 또는 절약 플랜에 등록하여 리소스 비용을 더욱 줄입니다.",
+ "guid": "ed669535-43d7-4988-9ec5-3b70762e54eb",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Reservations 또는 Azure Savings Plan에 등록합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "컨테이너 인사이트는 클러스터, 유휴 및 할당되지 않은 리소스에 대한 실행 가능한 인사이트를 제공하는 데 도움이 됩니다. 또한 컨테이너 인사이트는 Prometheus 메트릭 수집을 지원하고 Azure Managed Grafana와 통합되어 애플리케이션 및 인프라에 대한 전체적인 보기를 얻을 수 있습니다.",
+ "guid": "5742c5ca-120a-4b6e-a5cf-51f13b04966c",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 분석 클러스터 확장을 사용하면 클러스터 또는 네임스페이스의 다양한 Kubernetes 리소스와 관련된 비용에 대한 세분화된 인사이트를 얻을 수 있습니다.",
+ "guid": "6588bddb-d7b6-41a6-8b87-628a758df2fe",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: AKS 비용 분석 추가 기능을 구성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "38e28f4f-7465-4e3a-bf05-4d6072d4bae6",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Bicep, Terraform 등을 사용하여 템플릿 기반 배포를 사용합니다. 모든 배포가 반복 가능하고 추적 가능하며 소스 코드 리포지토리에 저장되어 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "1255b75f-0f3b-4fd7-96c5-17e4e30bbe11",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 자동화된 프로세스를 구축하여 클러스터가 필요한 클러스터 전체 구성 및 배포로 부트스트랩되도록 합니다. 이것은 종종 GitOps를 사용하여 수행됩니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "07b2d10f-e373-484e-9ece-f182a1b714b2",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 소프트웨어 개발 수명 주기 내에서 워크로드에 대해 반복 가능하고 자동화된 배포 프로세스를 사용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "6ec1af22-6132-43a6-9286-20333ee6e244",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 제어 플레인 또는 핵심 API 서버 상호 작용이 기록되도록 진단 설정을 사용하도록 설정합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "4811307d-53ce-4cf9-b022-2c2ab1be5596",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 컨테이너 인사이트를 사용하여 메트릭, 로그 및 진단을 수집하여 클러스터 및 클러스터에서 실행되는 워크로드의 가용성과 성능을 모니터링할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "20301c55-a815-4a3a-83ec-fe6d1789e697",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 워크로드는 수집할 수 있는 원격 분석을 내보내도록 설계되어야 하며, 여기에는 활동성 및 준비 상태도 포함되어야 합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "13d37985-5266-4064-97f0-7c7aa7491941",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 쿠버네티스를 대상으로 하는 카오스 엔지니어링 사례를 사용하여 애플리케이션 또는 플랫폼 안정성 문제를 식별합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "d96fea7e-598f-4f59-95c6-d75fc8db1c7a",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 워크로드를 최적화하여 컨테이너에서 효율적으로 운영하고 배포합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "8e8fbde0-f037-4eec-bac2-634ab73d7b0a",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: Azure Policy를 사용하여 클러스터 및 워크로드 거버넌스를 적용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "AKS에서 애플리케이션을 성공적으로 빌드하고 실행하려면 이해하고 구현해야 할 주요 고려 사항이 있습니다. 이러한 영역에는 멀티 테넌시 및 스케줄러 기능, 클러스터 및 Pod 보안 또는 비즈니스 연속성 및 재해 복구가 포함됩니다.",
+ "guid": "95ee25c6-37fc-47c0-a3e1-eea5c1324edb",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: AKS 모범 사례 설명서를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Chaos Studio는 오류를 시뮬레이션하고 재해 복구 상황을 트리거하는 데 도움이 될 수 있습니다.",
+ "guid": "2695b4b9-e125-4644-a27c-977eefdbce73",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: Azure Chaos Studio를 검토합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "컨테이너 인사이트는 메트릭 API 및 컨테이너 로그를 통해 Kubernetes에서 사용할 수 있는 컨트롤러, 노드 및 컨테이너에서 메모리 및 프로세서 메트릭을 수집하여 컨테이너의 성능을 모니터링하는 데 도움이 됩니다.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 컨테이너 인사이트를 사용하여 클러스터 모니터링을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "AKS 클러스터에서 실행되는 애플리케이션의 코드 기반 모니터링을 위해 Application Insights를 구성합니다.",
+ "guid": "405f6de4-e769-4066-8e8c-f7887a66d42a",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: Azure Monitor를 사용하여 애플리케이션 성능을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Monitor의 일부인 컨테이너 인사이트는 Prometheus 메트릭을 수집하기 위한 원활한 온보딩 환경을 제공합니다. 자세한 내용은 Configure scraping of Prometheus metrics를 참조하십시오.",
+ "guid": "3c42907d-254e-4b0f-b579-7362e0f37eaa",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 컨테이너 인사이트를 사용하여 Prometheus 메트릭 스크래핑을 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "인터넷 연결 워크로드는 Azure Front Door 또는 Azure Traffic Manager를 활용하여 AKS 클러스터 간에 트래픽을 전역적으로 라우팅해야 합니다.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 여러 Azure 지역에 배포된 AKS 클러스터를 배포하여 다중 지역 전략을 채택하여 가용성을 최대화하고 비즈니스 연속성을 제공합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Azure Policy는 중앙 집중화되고 일관된 방식으로 클러스터에 대규모 적용 및 보호 기능을 적용하는 데 도움이 될 수 있습니다. 또한 Pod에 부여되는 기능과 회사 정책에 반하는 항목이 있는지 여부를 제어할 수 있습니다.",
+ "guid": "02f47a84-6d0c-4243-a5ab-743c85dcce67",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Azure Policy를 사용하여 클러스터 및 Pod 구성 표준을 운영합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Kubernetes 및 수신 컨트롤러는 릴리스 엔지니어링 프로세스에 포함할 수 있는 많은 고급 배포 패턴을 지원합니다. 블루-그린 배포 또는 카나리아 릴리스와 같은 패턴을 고려합니다.",
+ "guid": "ecbf4266-e97a-4b02-8d02-ca2fd42cea5b",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 릴리스 엔지니어링 프로세스에서 플랫폼 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "배포 및 테스트를 포함한 미션 크리티컬 설계 영역을 자동화합니다.",
+ "guid": "4646ab36-8c28-4740-afac-c9819f0f6ac9",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 미션 크리티컬 워크로드의 경우 스탬프 수준 블루/그린 배포를 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "de0e6d8d-65a5-46b0-891b-2ad2aa09de11",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: SKU, 자동 크기 조정 설정, IP 주소 지정 및 장애 조치(failover) 고려 사항을 포함하는 자세한 용량 계획 연습을 수행하고 반복합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "b78aea0e-3fd2-4dcc-b617-34a26892aa76",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 클러스터 자동 크기 조정기를 사용하여 응답 워크로드 요구량에 따라 에이전트 노드 수를 자동으로 조정할 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "9b168db7-a88b-4e2c-b555-bc525c7e48da",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: Horizontal Pod 자동 스케일러를 사용하여 CPU 사용률 또는 기타 선택 메트릭에 따라 배포의 Pod 수를 조정합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "deadeedd-dab6-4774-84df-f5223ed6ede1",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: Pod 및 클러스터 자동 크기 조정기를 모두 실행하는 지속적인 부하 테스트 작업을 수행합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "7b1e9a65-2d5d-4eeb-a349-136895131b06",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 워크로드를 서로 다른 노드 풀로 분리하여 독립적인 호출을 허용합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "용량 계획을 공식화한 후에는 클러스터의 리소스 사용률을 지속적으로 관찰하여 자주 업데이트해야 합니다.",
+ "guid": "7b4e5e8b-6e55-4db7-a330-19990bd1e0d2",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 상세한 용량 계획을 개발하고 지속적으로 검토 및 수정합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "AKS 클러스터의 노드 수를 자동으로 확장하거나 축소하는 기능을 사용하면 효율적이고 비용 효율적인 클러스터를 실행할 수 있습니다.",
+ "guid": "631272b4-9ca7-4e6f-ae9b-3c55946b3924",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 아키텍처: 클러스터 자동 크기 조정기를 사용하여 리소스 제약 조건에 대한 응답으로 에이전트 노드 수를 자동으로 조정할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "항상 실행 중인 노드가 필요한 시스템 노드 풀과 달리 사용자 노드 풀을 사용하면 확장 또는 축소할 수 있습니다.",
+ "guid": "85ffe644-7c4b-4f2d-b2fa-ed8e7c8d2e84",
+ "service": "Azure Kubernetes Service",
+ "text": "클러스터 및 워크로드 아키텍처: 워크로드를 서로 다른 노드 풀로 분리하고 사용자 노드 풀의 크기를 조정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "필요한 작업에 대한 리소스 분산을 제어하는 데 도움이 됩니다.",
+ "guid": "bb7f1396-6a84-4e6d-b6d8-5fc48b4c2b5f",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: AKS 고급 스케줄러 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "모든 크기 조정 결정을 CPU 또는 메모리 메트릭에서 파생할 수 있는 것은 아닙니다. 규모 조정 고려 사항은 더 복잡하거나 외부 데이터 요소에서 오는 경우가 많습니다. KEDA를 사용하여 워크로드와 관련된 신호를 기반으로 의미 있는 자동 크기 조정 규칙 집합을 빌드합니다.",
+ "guid": "bc908693-9e21-478c-9fde-e92ba949c89e",
+ "service": "Azure Kubernetes Service",
+ "text": "워크로드 아키텍처: 의미 있는 워크로드 확장 메트릭을 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "f4804af8-4f42-450d-916c-5593c145ccf9",
+ "service": "Azure Machine Learning",
+ "text": "복원력: AKS와 같은 가용성 영역을 지원하는 환경에 모델을 배포합니다. 배포가 가용성 영역에 분산되도록 하면 데이터 센터 오류가 발생하는 경우에도 배포를 사용할 수 있습니다. 안정성과 가용성을 향상시키려면 다중 지역 배포 토폴로지를 고려합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "995d097a-0de2-4431-947f-561b49a60f21",
+ "service": "Azure Machine Learning",
+ "text": "복원력: 학습과 추론 모두에 충분한 컴퓨팅이 있는지 확인합니다. 리소스 계획을 통해 컴퓨팅 SKU 및 크기 조정 설정이 워크로드의 요구 사항을 충족하는지 확인합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "d494b7f5-ad32-471f-9fc7-18945ca454ab",
+ "service": "Azure Machine Learning",
+ "text": "복원력: 예비 작업에 사용되는 Machine Learning 작업 영역을 프로덕션에 사용되는 작업 영역과 분리합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "6f1dd2cc-e0af-4203-ab0b-b7c65b7b18ae",
+ "service": "Azure Machine Learning",
+ "text": "복원력: 유추를 위해 관리형 온라인 엔드포인트를 사용하는 경우 블루-그린 배포와 같은 릴리스 전략을 사용하여 가동 중지 시간을 최소화하고 새 버전 배포와 관련된 위험을 줄입니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "558fcdcf-33e7-4385-82fd-424bc8ae64bc",
+ "service": "Azure Machine Learning",
+ "text": "비즈니스 요구 사항: SLA(서비스 수준 계약)를 요인으로 고려하여 안정성 요구 사항에 따라 컴퓨팅 클러스터, 컴퓨팅 인스턴스 및 외부화된 추론 호스트의 사용을 선택합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "de5be058-1d22-4f38-96aa-3fbca5071a8f",
+ "service": "Azure Machine Learning",
+ "text": "복구: 대규모 모델을 학습할 때 Machine Learning에서 지원하는 검사점 지정 기능과 같은 자체 복구 기능이 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "20104165-9764-4920-98dd-63fddc5f58d3",
+ "service": "Azure Machine Learning",
+ "text": "복구: 복구 전략이 정의되어 있는지 확인합니다. Machine Learning에는 자동 장애 조치(failover)가 없습니다. 따라서 작업 영역과 Key Vault, Azure Storage 및 Azure Container Registry와 같은 모든 종속성을 포함하는 전략을 설계해야 합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "다중 지역 배포는 한 지역에서 중단이 발생하더라도 Machine Learning 워크로드가 계속 실행되도록 합니다. 다중 지역 배포는 지역 간 부하 분산을 개선하여 서로 다른 지리적 영역에 있는 사용자의 성능을 향상시킬 수 있습니다. 자세한 내용은 비즈니스 연속성 및 재해 복구를 위한 장애 조치(failover)를 참조하세요.",
+ "guid": "046ff188-7d68-492f-850c-c65ee0c9a962",
+ "service": "Azure Machine Learning",
+ "text": "다중 지역 모델 배포: 안정성과 가용성을 향상시키려면 가능한 경우 다중 지역 배포 환경을 고려합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "모델 체크포인트는 훈련 중에 기계 학습 모델의 상태를 주기적으로 저장하므로 중단, 실패 또는 종료 시 복원할 수 있습니다. 자세한 내용은 Boost checkpoint speed and reduce cost with Nebula를 참조하십시오.",
+ "guid": "8eaf992c-ccd9-495f-b625-d4f544d38d38",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습 복원력: Azure Container for PyTorch, TensorFlow Estimator 클래스 또는 모델 검사점을 지원하는 Run 개체 및 FileDataset 클래스를 포함하여 Machine Learning에서 지원하는 검사점 지정 기능을 사용합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "우선 순위가 낮은 가상 머신은 할인된 가격으로 제공되지만 선점할 수 있습니다. 전용 가상 머신 계층을 사용하는 클러스터는 선점되지 않습니다.",
+ "guid": "19720202-b456-44c4-8ff1-28eaa20e1a7d",
+ "service": "Azure Machine Learning",
+ "text": "계산 클러스터에 전용 가상 머신 계층 사용: 일괄 처리 유추를 위해 계산 클러스터에 전용 가상 머신 계층을 사용하여 일괄 처리 작업이 선점되지 않도록 합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "303116b4-65cb-43e5-8ceb-7bebaf16b568",
+ "service": "Azure Machine Learning",
+ "text": "가용성: 작업 영역에 대한 액세스를 가상 네트워크 내의 리소스로 제한하여 Machine Learning 작업 영역의 공격 표면을 줄입니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "eb9cc8b2-c9a3-4fe7-9578-8918ab53eae6",
+ "service": "Azure Machine Learning",
+ "text": "기밀성: 네트워크 격리를 구현하여 Machine Learning 작업 영역에서 데이터 반출을 방지합니다. 모든 외부 리소스에 대한 액세스가 명시적으로 승인되고 다른 모든 외부 리소스에 대한 액세스가 허용되지 않는지 확인합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "1cb53633-f0c7-45f4-a98b-76b0314a94ba",
+ "service": "Azure Machine Learning",
+ "text": "무결성: 최소 권한 원칙에 따라 외부 리소스에 대한 Machine Learning 작업 영역을 인증하고 권한을 부여하는 액세스 제어를 구현합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "30341513-1f91-480e-bc19-8031f1851087",
+ "service": "Azure Machine Learning",
+ "text": "무결성: 특정 사용 사례 또는 프로젝트를 기반으로 작업 영역을 설정하여 Machine Learning 작업 영역에 대한 사용 사례 분리를 구현합니다. 이 접근 방식은 사용 사례 또는 프로젝트에 대한 데이터 및 실험 자산에 액세스해야 하는 개인만 작업 영역에 액세스할 수 있도록 하여 최소 권한 원칙을 준수합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "1274dc7a-a81c-409d-8cd6-e3bda0ee8687",
+ "service": "Azure Machine Learning",
+ "text": "무결성: 기본 모델에 대한 액세스를 규제합니다. 승인된 레지스트리만 모델 레지스트리의 모델에 액세스할 수 있도록 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "ca17ad83-954c-4eba-a30f-9e7c3c2079f6",
+ "service": "Azure Machine Learning",
+ "text": "무결성: 승인된 컨테이너 레지스트리에 대한 액세스를 규제합니다. Machine Learning 컴퓨팅이 승인된 레지스트리에만 액세스할 수 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "1ffe0cf7-a26a-4018-bef8-4d7fdf3291e2",
+ "service": "Azure Machine Learning",
+ "text": "무결성: Machine Learning 컴퓨팅에서 실행할 수 있는 Python 패키지를 규제합니다. Python 패키지를 규제하면 신뢰할 수 있는 패키지만 실행됩니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "8d9aea78-3ebe-4ec6-968d-3daa07abc239",
+ "service": "Azure Machine Learning",
+ "text": "무결성: Machine Learning 컴퓨팅 환경에서 학습에 사용되는 코드에 서명해야 합니다. 코드 서명을 요구하면 실행되는 코드가 신뢰할 수 있는 출처에서 제공되었으며 변조되지 않았음을 확인할 수 있습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "a6664b76-0292-4bd4-841e-859b65a569c0",
+ "service": "Azure Machine Learning",
+ "text": "기밀성: Machine Learning 작업 영역 및 관련 리소스(예: 작업 영역 스토리지 계정)에 대한 RBAC(역할 기반 액세스 제어)에 대한 최소 권한 원칙을 준수하여 개인이 해당 역할에 필요한 권한만 갖도록 하여 잠재적인 보안 위험을 최소화합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "2a509fe2-ce1d-410c-a5cb-780eb8dfaf15",
+ "service": "Azure Machine Learning",
+ "text": "무결성: 미사용 데이터 및 전송 중인 데이터에 대한 암호화를 구현하여 신뢰와 확인된 액세스를 설정합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "보안 기준은 네트워크 보안, ID 관리, 데이터 보호 및 권한 있는 액세스와 같은 중요한 보안 측면에 대한 맞춤형 지침을 제공합니다. 최적의 보안을 위해 클라우드용 Microsoft Defender 사용하여 이러한 측면을 모니터링합니다.",
+ "guid": "0e30e670-0c69-4c8a-82f5-b88494e56879",
+ "service": "Azure Machine Learning",
+ "text": "보안 기준: Machine Learning Service의 보안 및 규정 준수를 강화하려면 Machine Learning에 대한 Azure 보안 기준을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "관리형 가상 네트워크 격리는 작업 영역을 다른 네트워크로부터 격리하여 무단 액세스의 위험을 줄여 보안을 강화합니다. 조직 내의 다른 네트워크에서 위반이 발생하는 시나리오에서 Machine Learning 작업 영역의 격리된 네트워크는 영향을 받지 않고 유지되어 기계 학습 워크로드를 보호합니다.",
+ "guid": "aeb66f5c-45bc-45d8-a7bf-a6bd5c6e5f9a",
+ "service": "Azure Machine Learning",
+ "text": "관리형 가상 네트워크 격리: Machine Learning에 대한 관리형 가상 네트워크 격리를 구성합니다. 관리되는 가상 네트워크 격리를 사용하도록 설정하면 작업 영역에 대한 관리되는 가상 네트워크가 만들어집니다. 작업 영역에 대해 만드는 관리형 컴퓨팅 리소스는 이 관리형 가상 네트워크를 자동으로 사용합니다. 관리되는 가상 네트워크 격리를 구현할 수 없는 경우 네트워크 토폴로지 권장 사항에 따라 작업 영역 리소스에 대한 프라이빗 엔드포인트를 포함하여 솔루션의 나머지 리소스와 떨어진 전용 서브넷으로 컴퓨팅을 분리해야 합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Machine Learning 네트워크 격리는 작업 영역에 대한 액세스가 안전하고 제어되도록 하여 보안을 강화합니다. 작업 영역에 대해 구성된 프라이빗 엔드포인트를 사용하면 개인 IP 주소를 통해서만 작업 영역에 대한 액세스를 제한할 수 있습니다.",
+ "guid": "af44fe21-713a-435f-97bd-34ec8221f729",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 네트워크 격리: Machine Learning 작업 영역에 대한 프라이빗 엔드포인트를 구성하고 해당 프라이빗 엔드포인트를 통해 작업 영역에 연결합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "이 구성은 데이터 반출 위험을 최소화하여 데이터 보안을 향상시킵니다. 이 구성을 사용하도록 설정하면 시스템에 대한 액세스 권한을 얻은 악의적인 행위자가 승인되지 않은 외부 대상으로 데이터를 보낼 수 없습니다.",
+ "guid": "d1cdc5a5-eb9a-43d7-ad74-6169482b28d0",
+ "service": "Azure Machine Learning",
+ "text": "승인된 아웃바운드 액세스만 허용: Machine Learning 작업 영역 관리 아웃바운드 액세스에서 아웃바운드 모드를 '승인된 아웃바운드만 허용'으로 구성하여 데이터 반출 위험을 최소화합니다. 액세스해야 하는 리소스에 대한 프라이빗 엔드포인트, 서비스 태그 또는 FQDN(정규화된 도메인 이름)을 구성합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워크 격리는 Azure PaaS(Platform as a Service) 솔루션에 대한 액세스를 개인 IP 주소로만 제한하여 보안을 강화합니다.",
+ "guid": "0d8346f9-f2fe-4a4e-b153-662c5c6e4510",
+ "service": "Azure Machine Learning",
+ "text": "종속 서비스에 대한 가상 네트워크 격리: 프라이빗 엔드포인트를 사용하여 Storage, Key Vault 및 Container Registry와 같은 종속 서비스를 구성하고 공용 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "관리 ID는 자격 증명을 저장하고 서비스 주체를 수동으로 관리 및 회전할 필요성을 제거하여 보안을 향상시킵니다.",
+ "guid": "bf2a8ddf-263e-46fb-b73a-ca8b9ba168e7",
+ "service": "Azure Machine Learning",
+ "text": "관리 ID: Machine Learning과 다른 서비스 간의 인증에 관리 ID를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "로컬 인증을 사용하지 않도록 설정하면 Machine Learning 컴퓨팅의 보안이 강화되고 ID 및 리소스 자격 증명에 대한 중앙 집중식 제어 및 관리가 제공됩니다.",
+ "guid": "70477454-0ddb-4ad6-9342-1ad6290bbb06",
+ "service": "Azure Machine Learning",
+ "text": "로컬 인증 사용 안 함: Machine Learning 컴퓨팅 클러스터 및 인스턴스에 대한 로컬 인증을 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "SSH 액세스를 비활성화하면 권한이 없는 개인이 액세스 권한을 얻어 잠재적으로 시스템에 해를 끼치는 것을 방지하고 무차별 암호 대입 공격으로부터 사용자를 보호할 수 있습니다.",
+ "guid": "cbd359bc-8057-4a9c-9183-c4fc1e70a69b",
+ "service": "Azure Machine Learning",
+ "text": "공용 SSH 포트 사용 안 함: 'remoteLoginPortPublicAccess'를 '사용 안 함'으로 설정하여 Machine Learning 컴퓨팅 클러스터에서 공용 SSH(Secure Shell) 포트가 닫혀 있는지 확인합니다. 다른 컴퓨팅을 사용하는 경우 유사한 구성을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "컴퓨팅 인스턴스 또는 클러스터에 대한 무단 액세스 가능성을 제한하여 보안을 강화하기 위해 공용 IP 주소를 프로비저닝하지 마십시오.",
+ "guid": "cc532133-2bba-484f-b316-035b93b3ee6a",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 컴퓨팅에 대한 공용 IP 주소를 프로비전하지 않음: Machine Learning 컴퓨팅 클러스터 또는 컴퓨팅 인스턴스를 프로비전할 때 enableNodePublicIp를 'false'로 설정합니다. 다른 컴퓨팅을 사용하는 경우 유사한 구성을 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "최신 이미지를 사용하면 최신 보안 패치를 포함하여 일관되고 안정적이며 안전한 환경을 유지할 수 있습니다.",
+ "guid": "cb49b636-1011-43a0-a12b-25378f677153",
+ "service": "Azure Machine Learning",
+ "text": "최신 운영 체제 이미지 가져오기: 컴퓨팅 인스턴스를 다시 만들어 최신 운영 체제 이미지를 가져옵니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "엄격한 작업 영역 액세스 제어는 개인이 자신의 역할에 필요한 권한만 갖도록 하여 보안을 강화합니다. 예를 들어 데이터 사이언티스트는 실험을 실행할 수 있는 액세스 권한이 있지만 보안 설정을 수정할 수는 없으므로 잠재적인 보안 위험을 최소화할 수 있습니다.",
+ "guid": "17cac647-8c6f-4a6f-a66d-c436e17c91c8",
+ "service": "Azure Machine Learning",
+ "text": "엄격한 Machine Learning 작업 영역 액세스 제어: Microsoft Entra ID 그룹을 사용하여 작업 영역 액세스를 관리하고 RBAC에 대한 최소 권한 원칙을 준수합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "모델 카탈로그에서 특정 레지스트리로 배포를 제한하면 승인된 레지스트리에만 모델을 배포할 수 있습니다. 이 접근 방식은 오픈 소스 기본 모델에 대한 액세스를 규제하는 데 도움이 됩니다.",
+ "guid": "18a61ee3-34d2-484a-a740-3c90d23c64b9",
+ "service": "Azure Machine Learning",
+ "text": "모델 카탈로그 배포 제한: 모델 배포를 특정 레지스트리로 제한합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "미사용 데이터를 암호화하면 사용자가 직접 관리하는 키를 사용하여 중요한 데이터를 암호화하여 데이터 보안을 강화할 수 있습니다. 자체 암호화 키를 관리하기 위한 규정 요구 사항이 있는 경우 이 기능을 사용하여 해당 요구 사항을 준수합니다.",
+ "guid": "5e14c11e-83fb-40f1-a8dc-d96767d73a13",
+ "service": "Azure Machine Learning",
+ "text": "미사용 데이터 암호화: Machine Learning에서 고객 관리형 키를 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "인바운드 및 아웃바운드 요구 사항을 제한하여 데이터 반출 위험을 최소화합니다.",
+ "guid": "6782cd14-a63d-466c-a7c9-8a92afe3b396",
+ "service": "Azure Machine Learning",
+ "text": "데이터 반출 위험 최소화: 데이터 반출 방지를 구현합니다. 예를 들어 송신 가상 네트워크 트래픽을 필터링하고 특정 Azure Storage 계정으로만 데이터 반출을 허용하는 서비스 엔드포인트 정책을 만듭니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "cac38d1e-d21e-4af5-834d-d607469c6439",
+ "service": "Azure Machine Learning",
+ "text": "사용량 최적화: 워크로드 요구 사항에 맞게 적절한 리소스를 선택합니다. 예를 들어 CPU 또는 GPU, 다양한 SKU 또는 우선 순위가 낮은 VM과 일반 VM 중에서 선택합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "8e98fc4b-2fa4-44b9-9aa7-1c01f67aecb7",
+ "service": "Azure Machine Learning",
+ "text": "사용량 최적화: 낭비를 줄이기 위해 사용되지 않는 컴퓨팅 리소스가 유휴 상태일 때 축소되거나 종료되도록 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "dfafcc35-c8fb-429b-92c0-53f045884794",
+ "service": "Azure Machine Learning",
+ "text": "사용 최적화: 정책을 적용하고 설계의 상한 및 하한을 준수하도록 할당량을 구성합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "14149f48-97d8-4614-9236-681f5fd42b34",
+ "service": "Azure Machine Learning",
+ "text": "사용 최적화: 학습 워크로드 병렬 처리를 테스트하여 저렴한 SKU에서 학습 요구 사항을 충족할 수 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "945e262b-3a0f-4ac9-ac51-69b5500f9ee6",
+ "service": "Azure Machine Learning",
+ "text": "요금 최적화: 향후 1년에서 3년 동안의 사용량을 잘 예측하는 경우 Azure Reserved Virtual Machine Instances를 구매합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "563a3c8d-4168-4f18-a056-efb624734ecf",
+ "service": "Azure Machine Learning",
+ "text": "모니터링 및 최적화: 모델을 학습할 때 CPU 및 GPU 사용량과 같은 리소스 사용량을 모니터링합니다. 리소스가 완전히 사용되지 않는 경우 리소스를 더 잘 사용하도록 코드를 수정하거나 더 작거나 저렴한 VM 크기로 축소합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "올바른 컴퓨팅을 선택하는 것은 워크로드 실행 비용에 직접적인 영향을 미치므로 매우 중요합니다. 적절한 사용 없이 GPU 또는 고성능 SKU를 선택하면 낭비적인 지출이 발생할 수 있으며, 크기가 작은 컴퓨팅을 선택하면 훈련 시간이 엄청나게 길어지고 성능 문제가 발생할 수 있습니다.",
+ "guid": "3d87f935-99a6-4aee-aac2-069994de09ff",
+ "service": "Azure Machine Learning",
+ "text": "Optimize compute resources(계산 리소스 최적화): 워크로드의 요구 사항에 따라 계산 리소스를 최적화합니다. 워크로드에 가장 적합한 SKU 선택:
- 범용 – 균형 잡힌 CPU 대 메모리 비율, 모든 용도에 적합합니다.
- 컴퓨팅 최적화 – CPU 대 메모리 비율이 높아 수학이 많이 필요한 계산에 적합합니다.
- 메모리 최적화 – CPU 대비 메모리가 높아 메모리 내 계산 또는 데이터베이스 애플리케이션에 적합합니다.
- M 시리즈 – 엄청난 양의 메모리와 CPU를 가진 매우 큰 컴퓨터.
- GPU – 더 높은 병렬 처리와 전문화된 핵심 명령의 이점을 누릴 수 있는 변수 수가 많은 모델에 더 좋습니다. 일반적인 응용 분야는 딥 러닝, 이미지 또는 비디오 처리, 과학 시뮬레이션, 데이터 마이닝, GPU 개발 프레임워크 활용 등입니다. 여러 패밀리로 테스트하고 결과를 기준선으로 문서화합니다. 모델과 데이터가 발전함에 따라 가장 적절한 컴퓨팅 리소스가 변경될 수 있습니다. 실행 시간을 모니터링하고 필요에 따라 다시 평가합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "사용량이 적을 때 컴퓨팅 클러스터가 축소되도록 자동 크기 조정을 구성합니다. 학습 클러스터가 사용하지 않을 때 0으로 축소할 수 있도록 최소 노드 수를 0으로 설정합니다.",
+ "guid": "d30cfeeb-6c61-4a9d-9a56-c8296cec72cb",
+ "service": "Azure Machine Learning",
+ "text": "컴퓨팅 크기 조정 최적화: 필요한 항목만 사용하도록 자동 크기 조정을 위해 컴퓨팅 클러스터를 구성합니다. 학습 클러스터의 경우 최소 노드 수를 0으로 설정하고 노드가 유휴 상태인 시간을 적절한 시간으로 구성합니다. 반복적인 실험을 줄이려면 시간을 줄여 비용을 절감하십시오. 더 반복적인 실험의 경우 각 변경 후 확장 또는 축소에 대한 비용을 지불하지 않도록 더 많은 시간을 사용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "종료 정책을 설정하면 부실 실행을 조기에 중지하여 비용을 절감할 수 있습니다.",
+ "guid": "098a7bee-444c-4351-aeb1-8bd97036299c",
+ "service": "Azure Machine Learning",
+ "text": "교육 종료 정책 설정: 조기 종료 정책을 설정하여 교육 실행 기간을 제한하거나 조기에 종료합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "우선 순위가 낮은 가상 머신을 사용하면 저렴한 비용으로 많은 양의 컴퓨팅 성능을 사용할 수 있습니다. Azure의 잉여 용량을 활용합니다.",
+ "guid": "41f2dd91-5765-4dfb-9db0-9b3e976b4afb",
+ "service": "Azure Machine Learning",
+ "text": "일괄 처리 워크로드에 우선 순위가 낮은 가상 머신 사용: 시간에 민감하지 않고 중단을 복구할 수 있는 일괄 처리 워크로드에 우선 순위가 낮은 가상 머신을 사용하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "기본적으로 컴퓨트 인스턴스를 사용할 수 있으며 비용이 발생합니다. 유휴 상태일 때 종료되도록 컴퓨트 인스턴스를 구성하거나 스케줄을 구성하면 사용하지 않을 때 비용이 절감됩니다.",
+ "guid": "e3150ddd-f553-425f-bb91-249a9598e25e",
+ "service": "Azure Machine Learning",
+ "text": "컴퓨트 인스턴스에 대해 유휴 종료 사용: 컴퓨트 인스턴스에 대해 유휴 종료를 활성화하거나 사용 시간이 알려진 경우 시작 및 중지 시간을 예약합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "병렬 워크로드는 여러 개의 더 작은 인스턴스에서 실행할 수 있으므로 잠재적으로 비용을 절감할 수 있습니다.",
+ "guid": "8b47ec85-0e9e-428b-9290-c590a7f4ab1a",
+ "service": "Azure Machine Learning",
+ "text": "학습 워크로드 병렬화: 학습 워크로드를 병렬화하는 것이 좋습니다. Machine Learning의 병렬 구성 요소를 사용하여 실행을 테스트합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "Azure Reserved VM Instances를 구매하여 가상 머신 사용량을 선불로 지불하고 종량제 가격으로 할인을 제공하세요. 할인은 예약과 일치하는 가상 머신 사용량에 자동으로 적용됩니다.",
+ "guid": "b4470844-d54d-4a1c-980c-37d09e17940d",
+ "service": "Azure Machine Learning",
+ "text": "Azure Reserved VM Instances: 향후 1년에서 3년 동안의 사용량을 잘 예측한 경우 Azure Reserved VM Instances를 구매합니다. 사용량을 잘 예측할 수 있는 경우 서비스에 대한 예약된 용량 옵션을 활용합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "4dace40c-2627-4eb1-9d18-4a6c03901283",
+ "service": "Azure Machine Learning",
+ "text": "개발 표준: Machine Learning 모델 카탈로그 및 레지스트리를 활용하여 Machine Learning 자산을 저장, 버전 관리 및 공유합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "2fe1daf9-b388-4d25-8ff8-39908ada7f27",
+ "service": "Azure Machine Learning",
+ "text": "효율성을 위한 자동화: MLOps(Good Machine Learning Operations) 사례를 따릅니다. 가능한 경우 데이터 준비, 교육 및 채점 프로세스를 위한 엔드 투 엔드 자동화 파이프라인을 구축합니다. 개발 시에는 스크립트를 자동화된 파이프라인에 더 쉽게 통합할 수 있으므로 모델 학습을 위해 Notebook 대신 스크립트를 사용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "7b5de736-4956-4313-82be-0a0ff07d7ab6",
+ "service": "Azure Machine Learning",
+ "text": "자신 있게 배포: Machine Learning 작업 영역, 컴퓨팅 클러스터, 컴퓨팅 인스턴스 및 기타 배포 환경을 위한 코드형 인프라(IaC)를 구현합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "f8196404-8f76-4e65-9b32-46d8d777d1d3",
+ "service": "Azure Machine Learning",
+ "text": "관찰 가능성: 데이터 드리프트를 포함하여 배포된 모델의 성능을 모니터링합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "d212d648-752b-480f-bda5-0d45d0185312",
+ "service": "Azure Machine Learning",
+ "text": "가시성: 모델이 온라인 엔드포인트에 배포된 경우 Application Insights를 사용하여 온라인 엔드포인트 및 배포를 모니터링할 수 있습니다. 교육 인프라를 모니터링하여 기준 요구 사항을 충족하고 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "afd5b803-c151-4b8d-ae08-63cc8961a378",
+ "service": "Azure Machine Learning",
+ "text": "단순성: 사용 가능한 경우 Machine Learning에 최적화된 큐레이팅된 환경을 사용합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "작업 공간 수를 제한하면 유지 관리 노력과 운영 비용이 절감됩니다. 보안과 같은 요구 사항의 경우 여러 개의 개별 작업 영역이 필요할 수 있습니다. 가능한 경우 작업 영역의 수를 최소화합니다.",
+ "guid": "bb6c4c2f-65f4-4fab-ada7-ebe079bde9cb",
+ "service": "Azure Machine Learning",
+ "text": "Machine Learning 작업 영역 인스턴스 최소화: 가능한 경우 작업 영역 수를 최소화하여 유지 관리를 줄입니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "Machine Learning 모델 레지스트리를 사용하여 기계 학습 모델을 저장하고 버전을 관리하여 변경 사항을 추적하고 교육에 사용되는 작업 및 데이터 세트와의 계보를 유지 관리합니다. Machine Learning 모델 카탈로그를 사용하면 데이터 과학 팀이 사전 훈련된 기본 기계 학습 모델을 검색, 평가 및 미세 조정할 수 있습니다. 버전이 지정된 모델을 Machine Learning 모델 레지스트리에 저장하면 A/B 릴리스, 카나리아 릴리스 및 롤백과 같은 배포 전략이 지원됩니다.",
+ "guid": "31841d05-3372-4bd4-b8bc-efcaaee1bd88",
+ "service": "Azure Machine Learning",
+ "text": "모델 카탈로그 및 레지스트리 활용: Machine Learning 모델 카탈로그 및 레지스트리를 활용하여 Machine Learning 자산을 저장, 버전 관리 및 공유합니다. Machine Learning 모델 카탈로그를 사용하여 A/B 테스트 및 모델 배포를 구현할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "배포된 모델을 모니터링하면 모델이 성능 요구 사항을 충족하는지 확인할 수 있습니다. 데이터 드리프트를 모니터링하면 모델 성능 저하로 이어질 수 있는 입력 데이터의 변경 사항을 감지하는 데 도움이 됩니다. 데이터 드리프트를 관리하면 모델이 시간이 지남에 따라 정확한 결과를 제공하는지 확인할 수 있습니다.",
+ "guid": "90a72a7e-6fb5-4e02-a159-7a4d907eb098",
+ "service": "Azure Machine Learning",
+ "text": "모델 성능 모니터링: 배포된 모델의 성능을 모니터링하고 데이터 세트에서 데이터 드리프트를 감지합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "엔드포인트를 모니터링하면 요청 대기 시간 및 분당 요청 수와 같은 지표에 대한 가시성을 얻을 수 있습니다. 성능과 기준을 비교하고 이 정보를 사용하여 그에 따라 컴퓨팅 리소스를 변경할 수 있습니다. 네트워크 바이트와 같은 메트릭을 모니터링하면 할당량 한도에 가까워지고 있는 경우 경고하고 제한을 방지할 수 있습니다. 마찬가지로, 학습 환경을 모니터링하면 학습 환경을 변경할 수 있는 정보를 얻을 수 있습니다. 해당 정보를 사용하여 축소 또는 축소하거나, 다양한 성능의 SKU로 확장 또는 축소하거나, CPU 또는 GPU 중에서 선택할 수 있습니다.",
+ "guid": "b1d87076-b253-47ae-8727-97f804e49a3c",
+ "service": "Azure Machine Learning",
+ "text": "인프라 모니터링: 모델이 온라인 엔드포인트에 배포된 경우 Application Insights를 사용하여 온라인 엔드포인트 및 배포를 모니터링할 수 있습니다. 교육 인프라를 모니터링하여 기준 요구 사항을 충족하고 있는지 확인합니다. Machine Learning에 대한 리소스 로그를 수집하고 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "큐레이팅된 환경은 Machine Learning에서 제공하는 미리 만들어진 환경으로, 배포 시간을 단축하고 배포 및 학습 대기 시간을 줄입니다. 선별된 환경을 사용하면 교육 및 배포 성공률이 향상되고 불필요한 이미지 빌드를 방지할 수 있습니다. Azure Container for PyTorch와 같은 큐레이팅된 환경은 Machine Learning에서 대규모 모델을 학습시키는 데 최적화할 수도 있습니다.",
+ "guid": "4c6895ce-abd9-4c90-a386-c31bc0681869",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습 환경 큐레이팅: 사용 가능한 경우 Machine Learning에 최적화된 큐레이팅된 환경을 사용합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "82ffebb1-2e91-46a4-b796-3fa55c4c20e3",
+ "service": "Azure Machine Learning",
+ "text": "성능 목표: 모델에 대해 허용 가능한 학습 시간과 재학습 빈도를 결정합니다. 테스트와 함께 학습 시간에 대한 명확한 목표를 설정하면 학습 시간 목표를 충족하는 데 필요한 컴퓨팅 리소스, CPU 대 GPU 및 CPU SKU를 결정하는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "5e526216-1b94-4cfe-86ef-bbce971f7f3a",
+ "service": "Azure Machine Learning",
+ "text": "성능 목표: 응답 시간, 초당 요청 수, 오류율 및 가동 시간을 포함하여 배포된 모델에 대해 허용 가능한 성능 목표를 정의합니다. 성능 목표는 배포된 모델의 효율성에 대한 벤치마크 역할을 합니다. 대상은 CPU 대 GPU 결정, CPU SKU 선택 및 크기 조정 요구 사항을 만드는 데 도움이 될 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "2d6ddbe2-2bcc-4629-a316-5d56d74ef68a",
+ "service": "Azure Machine Learning",
+ "text": "용량 요구 사항 충족: 모델 학습에 적합한 컴퓨팅 리소스를 선택합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "0ab74767-80ac-454e-aab6-b546e38411f8",
+ "service": "Azure Machine Learning",
+ "text": "용량 요구 사항 충족: 모델 배포에 적합한 컴퓨팅 리소스를 선택합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "d47bd862-5302-4ecb-a551-37cb0d15e802",
+ "service": "Azure Machine Learning",
+ "text": "용량 요구 사항 충족: 자동 크기 조정 기능이 있는 배포 환경을 선택하여 수요 변동에 따라 용량을 추가 및 제거할 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "e10dead3-58c0-40b2-aa9b-39c64a68c555",
+ "service": "Azure Machine Learning",
+ "text": "성능 달성 및 유지: 배포된 모델의 성능을 지속적으로 모니터링하고, 결과를 검토하고, 적절한 조치를 취합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "e257de8e-a8ef-4b91-81a3-3d832682b1eb",
+ "service": "Azure Machine Learning",
+ "text": "성능 달성 및 유지: 배포된 모델의 인프라 성능을 지속적으로 모니터링하고, 결과를 검토하고, 적절한 조치를 취합니다. 교육 인프라를 모니터링하여 교육 시간에 대한 요구 사항을 충족하고 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "올바른 컴퓨팅을 선택하는 것은 학습 시간에 직접적인 영향을 미치므로 매우 중요합니다. 올바른 SKU 및 CPU와 GPU를 선택하면 모델 학습이 요구 사항 및 성능 목표를 충족할 수 있습니다. 과도하게 사용되는 저성능 SKU를 선택하면 학습 시간이 엄청나게 길어지고 성능 문제가 발생할 수 있습니다. 컴퓨팅 클러스터는 수평적 확장을 지원하는 워크로드를 확장하여 성능을 향상시킬 수 있는 기능을 제공합니다. 이 방법은 다양한 요구 사항이 있는 워크로드를 유연하게 처리할 수 있으며 필요에 따라 컴퓨터를 추가하거나 제거할 수 있습니다.",
+ "guid": "352a223c-dabd-46da-8752-56a87c6f18b7",
+ "service": "Azure Machine Learning",
+ "text": "모델 학습에 적합한 컴퓨팅 서비스 선택: 자동 크기 조정이 필요한 경우 모델 학습을 위해 컴퓨팅 인스턴스보다 Machine Learning 컴퓨팅 클러스터를 고려합니다. 학습 요구 사항에 따라 컴퓨팅 리소스를 최적화합니다. 먼저 CPU와 GPU 중에서 선택합니다. 기본적으로 CPU를 사용하지만 딥 러닝, 이미지 또는 비디오 처리 또는 대용량 데이터와 같은 워크로드에는 GPU를 사용하는 것이 좋습니다. 다음으로, 워크로드에 가장 적합한 이미지 SKU를 선택합니다. 테스트를 사용하여 기준선을 결정할 때 훈련 시간에 대한 비용을 최적화하는 컴퓨팅 옵션을 선택합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "자동 크기 조정은 수요에 맞게 배포된 모델의 인스턴스 수를 조정합니다.",
+ "guid": "683ae603-156f-4186-8a82-aa2907fbb9bd",
+ "service": "Azure Machine Learning",
+ "text": "모델 배포 환경 크기 조정: 배포 환경의 자동 크기 조정 기능을 사용합니다. AKS 배포 환경의 경우 클러스터 자동 크기 조정기를 사용하여 수요에 맞게 크기를 조정합니다. 온라인 엔드포인트의 경우 Azure Monitor 자동 크기 조정 기능과의 통합을 통해 자동으로 크기를 조정합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "프로덕션에서 모델의 성능을 추적하면 데이터 드리프트, 예측 드리프트, 데이터 품질 및 기능 속성 드리프트와 같은 잠재적인 문제에 대한 경고를 받을 수 있습니다. 데이터 드리프트를 모니터링하면 모델 성능 저하로 이어질 수 있는 입력 데이터의 변경 사항을 감지하는 데 도움이 됩니다. 데이터 드리프트를 관리하면 모델이 시간이 지남에 따라 정확한 결과를 제공하는지 확인할 수 있습니다.",
+ "guid": "eccdaab6-7458-4967-9cd4-da6a89e3ce8c",
+ "service": "Azure Machine Learning",
+ "text": "모델 성능 모니터링: 배포된 모델의 성능을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "엔드포인트를 모니터링하면 요청 대기 시간 및 분당 요청 수와 같은 지표에 대한 가시성을 얻을 수 있습니다. 성능과 기준을 비교하고 이 정보를 사용하여 그에 따라 컴퓨팅 리소스를 변경할 수 있습니다. 네트워크 바이트와 같은 메트릭을 모니터링하면 할당량 한도에 가까워지고 있는 경우 경고하고 제한을 방지할 수 있습니다. 마찬가지로, 학습 환경을 모니터링하면 학습 환경을 변경할 수 있는 정보를 얻을 수 있습니다. 해당 정보를 사용하여 축소 또는 축소하거나, 다양한 성능의 SKU로 확장 또는 축소하거나, CPU 또는 GPU 중에서 선택할 수 있습니다.",
+ "guid": "76b80c26-8252-416e-aae1-ace03a9403dd",
+ "service": "Azure Machine Learning",
+ "text": "인프라 모니터링: 온라인 엔드포인트를 모니터링하고 Monitor와 통합하여 적절한 메트릭 및 로그를 추적하고 모니터링합니다. 온라인 배포를 만들 때 Application Insights를 사용하도록 설정합니다. 학습 인프라를 모니터링하고 모델을 학습할 때 메모리 및 CPU 또는 GPU 사용량과 같은 리소스 사용량을 검토하여 기준 요구 사항을 충족하고 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "154d9075-f8f8-4dc8-b8f4-651d875d5dfe",
+ "service": "Azure Openai",
+ "text": "복원력: 사용 사례에 따라 종량제 또는 프로비저닝된 처리량의 적절한 배포 옵션을 선택합니다. 예약된 용량은 복원력을 높이기 때문에 프로덕션 솔루션에 대해 프로비저닝된 처리량을 선택합니다. 종량제 방식은 개발/테스트 환경에 이상적입니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "571ddd3c-601e-46a7-bf80-c52f04a301fb",
+ "service": "Azure Openai",
+ "text": "중복성: Azure OpenAI 배포 앞에 적절한 게이트웨이를 추가합니다. 게이트웨이에는 제한과 같은 일시적인 오류를 견딜 수 있는 기능이 있어야 하며 여러 Azure OpenAI 인스턴스로 라우팅할 수도 있어야 합니다. 지역 중복성을 구축하기 위해 다른 지역의 인스턴스로 라우팅하는 것을 고려합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "4b6855b3-069d-4bb2-b9c6-f1c021803f77",
+ "service": "Azure Openai",
+ "text": "복원력: 프로비저닝된 처리량을 사용하는 경우 오버플로를 처리하기 위해 종량제 인스턴스를 배포하는 것이 좋습니다. 프로비저닝된 처리량 모델이 제한될 때 게이트웨이를 통해 종량제 인스턴스로 통화를 라우팅할 수 있습니다. 또한 모니터링을 사용하여 모델이 제한되는 시기를 예측하고 선제적으로 통화를 종량제 인스턴스로 라우팅할 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "7fd57f22-417b-47d5-88c9-ab7a2ceb5599",
+ "service": "Azure Openai",
+ "text": "복원력: 용량 사용량을 모니터링하여 처리량 제한을 초과하지 않는지 확인합니다. 용량 사용량을 정기적으로 검토하여 보다 정확한 예측을 달성하고 용량 제약으로 인한 서비스 중단을 방지할 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "c41d1ed1-6f1d-4e6e-9dde-2d8172365170",
+ "service": "Azure Openai",
+ "text": "복원력: 대용량 데이터 파일에 대한 지침을 따르고 Azure Blob 저장소에서 데이터를 가져옵니다. 100MB 이상의 대용량 파일은 요청이 원자성이므로 다시 시도하거나 다시 시작할 수 없기 때문에 멀티파트 양식을 통해 업로드할 때 불안정해질 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "088c617d-fce0-4fab-b4cd-9f9eb6a96cff",
+ "service": "Azure Openai",
+ "text": "복구: 미세 조정된 모델 및 Azure OpenAI에 업로드된 학습 데이터에 대한 복구 계획을 포함하는 복구 전략을 정의합니다. Azure OpenAI에는 자동 장애 조치(failover)가 없으므로 전체 서비스와 모든 종속성(예: 학습 데이터가 포함된 스토리지)을 포함하는 전략을 설계해야 합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 중요한 처리량 정보는 배포 수요를 충족하기 위해 할당량에서 충분한 TPM을 할당하는 데 필요한 정보를 제공합니다. 충분한 할당량을 할당하면 배포된 모델에 대한 호출 제한을 방지할 수 있습니다.",
+ "guid": "f109deb2-54f9-4405-a9f0-f90fd0f76adf",
+ "service": "Azure Openai",
+ "text": "종량제에 대한 속도 제한 모니터링: 종량제 방식을 사용하는 경우 모델 배포에 대한 속도 제한을 관리하고 TPM(분당 토큰) 및 RPM(분당 요청 수)의 사용량을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "프로비저닝 관리 사용률을 모니터링하여 100%를 초과하지 않도록 하여 배포된 모델에 대한 호출 제한을 방지하는 것이 중요합니다.",
+ "guid": "ef12f5c3-dbe2-4040-be82-724eebc6f87e",
+ "service": "Azure Openai",
+ "text": "프로비저닝된 처리량에 대한 프로비저닝 관리 사용률 모니터링: 프로비저닝된 처리량 결제 모델을 사용하는 경우 프로비저닝 관리 사용률을 모니터링합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "콘텐츠 필터는 불투명한 위험 분석을 기반으로 프롬프트 또는 완료를 차단합니다. 워크로드에 대한 예상 사용량을 허용하도록 콘텐츠 필터가 조정되었는지 확인합니다.",
+ "guid": "efcf5f6a-02bb-4cc8-8018-055ebf2e57e0",
+ "service": "Azure Openai",
+ "text": "콘텐츠 필터 조정: 콘텐츠 필터를 조정하여 과도하게 공격적인 필터로 인한 오탐을 최소화합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "a61b826b-9f3b-4f51-8e0e-a32a92865386",
+ "service": "Azure Openai",
+ "text": "기밀 보호: Azure OpenAI에 학습 데이터를 업로드하는 경우 데이터 암호화에 고객 관리형 키를 사용하고, 키 회전 전략을 구현하고, 학습, 유효성 검사 및 학습 결과 데이터를 삭제합니다. 학습 데이터에 외부 데이터 저장소를 사용하는 경우 해당 저장소에 대한 보안 모범 사례를 따릅니다. 예를 들어 Azure Blob Storage의 경우 암호화에 고객 관리형 키를 사용하고 키 회전 전략을 구현합니다. 관리 ID 기반 액세스를 사용하고, 프라이빗 엔드포인트를 사용하여 네트워크 경계를 구현하고, 액세스 로그를 사용하도록 설정합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "9f4bdfff-2c6c-4662-9139-1de51d2dbd20",
+ "service": "Azure Openai",
+ "text": "기밀성 보호: Azure OpenAI 리소스가 액세스할 수 있는 아웃바운드 URL을 제한하여 데이터 반출을 방지합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "b8463e8d-daaa-4209-9944-0fb0587219a8",
+ "service": "Azure Openai",
+ "text": "무결성 보호: 최소 권한 원칙을 사용하고 키 대신 개별 ID를 사용하여 시스템에 대한 사용자 액세스를 인증하고 권한을 부여하는 액세스 제어를 구현합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "714249d8-2b60-4920-89a2-eab4a338ac02",
+ "service": "Azure Openai",
+ "text": "무결성 보호: 탈옥 위험 검색을 구현하여 프롬프트 삽입 공격으로부터 언어 모델 배포를 보호합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "e0383d3b-71f1-4fda-9759-24cfd293abff",
+ "service": "Azure Openai",
+ "text": "가용성 보호: 보안 제어를 사용하여 모델 사용 할당량을 고갈시킬 수 있는 공격을 방지합니다. 네트워크에서 서비스를 격리하도록 컨트롤을 구성할 수 있습니다. 인터넷에서 서비스에 액세스할 수 있어야 하는 경우 게이트웨이를 사용하여 라우팅 또는 제한을 사용하여 의심되는 남용을 차단하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "Key Vault에 저장하여 코드에서 비밀을 분리하면 비밀이 유출될 가능성이 줄어듭니다. 또한 분리는 비밀의 중앙 관리를 용이하게 하여 키 회전과 같은 책임을 완화합니다.",
+ "guid": "c4310e87-1366-4523-b2e1-244e1074fbb0",
+ "service": "Azure Openai",
+ "text": "보안 키: 아키텍처에 Azure OpenAI 키 기반 인증이 필요한 경우 해당 키를 애플리케이션 코드가 아닌 Azure Key Vault에 저장합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure OpenAI에 대한 액세스를 제어하면 권한이 없는 사용자의 공격을 방지할 수 있습니다. 프라이빗 엔드포인트를 사용하면 애플리케이션과 플랫폼 간에 네트워크 트래픽이 비공개로 유지됩니다.",
+ "guid": "4a7a9a07-0229-4175-b784-9a99eded4d54",
+ "service": "Azure Openai",
+ "text": "액세스 제한: 워크로드에 필요한 경우가 아니면 Azure OpenAI에 대한 공용 액세스를 사용하지 않도록 설정합니다. Azure 가상 네트워크의 소비자에서 연결하는 경우 프라이빗 엔드포인트를 만듭니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Microsoft Entra ID를 사용하면 ID 관리 구성 요소가 중앙 집중화되고 API 키를 사용할 필요가 없습니다. Microsoft Entra ID와 함께 RBAC를 사용하면 사용자 또는 그룹이 작업을 수행하는 데 필요한 권한을 정확히 가질 수 있습니다. 이러한 종류의 세분화된 액세스 제어는 Azure OpenAI API 키로는 불가능합니다.",
+ "guid": "d5892190-2da9-43f4-b1e1-76b38b369643",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID: Microsoft Entra ID를 사용하여 인증하고 RBAC(역할 기반 액세스 제어)를 사용하여 Azure OpenAI에 대한 액세스 권한을 부여합니다. Azure AI Services에서 로컬 인증을 사용하지 않도록 설정하고 'disableLocalAuth'를 'true'로 설정합니다. 완성 또는 이미지 생성을 수행하는 ID에 Cognitive Services OpenAI 사용자 역할을 부여합니다. 모델 자동화 파이프라인 및 임시 데이터 과학 액세스 권한에 Cognitive Services OpenAI Contributor와 같은 역할을 부여합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "고객 관리형 키를 사용하면 액세스 제어를 만들고, 회전하고, 사용하지 않도록 설정하고, 취소할 수 있는 더 큰 유연성을 얻을 수 있습니다.",
+ "guid": "60a4703c-1086-45e1-9384-ebb32ab50696",
+ "service": "Azure Openai",
+ "text": "고객 관리형 키 사용: Azure OpenAI에 업로드되는 미세 조정된 모델 및 학습 데이터에 고객 관리형 키를 사용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure OpenAI 배포의 안전 메커니즘을 우회하려는 프롬프트를 식별하고 차단하려는 탈옥 시도를 감지합니다.",
+ "guid": "ce66eba7-5972-4cb5-8db0-b75c3720b220",
+ "service": "Azure Openai",
+ "text": "탈옥 공격으로부터 보호: Azure AI Content Safety Studio를 사용하여 탈옥 위험을 감지합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "08f7b66c-7679-479b-8e2f-41b3305613dc",
+ "service": "Azure Openai",
+ "text": "비용 관리: 프롬프트 크기를 고려하여 비용 모델을 개발합니다. 프롬프트 입력 및 응답 크기와 텍스트가 토큰으로 변환되는 방식을 이해하면 실행 가능한 비용 모델을 만드는 데 도움이 됩니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "3f66f351-a073-40bb-94d2-326e1ea1a696",
+ "service": "Azure Openai",
+ "text": "사용량 최적화: 토큰 사용량을 예측할 수 있을 때까지 Azure OpenAI에 대한 종량제 가격 책정으로 시작합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "3802ce2d-2a46-445d-92e2-2a23b2e40705",
+ "service": "Azure Openai",
+ "text": "속도 최적화: 토큰 사용량이 충분히 높고 일정 기간 동안 예측 가능한 경우 더 나은 비용 최적화를 위해 프로비저닝된 처리량 가격 책정 모델을 사용합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "2b2303c0-e057-431d-9a02-20a1a0b2b5b9",
+ "service": "Azure Openai",
+ "text": "사용량 최적화: 모델을 선택할 때 모델 가격 책정 및 기능을 고려합니다. 텍스트 생성 또는 완성 작업과 같은 덜 복잡한 작업을 위해 더 저렴한 모델로 시작하세요. 언어 번역 또는 콘텐츠 이해와 같은 더 복잡한 작업의 경우 고급 모델을 사용하는 것이 좋습니다. 텍스트 포함, 이미지 생성 또는 전사 시나리오와 같은 사용 사례에 적합한 모델을 선택할 때 다양한 모델 기능과 최대 토큰 사용 제한을 고려합니다. 요구 사항에 가장 적합한 모델을 신중하게 선택하면 원하는 응용 프로그램 성능을 달성하면서 비용을 최적화할 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "c4104d7c-4a4f-4b8a-9928-558a7c5c61d8",
+ "service": "Azure Openai",
+ "text": "사용 최적화: 생성할 완료 수를 나타내는 'max_tokens' 및 'n'과 같은 API 호출에서 제공하는 토큰 제한 제약 조건을 사용합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "fb44ea80-44a3-465f-9d50-98b800a90fd6",
+ "service": "Azure Openai",
+ "text": "사용량 최적화: Azure OpenAI 가격 중단점(예: 이미지 생성과 같은 미세 조정 및 모델 중단점)을 최대화합니다. 미세 조정은 시간당 요금이 청구되기 때문에 시간당 사용 가능한 시간을 최대한 사용하여 미세 조정 결과를 개선하는 동시에 다음 청구 기간으로 넘어가지 않도록 합니다. 마찬가지로 100개의 이미지를 생성하는 비용은 1개의 이미지에 대한 비용과 동일합니다. 가격 중단점을 최대한 활용하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "5f027af8-e168-4b86-8255-4ea6f74cfd87",
+ "service": "Azure Openai",
+ "text": "사용 최적화: 더 이상 사용되지 않는 미세 조정 모델을 제거하여 지속적인 호스팅 요금이 발생하지 않도록 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "23756c91-3a66-4733-98b7-448bc8441f56",
+ "service": "Azure Openai",
+ "text": "사용법 조정: 프롬프트 입력 및 응답 길이를 최적화합니다. 프롬프트가 길면 더 많은 토큰을 사용하여 비용이 증가합니다. 그러나 충분한 컨텍스트가 누락된 프롬프트는 모델이 좋은 결과를 생성하는 데 도움이 되지 않습니다. 모델이 유용한 응답을 생성할 수 있도록 충분한 컨텍스트를 제공하는 간결한 프롬프트를 생성합니다. 또한 응답 길이의 한계를 최적화해야 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "160154da-ea9e-4a84-ac35-8a731658c0fd",
+ "service": "Azure Openai",
+ "text": "비용 효율성: 호출당 오버헤드를 최소화하기 위해 가능한 경우 일괄 처리 요청을 수행하여 전체 비용을 줄일 수 있습니다. 배치 크기를 최적화해야 합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "739c80f6-0570-435b-ab82-2c8ce9d2deb8",
+ "service": "Azure Openai",
+ "text": "비용 효율성: 모델에는 다양한 미세 조정 비용이 있기 때문에 솔루션에 미세 조정이 필요한 경우 이러한 비용을 고려합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "518fd651-b13e-427e-a0de-f634a014f5b2",
+ "service": "Azure Openai",
+ "text": "모니터링 및 최적화: 모델 사용량을 모니터링하는 비용 추적 시스템을 설정합니다. 이 정보를 사용하여 모형 선택 및 프롬프트 크기를 알 수 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "API 기능을 사용하여 사용을 제한하면 서비스 사용량이 클라이언트 요구 사항에 맞게 조정됩니다. 이렇게 하면 모델이 필요한 것보다 더 많은 토큰을 사용하는 지나치게 긴 응답을 생성하지 않도록 하여 비용을 절약할 수 있습니다.",
+ "guid": "afb53b41-825a-4310-b445-bf391792c568",
+ "service": "Azure Openai",
+ "text": "제한을 설정하도록 클라이언트 코드 설계: 사용자 지정 클라이언트는 모델당 토큰 수에 대한 최대 제한('max_tokens') 또는 생성 완료 수('n')와 같은 Azure OpenAI 완성 API의 제한 기능을 사용해야 합니다. 제한을 설정하면 서버가 클라이언트가 필요로 하는 것보다 더 많이 생성하지 않도록 합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "TPM 및 RPM을 지속적으로 모니터링하면 Azure OpenAI 모델의 비용을 최적화할 수 있는 관련 메트릭을 얻을 수 있습니다. 이 모니터링을 모델 기능 및 모델 가격 책정과 결합하여 모델 사용을 최적화할 수 있습니다. 이 모니터링을 사용하여 프롬프트 크기를 최적화할 수도 있습니다.",
+ "guid": "e91029f2-ddf4-41f3-8358-f31b5afbe8ba",
+ "service": "Azure Openai",
+ "text": "종량제 사용량 모니터링: 종량제 방식을 사용하는 경우 TPM 및 RPM의 사용량을 모니터링합니다. 이 정보를 사용하여 사용할 모델과 같은 아키텍처 설계 결정을 알리고 프롬프트 크기를 최적화할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "프로비저닝 관리 사용률을 지속적으로 모니터링하면 프로비저닝된 처리량을 충분히 활용하지 못하고 있는지 파악하는 데 필요한 정보를 얻을 수 있습니다.",
+ "guid": "06a0b95c-b014-4205-8d0c-f074ec393239",
+ "service": "Azure Openai",
+ "text": "프로비저닝된 처리량 사용량 모니터링: 프로비저닝된 처리량을 사용하는 경우 프로비저닝 관리 사용률을 모니터링하여 구매한 프로비저닝된 처리량을 과소 활용하고 있지 않은지 확인합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "비용 모니터링, 예산 설정 및 경고 설정은 적절한 책임 프로세스를 통해 거버넌스를 제공합니다.",
+ "guid": "f18aba52-5587-43e6-b994-8cab7022167f",
+ "service": "Azure Openai",
+ "text": "비용 관리: OpenAI와 함께 비용 관리 기능을 사용하여 비용을 모니터링하고, 비용 관리를 위한 예산을 설정하고, 이해 관계자에게 위험 또는 이상 징후를 알리는 경고를 생성합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "3c5f9e8e-c1a9-4c18-ac05-72877f24ff22",
+ "service": "Azure Openai",
+ "text": "Azure DevOps 문화권: 개발, 테스트 및 프로덕션과 같은 다양한 환경에서 Azure OpenAI 인스턴스를 배포해야 합니다. 개발 주기 전반에 걸쳐 지속적인 학습과 실험을 지원할 수 있는 환경을 확보해야 합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "56e72e7c-32bb-414b-bf04-d2883871aacb",
+ "service": "Azure Openai",
+ "text": "관찰 가능성: 적절한 메트릭을 모니터링, 집계 및 시각화합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "63aedcb9-e01e-4df3-b9a6-13c13d6971d4",
+ "service": "Azure Openai",
+ "text": "가시성: Azure OpenAI 진단이 요구 사항에 충분하지 않은 경우 Azure OpenAI 앞에 Azure API Management와 같은 게이트웨이를 사용하여 허용되는 경우 들어오는 프롬프트와 나가는 응답을 모두 기록하는 것이 좋습니다. 이 정보는 들어오는 프롬프트에 대한 모델의 효율성을 이해하는 데 도움이 될 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "fe7a8e0a-b53a-48f0-a204-4e1e7e20ea4b",
+ "service": "Azure Openai",
+ "text": "자신 있게 배포: IaC(Infrastructure as Code)를 사용하여 Azure OpenAI, 모델 배포 및 모델 미세 조정에 필요한 기타 인프라를 배포합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "3dffb456-4675-4acb-b797-a5bf591e003a",
+ "service": "Azure Openai",
+ "text": "자신 있게 배포: LLMOps(대규모 언어 모델 작업) 사례에 따라 배포, 미세 조정 및 프롬프트 엔지니어링을 포함하여 Azure OpenAI LLM의 관리를 운영합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "4c82d2b3-c083-4a0e-9cd2-92d2b00b4c96",
+ "service": "Azure Openai",
+ "text": "효율성을 위한 자동화: 키 기반 인증을 사용하는 경우 자동화된 키 순환 전략을 구현합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "진단은 메트릭 및 로그를 수집하고 분석하여 Azure OpenAI의 가용성, 성능 및 작업을 모니터링하는 데 도움이 됩니다.",
+ "guid": "ff3d2610-e8e8-4a78-aba5-556758a2798c",
+ "service": "Azure Openai",
+ "text": "Azure 진단 사용 및 구성: Azure OpenAI 서비스에 대한 진단을 사용하도록 설정하고 구성합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "63dbbc6a-f840-4893-979c-2afcea82bf5f",
+ "service": "Azure Openai",
+ "text": "용량: 소비자의 탄력성 요구 사항을 추정합니다. 동기식 응답이 필요한 우선 순위가 높은 트래픽과 비동기식 및 일괄 처리가 가능한 우선 순위가 낮은 트래픽을 식별합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "14677a1d-0b65-455a-997b-1490c397fbc8",
+ "service": "Azure Openai",
+ "text": "용량: 소비자의 예상 수요를 기반으로 토큰 사용 요구 사항을 벤치마킹합니다. PTU(프로비전된 처리량 단위) 배포를 사용하는 경우 처리량의 유효성을 검사하는 데 도움이 되는 Azure OpenAI 벤치마킹 도구를 사용하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "59c8767d-1b78-4016-92d5-ebd83032fafa",
+ "service": "Azure Openai",
+ "text": "용량: 프로덕션 워크로드에 프로비저닝된 처리량을 사용합니다. 프로비저닝된 처리량은 전용 메모리 및 컴퓨팅, 예약된 용량, 지정된 모델 버전에 대한 일관된 최대 대기 시간을 제공합니다. 종량제 제품은 사용량이 많은 지역에서 대기 시간 증가 및 제한과 같은 시끄러운 이웃 문제로 어려움을 겪을 수 있습니다. 또한 종량제 방식은 보장된 용량을 제공하지 않습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "a318b299-9d54-4dfc-8f20-b00ceed43ed0",
+ "service": "Azure Openai",
+ "text": "용량: Azure OpenAI 배포 앞에 적절한 게이트웨이를 추가합니다. 게이트웨이가 동일하거나 다른 지역의 여러 인스턴스로 라우팅할 수 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "ceb21879-94da-485e-a24b-b30180fb566c",
+ "service": "Azure Openai",
+ "text": "용량: 예상 사용량을 처리하도록 PTU를 할당하고, TPM 배포로 이러한 PTU를 보완하여 해당 제한을 초과하는 탄력성을 처리합니다. 이 접근 방식은 효율성을 위해 기본 처리량과 탄력적 처리량을 결합합니다. 다른 고려 사항과 마찬가지로 이 방법을 사용하려면 PTU 제한에 도달할 때 TPM 배포로 요청을 라우팅하기 위해 사용자 지정 게이트웨이 구현이 필요합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "dd313c03-7429-4cb1-84e9-d982664c2dfc",
+ "service": "Azure Openai",
+ "text": "용량: 우선 순위가 높은 요청을 동기적으로 보냅니다. 우선 순위가 낮은 요청을 대기열에 넣고 수요가 낮을 때 일괄적으로 보냅니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "cdf82e76-ee07-47e6-9985-6b1c0a39dd42",
+ "service": "Azure Openai",
+ "text": "용량: 속도와 출력 복잡성 간의 균형을 고려하여 성능 요구 사항에 맞는 모델을 선택합니다. 모델 성능은 선택한 모델 유형에 따라 크게 달라질 수 있습니다. 속도를 위해 설계된 모델은 더 빠른 응답 시간을 제공하므로 빠른 상호 작용이 필요한 애플리케이션에 유용할 수 있습니다. 반대로, 더 정교한 모델은 응답 시간이 증가하는 대신 더 높은 품질의 출력을 제공할 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "9aa6da24-6a00-4381-9da6-66c9d5cbf41f",
+ "service": "Azure Openai",
+ "text": "성능 달성: 챗봇 또는 대화형 인터페이스와 같은 애플리케이션의 경우 스트리밍 구현을 고려합니다. 스트리밍은 증분 방식으로 사용자에게 응답을 제공하여 사용자 환경을 개선함으로써 Azure OpenAI 애플리케이션의 인식된 성능을 향상시킬 수 있습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "456cbf54-9c2f-4c6e-9739-eca408fa6baf",
+ "service": "Azure Openai",
+ "text": "성능 달성: 미세 조정을 시작하기 전에 미세 조정을 사용할 시기를 결정합니다. 모델을 조정하는 데 필요한 정보가 너무 길거나 복잡하여 프롬프트에 맞지 않는 경우와 같이 미세 조정을 위한 좋은 사용 사례가 있지만 프롬프트 엔지니어링 및 검색 증대 생성(RAG) 접근 방식이 작동하지 않거나 명백히 더 비싸다는 것을 확인해야 합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "2dc38e31-8e03-40f4-842d-58ac317c5106",
+ "service": "Azure Openai",
+ "text": "성능 달성: 소비자 그룹당 전용 모델 배포를 사용하여 소비자 그룹 간의 시끄러운 이웃을 방지하는 데 도움이 될 수 있는 모델별 사용 격리를 제공하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "999ecfef-c272-4cd8-8bd0-9cd5335fb695",
+ "service": "Virtual Machines",
+ "text": "디자인 제한을 초래할 수 있는 Virtual Machines 할당량 및 제한을 검토합니다. VM에는 VM 유형 또는 지역에 따라 달라지는 특정 제한 및 할당량이 있습니다. 구독당 VM 수 또는 VM당 코어 수와 같은 구독 제한이 있을 수 있습니다. 다른 워크로드가 구독을 공유하는 경우 데이터를 사용하는 능력이 줄어들 수 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "bf605fe8-6171-4c01-8290-d6c79a21cf10",
+ "service": "Virtual Machines",
+ "text": "장애 모드 분석을 수행하여 네트워크 및 스토리지 구성 요소와의 VM 상호 작용을 분석하여 장애 지점을 최소화합니다. 임시 OS(운영 체제) 디스크와 같은 구성을 선택하여 디스크 액세스를 지역화하고 네트워크 홉을 방지합니다. 부하 분산 장치를 추가하여 네트워크 트래픽을 여러 VM에 분산하여 자체 보존을 강화하면 가용성과 안정성이 향상됩니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "4cd18dd0-57e4-4fc9-a8ad-74c3333b6d8b",
+ "service": "Virtual Machines",
+ "text": "Azure SLA(서비스 수준 계약)를 기반으로 복합 SLO(서비스 수준 목표)를 계산합니다. 비현실적인 기대치와 잠재적인 문제를 방지하기 위해 SLO가 Azure SLA보다 높지 않은지 확인합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "90e0bce0-bc44-42ba-be28-2f3dde2f4b37",
+ "service": "Virtual Machines",
+ "text": "상태 격리를 만듭니다. 워크로드 데이터는 OS 디스크와의 간섭을 방지하기 위해 별도의 데이터 디스크에 있어야 합니다. VM이 실패하는 경우 동일한 데이터 디스크를 사용하여 새 OS 디스크를 만들 수 있으므로 복원력 및 오류 격리가 보장됩니다. 자세한 내용은 임시 OS 디스크를 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "6d76e7b9-52d3-4878-83ab-2a08df23c8f6",
+ "service": "Virtual Machines",
+ "text": "VM 및 해당 종속성을 영역 간에 중복합니다. VM이 실패하면 중복성으로 인해 워크로드가 계속 작동해야 합니다. 중복 선택에 종속성을 포함합니다. 예를 들어 디스크에서 사용할 수 있는 기본 제공 중복 옵션을 사용합니다. 영역 중복 IP를 사용하여 데이터 가용성과 높은 가동 시간을 보장합니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "56d104f5-469e-4ead-bf17-7c81c746dabe",
+ "service": "Virtual Machines",
+ "text": "서비스 수준 저하를 방지하고 오류를 방지하기 위해 스케일 업 및 스케일 아웃을 준비합니다. Virtual Machine Scale Sets 필요에 따라 새 인스턴스를 만들고 여러 VM 및 가용성 영역에 부하를 분산하는 자동 크기 조정 기능이 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "3395416e-27c6-4ded-941a-de4e562c5c00",
+ "service": "Virtual Machines",
+ "text": "자동 복구 옵션을 살펴보세요. Azure는 VM에 대한 상태 저하 모니터링 및 자동 복구 기능을 지원합니다. 예를 들어 확장 집합은 자동 인스턴스 복구를 제공합니다. 고급 시나리오에서 자동 복구에는 Azure Site Recovery를 사용하거나, 장애 조치(failover)할 수동 대기를 보유하거나, IaC(코드형 인프라)에서 다시 배포하는 작업이 포함됩니다. 선택하는 방법은 비즈니스 요구 사항 및 조직 운영에 맞아야 합니다. 자세한 내용은 VM 서비스 중단을 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "3d633098-6fc7-4752-907c-5a02d53ffba2",
+ "service": "Virtual Machines",
+ "text": "VM 및 해당 종속성의 크기를 적절하게 조정합니다. VM의 예상 작업을 이해하여 크기가 부족하지 않고 최대 부하를 처리할 수 있는지 확인합니다. 오류를 완화할 수 있는 추가 용량이 있습니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "cbe651de-8754-4078-8066-803f94814634",
+ "service": "Virtual Machines",
+ "text": "포괄적인 재해 복구 계획을 수립합니다. 재난 대비에는 포괄적인 계획을 수립하고 복구 기술을 결정하는 것이 포함됩니다.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "6bbb44ad-f6ed-4990-b519-a56e4d995170",
+ "service": "Virtual Machines",
+ "text": "엄격하게 작업을 실행합니다. 안정성 설계 선택은 모니터링, 프로덕션의 복원력 테스트, 자동화된 애플리케이션 VM 패치 및 업그레이드, 배포 일관성의 원칙을 기반으로 하는 효과적인 운영에 의해 지원되어야 합니다. 운영 지침은 Operational Excellence를 참조하세요.",
+ "type": "checklist",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "확장을 위해 애플리케이션의 미래를 보장하고 지역 또는 가용성 영역의 장애 도메인 간에 VM을 분산하는 고가용성 보장을 활용하세요.",
+ "guid": "bb45d3f7-dae7-4eb6-a823-76737e6d0d88",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션 모드에서 Virtual Machine Scale Sets 사용하여 VM을 배포합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "인스턴스가 비정상으로 간주되는 경우에도 가용성을 유지합니다. 자동 복구는 결함이 있는 인스턴스를 교체하여 복구를 시작합니다. 시간 창을 설정하면 부주의하거나 조기 수리 작업을 방지할 수 있습니다.",
+ "guid": "29912435-4c36-465e-91e2-6c8fcb42b33f",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM에서 인스턴스 상태를 내보내는 heath 엔드포인트를 구현합니다. (확장 집합) 선호하는 복구 작업을 지정하여 확장 집합에서 자동 복구를 사용하도록 설정합니다. VM의 상태가 변경되는 경우 자동 복구가 일시 중지되는 시간 프레임을 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "오버프로비저닝은 배포 시간을 줄이고 추가 VM에 대한 요금이 청구되지 않기 때문에 비용 이점이 있습니다.",
+ "guid": "71982e91-2b16-4f49-b91e-7c52a6e0042a",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합에서 오버프로비저닝을 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "이 옵션은 장애 도메인을 격리합니다. 유지 보수 기간 동안 하나의 장애 도메인이 업데이트되면 다른 장애 도메인에서 VM 인스턴스를 사용할 수 있습니다.",
+ "guid": "07b6117e-18f8-4df2-9816-9bba2f028219",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션을 통해 VM 인스턴스를 가능한 한 많은 장애 도메인에 분산할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "VM 인스턴스는 로컬 오류에 대한 내성이 있는 각 Azure 지역 내에서 물리적으로 분리된 위치에 프로비전됩니다. 리소스 가용성에 따라 영역 간에 균일하지 않은 수의 인스턴스가 있을 수 있음을 명심하십시오. 영역 분산은 한 영역이 다운된 경우 다른 영역에 충분한 인스턴스를 갖도록 하여 가용성을 지원합니다. 각 영역에 있는 두 개의 인스턴스는 업그레이드 중에 버퍼를 제공합니다.",
+ "guid": "056b1e06-a521-4662-9c87-19371260efe6",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합의 가용성 영역에 배포합니다. 각 영역에 두 개 이상의 인스턴스를 설정합니다. 영역 분산은 인스턴스를 영역 간에 균등하게 분산합니다.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "용량은 사용자가 사용하도록 예약되어 있으며 해당 SLA의 범위 내에서 사용할 수 있습니다. 용량 예약은 더 이상 필요하지 않을 때 삭제할 수 있으며 청구는 사용량을 기반으로 합니다.",
+ "guid": "2554bcd7-c6b8-4461-aaaa-071092d5483f",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) 용량 예약 기능을 활용하세요.",
+ "type": "recommendation",
+ "waf": "신뢰도"
+ },
+ {
+ "description": "",
+ "guid": "fa5e017f-a99c-4fcc-883b-e16427f4e05d",
+ "service": "Virtual Machines",
+ "text": "Linux 및 Windows VM 및 Virtual Machine Scale Sets 대한 보안 기준을 검토합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "63866f61-ef77-4793-9257-dfc53e87a550",
+ "service": "Virtual Machines",
+ "text": "시기적절하고 자동화된 보안 패치 및 업그레이드를 보장합니다. 업데이트가 자동으로 롤아웃되고 잘 정의된 프로세스를 사용하여 유효성이 검사되는지 확인합니다. Azure Automation과 같은 솔루션을 사용하여 OS 업데이트를 관리하고 중요한 업데이트를 수행하여 보안 규정 준수를 유지합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "5bc85e31-f7fa-4102-8e43-6fbe7add0d89",
+ "service": "Virtual Machines",
+ "text": "상태를 보유하는 VM을 식별합니다. 조직에서 제공한 민감도 레이블에 따라 데이터가 분류되었는지 확인합니다. 적절한 수준의 저장 및 전송 중 암호화와 같은 보안 제어를 사용하여 데이터를 보호합니다. 높은 민감도 요구 사항이 있는 경우 이중 암호화 및 Azure 기밀 컴퓨팅과 같은 높은 보안 컨트롤을 사용하여 사용 중인 데이터를 보호하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "d5320544-6d25-46c7-ab46-e81e5d85d9b3",
+ "service": "Virtual Machines",
+ "text": "네트워크 경계 및 액세스 제어를 설정하여 VM 및 확장 집합에 세분화를 제공합니다. 동일한 수명 주기를 공유하는 리소스 그룹에 VM을 배치합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "becd6031-a256-4186-995e-75817fc7783c",
+ "service": "Virtual Machines",
+ "text": "VM에 연결하려고 시도하는 ID와 다른 리소스에 도달하는 VM에 액세스 제어를 적용합니다. 인증 및 권한 부여 요구 사항에 Microsoft Entra ID를 사용합니다. VM 및 해당 종속성(예: 비밀)에 대해 강력한 암호, 다단계 인증 및 RBAC(역할 기반 액세스 제어)를 배치하여 허용된 ID가 해당 역할에 필요한 작업만 수행할 수 있도록 합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "cc96d188-8a1f-4b48-9525-d6f3f867f322",
+ "service": "Virtual Machines",
+ "text": "네트워크 컨트롤을 사용하여 수신 및 송신 트래픽을 제한합니다. Azure Virtual Network에서 VM 및 확장 집합을 격리하고 네트워크 보안 그룹을 정의하여 트래픽을 필터링합니다. DDoS(분산 서비스 거부) 공격으로부터 보호합니다. 로드 밸런서 및 방화벽 규칙을 사용하여 악의적인 트래픽 및 데이터 반출 공격으로부터 보호합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "66e5f683-0d57-4ed1-b2bd-68e4549631bc",
+ "service": "Virtual Machines",
+ "text": "OS 이미지를 강화하고 사용하지 않는 구성 요소를 제거하여 공격 노출 영역을 줄입니다. 더 작은 이미지를 사용하고 워크로드를 실행하는 데 필요하지 않은 이진 파일을 제거합니다. 기본 계정 및 포트와 같이 필요하지 않은 기능을 제거하여 VM 구성을 강화합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "961b264a-fddf-43d4-b137-a132429c2874",
+ "service": "Virtual Machines",
+ "text": "전송 중인 데이터를 보호하는 데 필요한 인증서와 같은 비밀을 보호합니다. Key Vault에 저장된 인증서를 자동으로 새로 고치는 Windows 또는 Linux용 Azure Key Vault 확장을 사용하는 것이 좋습니다. 인증서에서 변경 사항을 감지하면 확장은 해당 인증서를 검색하고 설치합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "39b32108-5423-42aa-beaa-1601df1971f6",
+ "service": "Virtual Machines",
+ "text": "위협 탐지. VM에서 위협 및 구성 오류를 모니터링합니다. 서버용 Defender를 사용하여 VM 및 OS 변경 내용을 캡처하고 액세스, 새 계정 및 권한 변경에 대한 감사 내역을 유지 관리합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "fb9921a8-884c-40df-a588-a554143809f2",
+ "service": "Virtual Machines",
+ "text": "위협 방지. 방화벽, 바이러스 백신 소프트웨어 및 침입 탐지 시스템과 같은 보안 제어를 구현하여 맬웨어 공격 및 악의적인 행위자로부터 보호합니다. TEE(신뢰할 수 있는 실행 환경)가 필요한지 확인합니다.",
+ "type": "checklist",
+ "waf": "안전"
+ },
+ {
+ "description": "VM은 다른 리소스와 통신할 때 신뢰 경계를 넘습니다. 확장 집합 및 VM은 통신이 허용되기 전에 해당 ID를 인증해야 합니다. Microsoft Entra ID는 관리 ID를 사용하여 해당 인증을 처리합니다.",
+ "guid": "21e2209a-6217-464b-9886-1914124b0721",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 확장 집합에 관리 ID를 할당합니다. 확장 집합의 모든 VM은 지정된 VM 프로필을 통해 동일한 ID를 가져옵니다. (가상 머신) 개별 VM을 만들 때 관리 ID를 할당한 다음, 필요한 경우 확장 집합에 추가할 수도 있습니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "Azure에서 제공하는 기능은 여러 테넌트에서 캡처된 신호를 기반으로 하며 사용자 지정 컨트롤보다 리소스를 더 잘 보호할 수 있습니다. 정책을 사용하여 이러한 제어를 적용할 수도 있습니다.",
+ "guid": "f13132ec-ac80-4a27-a14e-b7b357523df1",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 보안 기능이 있는 VM SKU를 선택합니다. 예를 들어 일부 SKU는 BitLocker 암호화를 지원하고 기밀 컴퓨팅은 사용 중인 데이터의 암호화를 제공합니다. 기능을 검토하여 제한 사항을 이해합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "태그 지정은 리소스를 분류하고 구성하는 일반적인 방법이며 인시던트 관리 중에 중요할 수 있습니다. 자세한 내용은 이름 지정 및 태그 지정의 목적을 참조하십시오.",
+ "guid": "944802d9-671c-479f-b973-fd6111a18486",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 프로비저닝된 리소스에 organization-recommended 태그를 적용합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "보안 프로필의 기능은 VM이 생성될 때 자동으로 활성화됩니다. 자세한 내용은 Virtual Machine Scale Sets 대한 Azure 보안 기준을 참조하세요.",
+ "guid": "a6b12603-c2e3-43fd-9a79-6e6317817278",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM 구성에서 사용하도록 설정하려는 보안 기능을 사용하여 보안 프로필을 설정합니다. 예를 들어 프로필에서 호스트에서 암호화를 지정하면 VM 호스트에 저장된 데이터는 미사용 시 암호화되고 흐름은 스토리지 서비스로 암호화됩니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "네트워킹 프로필에서 세그멘테이션 컨트롤을 설정할 수 있습니다. 공격자는 공용 IP 주소를 검사하므로 VM이 위협에 취약해집니다.",
+ "guid": "3c83a4bb-2b58-4fae-9a65-37490fecaf1c",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM의 네트워크 프로필에 대한 보안 네트워킹 옵션을 선택합니다. 공용 IP 주소를 VM에 직접 연결하지 말고 IP 전달을 사용하도록 설정하지 마세요. 모든 가상 네트워크 인터페이스에 연결된 네트워크 보안 그룹이 있는지 확인합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "공용 네트워크 액세스를 사용하지 않도록 설정하면 데이터 및 리소스에 대한 무단 액세스를 방지할 수 있습니다.",
+ "guid": "fe1df647-99c3-43ea-b8ed-507b23f120e0",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) VM의 스토리지 프로필에 대한 보안 스토리지 옵션을 선택합니다. 기본적으로 디스크 암호화 및 미사용 데이터 암호화를 사용하도록 설정합니다. VM 디스크에 대한 공용 네트워크 액세스를 사용하지 않도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "확장은 VM에 대한 액세스를 보호하는 올바른 소프트웨어로 VM을 부트스트랩하는 데 사용됩니다. Microsoft에서 제공하는 확장은 진화하는 보안 표준을 따라잡기 위해 자주 업데이트됩니다.",
+ "guid": "06c4068a-2562-4cc4-9269-8bdb6b349c3a",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 위협으로부터 보호하는 확장을 VM에 포함합니다. 예를 들어 - Windows 및 Linux용 Key Vault 확장 - Microsoft Entra ID 인증 - Azure Cloud Services 및 Virtual Machines용 Microsoft Antimalware - Windows 및 Linux용 Azure Disk Encryption 확장입니다.",
+ "type": "recommendation",
+ "waf": "안전"
+ },
+ {
+ "description": "",
+ "guid": "3e760d37-8430-4da5-833d-95bff2d43e4f",
+ "service": "Virtual Machines",
+ "text": "현실적인 비용을 추정합니다. 가격 계산기를 사용하여 VM의 비용을 예측합니다. VM 선택기를 사용하여 워크로드에 가장 적합한 VM을 식별합니다. 자세한 내용은 Linux 및 Windows 가격 책정을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "284bc1f9-59a6-491e-8070-d05e31e29ee7",
+ "service": "Virtual Machines",
+ "text": "비용 가드레일을 구현합니다. 거버넌스 정책을 사용하여 리소스 종류, 구성 및 위치를 제한합니다. RBAC를 사용하여 초과 지출로 이어질 수 있는 작업을 차단합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "353f0d7a-b104-43c3-b3e9-926af6458844",
+ "service": "Virtual Machines",
+ "text": "올바른 리소스를 선택합니다. VM 플랜 크기 및 SKU를 선택하면 전체 비용에 직접적인 영향을 줍니다. 워크로드 특성에 따라 VM을 선택합니다. 워크로드가 CPU를 많이 사용합니까, 아니면 인터럽트 가능한 프로세스를 실행합니까? 각 SKU에는 전체 비용에 영향을 주는 연결된 디스크 옵션이 있습니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "dff9f383-b459-4359-907e-bd33a92d4bd6",
+ "service": "Virtual Machines",
+ "text": "종속 리소스에 적합한 기능을 선택합니다. 예약된 용량과 함께 Azure Backup 스토리지를 사용하여 자격 증명 모음 표준 계층에 대한 백업 스토리지 비용을 절감합니다. 1년 또는 3년 동안 예약하면 할인을 제공합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "24cfa2c5-9e77-48e8-82ad-c5e98c636a69",
+ "service": "Virtual Machines",
+ "text": "올바른 청구 모델을 선택합니다. 컴퓨팅을 위한 약정 기반 모델이 워크로드의 비즈니스 요구 사항에 따라 비용을 최적화하는지 평가합니다. 다음과 같은 Azure 옵션을 고려합니다.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "046215f1-13ee-4fbf-893d-eeafa28ab76b",
+ "service": "Virtual Machines",
+ "text": "사용량을 모니터링합니다. 사용 패턴을 지속적으로 모니터링하고 사용되지 않거나 활용도가 낮은 VM을 감지합니다. 이러한 인스턴스의 경우 VM 인스턴스를 사용하지 않을 때 종료합니다. 모니터링은 Operational Excellence의 핵심 접근 방식입니다. 자세한 내용은 Operational Excellence의 권장 사항을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "877c04dd-441f-4202-9b87-9eeb3c60b564",
+ "service": "Virtual Machines",
+ "text": "최적화할 수 있는 방법을 찾습니다. 일부 전략에는 기존 시스템의 리소스를 늘리거나, 스케일 업하거나, 해당 시스템의 인스턴스를 더 추가하거나, 스케일 아웃 중에서 가장 비용 효율적인 접근 방식을 선택하는 것이 포함됩니다. 수요를 다른 리소스에 분산하여 오프로드하거나 우선 순위 대기열, 게이트웨이 오프로딩, 버퍼링 및 속도 제한을 구현하여 수요를 줄일 수 있습니다. 자세한 내용은 성능 효율성의 권장 사항을 참조하세요.",
+ "type": "checklist",
+ "waf": "비용"
+ },
+ {
+ "description": "SKU는 제공하는 기능에 따라 가격이 책정됩니다. 고급 기능이 필요하지 않은 경우 SKU에 과도하게 지출하지 마세요. 스폿 가상 머신은 더 저렴한 비용으로 Azure의 잉여 용량을 활용합니다.",
+ "guid": "90700d86-70f6-433f-b995-b9ad8cfdec84",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 올바른 VM 플랜 크기 및 SKU를 선택합니다. 워크로드에 가장 적합한 VM 크기를 식별합니다. VM 선택기를 사용하여 워크로드에 가장 적합한 VM을 식별합니다. Windows 및 Linux 가격 책정을 참조하세요. 일부 중단을 허용할 수 있는 고도의 병렬 일괄 처리 작업과 같은 워크로드의 경우 Azure Spot Virtual Machines를 사용하는 것이 좋습니다. 스폿 가상 머신은 대규모 솔루션을 실험, 개발 및 테스트하는 데 적합합니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "일부 고성능 디스크 유형은 추가 비용 최적화 기능 및 전략을 제공합니다. 프리미엄 SSD v2 디스크의 조정 기능은 과도하게 프로비전하지 않고 고성능을 제공하기 때문에 비용을 절감할 수 있으며, 그렇지 않으면 리소스가 충분히 활용되지 않을 수 있습니다.",
+ "guid": "14211a5a-ea48-4aa1-9f24-e46689328dda",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM의 SKU와 연결된 디스크 옵션을 평가합니다. 성능 요구 사항을 결정하는 동시에 스토리지 용량 요구 사항을 염두에 두고 변동하는 작업 패턴에 대해 설명합니다. 예를 들어 Azure Premium SSD v2 디스크를 사용하면 디스크 크기에 관계없이 성능을 세부적으로 조정할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "스폿 가상 머신의 대폭 할인을 적용하여 컴퓨팅 인프라 비용을 줄입니다.",
+ "guid": "38d3a88b-a84f-46f3-95ce-76a4e245027b",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 일반 VM을 스폿 가상 머신과 혼합합니다. 유연한 오케스트레이션을 사용하면 지정된 비율에 따라 스폿 가상 머신을 배포할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "리소스를 사용하지 않을 때 규모를 축소하거나 중지하면 확장 집합에서 실행되는 VM 수가 줄어들어 비용이 절감됩니다. 시작/중지 기능은 저렴한 자동화 옵션입니다.",
+ "guid": "eccee9b1-70f3-4c96-8223-35e24d842201",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 수요가 감소할 때 VM 인스턴스의 수를 줄입니다. 기준에 따라 축소 정책을 설정합니다. 업무 외 시간에는 VM을 중지합니다. Azure Automation 시작/중지 기능을 사용하여 비즈니스 요구 사항에 따라 구성할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "온-프레미스 라이선스를 최대화하는 동시에 클라우드의 이점을 활용할 수 있습니다.",
+ "guid": "3c34c3e4-5715-472e-953e-2d5030bf18a0",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) Azure 하이브리드 혜택을 사용하여 라이선스 이동성을 활용하세요. VM에는 사용자 고유의 온-프레미스 Windows Server OS 라이선스를 Azure로 가져올 수 있는 라이선스 옵션이 있습니다. 또한 Azure 하이브리드 혜택을 통해 특정 Linux 구독을 Azure로 가져올 수 있습니다.",
+ "type": "recommendation",
+ "waf": "비용"
+ },
+ {
+ "description": "",
+ "guid": "fc1734b9-fefe-403d-bfc9-c2beca6f12a2",
+ "service": "Virtual Machines",
+ "text": "VM 인스턴스를 모니터링합니다. VM 인스턴스에서 로그 및 메트릭을 수집하여 리소스 사용량을 모니터링하고 인스턴스의 상태를 측정합니다. 몇 가지 일반적인 메트릭에는 CPU 사용량, 요청 수 및 입력/출력(I/O) 대기 시간이 포함됩니다. 문제에 대한 알림을 받고 사용자 환경에서 구성 변경 내용을 검색하도록 Azure Monitor 경고를 설정합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "724b847d-caf4-4e90-83e7-f4c71e68c4f7",
+ "service": "Virtual Machines",
+ "text": "VM 및 해당 종속성의 상태를 모니터링합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "f99e71a9-05ee-41c2-81b7-8d794763040b",
+ "service": "Virtual Machines",
+ "text": "일상적인 작업의 일부로 정기적인 시스템 패치를 포함하는 유지 관리 계획을 수립합니다. 즉각적인 패치 적용이 가능한 비상 프로세스를 포함합니다. 사용자 지정 프로세스를 사용하여 패치를 관리하거나 Azure에 작업을 부분적으로 위임할 수 있습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "ca34b9c2-69db-4256-a354-c491877f79ac",
+ "service": "Virtual Machines",
+ "text": "부트스트래핑, 스크립트 실행 및 VM 구성을 위한 프로세스를 자동화합니다. 확장 또는 사용자 지정 스크립트를 사용하여 프로세스를 자동화할 수 있습니다. 다음 옵션을 사용하는 것이 좋습니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "821779c7-588f-40af-a740-8dd41fb585fd",
+ "service": "Virtual Machines",
+ "text": "자동 업데이트를 설치하기 위한 프로세스가 있습니다. 중요한 패치 및 보안 패치를 적시에 롤아웃하기 위해 자동 VM 게스트 패치를 사용하는 것이 좋습니다. Azure 업데이트 관리자를 사용하여 Azure에서 Windows 및 Linux 가상 머신에 대한 OS 업데이트를 관리합니다.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "079c8821-00dd-4eaf-9cae-5a3dbfd6fdfa",
+ "service": "Virtual Machines",
+ "text": "프로덕션 환경과 밀접하게 일치하는 테스트 환경을 구축하여 프로덕션에 배포하기 전에 업데이트 및 변경 사항을 테스트합니다. 보안 업데이트, 성능 기준 및 안정성 오류를 테스트하기 위한 프로세스를 마련합니다. Azure Chaos Studio 오류 라이브러리를 활용하여 오류 조건을 삽입하고 시뮬레이션합니다. 자세한 내용은 Azure Chaos Studio 오류 및 작업 라이브러리를 참조하세요.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "77cdbef0-ba18-4ef0-9ef4-088931e331c7",
+ "service": "Virtual Machines",
+ "text": "할당량을 관리합니다. 워크로드에 필요한 할당량 수준을 계획하고 워크로드가 발전함에 따라 해당 수준을 정기적으로 검토합니다. 할당량을 늘리거나 줄여야 하는 경우 이러한 변경을 조기에 요청하세요.",
+ "type": "checklist",
+ "waf": "작업"
+ },
+ {
+ "description": "유연한 오케스트레이션은 VM 인스턴스를 대규모로 관리할 수 있습니다. 개별 VM을 처리하면 운영 오버헤드가 추가됩니다. 예를 들어 VM 인스턴스를 삭제하면 연결된 디스크와 NIC도 자동으로 삭제됩니다. VM 인스턴스는 업데이트 작업으로 인해 서비스가 중단되지 않도록 여러 장애 도메인에 분산되어 있습니다.",
+ "guid": "3049efb5-d3ae-4e36-a8fa-12f2c4a44144",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 유연한 오케스트레이션 모드의 Virtual Machine Scale Sets 워크로드의 배포 및 관리를 간소화하는 데 도움이 될 수 있습니다. 예를 들어 자동 복구를 사용하여 자체 복구를 쉽게 관리할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "보안은 업그레이드의 주된 이유입니다. 인스턴스에 대한 보안 보증은 시간이 지남에 따라 감소해서는 안 됩니다. 롤링 업그레이드는 일괄적으로 수행되므로 모든 인스턴스가 동시에 다운되지 않습니다.",
+ "guid": "19de83a6-2f87-49b1-8241-d1d687f46658",
+ "service": "Virtual Machines",
+ "text": "(확장 집합) 업그레이드 정책을 설정하여 VM을 최신 상태로 유지합니다. 롤링 업그레이드를 권장합니다. 그러나 세부적인 제어가 필요한 경우 수동으로 업그레이드하도록 선택합니다. 유연한 오케스트레이션의 경우 Azure Update Manager를 사용할 수 있습니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "확장 집합의 VM이 만들어지고 지정된 앱이 미리 설치되어 관리가 더 쉬워집니다.",
+ "guid": "65c832e8-2882-45ed-b239-0e68f74975aa",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 프로필에서 응용 프로그램을 정의하여 Azure Compute Gallery에서 VM 응용 프로그램을 자동으로 배포합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "확장은 각 VM에서 수동으로 설치, 구성 또는 업그레이드할 필요 없이 대규모로 소프트웨어 설치를 간소화하는 데 도움이 될 수 있습니다.",
+ "guid": "40266c61-9685-4ee1-8cb6-a899a6b573f2",
+ "service": "Virtual Machines",
+ "text": "사전 구축된 소프트웨어 구성 요소를 부트스트래핑의 일부로 확장으로 설치합니다. Azure는 VM에 대한 유틸리티 애플리케이션을 구성, 모니터링, 보안 및 제공하는 데 사용할 수 있는 많은 확장을 지원합니다. 확장에서 자동 업그레이드를 사용하도록 설정합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "데이터 모니터링은 인시던트 해결의 핵심입니다. 포괄적인 모니터링 스택은 VM의 성능 및 상태에 대한 정보를 제공합니다. 인스턴스를 지속적으로 모니터링하면 성능 과부하 및 안정성 문제와 같은 오류에 대비하거나 예방할 수 있습니다.",
+ "guid": "72e210dc-5abb-4569-b650-ec27003bb1cf",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) VM 인스턴스의 상태를 모니터링하고 측정합니다. 모니터 에이전트 확장을 VM에 배포하여 OS별 데이터 수집 규칙을 사용하여 게스트 OS에서 모니터링 데이터를 수집합니다. VM 인사이트를 사용하여 상태 및 성능을 모니터링하고 수집된 데이터에서 추세를 볼 수 있습니다. 부팅 진단을 사용하여 VM이 부팅될 때 정보를 가져옵니다. 부팅 진단은 부팅 실패도 진단합니다.",
+ "type": "recommendation",
+ "waf": "작업"
+ },
+ {
+ "description": "",
+ "guid": "0303e75c-321d-42b0-9226-b05f43633d50",
+ "service": "Virtual Machines",
+ "text": "성능 목표를 정의합니다. 응답 시간, CPU 사용률, 메모리 사용률과 같은 성능 지표와 초당 트랜잭션 수, 동시 사용자, 가용성 및 상태와 같은 워크로드 메트릭을 추적하고 측정할 VM 메트릭을 식별합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "f2c0ba97-9170-43ab-90b5-b30f159913ba",
+ "service": "Virtual Machines",
+ "text": "용량 계획에서 VM, 확장 집합 및 디스크 구성의 성능 프로필을 고려합니다. 각 SKU는 메모리 및 CPU의 프로필이 다르며 워크로드 유형에 따라 다르게 동작합니다. 파일럿 및 개념 증명을 수행하여 특정 워크로드에서의 성능 동작을 이해합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "ffee7b2f-b57c-40cc-a8ab-9044dead9dc7",
+ "service": "Virtual Machines",
+ "text": "VM 성능 튜닝. 성능 최적화를 활용하고 워크로드에 필요한 기능을 향상시킵니다. 예를 들어 고성능 사용 사례 및 가속화된 네트워킹을 위해 로컬로 연결된 NVMe(Non-Volatile Memory Express)를 사용하고 더 나은 성능과 확장성을 위해 프리미엄 SSD v2를 사용합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "75cf3a03-3d7c-4199-8138-45ff62b1f7a5",
+ "service": "Virtual Machines",
+ "text": "종속 서비스를 고려합니다. VM과 상호 작용하는 캐싱, 네트워크 트래픽 및 콘텐츠 배달 네트워크와 같은 워크로드 종속성은 성능에 영향을 줄 수 있습니다. 또한 대기 시간을 추가할 수 있는 영역 및 지역과 같은 지리적 분포를 고려합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "739525ea-4d0a-4965-baef-ab0325fbed67",
+ "service": "Virtual Machines",
+ "text": "성능 데이터를 수집합니다. 모니터링에 대한 Operational Excellence 모범 사례에 따라 적절한 확장을 배포하여 성능 지표에 대해 추적하는 메트릭을 확인합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "",
+ "guid": "39acd43b-a405-439b-83c9-b9d79d9cdba6",
+ "service": "Virtual Machines",
+ "text": "근접 배치 그룹. 짧은 대기 시간이 필요한 워크로드에서 근접 배치 그룹을 사용하여 VM이 물리적으로 서로 가까이 있는지 확인합니다.",
+ "type": "checklist",
+ "waf": "공연"
+ },
+ {
+ "description": "VM의 크기를 적절하게 조정하는 것은 워크로드의 성능에 큰 영향을 미치는 기본적인 결정입니다. 올바른 VM 집합이 없으면 성능 문제가 발생하고 불필요한 비용이 발생할 수 있습니다.",
+ "guid": "67cc04db-4b74-40f4-9bf6-0ba5f758b45e",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 용량 계획에 맞는 VM에 대한 SKU를 선택합니다. 부적합한 SKU를 필터링할 수 있도록 코어 수, 메모리, 스토리지 및 네트워크 대역폭을 포함한 워크로드 요구 사항을 잘 이해해야 합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "근접 배치 그룹은 Azure 컴퓨팅 리소스 간의 물리적 거리를 줄여 성능을 향상시키고 독립 실행형 VM, 여러 가용성 집합의 VM 또는 여러 확장 집합의 VM 간의 네트워크 대기 시간을 줄일 수 있습니다.",
+ "guid": "ef3de2ad-d5b6-4931-9fc7-28249d9300c0",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 대기 시간에 민감한 워크로드 VM을 근접 배치 그룹에 배포합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "프리미엄 SSD는 I/O 집약적 워크로드가 있는 고성능 및 짧은 대기 시간 디스크 지원 VM을 제공합니다. 프리미엄 SSD v2는 디스크 크기 조정이 필요하지 않으므로 과도한 오버 프로비저닝 없이 고성능을 가능하게 하고 사용되지 않는 용량의 비용을 최소화합니다. VM SKU에서 사용할 수 있는 경우 로컬로 연결된 NVMe 또는 유사한 디바이스는 특히 높은 IOPS(초당 입력/출력 작업 수)와 짧은 대기 시간이 필요한 사용 사례에 높은 성능을 제공할 수 있습니다.",
+ "guid": "a91aae92-2b2c-4c88-b268-2c70b995a952",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 기존 워크로드 및 VM SKU의 디스크 성능을 분석하여 스토리지 프로필을 설정합니다. 프로덕션 VM에 프리미엄 SSD를 사용합니다. 프리미엄 SSD v2를 사용하여 디스크의 성능을 조정합니다. 로컬로 연결된 NVMe 장치를 사용합니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "VM에 대한 SR-IOV(단일 루트 I/O 가상화)를 통해 네트워킹 성능을 크게 향상시킬 수 있습니다.",
+ "guid": "57e446da-1b2e-4bdc-abc9-3e978a11e940",
+ "service": "Virtual Machines",
+ "text": "(가상 머신) 가속화된 네트워킹을 사용하도록 설정하는 것이 좋습니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ },
+ {
+ "description": "응용 프로그램 수요가 증가하면 확장 집합의 VM 인스턴스에 대한 부하가 증가합니다. 자동 크기 조정 규칙은 수요를 충족할 수 있는 충분한 리소스가 있는지 확인합니다.",
+ "guid": "785858b0-2f0b-476d-9f1e-af92b57314c9",
+ "service": "Virtual Machines",
+ "text": "(VM, 확장 집합) 자동 크기 조정 규칙을 설정하여 수요에 따라 확장 집합의 VM 인스턴스 수를 늘리거나 줄입니다.",
+ "type": "recommendation",
+ "waf": "공연"
+ }
+ ],
+ "metadata": {
+ "name": "WAF Service Guides",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "이 검사는 아직 검토되지 않았습니다",
+ "name": "확인되지 않음"
+ },
+ {
+ "description": "이 검사와 연관된 작업 항목이 있습니다",
+ "name": "열다"
+ },
+ {
+ "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다",
+ "name": "성취"
+ },
+ {
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
+ },
+ {
+ "description": "필요 없음",
+ "name": "필요 없음"
+ }
+ ],
+ "waf": [
+ {
+ "name": "안전"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "비용"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "신뢰도"
+ },
+ {
+ "name": "안전"
+ },
+ {
+ "name": "공연"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "작업"
+ },
+ {
+ "name": "공연"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "예"
+ },
+ {
+ "name": "아니요"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.pt.json b/checklists-ext/wafsg_checklist.pt.json
new file mode 100644
index 000000000..72c1cd4cd
--- /dev/null
+++ b/checklists-ext/wafsg_checklist.pt.json
@@ -0,0 +1,5618 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "",
+ "guid": "a549f1f2-55ec-4094-b8c5-1be6fd4f4d38",
+ "service": "App Service Web Apps",
+ "text": "Priorize os fluxos do usuário: nem todos os fluxos são igualmente críticos. Atribua prioridades a cada fluxo para orientar suas decisões de design. O design do fluxo do usuário pode influenciar quais camadas de serviço e o número de instâncias você escolhe para um plano e configuração do Serviço de Aplicativo.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "a67a6739-c1af-48d6-a3d1-001fb5105139",
+ "service": "App Service Web Apps",
+ "text": "Antecipe possíveis falhas: planeje estratégias de mitigação para possíveis falhas. A tabela a seguir mostra exemplos de análise do modo de falha.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "b47d664a-75c8-4739-80d8-6cf9f60abb56",
+ "service": "App Service Web Apps",
+ "text": "Redundância de build: crie redundância no aplicativo e na infraestrutura de suporte. Distribua instâncias entre zonas de disponibilidade para melhorar a tolerância a falhas. O tráfego é roteado para outras zonas se uma delas falhar. Implante seu aplicativo em várias regiões para garantir que seu aplicativo permaneça disponível, mesmo que uma região inteira sofra uma interrupção.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "6b8fa1ed-cfa0-4435-9146-b3d1a8edb432",
+ "service": "App Service Web Apps",
+ "text": "Tenha uma estratégia de dimensionamento confiável: a carga inesperada em um aplicativo pode torná-lo não confiável. Considere a abordagem de dimensionamento correta com base nas características da carga de trabalho. Às vezes, você pode escalar verticalmente para lidar com a carga. No entanto, se a carga continuar a aumentar, escale horizontalmente para novas instâncias. Prefira o dimensionamento automático em vez de abordagens manuais. Sempre mantenha um buffer de capacidade extra durante as operações de escalabilidade para evitar a degradação do desempenho.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "ac7f205b-9117-4b49-8f22-9f31528dfdbd",
+ "service": "App Service Web Apps",
+ "text": "Planeje sua capacidade de recuperação: a redundância é crucial para a continuidade dos negócios. Faça failover para outra instância se uma instância estiver inacessível. Explore os recursos de reparo automático no Serviço de Aplicativo, como o reparo automático de instâncias.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "55917a7d-4410-45fc-bba7-42e64d85c9cd",
+ "service": "App Service Web Apps",
+ "text": "Realize testes de confiabilidade: Realize testes de carga para avaliar a confiabilidade e o desempenho do seu aplicativo sob carga. Os planos de teste devem incluir cenários que validem suas operações de recuperação automatizadas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "dcceb232-19d6-48dc-a91f-5b4907cc3dda",
+ "service": "App Service Web Apps",
+ "text": "Use investigações de integridade para identificar trabalhos que não respondem: o Serviço de Aplicativo tem recursos internos que executam ping periodicamente em um caminho específico do aplicativo Web. As instâncias que não respondem são removidas do balanceador de carga e substituídas por uma nova instância.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Um plano premium do Serviço de Aplicativo oferece recursos avançados de dimensionamento e garante redundância se ocorrerem falhas.",
+ "guid": "696fd187-e2a8-45e8-bbe7-a6d3cb1fca62",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Escolha a camada Premium de um plano do Serviço de Aplicativo para cargas de trabalho de produção. Defina o número máximo e mínimo de trabalhadores de acordo com seu planejamento de capacidade. Para obter mais informações, consulte Visão geral do plano do Serviço de Aplicativo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Seu aplicativo pode suportar falhas em uma única zona quando várias instâncias são distribuídas entre zonas. O tráfego muda automaticamente para instâncias íntegras em outras zonas e mantém a confiabilidade do aplicativo se uma zona não estiver disponível.",
+ "guid": "830faa5e-7767-4526-8550-547a345dd398",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite a redundância de zona. Considere provisionar mais de três instâncias para aumentar a tolerância a falhas. Verifique o suporte regional para redundância de zona porque nem todas as regiões oferecem esse recurso.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As solicitações de entrada são distribuídas uniformemente em todos os nós disponíveis quando você desabilita a afinidade do ARR. As solicitações distribuídas uniformemente impedem que o tráfego sobrecarregue qualquer nó único. As solicitações podem ser redirecionadas diretamente para outros nós íntegros se um nó não estiver disponível. Evite a afinidade de sessão para garantir que sua instância do Serviço de Aplicativo permaneça sem estado. Um Serviço de Aplicativo sem estado reduz a complexidade e garante um comportamento consistente entre nós. Remova as sessões fixas para que o Serviço de Aplicativo possa adicionar ou remover instâncias para dimensionar horizontalmente.",
+ "guid": "3551bbd4-1f44-4bca-b25c-53e16f79cafe",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Considere desabilitar o recurso de afinidade ARR (roteamento de solicitação de aplicativo). A afinidade ARR cria sessões fixas que redirecionam os usuários para o nó que lidou com suas solicitações anteriores.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As regras de recuperação automática ajudam seu aplicativo a se recuperar automaticamente de problemas inesperados. As regras configuradas acionam ações de recuperação quando os limites são violados. A recuperação automática permite a manutenção proativa automática.",
+ "guid": "2a428ce1-dc25-4a1b-baf4-5edc909369fe",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Defina regras de recuperação automática com base na contagem de solicitações, solicitações lentas, limites de memória e outros indicadores que fazem parte de sua linha de base de desempenho. Considere essa configuração como parte de sua estratégia de escalabilidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As verificações de integridade podem detectar problemas antecipadamente. Em seguida, o sistema pode executar ações corretivas automaticamente quando uma solicitação de verificação de integridade falhar. O balanceador de carga roteia o tráfego para longe de instâncias não íntegras, o que direciona os usuários para nós íntegros.",
+ "guid": "4dd04acd-7d69-45b8-aa22-223c4ecc0a8c",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Habilite o recurso de verificação de integridade e forneça um caminho que responda às solicitações de verificação de integridade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "e13358d7-cf1a-4356-a8eb-afe901ca3b36",
+ "service": "App Service Web Apps",
+ "text": "Examinar linhas de base de segurança: para aprimorar a postura de segurança do aplicativo hospedado em um plano do Serviço de Aplicativo, examine a linha de base de segurança do Serviço de Aplicativo.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "cedf41d1-6f8a-4898-9cbd-064e66931bfa",
+ "service": "App Service Web Apps",
+ "text": "Use o runtime e as bibliotecas mais recentes: teste minuciosamente as compilações do aplicativo antes de fazer atualizações para detectar problemas antecipadamente e garantir uma transição suave para a nova versão. O Serviço de Aplicativo dá suporte à política de suporte de tempo de execução de linguagem para atualizar pilhas existentes e desativar pilhas de fim de suporte.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "469151fd-f51c-43ab-84f7-5d6c01e99fba",
+ "service": "App Service Web Apps",
+ "text": "Crie segmentação por meio de limites de isolamento para conter violação: aplique a segmentação de identidade. Por exemplo, implemente o RBAC (controle de acesso baseado em função) para atribuir permissões específicas com base em funções. Siga o princípio do menor privilégio para limitar os direitos de acesso apenas ao necessário. Crie também segmentação no nível da rede. Injete aplicativos do Serviço de Aplicativo em uma rede virtual do Azure para isolamento e defina NSGs (grupos de segurança de rede) para filtrar o tráfego.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "794e1680-facc-4258-89cb-a07f1fa6e4d0",
+ "service": "App Service Web Apps",
+ "text": "Aplicar controles de acesso em identidades: restrinja o acesso interno ao aplicativo Web e o acesso externo do aplicativo Web a outros recursos. Essa configuração aplica controles de acesso em identidades e ajuda a manter a postura de segurança geral da carga de trabalho.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "0ff3e194-df50-4856-b798-7487e5fc4d34",
+ "service": "App Service Web Apps",
+ "text": "Controlar o tráfego de rede de e para o aplicativo: não exponha pontos de extremidade do aplicativo à Internet pública. Em vez disso, adicione um ponto de extremidade privado no aplicativo Web que é colocado em uma sub-rede dedicada. Enfrente seu aplicativo com um proxy reverso que se comunica com esse ponto de extremidade privado. Considere usar o Gateway de Aplicativo ou o Azure Front Door para essa finalidade.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "a6fcbd07-0da4-4386-902d-6708c5a5cc23",
+ "service": "App Service Web Apps",
+ "text": "Criptografar dados: proteja os dados em trânsito com TLS (Transport Layer Security) de ponta a ponta. Use suas chaves gerenciadas pelo cliente para criptografia completa de dados em repouso. Para obter mais informações, consulte Criptografia em repouso usando chaves gerenciadas pelo cliente.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "410bf979-2e37-4dfc-82ba-33dc8e9fbbf0",
+ "service": "App Service Web Apps",
+ "text": "Reduza a superfície de ataque: remova as configurações padrão desnecessárias. Por exemplo, desabilite a depuração remota, a autenticação local para sites do SCM (Gerenciador de Controle do Código-Fonte) e a autenticação básica. Desative protocolos não seguros, como HTTP e FTP (File Transfer Protocol). Imponha configurações por meio de políticas do Azure. Para obter mais informações, consulte Políticas do Azure.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "7157fe29-fe06-4c84-965d-8d450ac4bfe0",
+ "service": "App Service Web Apps",
+ "text": "Proteja os segredos do aplicativo: você precisa lidar com informações confidenciais, como chaves de API ou tokens de autenticação. Em vez de codificar esses segredos diretamente no código do aplicativo ou nos arquivos de configuração, você pode usar as referências do Azure Key Vault nas configurações do aplicativo. Quando o aplicativo é iniciado, o Serviço de Aplicativo recupera automaticamente os valores secretos do Key Vault usando a identidade gerenciada do aplicativo.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "ae9e2e30-a31e-4459-ae31-fbcb8307016e",
+ "service": "App Service Web Apps",
+ "text": "Habilitar logs de recursos para seu aplicativo: habilite logs de recursos para seu aplicativo para criar trilhas de atividades abrangentes que fornecem dados valiosos durante investigações que seguem incidentes de segurança.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "O aplicativo recupera segredos do Key Vault para autenticar a comunicação externa do aplicativo. O Azure gerencia a identidade e não exige que você provisione ou gire nenhum segredo. Você tem identidades distintas para granularidade de controle. Identidades distintas facilitam a revogação se uma identidade for comprometida.",
+ "guid": "8f1a9e86-9309-4e41-bde5-0828c15daebf",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Atribua identidades gerenciadas ao aplicativo Web. Para manter os limites de isolamento, não compartilhe ou reutilize identidades entre aplicativos. Certifique-se de se conectar com segurança ao registro de contêiner se usar contêineres para sua implantação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os domínios personalizados permitem a comunicação segura por meio de HTTPS usando o protocolo Transport Layer Security (TLS), que garante a proteção de dados confidenciais e aumenta a confiança do usuário.",
+ "guid": "cb4271e8-40e1-4cd3-ad1e-5d4584c485d7",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Configure domínios personalizados para aplicativos. Desative o HTTP e aceite apenas solicitações HTTPS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao usar esse recurso, você não precisa usar bibliotecas de autenticação no código do aplicativo, o que reduz a complexidade. O usuário já está autenticado quando uma solicitação chega ao aplicativo.",
+ "guid": "0e19e111-ccad-457f-94b5-ee2deebc553c",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) avaliar se a autenticação interna do Serviço de Aplicativo é o mecanismo correto para autenticar usuários que acessam seu aplicativo. A autenticação interna do Serviço de Aplicativo se integra à ID do Microsoft Entra. Esse recurso lida com a validação de token e o gerenciamento de identidade do usuário em vários provedores de entrada e dá suporte ao OpenID Connect. Com esse recurso, você não tem autorização em um nível granular e não tem um mecanismo para testar a autenticação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Obtenha os benefícios de segurança de usar uma rede virtual do Azure. Por exemplo, o aplicativo pode acessar recursos com segurança na rede. Adicione um ponto de extremidade privado para ajudar a proteger seu aplicativo. Os pontos de extremidade privados limitam a exposição direta à rede pública e permitem o acesso controlado por meio do proxy reverso.",
+ "guid": "1835b31e-37b4-431a-b783-eb28fec46518",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Configure o aplicativo para integração de rede virtual. Use pontos de extremidade privados para aplicativos do Serviço de Aplicativo. Bloqueie todo o tráfego público. Roteie a imagem de contêiner por meio da integração de rede virtual. Todo o tráfego de saída do aplicativo passa pela rede virtual.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Não recomendamos a autenticação básica como um método de implantação seguro. O Microsoft Entra ID emprega a autenticação baseada em token OAuth 2.0, que oferece inúmeras vantagens e aprimoramentos que abordam as limitações associadas à autenticação básica. As políticas restringem o acesso aos recursos do aplicativo, permitem apenas solicitações de domínios específicos e protegem solicitações entre regiões.",
+ "guid": "07adcdee-eecc-43c4-9cf8-40e06efa96cc",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Para implementar a proteção: - Desabilite a autenticação básica que usa um nome de usuário e senha em favor da autenticação baseada em ID do Microsoft Entra. - Desative a depuração remota para que as portas de entrada não sejam abertas. - Ative as políticas de CORS para restringir as solicitações recebidas. - Desative protocolos, como FTP.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os segredos são mantidos separados da configuração do seu aplicativo. As configurações do aplicativo são criptografadas em repouso. O Serviço de Aplicativo também gerencia rotações secretas.",
+ "guid": "298db56c-a733-4a8c-a009-224a1417de53",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Sempre use referências do Key Vault como configurações do aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Obtenha proteção em tempo real para recursos executados em um plano do Serviço de Aplicativo. Proteja-se contra ameaças e aprimore sua postura geral de segurança.",
+ "guid": "6cd4ee41-8ebd-4a7e-9da4-793705575ea0",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite Microsoft Defender para Nuvem para Serviço de Aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O registro em log captura padrões de acesso. Ele registra eventos relevantes que fornecem informações valiosas sobre como os usuários interagem com um aplicativo ou plataforma. Essas informações são cruciais para fins de responsabilidade, conformidade e segurança.",
+ "guid": "93a4781a-8e68-4ad4-af67-4ae28d534e6e",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Habilite o log de diagnóstico e adicione instrumentação ao seu aplicativo. Os logs são enviados para contas de Armazenamento do Azure, Hubs de Eventos do Azure e Log Analytics. Para obter mais informações sobre tipos de log de auditoria, consulte Tipos de log com suporte.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "bb84a1f1-7f43-4656-bc0d-70abc288979b",
+ "service": "App Service Web Apps",
+ "text": "Estimar o custo inicial: como parte do exercício de modelagem de custos, use a calculadora de preços do Azure para avaliar os custos aproximados associados a várias camadas com base no número de instâncias que você planeja executar. Cada camada do Serviço de Aplicativo oferece diferentes opções de computação.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "8616b469-c0d7-4da8-afe4-28a9c55941b5",
+ "service": "App Service Web Apps",
+ "text": "Avalie as opções com desconto: as camadas mais altas incluem instâncias de computação dedicadas. Você pode aplicar um desconto de reserva se sua carga de trabalho tiver um padrão de uso previsível e consistente. Certifique-se de analisar os dados de uso para determinar o tipo de reserva que se adapta à sua carga de trabalho. Para obter mais informações, consulte Economizar custos com instâncias reservadas do Serviço de Aplicativo.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "08ccd533-7d3f-438e-8274-a30d3e10d81e",
+ "service": "App Service Web Apps",
+ "text": "Entender os medidores de uso: o Azure cobra uma taxa por hora, rateada por segundo, com base no tipo de preço do seu plano do Serviço de Aplicativo. Os encargos se aplicam a cada instância expandida em seu plano, com base no tempo em que você aloca a instância de VM. Preste atenção aos recursos de computação subutilizados que podem aumentar seus custos como resultado da superalocação devido à seleção de SKU abaixo do ideal ou à configuração de redução de escala mal configurada.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "9d33583d-156b-4a49-b361-1eae39f5d6df",
+ "service": "App Service Web Apps",
+ "text": "Considere as compensações entre densidade e isolamento: você pode usar os planos do Serviço de Aplicativo para hospedar vários aplicativos na mesma computação, o que economiza custos com ambientes compartilhados. Para obter mais informações, consulte Compensações.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "19d66260-5bfe-466e-89b0-f2573223acf9",
+ "service": "App Service Web Apps",
+ "text": "Avalie o efeito de sua estratégia de escalabilidade no custo: você deve projetar, testar e configurar adequadamente a escalabilidade horizontal e a redução ao implementar a escalabilidade automática. Estabeleça limites máximos e mínimos precisos para o dimensionamento automático.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "b4798bde-d65a-4c44-a75e-e7c8c05df60e",
+ "service": "App Service Web Apps",
+ "text": "Otimize os custos do ambiente: considere a camada Básica ou Gratuita para executar ambientes de pré-produção. Essas camadas são de baixo desempenho e baixo custo. Se você usar a camada Básica ou Gratuita, use a governança para impor a camada, restringir o número de instâncias e CPUs, restringir o dimensionamento e limitar a retenção de logs.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "0cfc5cbc-61b7-4b64-a2eb-52e15c243cad",
+ "service": "App Service Web Apps",
+ "text": "Implementar padrões de design: essa estratégia reduz o volume de solicitações geradas pela carga de trabalho. Considere o uso de padrões como o padrão Back-ends para Front-ends e o padrão de Agregação de Gateway, que podem minimizar o número de solicitações e reduzir custos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "300e19c7-7406-47ca-aeca-bca5032f2b8a",
+ "service": "App Service Web Apps",
+ "text": "Verifique regularmente os custos relacionados aos dados: períodos prolongados de retenção de dados ou camadas de armazenamento caras podem levar a altos custos de armazenamento. Mais despesas podem se acumular devido ao uso da largura de banda e à retenção prolongada de dados de registro.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "085263b2-cffe-4537-9ecb-75ef967c2985",
+ "service": "App Service Web Apps",
+ "text": "Otimize os custos de implantação: aproveite os slots de implantação para otimizar os custos. O slot é executado no mesmo ambiente de computação que a instância de produção. Use-os estrategicamente para cenários como implantações azul-verde que alternam entre slots. Essa abordagem minimiza o tempo de inatividade e garante transições suaves.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Os níveis Gratuito e Básico são econômicos em comparação com os níveis mais altos. Eles fornecem uma solução econômica para ambientes de não produção que não precisam de todos os recursos e desempenho dos planos premium.",
+ "guid": "df7294a6-460e-4d50-b4a9-66141caada1d",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Escolha os níveis Gratuito ou Básico para ambientes inferiores. Recomendamos essas camadas para uso experimental. Remova as camadas quando não precisar mais delas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os planos de desenvolvimento/teste fornecem taxas reduzidas para os serviços do Azure, o que os torna econômicos para ambientes de não produção. Use instâncias reservadas para pagar antecipadamente por recursos computacionais e obter descontos significativos.",
+ "guid": "a4bd3bc2-554f-483f-9707-dcf9f1b7cdd2",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Aproveite os descontos e explore os preços preferenciais para: - Ambientes inferiores com planos de desenvolvimento/teste. - Reservas do Azure e planos de economia do Azure para computação dedicada que você provisiona na camada Premium V3 e no Ambiente do Serviço de Aplicativo. Use instâncias reservadas para cargas de trabalho estáveis que tenham padrões de uso previsíveis.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode identificar picos de custos, ineficiências ou despesas inesperadas desde o início. Essa abordagem proativa ajuda você a fornecer controles orçamentários para evitar gastos excessivos.",
+ "guid": "12f02b69-d400-403d-9e8a-1a67ed102764",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Monitore os custos incorridos pelos recursos do Serviço de Aplicativo. Execute a ferramenta de análise de custo no portal do Azure. Crie orçamentos e alertas para notificar as partes interessadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Evite desperdícios e reduza despesas desnecessárias.",
+ "guid": "e48373a3-b551-4715-853c-dee4f114466e",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Aumente a escala quando a demanda diminuir. Para reduzir horizontalmente, defina regras de escala para reduzir o número de instâncias no Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "3aa6c22d-807b-4efd-9ebe-b290c995d0b3",
+ "service": "App Service Web Apps",
+ "text": "Gerenciar versões: use slots de implantação para gerenciar versões com eficiência. Você pode implantar seu aplicativo em um slot, executar testes e validar sua funcionalidade. Após a verificação, você pode mover o aplicativo para produção sem problemas. Esse processo não incorre em custos extras porque o slot é executado no mesmo ambiente de VM (máquina virtual) que a instância de produção.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "751098a9-7103-4250-bd52-f48a5fbe8b73",
+ "service": "App Service Web Apps",
+ "text": "Executar testes automatizados: antes de promover uma versão do seu aplicativo Web, teste completamente seu desempenho, funcionalidade e integração com outros componentes. Use o Azure Load Testing, que se integra ao Apache JMeter, uma ferramenta popular para testes de desempenho. Explore ferramentas automatizadas para outros tipos de teste, como o Phantom para testes funcionais.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "0de22a93-9404-4512-b374-6c753628943e",
+ "service": "App Service Web Apps",
+ "text": "Implantar unidades imutáveis: implemente o padrão Selos de Implantação para compartimentar o Serviço de Aplicativo em um selo imutável. O Serviço de Aplicativo dá suporte ao uso de contêineres, que são inerentemente imutáveis. Considere contêineres personalizados para seu aplicativo Web do Serviço de Aplicativo.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "3175ebdb-2846-4f48-b450-278df163c188",
+ "service": "App Service Web Apps",
+ "text": "Mantenha os ambientes de produção seguros: crie planos separados do Serviço de Aplicativo para executar ambientes de produção e pré-produção. Não faça alterações diretamente no ambiente de produção para garantir estabilidade e confiabilidade. Instâncias separadas permitem flexibilidade no desenvolvimento e teste antes de promover alterações na produção.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "b883e190-a830-4bf4-8c08-ee3b85248abf",
+ "service": "App Service Web Apps",
+ "text": "Gerenciar certificados: para domínios personalizados, você precisa gerenciar certificados TLS.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode detectar problemas imediatamente e tomar as medidas necessárias para manter a disponibilidade e o desempenho.",
+ "guid": "75f6aad9-2abc-4171-9715-ba708928d39a",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Monitore a integridade de suas instâncias e ative as investigações de integridade da instância. Configure um caminho específico para lidar com solicitações de investigação de integridade.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de diagnóstico fornecem informações valiosas sobre o comportamento do seu aplicativo. Monitore padrões de tráfego e identifique anomalias.",
+ "guid": "91d861ad-a4ae-462e-8775-56cbecb31951",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Habilite os logs de diagnóstico para o aplicativo e a instância. O registro frequente pode diminuir o desempenho do sistema, aumentar os custos de armazenamento e introduzir riscos se você tiver acesso não seguro aos registros. Siga estas práticas recomendadas: - Registre o nível certo de informações. - Defina políticas de retenção. - Mantenha uma trilha de auditoria de acesso autorizado e tentativas não autorizadas. - Trate os logs como dados e aplique controles de proteção de dados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Serviço de Aplicativo lida automaticamente com processos como aquisição de certificados, verificação de certificados, renovação de certificados e importação de certificados do Key Vault. Como alternativa, carregue seu certificado no Key Vault e autorize o provedor de recursos do Serviço de Aplicativo a acessá-lo.",
+ "guid": "70e24ecc-5113-4d7d-8a79-8ac24fe1f838",
+ "service": "App Service Web Apps",
+ "text": "(Serviço de Aplicativo) Aproveite os certificados gerenciados do Serviço de Aplicativo para descarregar o gerenciamento de certificação para o Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Evite tempo de inatividade e erros. Reverta rapidamente para o último estado válido conhecido se detectar um problema após uma troca.",
+ "guid": "7a592a00-a940-4d2e-a919-56ad3237092e",
+ "service": "App Service Web Apps",
+ "text": "(Plano do Serviço de Aplicativo) Valide as alterações do aplicativo no slot de preparo antes de trocá-lo pelo slot de produção.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "018624c9-6396-4e1c-8b0c-83d39b40c2a1",
+ "service": "App Service Web Apps",
+ "text": "Identifique e monitore indicadores de desempenho: defina metas para os principais indicadores do aplicativo, como o volume de solicitações recebidas, o tempo que o aplicativo leva para responder às solicitações, solicitações pendentes e erros nas respostas HTTP. Considere os principais indicadores como parte da linha de base de desempenho para a carga de trabalho.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "c66aabbd-8b2a-4295-9492-78cd5aea690a",
+ "service": "App Service Web Apps",
+ "text": "Avalie a capacidade: simule vários cenários de usuário para determinar a capacidade ideal necessária para lidar com o tráfego esperado. Use o Teste de Carga para entender como seu aplicativo se comporta em diferentes níveis de carga.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "7e11019e-4329-458a-b84a-9233aa8de1a5",
+ "service": "App Service Web Apps",
+ "text": "Selecione a camada certa: use computação dedicada para cargas de trabalho de produção. As camadas Premium oferecem SKUs maiores com maior capacidade de memória e CPU, mais instâncias e mais recursos, como redundância de zona. Para obter mais informações, consulte Tipo de preço Premium V3.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "97fdfb16-a73b-497a-853a-fe608cfc1750",
+ "service": "App Service Web Apps",
+ "text": "Otimize sua estratégia de dimensionamento: quando possível, use o dimensionamento automático em vez de ajustar manualmente o número de instâncias à medida que a carga do aplicativo muda. Com o dimensionamento automático, o Serviço de Aplicativo ajusta a capacidade do servidor com base em regras ou gatilhos predefinidos. Certifique-se de fazer testes de desempenho adequados e definir as regras certas para os gatilhos certos.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "45d7e1a5-2b7e-4b6b-8925-bf0b760a9d7e",
+ "service": "App Service Web Apps",
+ "text": "Usar cache: recuperar informações de um recurso que não muda com frequência e é caro para acessar afeta o desempenho. Consultas complexas, incluindo junções e várias pesquisas, contribuem para o tempo de execução. Execute o cache para minimizar o tempo de processamento e a latência. Armazene em cache os resultados da consulta para evitar viagens repetidas de ida e volta ao banco de dados ou back-end e reduza o tempo de processamento para solicitações subsequentes.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "c8094d1c-6371-4984-98c1-ca5d72a7732d",
+ "service": "App Service Web Apps",
+ "text": "Examine os antipadrões de desempenho: para garantir que o aplicativo Web seja executado e dimensionado de acordo com seus requisitos de negócios, evite os antipadrões típicos. Aqui estão alguns antipadrões que o Serviço de Aplicativo corrige.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "O aplicativo nunca é descarregado com o Always On habilitado.",
+ "guid": "2c97ff90-e7cd-4888-a0c9-c21ea287071c",
+ "service": "App Service Web Apps",
+ "text": "Habilite a configuração Always On quando os aplicativos compartilharem um único plano do Serviço de Aplicativo. Os aplicativos do Serviço de Aplicativo são descarregados automaticamente quando ociosos para economizar recursos. A próxima solicitação aciona uma inicialização a frio, o que pode causar tempos limite de solicitação.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Escolha HTTP/2 em vez de HTTP/1.1 porque o HTTP/2 multiplexa totalmente as conexões, reutiliza conexões para reduzir a sobrecarga e compacta cabeçalhos para minimizar a transferência de dados.",
+ "guid": "d735fb9e-9e87-415c-93d0-4918b5cf104e",
+ "service": "App Service Web Apps",
+ "text": "Considere o uso de HTTP/2 para aplicativos para melhorar a eficiência do protocolo.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "ee4fab35-3fcf-469c-aa4a-baaa7ea46a76",
+ "service": "Azure Application Gateway",
+ "text": "Implante as instâncias em uma configuração com reconhecimento de zona, quando disponível.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "897c9b7a-c56c-4390-9938-71ed0ee875d8",
+ "service": "Azure Application Gateway",
+ "text": "Use o Gateway de Aplicativo com o WAF (Firewall de Aplicativo Web) em uma rede virtual para proteger o tráfego 'HTTP/S' de entrada da Internet.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "9d1d0113-dcc3-4309-bf89-57f43eff537c",
+ "service": "Azure Application Gateway",
+ "text": "Em novas implantações, use o Gateway de Aplicativo do Azure v2, a menos que haja um motivo convincente para usar o Gateway de Aplicativo do Azure v1.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "Planejar atualizações de regras",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "Usar investigações de integridade para detectar indisponibilidade de back-end",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "Examinar o impacto das configurações de intervalo e limite nas investigações de integridade",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "Verificar dependências downstream por meio de pontos de extremidade de integridade",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Planeje tempo suficiente para atualizações antes de acessar o Gateway de Aplicativo ou fazer mais alterações. Por exemplo, a remoção de servidores do pool de back-end pode levar algum tempo porque eles precisam drenar as conexões existentes.",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "Planejar atualizações de regras",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Se o Gateway de Aplicativo for usado para balancear a carga do tráfego de entrada em várias instâncias de back-end, recomendamos o uso de investigações de integridade. Isso garantirá que o tráfego não seja roteado para back-ends que não conseguem lidar com o tráfego.",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "Usar investigações de integridade para detectar indisponibilidade de back-end",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A investigação de integridade envia solicitações para o ponto de extremidade configurado em um intervalo definido. Além disso, há um limite de solicitações com falha que serão toleradas antes que o back-end seja marcado como não íntegro. Esses números apresentam uma compensação.- Definir um intervalo maior coloca uma carga maior em seu serviço. Cada instância do Gateway de Aplicativo envia suas próprias investigações de integridade, portanto, 100 instâncias a cada 30 segundos significam 100 solicitações a cada 30 segundos.- Definir um intervalo menor deixa mais tempo antes que uma interrupção seja detectada.- Definir um limite baixo e não íntegro pode significar que falhas curtas e transitórias podem derrubar um back-end. - Definir um limite alto, pode levar mais tempo para tirar um back-end da rotação.",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "Examinar o impacto das configurações de intervalo e limite nas investigações de integridade",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Suponha que cada back-end tenha suas próprias dependências para garantir que as falhas sejam isoladas. Por exemplo, um aplicativo hospedado por trás do Gateway de Aplicativo pode ter vários back-ends, cada um conectado a um banco de dados diferente (réplica). Quando essa dependência falha, o aplicativo pode estar funcionando, mas não retornará resultados válidos. Por esse motivo, o ponto de extremidade de integridade deve validar idealmente todas as dependências. Lembre-se de que, se cada chamada para o ponto de extremidade de integridade tiver uma chamada de dependência direta, esse banco de dados receberá 100 consultas a cada 30 segundos em vez de 1. Para evitar isso, o ponto de extremidade de integridade deve armazenar em cache o estado das dependências por um curto período de tempo.",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "Verificar dependências downstream por meio de pontos de extremidade de integridade",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Determinados cenários podem forçá-lo a implementar regras especificamente no Gateway de Aplicativo. Por exemplo, se as regras ModSec CRS 2.2.9, CRS 3.0 ou CRS 3.1 forem necessárias, essas regras só poderão ser implementadas no Gateway de Aplicativo. Por outro lado, a limitação de taxa e a filtragem geográfica estão disponíveis apenas no Azure Front Door, não no AppGateway.",
+ "guid": "2cc68719-238d-40f1-9eda-37a4b77cabc2",
+ "service": "Azure Application Gateway",
+ "text": "Ao usar o Azure Front Door e o Gateway de Aplicativo para proteger aplicativos 'HTTP/S', use políticas de WAF no Front Door e bloqueie o Gateway de Aplicativo para receber tráfego somente do Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "Configurar uma política TLS para segurança aprimorada",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "Usar o AppGateway para terminação TLS",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Key Vault para armazenar certificados TLS",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "Ao criptografar novamente o tráfego de back-end, verifique se o certificado do servidor de back-end contém as CAs (Autoridades de Certificação) raiz e intermediária",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "Usar um servidor DNS apropriado para recursos do pool de back-end",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Cumprir todas as restrições de NSG para Gateway de Aplicativo",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "5ff5e810-ac1d-42ef-9a30-812c15c42be8",
+ "service": "Azure Application Gateway",
+ "text": "Abster-se de usar UDRs na sub-rede do Gateway de Aplicativo",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "Esteja ciente das alterações de capacidade do Gateway de Aplicativo ao habilitar o WAF",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Configure uma política TLS para segurança extra. Verifique se você está sempre usando a versão mais recente da política TLS disponível. Isso impõe o TLS 1.2 e cifras mais fortes.",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "Configurar uma política TLS para segurança aprimorada",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Há vantagens de usar o Gateway de Aplicativo para terminação TLS:- O desempenho melhora porque as solicitações que vão para back-ends diferentes precisam ser autenticadas novamente em cada back-end.- Melhor utilização dos servidores de back-end porque eles não precisam executar o processamento TLS- Roteamento inteligente acessando o conteúdo da solicitação.- Gerenciamento de certificados mais fácil porque o certificado só precisa ser instalado no Gateway de Aplicativo.",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "Usar o AppGateway para terminação TLS",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Gateway de Aplicativo pode ser integrado ao Key Vault. Isso fornece segurança mais forte, separação mais fácil de funções e responsabilidades, suporte para certificados gerenciados e um processo de renovação e rotação de certificados mais fácil.",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Key Vault para armazenar certificados TLS",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Um certificado TLS do servidor back-end deve ser emitido por uma autoridade de certificação conhecida. Se o certificado não tiver sido emitido por uma autoridade de certificação confiável, o Gateway de Aplicativo verificará se o certificado foi emitido por uma autoridade de certificação confiável e assim por diante, até que um certificado de autoridade de certificação confiável seja encontrado. Só então uma conexão segura é estabelecida. Caso contrário, o Gateway de Aplicativo marcará o back-end como não íntegro.",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "Ao criptografar novamente o tráfego de back-end, verifique se o certificado do servidor de back-end contém as CAs (Autoridades de Certificação) raiz e intermediária",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Quando o pool de back-end contém um FQDN resolvível, a resolução DNS é baseada em uma zona DNS privada ou servidor DNS personalizado (se configurado na VNet) ou usa o DNS padrão fornecido pelo Azure.",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "Usar um servidor DNS apropriado para recursos do pool de back-end",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os NSGs têm suporte na sub-rede do Gateway de Aplicativo, mas há algumas restrições. Por exemplo, alguma comunicação com determinados intervalos de portas é proibida. Certifique-se de entender as implicações dessas restrições. Para obter detalhes, consulte Grupos de segurança de rede.",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "Cumprir todas as restrições de NSG para Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso de UDR (Rotas Definidas pelo Usuário) na sub-rede do Gateway de Aplicativo pode causar alguns problemas. O estado de integridade no back-end pode ser desconhecido. Os logs e métricas do Gateway de Aplicativo podem não ser gerados. Recomendamos que você não use UDRs na sub-rede do Gateway de Aplicativo para que possa exibir a integridade, os logs e as métricas de back-end. Se suas organizações precisarem usar a UDR na sub-rede do Gateway de Aplicativo, examine os cenários com suporte. Para obter mais informações, consulte Rotas definidas pelo usuário com suporte.",
+ "guid": "96ac0266-6e5d-4944-bccb-0c6b3bd00b89",
+ "service": "Azure Application Gateway",
+ "text": "Abster-se de usar UDRs na sub-rede do gateway de aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Quando o WAF está habilitado, cada solicitação deve ser armazenada em buffer pelo Gateway de Aplicativo até que chegue totalmente, verifica se a solicitação corresponde a qualquer violação de regra em seu conjunto de regras principal e, em seguida, encaminha o pacote para as instâncias de back-end. Quando há uploads de arquivos grandes (30 MB+ de tamanho), isso pode resultar em uma latência significativa. Como os requisitos de capacidade do Gateway de Aplicativo são diferentes com o WAF, não recomendamos habilitar o WAF no Gateway de Aplicativo sem teste e validação adequados.",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "Esteja ciente das alterações de capacidade do Gateway de Aplicativo ao habilitar o WAF",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Familiarize-se com os preços do Gateway de Aplicativo",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "Revise recursos subutilizados",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "03e1fbfa-86c2-4550-a6aa-e111d6ab895d",
+ "service": "Azure Application Gateway",
+ "text": "Interromper instâncias do Gateway de Aplicativo que não estão em uso",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "Ter uma política de redução e expansão",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "Analise as métricas de consumo em diferentes parâmetros",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Para obter informações sobre os preços do Gateway de Aplicativo, consulte Noções básicas sobre preços do Gateway de Aplicativo do Azure e do Firewall de Aplicativo Web. Você também pode aproveitar a calculadora de preços. Certifique-se de que as opções sejam dimensionadas adequadamente para atender à demanda de capacidade e fornecer o desempenho esperado sem desperdiçar recursos.",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "Familiarize-se com os preços do Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Identifique e exclua instâncias do Gateway de Aplicativo com pools de back-end vazios para evitar custos desnecessários.",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "Revise recursos subutilizados",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você não é cobrado quando o Gateway de Aplicativo está no estado parado. A execução contínua de instâncias do Gateway de Aplicativo pode incorrer em custos irrelevantes. Avalie os padrões de uso e interrompa instâncias quando você não precisar deles. Por exemplo, espera-se que o uso após o horário comercial em ambientes de desenvolvimento/teste seja baixo. Consulte estes artigos para obter informações sobre como interromper e iniciar instâncias.- Stop-AzApplicationGateway- Start-AzApplicationGateway",
+ "guid": "6af81413-0516-4067-9e26-8aad8d2d06ca",
+ "service": "Azure Application Gateway",
+ "text": "Interromper instâncias do Gateway de Aplicativo quando não estiverem em uso",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Uma política de expansão garante que haverá instâncias suficientes para lidar com o tráfego de entrada e picos. Além disso, tenha uma política de redução de escala que garanta que o número de instâncias seja reduzido quando a demanda cair. Considere a escolha do tamanho da instância. O tamanho pode afetar significativamente o custo. Algumas considerações são descritas em Estimar a contagem de instâncias do Gateway de Aplicativo. Para obter mais informações, consulte O que é o Gateway de Aplicativo do Azure v2?",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "Ter uma política de redução e expansão",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você é cobrado com base em instâncias limitadas do Gateway de Aplicativo com base nas métricas rastreadas pelo Azure. Avalie as várias métricas e unidades de capacidade e determine os direcionadores de custo. Para obter mais informações, consulte Gerenciamento de Custos e Cobrança da Microsoft. As métricas a seguir são fundamentais para o Gateway de Aplicativo. Essas informações podem ser usadas para validar se a contagem de instâncias provisionadas corresponde à quantidade de tráfego de entrada.- Unidades de Capacidade Faturada Estimada- Unidades de Capacidade Faturáveis Fixas- Unidades de Capacidade AtuaisPara obter mais informações, consulte Métricas do Gateway de Aplicativo. Certifique-se de contabilizar os custos de largura de banda.",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "Analise as métricas de consumo em diferentes parâmetros",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar métricas de capacidade",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Habilitar o diagnóstico no Gateway de Aplicativo e no WAF (Firewall de Aplicativo Web)",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Monitor Network Insights",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "Corresponder as configurações de tempo limite com o aplicativo de back-end",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar problemas de configuração do Key Vault usando o Assistente do Azure",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "78bbcbf2-30c3-4c77-8e8f-8faf4c4b817d",
+ "service": "Azure Application Gateway",
+ "text": "Configurar e monitorar as limitações da porta SNAT",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "Considere as limitações da porta SNAT em seu design",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Use essas métricas como indicadores de utilização da capacidade provisionada do Gateway de Aplicativo. É altamente recomendável configurar alertas sobre a capacidade. Para obter detalhes, consulte Suporte de alto tráfego do Gateway de Aplicativo.",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar métricas de capacidade",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Há outras métricas que podem indicar problemas no Gateway de Aplicativo ou no back-end. Recomendamos avaliar os seguintes alertas:- Contagem de Hosts Não Íntegros- Status da Resposta (dimensão 4xx e 5xx)- Status da Resposta de Back-end (dimensão 4xx e 5xx)- Tempo de Resposta do Último Byte de Back-end- Tempo Total do Gateway de AplicativoPara obter mais informações, consulte Métricas do Gateway de Aplicativo.",
+ "guid": "af883a3e-1ece-4f8a-9732-95a461fe244c",
+ "service": "Azure Application Gateway",
+ "text": "Solucionar problemas usando métricas",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de diagnóstico permitem que você exiba logs de firewall, logs de desempenho e logs de acesso. Use esses logs para gerenciar e solucionar problemas com instâncias do Gateway de Aplicativo. Para obter mais informações, consulte Logs de diagnóstico e integridade de back-end para o Gateway de Aplicativo.",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "Habilitar o diagnóstico no Gateway de Aplicativo e no WAF (Firewall de Aplicativo Web)",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Monitor Network Insights fornece uma visão abrangente da integridade e das métricas para recursos de rede, incluindo o Gateway de Aplicativo. Para obter detalhes adicionais e recursos com suporte para o Gateway de Aplicativo, consulte Insights de rede do Azure Monitor.",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "Usar o Azure Monitor Network Insights",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Verifique se você configurou as configurações de IdleTimeout para corresponder às características do ouvinte e do tráfego do aplicativo de back-end. O valor padrão é definido como quatro minutos e pode ser configurado para um máximo de 30. Para obter mais informações, consulte Redefinição de TCP do Balanceador de Carga e Tempo Limite Ocioso.Para considerações sobre carga de trabalho, consulte Monitorando a integridade do aplicativo para confiabilidade.",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "Corresponder as configurações de tempo limite com o aplicativo de back-end",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Gateway de Aplicativo verifica a versão renovada do certificado no Key Vault vinculado a cada intervalo de 4 horas. Se ele estiver inacessível devido a qualquer configuração incorreta do Key Vault, ele registrará esse erro e enviará uma recomendação do Assistente correspondente. Você deve configurar os alertas do Advisor para se manter atualizado e corrigir esses problemas imediatamente para evitar problemas relacionados ao plano de controle ou de dados. Para obter mais informações, consulte Investigando e resolvendo erros do cofre de chaves. Para definir um alerta para esse caso específico, use o Tipo de Recomendação como Resolver problema do Azure Key Vault para o Gateway de Aplicativo.",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "Monitorar problemas de configuração do Key Vault usando o Assistente do Azure",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As limitações de porta SNAT são importantes para conexões de back-end no Gateway de Aplicativo. Há fatores separados que afetam como o Gateway de Aplicativo atinge o limite de porta SNAT. Por exemplo, se o back-end for um endereço IP público, ele exigirá sua própria porta SNAT. Para evitar limitações de porta SNAT, você pode aumentar o número de instâncias por Gateway de Aplicativo, escalar horizontalmente os back-ends para ter mais endereços IP ou mover seus back-ends para a mesma rede virtual e usar endereços IP privados para os back-ends. As solicitações por segundo (RPS) no Gateway de Aplicativo serão afetadas se o limite de porta SNAT for atingido. Por exemplo, se um Gateway de Aplicativo atingir o limite de porta SNAT, ele não poderá abrir uma nova conexão com o back-end e a solicitação falhará.",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "Considere as limitações da porta SNAT em seu design",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "261fdf60-ce3b-4abd-8a85-b39ebb208df9",
+ "service": "Azure Application Gateway",
+ "text": "Estimar a contagem de instâncias do Gateway de Aplicativo",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem máxima de instâncias",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem mínima de instâncias",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Definir o tamanho da sub-rede do Gateway de Aplicativo",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "958240c8-23f1-447d-9cb7-ce9edb5aa606",
+ "service": "Azure Application Gateway",
+ "text": "Aproveite os recursos do Gateway de Aplicativo V2 para obter benefícios de dimensionamento automático e desempenho",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Para o SKU do Gateway de Aplicativo v2, o dimensionamento automático leva algum tempo (aproximadamente seis a sete minutos) antes que o conjunto adicional de instâncias esteja pronto para atender ao tráfego. Durante esse tempo, se houver picos curtos no tráfego, espere latência transitória ou perda de tráfego. Recomendamos que você defina sua contagem mínima de instâncias para um nível ideal. Depois de estimar a contagem média de instâncias e determinar as tendências de dimensionamento automático do Gateway de Aplicativo, defina a contagem mínima de instâncias com base nos padrões de aplicativo. Para obter informações, consulte Suporte de alto tráfego do Gateway de Aplicativo. Verifique as Unidades de Computação Atuais do último mês. Essa métrica representa a utilização da CPU do gateway. Para definir a contagem mínima de instâncias, divida o pico de uso por 10. Por exemplo, se a média de Unidades de Computação Atuais no mês passado for 50, defina a contagem mínima de instâncias como cinco.",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem mínima de instâncias",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Recomendamos 125 como a contagem máxima de instâncias de dimensionamento automático. Verifique se a sub-rede que tem o Gateway de Aplicativo tem endereços IP disponíveis suficientes para dar suporte ao conjunto de instâncias de expansão. Definir a contagem máxima de instâncias como 125 não tem implicações de custo porque você é cobrado apenas pela capacidade consumida.",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "Definir a contagem máxima de instâncias",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Gateway de Aplicativo precisa de uma sub-rede dedicada em uma rede virtual. A sub-rede pode ter várias instâncias do recurso de Gateway de Aplicativo implantado. Você também pode implantar outros recursos do Gateway de Aplicativo nessa sub-rede, SKU v1 ou v2. Aqui estão algumas considerações para definir o tamanho da sub-rede:- O Gateway de Aplicativo usa um endereço IP privado por instância e outro endereço IP privado se um IP de front-end privado estiver configurado.- O Azure reserva cinco endereços IP em cada sub-rede para uso interno.- O Gateway de Aplicativo (SKU Standard ou WAF) pode dar suporte a até 32 instâncias. Usando 32 endereços IP de instância + 1 IP de front-end privado + 5 Azure reservados, é recomendável um tamanho mínimo de sub-rede de /26. Como o SKU Standard_v2 ou WAF_v2 pode dar suporte a até 125 instâncias, usando o mesmo cálculo, é recomendável um tamanho de sub-rede de /24.- Se você quiser implantar recursos adicionais do Gateway de Aplicativo na mesma sub-rede, considere os endereços IP adicionais que serão necessários para a contagem máxima de instâncias para Standard e Standard v2.",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "Definir o tamanho da sub-rede do Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O SKU v2 oferece dimensionamento automático para garantir que o Gateway de Aplicativo possa escalar verticalmente à medida que o tráfego aumenta. Quando comparada ao SKU v1, a v2 tem recursos que aprimoram o desempenho da carga de trabalho. Por exemplo, melhor desempenho de descarregamento de TLS, tempos de implantação e atualização mais rápidos, redundância de zona e muito mais. Para obter mais informações sobre recursos de dimensionamento automático, consulte Dimensionando o Gateway de Aplicativo v2 e o WAF v2. Se você estiver executando o SKU v1 Gateway de aplicativo, considere migrar para o SKU do gateway de aplicativo v2. Para obter mais informações, consulte Migrar o Gateway de Aplicativo do Azure e o Firewall de Aplicativo Web da v1 para a v2.",
+ "guid": "508791c8-897f-4490-8590-fc33a9df8f73",
+ "service": "Azure Application Gateway",
+ "text": "Aproveite os recursos para dimensionamento automático e benefícios de desempenho",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "d68b4fc0-fd9c-499a-9fd4-2c572735bd36",
+ "service": "Azure Blob Storage",
+ "text": "Use a análise do modo de falha: minimize os pontos de falha considerando dependências internas, como a disponibilidade de redes virtuais, Azure Key Vault ou Rede de Distribuição de Conteúdo do Azure ou pontos de extremidade do Azure Front Door. As falhas poderão ocorrer se as credenciais exigidas pelas cargas de trabalho para acessar o Armazenamento de Blobs desaparecerem do Key Vault ou se as cargas de trabalho usarem um ponto de extremidade com base em uma rede de distribuição de conteúdo removida. Nesses casos, as cargas de trabalho podem precisar usar um ponto de extremidade alternativo para se conectar. Para obter informações gerais sobre a análise do modo de falha, consulte Recomendações para executar a análise do modo de falha.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "817f9103-607a-4e3d-ba94-1a3adffaff8f",
+ "service": "Azure Blob Storage",
+ "text": "Definir metas de confiabilidade e recuperação: examine os SLAs (contratos de nível de serviço) do Azure. Derive o SLO (objetivo de nível de serviço) para a conta de armazenamento. Por exemplo, o SLO pode ser afetado pela configuração de redundância que você escolheu. Considere o efeito de uma interrupção regional, o potencial de perda de dados e o tempo necessário para restaurar o acesso após uma interrupção. Considere também a disponibilidade de quaisquer dependências internas que você identificou como parte da análise do modo de falha.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Blob Storage",
+ "text": "Configurar redundância de dados: para durabilidade máxima, escolha uma configuração que copie dados entre zonas de disponibilidade ou regiões globais. Para obter disponibilidade máxima, escolha uma configuração que permita que os clientes leiam dados da região secundária durante uma interrupção da região primária.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "e71dbbd7-5e50-4ade-b5e5-4b9e59d10706",
+ "service": "Azure Blob Storage",
+ "text": "Aplicativos de design: projete aplicativos para mudar perfeitamente para a leitura de dados da região secundária se a região primária ficar indisponível por qualquer motivo. Isso só se aplica a configurações de GRS (armazenamento com redundância geográfica) e GZRS (armazenamento com redundância de zona geográfica). Projetar aplicativos para lidar com interrupções reduz o tempo de inatividade para os usuários finais.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "2243ff8e-7ce3-4999-9eee-3b3377f4df8b",
+ "service": "Azure Blob Storage",
+ "text": "Explore os recursos para ajudá-lo a atingir suas metas de recuperação: torne os blobs restauráveis para que possam ser recuperados se estiverem corrompidos, editados ou excluídos por engano.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Blob Storage",
+ "text": "Crie um plano de recuperação: considere recursos de proteção de dados, operações de backup e restauração ou procedimentos de failover. Prepare-se para possíveis perdas e inconsistências de dados e o tempo e o custo do failover. Para obter mais informações, consulte Recomendações para criar uma estratégia de recuperação de desastre.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "ffdb383d-6a9a-4ebb-b902-12320390dd84",
+ "service": "Azure Blob Storage",
+ "text": "Monitorar possíveis problemas de disponibilidade: assine o painel de Integridade do Serviço do Azure para monitorar possíveis problemas de disponibilidade. Use métricas de armazenamento no Azure Monitor e logs de diagnóstico para investigar alertas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "A redundância protege seus dados contra falhas inesperadas. As opções de configuração ZRS e GZRS são replicadas em diferentes zonas de disponibilidade e permitem que os aplicativos continuem lendo dados durante uma interrupção. Para obter mais informações, consulte Durabilidade e disponibilidade por cenário de interrupção e Parâmetros de durabilidade e disponibilidade.",
+ "guid": "e426149f-841f-4865-878e-311cfe914db9",
+ "service": "Azure Blob Storage",
+ "text": "Configure sua conta para redundância. Para obter disponibilidade e durabilidade máximas, configure sua conta usando ZRS (armazenamento com redundância de zona) ou GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa propriedade ajuda a estimar a quantidade de dados que você pode perder ao iniciar um failover de conta. Todos os dados e metadados gravados antes da última hora de sincronização estão disponíveis na região secundária, mas os dados e metadados gravados após a última hora de sincronização podem ser perdidos porque não são gravados na região secundária.",
+ "guid": "f42e13de-f6f3-4fad-97f3-f657b8aa1f6c",
+ "service": "Azure Blob Storage",
+ "text": "Antes de iniciar um failover ou failback, avalie o potencial de perda de dados verificando o valor da propriedade da hora da última sincronização. Essa recomendação se aplica somente às configurações GRS e GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A opção de exclusão reversível permite que uma conta de armazenamento recupere contêineres e blobs excluídos. A opção de controle de versão rastreia automaticamente as alterações feitas nos blobs. Essa opção permite restaurar um blob para um estado anterior. A opção de restauração pontual protege contra exclusão ou corrupção acidental de blob e permite restaurar dados de blob de blocos para um estado anterior. Para obter mais informações, consulte Visão geral da proteção de dados.",
+ "guid": "6ba14c6a-6f37-46a3-a2a8-e38373925d6f",
+ "service": "Azure Blob Storage",
+ "text": "Como parte de sua estratégia de backup e recuperação, habilite as opções de exclusão reversível de contêiner, exclusão reversível de blob, controle de versão e restauração pontual.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "5738d99e-ae27-47ca-959c-0dabef735931",
+ "service": "Azure Blob Storage",
+ "text": "Examine a linha de base de segurança do Armazenamento do Azure: para começar, primeiro examine a linha de base de segurança do Armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "54dc05f5-631d-41ac-8ad7-40a451e48efd",
+ "service": "Azure Blob Storage",
+ "text": "Usar controles de rede para restringir o tráfego de entrada e saída: desabilite todo o tráfego público para a conta de armazenamento. Use controles de rede de conta para conceder o nível mínimo de acesso exigido por usuários e aplicativos. Para obter mais informações, consulte Como abordar a segurança de rede para sua conta de armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "3d39bc4a-58c1-4d69-8116-751252d03104",
+ "service": "Azure Blob Storage",
+ "text": "Reduzir a superfície de ataque: impedir o acesso anônimo, o acesso à chave de conta ou o acesso por meio de conexões HTTP (não seguras) pode reduzir a superfície de ataque. Exigir que os clientes enviem e recebam dados usando a versão mais recente do protocolo TLS (Transport Layer Security).",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "b0e33ead-c6ca-4386-acee-30e929390ca0",
+ "service": "Azure Blob Storage",
+ "text": "Autorize o acesso sem usar senhas ou chaves: o Microsoft Entra ID oferece segurança superior e facilidade de uso em comparação com chaves compartilhadas e assinaturas de acesso compartilhado. Conceda às entidades de segurança apenas as permissões necessárias para que elas executem suas tarefas.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "c2d96110-7950-4f81-8c41-34e1fa015631",
+ "service": "Azure Blob Storage",
+ "text": "Proteja informações confidenciais: proteja informações confidenciais, como chaves de conta e tokens de assinatura de acesso compartilhado. Embora essas formas de autorização geralmente não sejam recomendadas, certifique-se de girá-las, expirá-las e armazená-las com segurança.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "cd6916c2-09f8-4269-971d-60a07e57cbbd",
+ "service": "Azure Blob Storage",
+ "text": "Habilitar a opção de transferência segura necessária: habilitar essa configuração para todas as suas contas de armazenamento garante que todas as solicitações feitas na conta de armazenamento ocorram em conexões seguras. Todas as solicitações feitas por HTTP falham.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "f944c199-636d-46b4-bc23-ee8bdfefa7a5",
+ "service": "Azure Blob Storage",
+ "text": "Proteger objetos críticos: aplique políticas de imutabilidade para proteger objetos críticos. As políticas protegem os blobs armazenados para fins legais, de conformidade ou outros fins comerciais de serem modificados ou excluídos. Configure as guardas de documentos para períodos de tempo definidos ou até que as restrições sejam suspensas por um administrador.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "80a10cbe-93f3-410a-b7ad-d7b5234add61",
+ "service": "Azure Blob Storage",
+ "text": "Detectar ameaças: habilite o Microsoft Defender para Armazenamento para detectar ameaças. Os alertas de segurança são disparados quando ocorrem anomalias na atividade. Os alertas notificam os administradores de assinatura por e-mail com detalhes de atividades suspeitas e recomendações sobre como investigar e corrigir ameaças.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Quando o acesso anônimo é permitido para uma conta de armazenamento, um usuário que tenha as permissões apropriadas pode modificar a configuração de acesso anônimo de um contêiner para habilitar o acesso anônimo aos dados nesse contêiner.",
+ "guid": "4380d8e1-fdb6-45da-a1e1-109e162f43d3",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite o acesso de leitura anônimo a contêineres e blob.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Bloquear uma conta impede que ela seja excluída e cause perda de dados.",
+ "guid": "09543d14-a0c7-49dc-89d1-74b1913c3b03",
+ "service": "Azure Blob Storage",
+ "text": "Aplique um bloqueio do Azure Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Comece com acesso zero e, em seguida, autorize incrementalmente os níveis mais baixos de acesso necessários para clientes e serviços para minimizar o risco de criar aberturas desnecessárias para invasores.",
+ "guid": "1b8c4090-6b15-45e0-8833-ee5285ebd444",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite o tráfego para os pontos de extremidade públicos da sua conta de armazenamento. Crie pontos de extremidade privados para clientes executados no Azure. Habilite o ponto de extremidade público somente se os clientes e serviços externos ao Azure exigirem acesso direto à sua conta de armazenamento. Habilite regras de firewall que limitam o acesso a redes virtuais específicas.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o RBAC, não há senhas ou chaves que possam ser comprometidas. A entidade de segurança (usuário, grupo, identidade gerenciada ou entidade de serviço) é autenticada pela ID do Microsoft Entra para retornar um token OAuth 2.0. O token é usado para autorizar uma solicitação no serviço de Armazenamento de Blobs.",
+ "guid": "2ecbd38b-7ae5-4858-916a-0554e8f2d41d",
+ "service": "Azure Blob Storage",
+ "text": "Autorize o acesso usando o RBAC (controle de acesso baseado em função) do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Somente solicitações protegidas autorizadas com a ID do Microsoft Entra são permitidas.",
+ "guid": "4d731629-d6d3-4aa9-b46f-6259451f08f0",
+ "service": "Azure Blob Storage",
+ "text": "Não permitir autorização de chave compartilhada. Isso desabilita não apenas o acesso à chave da conta, mas também os tokens de assinatura de acesso compartilhado do serviço e da conta, pois eles são baseados em chaves de conta.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Key Vault permite recuperar chaves em runtime, em vez de salvá-las usando seu aplicativo. O Key Vault também facilita a rotação de suas chaves sem interrupção de seus aplicativos. Girar as chaves da conta periodicamente reduz o risco de expor seus dados a ataques maliciosos.",
+ "guid": "62ae35d2-7f0b-4c63-b0ff-1a1f85d39b89",
+ "service": "Azure Blob Storage",
+ "text": "Recomendamos que você não use uma chave de conta. Se você precisar usar chaves de conta, armazene-as no Key Vault e certifique-se de regenerá-las periodicamente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As práticas recomendadas podem ajudá-lo a evitar que um token de assinatura de acesso compartilhado seja vazado e se recuperar rapidamente se ocorrer um vazamento.",
+ "guid": "e2163930-a35e-415f-bea3-a019e5c2a5c7",
+ "service": "Azure Blob Storage",
+ "text": "Recomendamos que você não use tokens de assinatura de acesso compartilhado. Avalie se você precisa de tokens de assinatura de acesso compartilhado para proteger o acesso aos recursos do Armazenamento de Blobs. Se você precisar criar uma, examine esta lista de práticas recomendadas de assinatura de acesso compartilhado antes de criá-la e distribuí-la.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS 1.2 é mais seguro e rápido do que o TLS 1.0 e 1.1, que não oferecem suporte a algoritmos criptográficos modernos e conjuntos de criptografia.",
+ "guid": "d586222d-d9d1-4f51-ba29-58021c0ee0ae",
+ "service": "Azure Blob Storage",
+ "text": "Configure sua conta de armazenamento para que os clientes possam enviar e receber dados usando a versão mínima do TLS 1.2.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As chaves gerenciadas pelo cliente fornecem maior flexibilidade e controle. Por exemplo, você pode armazenar chaves de criptografia no Key Vault e girá-las automaticamente.",
+ "guid": "33303cd1-5b9c-4688-aa24-50cb53f5caac",
+ "service": "Azure Blob Storage",
+ "text": "Considere usar sua própria chave de criptografia para proteger os dados em sua conta de armazenamento. Para obter mais informações, consulte Chaves gerenciadas pelo cliente para criptografia do Armazenamento do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "6f7ce98b-ec2c-4535-9e6a-11c077c9bd3f",
+ "service": "Azure Blob Storage",
+ "text": "Identifique os medidores usados para calcular sua fatura: os medidores são usados para rastrear a quantidade de dados armazenados na conta (capacidade de dados) e o número e o tipo de operações realizadas para gravar e ler dados. Também há medidores associados ao uso de recursos opcionais, como marcas de índice de blob, inventário de blob, suporte a feed de alterações, escopos de criptografia e suporte a SFTP (SSH File Transfer Protocol). Para obter mais informações, consulte Como você é cobrado pelo Armazenamento de Blobs.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "0c2e2825-34c7-4ad5-ad21-a270b1b402c0",
+ "service": "Azure Blob Storage",
+ "text": "Entenda o preço de cada medidor: certifique-se de usar a página de preços apropriada e aplicar as configurações apropriadas nessa página. Para obter mais informações, consulte Localizando o preço unitário de cada medidor. Considere o número de operações associadas a cada preço. Por exemplo, o preço associado a operações de gravação e leitura se aplica a 10.000 operações. Para determinar o preço de uma operação individual, divida o preço listado por 10.000.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "31b047a5-abfe-4452-ad3e-a4b99cad0e4b",
+ "service": "Azure Blob Storage",
+ "text": "Estimar o custo da capacidade e das operações: você pode modelar os custos associados ao armazenamento, entrada e saída de dados usando a calculadora de preços do Azure. Use campos para comparar o custo associado a várias regiões, tipos de conta, tipos de namespace e configurações de redundância. Para determinados cenários, você pode usar cálculos de exemplo e planilhas disponíveis na documentação da Microsoft. Por exemplo, você pode estimar o custo de arquivamento de dados ou estimar o custo de usar o comando AzCopy para transferir blobs.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "51e5c8d4-4794-4514-bb01-54a517927a05",
+ "service": "Azure Blob Storage",
+ "text": "Escolha um modelo de cobrança para capacidade: avalie se o uso de um modelo baseado em compromisso é mais econômico do que o uso de um modelo baseado em consumo. Se você não tiver certeza sobre quanta capacidade precisa, poderá começar com um modelo baseado em consumo, monitorar as métricas de capacidade e avaliar mais tarde.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "8a5b488c-2b97-4e55-8997-659d64c62030",
+ "service": "Azure Blob Storage",
+ "text": "Escolha um tipo de conta, um nível de redundância e uma camada de acesso padrão: você deve selecionar um valor para cada uma dessas configurações ao criar uma conta de armazenamento. Todos os valores afetam os encargos de transação e os encargos de capacidade. Todas essas configurações, exceto o tipo de conta, podem ser alteradas após a criação da conta.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "b675b5be-352c-4a06-94ed-8457e3d5db8c",
+ "service": "Azure Blob Storage",
+ "text": "Escolha a camada de acesso padrão mais econômica: a menos que uma camada seja especificada com cada upload de blob, os blobs inferem sua camada de acesso da configuração de camada de acesso padrão. Uma alteração na configuração de camada de acesso padrão de uma conta de armazenamento se aplica a todos os blobs na conta para a qual uma camada de acesso não foi definida explicitamente. Esse custo pode ser significativo se você tiver coletado um grande número de blobs. Para obter mais informações sobre como uma alteração de camada afeta cada blob existente, consulte Alterando a camada de acesso de um blob.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "fbf53f6f-f5af-47ef-8e28-e471bf173884",
+ "service": "Azure Blob Storage",
+ "text": "Carregar dados diretamente para a camada de acesso mais econômica: por exemplo, se a configuração de camada de acesso padrão da sua conta estiver ativa, mas você estiver carregando arquivos para fins de arquivamento, especifique uma camada mais fria como o arquivo morto ou uma camada fria como parte de sua operação de upload. Depois de carregar blobs, use políticas de gerenciamento de ciclo de vida para mover blobs para as camadas mais econômicas com base em métricas de uso, como a hora do último acesso. Escolher o nível mais ideal antecipadamente pode reduzir custos. Se você alterar a camada de um blob de blocos que já carregou, pagará o custo de gravação na camada inicial ao carregar o blob pela primeira vez e, em seguida, pagará o custo de gravação na camada desejada.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "3549725f-8de2-4431-a8e2-fb88c2def5b4",
+ "service": "Azure Blob Storage",
+ "text": "Tenha um plano para gerenciar o ciclo de vida dos dados: otimize os custos de transação e capacidade aproveitando os níveis de acesso e o gerenciamento do ciclo de vida. Os dados usados com menos frequência devem ser colocados em camadas de acesso mais esporádicas, enquanto os dados acessados com frequência devem ser colocados em camadas de acesso mais quente.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "df99152b-4af1-4cea-b2bd-b06fd2425c57",
+ "service": "Azure Blob Storage",
+ "text": "Decida quais recursos você precisa: alguns recursos, como controle de versão e exclusão reversível de blob, incorrem em custos adicionais de transação e capacidade, bem como outros encargos. Certifique-se de revisar as seções de preços e cobrança em artigos que descrevem esses recursos ao escolher quais recursos adicionar à sua conta.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "b69e35ad-ee70-4787-bcb2-9cde1aa2600c",
+ "service": "Azure Blob Storage",
+ "text": "Criar proteções: crie orçamentos com base em assinaturas e grupos de recursos. Use políticas de governança para restringir tipos de recursos, configurações e locais. Além disso, use o RBAC para bloquear ações que podem levar a gastos excessivos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "41cc33cd-773d-463f-b9e3-07256ea9e3f0",
+ "service": "Azure Blob Storage",
+ "text": "Monitore os custos: certifique-se de que os custos permaneçam dentro dos orçamentos, compare os custos com as previsões e veja onde ocorrem gastos excessivos. Você pode usar o painel de análise de custos no portal do Azure para monitorar os custos. Você também pode exportar dados de custo para uma conta de armazenamento e analisar esses dados usando o Excel ou o Power BI.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "94b3fa52-a17f-44ec-b4ba-9801c2764632",
+ "service": "Azure Blob Storage",
+ "text": "Monitore o uso: monitore continuamente os padrões de uso e detecte contas e contêineres não utilizados ou subutilizados. Use os insights de armazenamento para identificar contas com pouco ou nenhum uso. Habilite relatórios de inventário de blobs e use ferramentas como Azure Databricks ou Azure Synapse Analytics e Power BI para analisar dados de custo. Fique atento a aumentos inesperados na capacidade, o que pode indicar que você está coletando vários arquivos de log, versões de blob ou blobs excluídos de forma reversível. Desenvolva uma estratégia para expirar ou fazer a transição de objetos para camadas de acesso mais econômicas. Tenha um plano para expirar objetos ou mover objetos para níveis de acesso mais acessíveis.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "As camadas mais frias têm custos de transferência de dados mais altos. Com menos arquivos grandes, você pode reduzir o número de operações necessárias para transferir dados.",
+ "guid": "7eb7a0d4-912b-4d5c-af98-31200e20cc63",
+ "service": "Azure Blob Storage",
+ "text": "Empacote arquivos pequenos em arquivos maiores antes de movê-los para camadas mais frias. Você pode usar formatos de arquivo como TAR ou ZIP.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A reidratação de alta prioridade da camada de arquivamento pode levar a contas mais altas do que o normal.",
+ "guid": "8d3e7da9-3091-4daf-8a07-37116d9e3f7e",
+ "service": "Azure Blob Storage",
+ "text": "Use a reidratação de prioridade padrão ao reidratar blobs do armazenamento de arquivos. Use a reidratação de alta prioridade apenas para situações de restauração de dados de emergência. Para obter mais informações, consulte Reidratar um blob arquivado para uma camada online",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Armazenar logs de recursos em uma conta de armazenamento para análise posterior pode ser uma opção mais barata. O uso de políticas de gerenciamento de ciclo de vida para gerenciar a retenção de log em uma conta de armazenamento evita que um grande número de arquivos de log se acumule ao longo do tempo, o que pode levar a cobranças de capacidade desnecessárias.",
+ "guid": "f29291b5-d170-453b-bdbb-379f229fdc5b",
+ "service": "Azure Blob Storage",
+ "text": "Reduza o custo do uso de logs de recursos escolhendo o local de armazenamento de log apropriado e gerenciando os períodos de retenção de log. Se você planeja consultar logs apenas ocasionalmente (por exemplo, consultar logs para auditoria de conformidade), considere enviar logs de recursos para uma conta de armazenamento em vez de enviá-los para um workspace de Logs do Azure Monitor. Você pode usar uma solução de consulta sem servidor, como o Azure Synapse Analytics, para analisar logs. Para obter mais informações, consulte Otimizar o custo para consultas pouco frequentes. Use políticas de gerenciamento de ciclo de vida para excluir ou arquivar logs.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Cada operação de gravação em um blob cria uma nova versão. Isso aumenta os custos de capacidade. Você pode manter os custos sob controle removendo versões que não são mais necessárias.",
+ "guid": "496e994f-ae82-40c2-90cb-eb03a9e2205c",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar o controle de versão, use uma política de gerenciamento de ciclo de vida para excluir automaticamente versões antigas de blob.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Sempre que um blob é substituído, uma nova versão é adicionada, o que leva a um aumento nos encargos de capacidade de armazenamento. Para reduzir os encargos de capacidade, armazene dados substituídos com frequência em uma conta de armazenamento separada com o controle de versão desabilitado.",
+ "guid": "91514322-4007-4a99-85f0-e73c181d95fa",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar o controle de versão, coloque os blobs que são substituídos com frequência em uma conta que não tenha o controle de versão habilitado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Sempre que um blob é substituído, um novo instantâneo é criado. A causa do aumento das cobranças de capacidade pode ser difícil de acessar porque a criação desses snapshots não aparece nos logs. Para reduzir os encargos de capacidade, armazene dados substituídos com frequência em uma conta de armazenamento separada com a exclusão reversível desabilitada. Um período de retenção impede que os blobs excluídos temporariamente se acumulem e aumentem o custo da capacidade.",
+ "guid": "7041f493-74f4-42e8-bbd2-15602763dc40",
+ "service": "Azure Blob Storage",
+ "text": "Se você habilitar a exclusão reversível, coloque os blobs que são substituídos com frequência em uma conta que não tenha a exclusão reversível habilitada. Defina períodos de retenção. Considere começar com um curto período de retenção para entender melhor como o recurso afeta sua fatura. O período mínimo de retenção recomendado é de sete dias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A ativação do ponto de extremidade do SFTP incorre em um custo por hora. Ao desabilitar cuidadosamente o suporte ao SFTP e, em seguida, ativá-lo conforme necessário, você pode evitar que cobranças passivas sejam acumuladas em sua conta.",
+ "guid": "c1d10494-a396-4add-aae2-aaf5aa5aa0da",
+ "service": "Azure Blob Storage",
+ "text": "Habilite o suporte a SFTP somente quando ele for usado para transferir dados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os escopos de criptografia incorrem em uma cobrança por mês.",
+ "guid": "b71aeb26-fc96-486c-8bed-c5c616c1d0b1",
+ "service": "Azure Blob Storage",
+ "text": "Desabilite todos os escopos de criptografia que não são necessários para evitar cobranças desnecessárias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Blob Storage",
+ "text": "Crie planos de manutenção e recuperação de emergência: considere recursos de proteção de dados, operações de backup e restauração e procedimentos de failover. Prepare-se para possíveis perdas e inconsistências de dados e o tempo e o custo do failover.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "bdd60136-85dd-45cc-ac07-37d69124d9ab",
+ "service": "Azure Blob Storage",
+ "text": "Monitore a integridade da sua conta de armazenamento: crie painéis de insights de armazenamento para monitorar as métricas de disponibilidade, desempenho e resiliência. Configure alertas para identificar e resolver problemas em seu sistema antes que seus clientes os percebam. Use as configurações de diagnóstico para rotear logs de recursos para um workspace de Logs do Azure Monitor. Em seguida, você pode consultar logs para investigar alertas mais profundamente.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "b842f2e7-9ac7-4d2e-9c9a-a3fb2ddc2441",
+ "service": "Azure Blob Storage",
+ "text": "Habilitar relatórios de inventário de blobs: habilite relatórios de inventário de blobs para examinar o status de retenção, retenção legal ou criptografia do conteúdo da conta de armazenamento. Você também pode usar relatórios de inventário de blobs para entender o tamanho total dos dados, a idade, a distribuição de camadas ou outros atributos de seus dados. Use ferramentas como o Azure Databricks ou o Azure Synapse Analytics e o Power BI para visualizar melhor os dados de inventário e criar relatórios para os stakeholders.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "b54e930b-e9fe-4b7b-adc2-b0f0d0b0f05c",
+ "service": "Azure Blob Storage",
+ "text": "Configure políticas que excluam blobs ou os movam para camadas de acesso econômicas: crie uma política de gerenciamento de ciclo de vida com um conjunto inicial de condições. As execuções de política excluem ou definem automaticamente a camada de acesso de blobs com base nas condições definidas. Analise periodicamente o uso do contêiner usando métricas do Monitor e relatórios de inventário de blob para que você possa refinar as condições para otimizar a eficiência de custos.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode usar seus processos de DevOps existentes para implantar novas contas de armazenamento e usar o Azure Policy para impor sua configuração.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Blob Storage",
+ "text": "Use a IaC (infraestrutura como código) para definir os detalhes de suas contas de armazenamento em modelos do ARM (modelos do Azure Resource Manager), Bicep ou Terraform.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode acompanhar a integridade e a operação de cada uma de suas contas. Crie facilmente dashboards e relatórios que os stakeholders podem usar para acompanhar a integridade de suas contas de armazenamento.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Blob Storage",
+ "text": "Use os insights de armazenamento para acompanhar a integridade e o desempenho de suas contas de armazenamento. Os insights de armazenamento fornecem uma visão unificada das falhas, desempenho, disponibilidade e capacidade de todas as suas contas de armazenamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "61755535-55a0-4064-8537-e9cdf07e1baa",
+ "service": "Azure Blob Storage",
+ "text": "Planejar a escala: entenda as metas de escala para contas de armazenamento.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "bd64ef47-64e7-4c7e-b19f-ccfd451083e0",
+ "service": "Azure Blob Storage",
+ "text": "Escolha o tipo de conta de armazenamento ideal: se sua carga de trabalho exigir altas taxas de transação, objetos menores e uma latência de transação consistentemente baixa, considere usar contas de armazenamento de blob de blocos premium. Uma conta padrão de uso geral v2 é mais apropriada na maioria dos casos.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "b21b6a75-b065-43f1-8298-5778460e2ba0",
+ "service": "Azure Blob Storage",
+ "text": "Reduza a distância de viagem entre o cliente e o servidor: coloque os dados nas regiões mais próximas dos clientes conectados (idealmente na mesma região). Otimize para clientes em regiões distantes usando a replicação de objetos ou uma rede de distribuição de conteúdo. As configurações de rede padrão fornecem o melhor desempenho. Modifique as configurações de rede apenas para melhorar a segurança. Em geral, as configurações de rede não diminuem a distância de viagem e não melhoram o desempenho.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "ef4063df-4ac9-4e8b-9391-cf99ea520f3a",
+ "service": "Azure Blob Storage",
+ "text": "Escolha um esquema de nomenclatura eficiente: diminua a latência das operações de listagem, lista, consulta e leitura usando prefixos de marca de hash mais próximos do início da chave de partição de blob (conta, contêiner, diretório virtual ou nome de blob). Esse esquema beneficia principalmente contas que têm um namespace simples.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "45c2db00-baf4-4e7a-8ceb-871abc5f5d64",
+ "service": "Azure Blob Storage",
+ "text": "Otimize o desempenho dos clientes de dados: escolha uma ferramenta de transferência de dados mais apropriada para o tamanho dos dados, a frequência de transferência e a largura de banda de suas cargas de trabalho. Algumas ferramentas, como o AzCopy, são otimizadas para desempenho e exigem pouca intervenção. Considere os fatores que influenciam a latência e ajuste o desempenho examinando as diretrizes de otimização de desempenho publicadas com cada ferramenta.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "97486b6a-ea0c-4100-86e0-319ce0c8ad21",
+ "service": "Azure Blob Storage",
+ "text": "Otimize o desempenho do código personalizado: considere usar SDKs de armazenamento em vez de criar seus próprios wrappers para operações REST de blob. Os SDKs do Azure são otimizados para desempenho e fornecem mecanismos para ajustar o desempenho. Antes de criar um aplicativo, examine a lista de verificação de desempenho e escalabilidade do Armazenamento de Blobs. Considere usar a aceleração de consulta para filtrar dados indesejados durante a solicitação de armazenamento e impedir que os clientes transfiram dados desnecessariamente pela rede.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "0b2ed074-7dcb-460a-8455-144171d2fe8f",
+ "service": "Azure Blob Storage",
+ "text": "Coletar dados de desempenho: monitore sua conta de armazenamento para identificar gargalos de desempenho que ocorrem devido à limitação. Para obter mais informações, consulte Monitorando seu serviço de armazenamento com os insights do Monitorar Armazenamento. Use métricas e logs. As métricas fornecem números como erros de limitação. Os logs descrevem a atividade. Se você vir métricas de limitação, poderá usar logs para identificar quais clientes estão recebendo erros de limitação. Para obter mais informações, consulte Auditoria de operações do plano de dados.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Reduzir a distância física entre a conta de armazenamento e VMs, serviços e clientes locais pode melhorar o desempenho e reduzir a latência da rede. Reduzir a distância física também reduz o custo para aplicativos hospedados no Azure porque o uso da largura de banda em uma única região é gratuito.",
+ "guid": "1a37ef87-aa18-44a6-9877-6665fb1dc486",
+ "service": "Azure Blob Storage",
+ "text": "Provisione contas de armazenamento na mesma região em que os recursos dependentes são colocados. Para aplicativos que não estão hospedados no Azure, como aplicativos de dispositivo móvel ou serviços empresariais locais, localize a conta de armazenamento em uma região mais próxima desses clientes. Para obter mais informações, consulte Geografias do Azure. Se os clientes de uma região diferente não exigirem os mesmos dados, crie uma conta separada em cada região. Se os clientes de uma região diferente exigirem apenas alguns dados, considere usar uma política de replicação de objeto para copiar objetos relevantes de forma assíncrona para uma conta de armazenamento na outra região.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O conteúdo é entregue aos clientes mais rapidamente porque usa a rede de borda global da Microsoft com centenas de pontos de presença globais e locais em todo o mundo.",
+ "guid": "7ee0dea0-804f-457c-9660-1fe756011d25",
+ "service": "Azure Blob Storage",
+ "text": "Para amplo consumo por clientes Web (streaming de vídeo, áudio ou conteúdo estático do site), considere usar uma rede de distribuição de conteúdo por meio do Azure Front Door.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O uso de um código de hash ou um valor de segundos mais próximo do início de uma chave de partição reduz o tempo necessário para listar, consultar e ler blobs.",
+ "guid": "36fc9ddc-5d24-4ecc-a67e-3fd7bc0c4373",
+ "service": "Azure Blob Storage",
+ "text": "Adicione uma sequência de caracteres de hash (como três dígitos) o mais cedo possível na chave de partição de um blob. A chave de partição é o nome da conta, o nome do contêiner, o nome do diretório virtual e o nome do blob. Se você planeja usar carimbos de data/hora em nomes, considere adicionar um valor de segundos ao início desse carimbo. Para obter mais informações, consulte Particionamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Tamanhos de blob ou bloco acima de 256 KiB aproveitam os aprimoramentos de desempenho na plataforma feitos especificamente para blobs e tamanhos de bloco maiores.",
+ "guid": "78872d9e-216b-4cc3-8686-0471d46a1acd",
+ "service": "Azure Blob Storage",
+ "text": "Ao carregar blobs ou blocos, use um tamanho de blob ou bloco maior que 256 KiB.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "473b3683-6d53-4521-89c4-d8aa1d1df633",
+ "service": "Azure Expressroute",
+ "text": "Selecione entre o circuito do ExpressRoute ou o ExpressRoute Direct para requisitos de negócios.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "b356e60e-cb41-4ee6-a8d5-290b429619f7",
+ "service": "Azure Expressroute",
+ "text": "Configure conexões do ExpressRoute ativo-ativo entre o local e o Azure.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "877b9a2d-8171-441b-ba7f-b8c6191f12bc",
+ "service": "Azure Expressroute",
+ "text": "Configure Gateways de Rede Virtual do ExpressRoute com reconhecimento de zona de disponibilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "64ad6a67-7f17-4d55-a365-0ec8716fb135",
+ "service": "Azure Expressroute",
+ "text": "Configure Gateways de Rede Virtual do ExpressRoute em diferentes regiões.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "20bbf3a5-e3d8-42eb-9b88-9c4a811a483a",
+ "service": "Azure Expressroute",
+ "text": "Configure a VPN site a site como um backup para o emparelhamento privado do ExpressRoute.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "198fd707-5344-46d9-a3f9-c05a90749ccb",
+ "service": "Azure Expressroute",
+ "text": "Configure a integridade do serviço para receber a notificação de manutenção do circuito do ExpressRoute.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Durante a fase de planejamento inicial, você deseja decidir se deseja configurar um circuito do ExpressRoute ou uma conexão do ExpressRoute Direct. Um circuito do ExpressRoute permite uma conexão privada dedicada ao Azure com a ajuda de um provedor de conectividade. O ExpressRoute Direct permite que você estenda a rede local diretamente para a rede da Microsoft em um local de emparelhamento. Você também precisa identificar o requisito de largura de banda e o requisito de tipo de SKU para suas necessidades de negócios.",
+ "guid": "09e0dd1a-b1f7-46c3-8df1-48e841f53dca",
+ "service": "Azure Expressroute",
+ "text": "Planejar o circuito do ExpressRoute ou o ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para obter melhor resiliência, planeje ter vários caminhos entre a borda local e os locais de emparelhamento (locais de borda do provedor/Microsoft). Essa configuração pode ser obtida passando por um provedor de serviços diferente ou por um local diferente da rede local.",
+ "guid": "67812ddc-7c52-4b52-9569-b3f84d591def",
+ "service": "Azure Expressroute",
+ "text": "Diversidade de camadas físicas",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para planejar a recuperação de desastre, configure circuitos do ExpressRoute em mais de um local de emparelhamento. Você pode criar circuitos em locais de emparelhamento na mesma área metropolitana ou em uma área metropolitana diferente e optar por trabalhar com diferentes provedores de serviços para diversos caminhos em cada circuito. Para obter mais informações, consulte Projetando para recuperação de desastre e Projetando para alta disponibilidade.",
+ "guid": "257031a8-f034-436c-9f54-e82aab53c559",
+ "service": "Azure Expressroute",
+ "text": "Planejar circuitos com redundância geográfica",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os circuitos dedicados do ExpressRoute garantem a disponibilidade de '99,95%' quando uma conectividade ativa-ativa é configurada entre o local e o Azure. Esse modo fornece maior disponibilidade da conexão do Expressroute. Também é recomendável configurar o BFD para failover mais rápido se houver uma falha de link em uma conexão.",
+ "guid": "068037d8-673f-4e86-bc9d-bf83fbe61d12",
+ "service": "Azure Expressroute",
+ "text": "Planejar a conectividade Ativo-Ativo",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Crie um Gateway de Rede Virtual com reconhecimento de zona de disponibilidade para maior resiliência e planeje Gateways de Rede Virtual em diferentes regiões para recuperação de desastre e alta disponibilidade.",
+ "guid": "21f65e89-ffe2-489f-89f2-16cbc2e257d9",
+ "service": "Azure Expressroute",
+ "text": "Planejando gateways de rede virtual",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Configure o monitoramento e os alertas para circuitos do ExpressRoute e a integridade do Gateway de Rede Virtual com base em várias métricas disponíveis.",
+ "guid": "0f875bf3-de86-41b5-80d2-477de2f769a2",
+ "service": "Azure Expressroute",
+ "text": "Monitorar circuitos e integridade do gateway",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O ExpressRoute usa a integridade do serviço para notificar sobre manutenção planejada e não planejada. A configuração da integridade do serviço notificará você sobre as alterações feitas nos circuitos do ExpressRoute.",
+ "guid": "c84ca8b2-74f8-4d25-8fc3-5b30c9969b5f",
+ "service": "Azure Expressroute",
+ "text": "Habilitar a integridade do serviço",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "ca1c5676-1b0a-426e-baaf-da74ab806cb4",
+ "service": "Azure Expressroute",
+ "text": "Configure o log de atividades para enviar logs para o arquivo morto.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "ef124dcd-17e6-4b4e-9bdd-511ef1959a05",
+ "service": "Azure Expressroute",
+ "text": "Mantenha um inventário de contas administrativas com acesso aos recursos do ExpressRoute.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "23fbb2f6-a269-4fb5-a3a0-04aae0516c91",
+ "service": "Azure Expressroute",
+ "text": "Configure o hash MD5 no circuito do ExpressRoute.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "8e02b876-d810-498b-b9a5-e50730fb10d6",
+ "service": "Azure Expressroute",
+ "text": "Configure o MACSec para recursos do ExpressRoute Direct.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "946a3e3d-bbaf-4b4a-ab80-2ef0a4631f30",
+ "service": "Azure Expressroute",
+ "text": "Criptografe o tráfego por emparelhamento privado e emparelhamento da Microsoft para tráfego de rede virtual.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Os logs de atividades fornecem insights sobre as operações que foram executadas no nível da assinatura para recursos do ExpressRoute. Com os logs de atividades, você pode determinar quem e quando uma operação foi executada no plano de controle. A retenção de dados é de apenas 90 dias e precisa ser armazenada no Log Analytics, nos Hubs de Eventos ou em uma conta de armazenamento para arquivamento.",
+ "guid": "9631d7ef-657c-4b07-9c75-96b2dcc5c5d2",
+ "service": "Azure Expressroute",
+ "text": "Configurar o log de atividades para enviar logs para o arquivo morto",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use o RBAC do Azure para configurar funções para limitar contas de usuário que podem adicionar, atualizar ou excluir a configuração de emparelhamento em um circuito do ExpressRoute.",
+ "guid": "42b91c75-909f-4366-b014-48ab48639faf",
+ "service": "Azure Expressroute",
+ "text": "Manter inventário de contas administrativas",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Durante a configuração do emparelhamento privado ou do emparelhamento da Microsoft, aplique um hash MD5 para proteger mensagens entre a rota local e os roteadores MSEE.",
+ "guid": "78f7d298-53bf-49ae-8ed7-994d46ccf2dd",
+ "service": "Azure Expressroute",
+ "text": "Configurar hash MD5 no circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A segurança do Controle de Acesso à Mídia é uma segurança ponto a ponto na camada de enlace de dados. O ExpressRoute Direct dá suporte à configuração do MACSec para evitar ameaças de segurança a protocolos como ARP, DHCP, LACP normalmente não protegidos no link Ethernet. Para obter mais informações sobre como configurar o MACSec, consulte MACSec para portas do ExpressRoute Direct.",
+ "guid": "d495a140-702d-4e08-bb86-7ceac8141df2",
+ "service": "Azure Expressroute",
+ "text": "Configurar o MACSec para recursos do ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Configure um túnel VPN site a site no circuito do ExpressRoute para criptografar a transferência de dados entre a rede local e a rede virtual do Azure. Você pode configurar um túnel usando o emparelhamento privado ou usando o emparelhamento da Microsoft.",
+ "guid": "7729c230-dbdf-4aec-9295-fcb0a0c365f2",
+ "service": "Azure Expressroute",
+ "text": "Criptografar o tráfego usando IPsec",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "43d6df90-c15b-494c-8d35-c4fc9180fbdb",
+ "service": "Azure Expressroute",
+ "text": "Familiarize-se com os preços do ExpressRoute.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "92065590-2f1a-4a81-a6a6-2b102f66f9e3",
+ "service": "Azure Expressroute",
+ "text": "Determine o SKU do circuito do ExpressRoute e a largura de banda necessária.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "f6e0770f-fa13-450e-8c81-baf51ba1b550",
+ "service": "Azure Expressroute",
+ "text": "Determine o tamanho do gateway de rede virtual do ExpressRoute necessário.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "07d0ba21-7eef-47d1-8ba0-26fefa26c733",
+ "service": "Azure Expressroute",
+ "text": "Monitore o custo e crie alertas de orçamento.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "d7be65f4-6500-49ea-92e3-3121fca4a076",
+ "service": "Azure Expressroute",
+ "text": "Desprovisionar circuitos do ExpressRoute que não estão mais em uso.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Para obter informações sobre os preços do ExpressRoute, consulte Entender os preços do Azure ExpressRoute. Você também pode usar a calculadora de preços. Certifique-se de que as opções sejam dimensionadas adequadamente para atender à demanda de capacidade e fornecer o desempenho esperado sem desperdiçar recursos.",
+ "guid": "f230ac81-7590-4300-9b9f-95d784e60ab2",
+ "service": "Azure Expressroute",
+ "text": "Familiarize-se com os preços do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A maneira como você é cobrado pelo uso do ExpressRoute varia entre os três tipos diferentes de SKU. Com o SKU Local, você é cobrado automaticamente com um plano de dados ilimitado. Com o SKU Standard e Premium, você pode selecionar entre um plano de dados medido ou ilimitado. Todos os dados de entrada são gratuitos, exceto ao usar o complemento Global Reach. É importante entender quais tipos de SKU e plano de dados funcionam melhor para sua carga de trabalho para otimizar melhor o custo e o orçamento. Para obter mais informações sobre como redimensionar o circuito do ExpressRoute, consulte atualizando a largura de banda do circuito do ExpressRoute.",
+ "guid": "3d8a5d49-af34-431f-b47f-ee8cf05479b5",
+ "service": "Azure Expressroute",
+ "text": "Determinar SKU e largura de banda necessárias",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os gateways de rede virtual do ExpressRoute são usados para passar o tráfego para uma rede virtual por meio de emparelhamento privado. Examine as necessidades de desempenho e escala do SKU do Gateway de Rede Virtual preferencial. Selecione o SKU de gateway apropriado em sua carga de trabalho local para o Azure.",
+ "guid": "82224292-a5a6-4b85-9b2f-b617117c4285",
+ "service": "Azure Expressroute",
+ "text": "Determinar o tamanho do gateway de rede virtual do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Monitore o custo do circuito do ExpressRoute e crie alertas para anomalias de gastos e riscos de gastos excessivos. Para obter mais informações, consulte Monitorando os custos do ExpressRoute.",
+ "guid": "e2e81918-e05e-49e1-a37c-cb65840c8699",
+ "service": "Azure Expressroute",
+ "text": "Monitore o custo e crie alertas de orçamento",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os circuitos do ExpressRoute são cobrados a partir do momento em que são criados. Para reduzir custos desnecessários, desprovisione o circuito com o provedor de serviços e exclua o circuito do ExpressRoute de sua assinatura. Para obter etapas sobre como remover um circuito do ExpressRoute, consulte Desprovisionando um circuito do ExpressRoute.",
+ "guid": "131104a1-a17f-4b6b-9384-0b636a5d5265",
+ "service": "Azure Expressroute",
+ "text": "Desprovisione e exclua circuitos do ExpressRoute que não estão mais em uso.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "4c7d0c83-02a0-4535-a378-c2ab4c13469c",
+ "service": "Azure Expressroute",
+ "text": "Configure o monitoramento de conexão entre sua rede local e o Azure.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "69c4fb71-4d2c-4534-a4db-5e3146a31e1d",
+ "service": "Azure Expressroute",
+ "text": "Configure a Integridade do Serviço para receber notificação.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "33b4fca5-1f90-4947-8091-6c23aba0651a",
+ "service": "Azure Expressroute",
+ "text": "Examine as métricas e os painéis disponíveis por meio do ExpressRoute Insights usando o Network Insights.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "638c050d-7555-4575-bb8d-a4f2b613fa87",
+ "service": "Azure Expressroute",
+ "text": "Examine as métricas de recursos do ExpressRoute.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento de conexão permite que você monitore a conectividade entre seus recursos locais e o Azure por meio do emparelhamento privado do ExpressRoute e da conexão de emparelhamento da Microsoft. O Monitor de Conexão pode detectar problemas de rede identificando onde o problema está ao longo do caminho de rede e ajudá-lo a resolver rapidamente falhas de configuração ou hardware.",
+ "guid": "c6766a4e-7531-4335-af44-4fd1a3c706f4",
+ "service": "Azure Expressroute",
+ "text": "Configurar o monitoramento de conexão",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Configure notificações de Integridade do Serviço para alertar quando a manutenção planejada e futura estiver acontecendo em todos os circuitos do ExpressRoute em sua assinatura. A integridade do serviço também exibe a manutenção anterior junto com a RCA se ocorrer uma manutenção não planejada.",
+ "guid": "5ff3a7b5-974a-466d-ab01-ad90c143969d",
+ "service": "Azure Expressroute",
+ "text": "Configurar a integridade do serviço",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O ExpressRoute Insights com Network Insights permite que você examine e analise circuitos, gateways, métricas de conexões e painéis de integridade do ExpressRoute. O ExpressRoute Insights também fornece uma exibição de topologia de suas conexões do ExpressRoute, onde você pode exibir detalhes de seus componentes de emparelhamento em um único local. Métricas disponíveis:- Disponibilidade- Taxa de transferência- Métricas de gateway",
+ "guid": "210546e8-29e3-40d9-869f-6236fddaadd0",
+ "service": "Azure Expressroute",
+ "text": "Analisar métricas com o Network Insights",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O ExpressRoute usa o Azure Monitor para coletar métricas e criar alertas com base em sua configuração. As métricas são coletadas para circuitos do ExpressRoute, gateways do ExpressRoute, conexões de gateway do ExpressRoute e ExpressRoute Direct. Essas métricas são úteis para diagnosticar problemas de conectividade e entender o desempenho da conexão do ExpressRoute.",
+ "guid": "8031ed87-7573-469a-9b05-01f4ff4d9231",
+ "service": "Azure Expressroute",
+ "text": "Examinar as métricas de recursos do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "Teste o desempenho do gateway do ExpressRoute para atender aos requisitos de carga de trabalho.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "Aumente o tamanho do gateway do ExpressRoute.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "102ee202-4b37-498a-8826-d698d11e3b03",
+ "service": "Azure Expressroute",
+ "text": "Atualize a largura de banda do circuito do ExpressRoute.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "627c2d5f-e638-41fd-be98-9ba1bf195ce3",
+ "service": "Azure Expressroute",
+ "text": "Habilite o ExpressRoute FastPath para obter uma taxa de transferência mais alta.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "040f4b75-2706-42f3-9a9c-cee611032d91",
+ "service": "Azure Expressroute",
+ "text": "Monitore as métricas de gateway e circuito do ExpressRoute.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Use o Kit de Ferramentas de Conectividade do Azure para testar o desempenho em seu circuito do ExpressRoute para entender a capacidade de largura de banda e a latência de sua conexão de rede.",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "Teste o desempenho do gateway do ExpressRoute para atender aos requisitos de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualize para um SKU de gateway mais alto para melhorar o desempenho da taxa de transferência entre o ambiente local e o Azure.",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "Aumente o tamanho do gateway do ExpressRoute.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualize a largura de banda do circuito para atender aos requisitos de carga de trabalho. A largura de banda do circuito é compartilhada entre todas as redes virtuais conectadas ao circuito do ExpressRoute. Dependendo da carga de trabalho, uma ou mais redes virtuais podem usar toda a largura de banda no circuito.",
+ "guid": "db8f8202-db07-497f-be72-17db8bda90c5",
+ "service": "Azure Expressroute",
+ "text": "Atualizar a largura de banda do circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se você estiver usando um desempenho Ultra ou um gateway de rede virtual ErGW3AZ, poderá habilitar o FastPath para melhorar o desempenho do caminho de dados entre sua rede local e a rede virtual do Azure.",
+ "guid": "01566559-f881-409b-b04e-7d79a71f18e4",
+ "service": "Azure Expressroute",
+ "text": "Habilitar o ExpressRoute FastPath para maior taxa de transferência",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Configure alertas com base nas métricas do ExpressRoute para notificá-lo proativamente quando um determinado limite for atingido. Essas métricas são úteis para entender anomalias que podem ocorrer com sua conexão do ExpressRoute, como interrupções e manutenção que ocorrem em seus circuitos do ExpressRoute.",
+ "guid": "6440df71-d371-4190-920f-01c1815446db",
+ "service": "Azure Expressroute",
+ "text": "Monitorar métricas de gateway e circuito do ExpressRoute",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "94d626bf-3509-4311-8700-696d8d18617e",
+ "service": "Azure Files",
+ "text": "Use a análise do modo de falha: minimize os pontos de falha considerando dependências internas, como a disponibilidade de redes virtuais, Azure Key Vault ou Rede de Distribuição de Conteúdo do Azure ou pontos de extremidade do Azure Front Door. Falhas podem ocorrer se você precisar de credenciais para acessar os Arquivos do Azure e as credenciais desaparecerem do Key Vault. Ou você pode ter uma falha se suas cargas de trabalho usarem um ponto de extremidade baseado em uma rede de entrega de conteúdo ausente. Nesses casos, talvez seja necessário configurar suas cargas de trabalho para se conectar a um ponto de extremidade alternativo. Para obter informações gerais sobre a análise do modo de falha, consulte Recomendações para executar a análise do modo de falha.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "bedde06b-f58a-43ab-b6cc-76e41503e72a",
+ "service": "Azure Files",
+ "text": "Definir metas de confiabilidade e recuperação: examine os SLAs (contratos de nível de serviço) do Azure. Derive o SLO (objetivo de nível de serviço) para a conta de armazenamento. Por exemplo, a configuração de redundância escolhida pode afetar o SLO. Considere o efeito de uma interrupção regional, o potencial de perda de dados e o tempo necessário para restaurar o acesso após uma interrupção. Considere também a disponibilidade de dependências internas que você identificou como parte da análise do modo de falha.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Files",
+ "text": "Configurar redundância de dados: para durabilidade máxima, escolha uma configuração que copie dados entre zonas de disponibilidade ou regiões globais. Para obter disponibilidade máxima, escolha uma configuração que permita que os clientes leiam dados da região secundária durante uma interrupção da região primária.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "61e937b4-1989-496a-af6f-5df76d352ed8",
+ "service": "Azure Files",
+ "text": "Projetar aplicativos: projete seus aplicativos para mudar perfeitamente para que eles leiam dados de uma região secundária se a região primária não estiver disponível. Essa consideração de design se aplica apenas às configurações de GRS (armazenamento com redundância geográfica) e GZRS (armazenamento com redundância de zona geográfica). Projete seus aplicativos para lidar adequadamente com interrupções, o que reduz o tempo de inatividade para os clientes.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "cb1c49d6-9cdb-48f6-a3f8-c35c2037fc92",
+ "service": "Azure Files",
+ "text": "Explore os recursos para ajudá-lo a atingir suas metas de recuperação: torne os arquivos restauráveis para que você possa recuperar arquivos corrompidos, editados ou excluídos.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Files",
+ "text": "Crie um plano de recuperação: considere recursos de proteção de dados, operações de backup e restauração ou procedimentos de failover. Prepare-se para possíveis perdas e inconsistências de dados e o tempo e o custo do failover. Para obter mais informações, consulte Recomendações para criar uma estratégia de recuperação de desastre.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "8b151d5d-630d-438e-b7ad-aa487d6c5561",
+ "service": "Azure Files",
+ "text": "Monitorar possíveis problemas de disponibilidade: assine o painel de Integridade do Serviço do Azure para monitorar possíveis problemas de disponibilidade. Use métricas de armazenamento e logs de diagnóstico no Azure Monitor para investigar alertas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "A redundância protege seus dados contra falhas inesperadas. As opções de configuração ZRS e GZRS são replicadas em várias zonas de disponibilidade e permitem que os aplicativos continuem lendo dados durante uma interrupção. Para obter mais informações, consulte Durabilidade e disponibilidade por cenário de interrupção e Parâmetros de durabilidade e disponibilidade.",
+ "guid": "5596d241-a342-4c47-b8db-29f7a519bf36",
+ "service": "Azure Files",
+ "text": "Configure sua conta de armazenamento para redundância. Para obter o máximo de disponibilidade e durabilidade, configure sua conta com ZRS (armazenamento com redundância de zona), GRS ou GZRS. As regiões limitadas do Azure dão suporte ao ZRS para compartilhamentos de arquivos standard e premium. Somente contas SMB padrão são compatíveis com GRS e GZRS. Os compartilhamentos SMB premium e os compartilhamentos NFS não oferecem suporte a GRS e GZRS. Os Arquivos do Azure não dão suporte ao RA-GRS (armazenamento com redundância geográfica com acesso de leitura) ou ao RA-GZRS (armazenamento com redundância de zona geográfica com acesso de leitura). Se você configurar uma conta de armazenamento para usar RA-GRS ou RA-GZRS, os compartilhamentos de arquivos serão configurados e cobrados como GRS ou GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa propriedade ajuda a estimar a quantidade de dados que você pode perder se iniciar um failover de conta. Todos os dados e metadados gravados antes da última hora de sincronização estão disponíveis na região secundária, mas você pode perder dados e metadados gravados após a última hora de sincronização porque não foram gravados na região secundária.",
+ "guid": "9fc3b4c1-257d-4bab-b373-1938930410a5",
+ "service": "Azure Files",
+ "text": "Antes de iniciar um failover ou failback, verifique o valor da propriedade da hora da última sincronização para avaliar o potencial de perda de dados. Essa recomendação se aplica somente às configurações GRS e GZRS.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A exclusão reversível funciona em um nível de compartilhamento de arquivos para proteger os compartilhamentos de arquivos do Azure contra exclusão acidental. A restauração pontual protege contra exclusão acidental ou corrupção porque você pode restaurar compartilhamentos de arquivos para um estado anterior. Para obter mais informações, consulte Visão geral da proteção de dados.",
+ "guid": "8bcb6fde-bf94-4f36-8eae-347e5d4f0dea",
+ "service": "Azure Files",
+ "text": "Como parte de sua estratégia de backup e recuperação, habilite a exclusão reversível e use instantâneos para restauração pontual. Você pode usar o Backup do Azure para fazer backup de seus compartilhamentos de arquivos SMB. Você também pode usar a Sincronização de Arquivos do Azure para fazer backup de compartilhamentos de arquivos SMB locais em um compartilhamento de arquivos do Azure. O Backup do Azure também permite que você faça um backup em cofre (versão prévia) dos Arquivos do Azure para proteger seus dados contra ataques de ransomware ou perda de dados de origem devido a um ator mal-intencionado ou administrador não autorizado. Usando o backup protegido, o Backup do Azure copia e armazena dados no cofre dos Serviços de Recuperação. Isso cria uma cópia externa dos dados que você pode reter por até 99 anos. O Backup do Azure cria e gerencia os pontos de recuperação de acordo com o agendamento e a retenção definidos na política de backup. Saiba Mais.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "2548e433-aeab-4738-bec1-0a3587ac4d15",
+ "service": "Azure Files",
+ "text": "Examine a linha de base de segurança do Armazenamento do Azure: para começar, examine a linha de base de segurança do Armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "6121894c-398e-479f-b386-309e7cf3caa0",
+ "service": "Azure Files",
+ "text": "Considere o uso de controles de rede para restringir o tráfego de entrada e saída: você pode se sentir confortável em expor sua conta de armazenamento à Internet pública sob determinadas condições, como se você usar a autenticação baseada em identidade para conceder acesso a compartilhamentos de arquivos. Mas recomendamos que você use controles de rede para conceder o nível mínimo necessário de acesso a usuários e aplicativos. Para obter mais informações, consulte Como abordar a segurança de rede para sua conta de armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "8395a636-8c19-4b22-a175-2a0f0d83f44f",
+ "service": "Azure Files",
+ "text": "Reduza a superfície de ataque: use criptografia em trânsito e impeça o acesso por conexões não seguras (HTTP) para reduzir a superfície de ataque. Exigir que os clientes enviem e recebam dados usando a versão mais recente do protocolo TLS (Transport Layer Security).",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "62e5154f-98cb-4dc2-8e62-dd5c546d6a6d",
+ "service": "Azure Files",
+ "text": "Minimize o uso de chaves de conta de armazenamento: a autenticação baseada em identidade fornece segurança superior em comparação com o uso de uma chave de conta de armazenamento. Mas você deve usar uma chave de conta de armazenamento para obter controle administrativo total de um compartilhamento de arquivos, incluindo a capacidade de se apropriar de um arquivo. Conceda às entidades de segurança apenas as permissões necessárias para executar suas tarefas.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "dd5352d4-faa0-4a85-83db-00395c1a9df8",
+ "service": "Azure Files",
+ "text": "Proteger informações confidenciais: proteja informações confidenciais, como chaves de conta de armazenamento e senhas. Não recomendamos que você use essas formas de autorização, mas se o fizer, certifique-se de girá-las, expirar e armazená-las com segurança.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "1edd34b4-610b-483a-83a0-d8bcb5915558",
+ "service": "Azure Files",
+ "text": "Detectar ameaças: habilite o Microsoft Defender para Armazenamento para detectar tentativas potencialmente prejudiciais de acessar ou explorar seus compartilhamentos de arquivos do Azure por meio de protocolos SMB ou FileREST. Os administradores de assinatura recebem alertas por email com detalhes de atividades suspeitas e recomendações sobre como investigar e corrigir ameaças. O Defender para Armazenamento não dá suporte a recursos antivírus para compartilhamentos de arquivos do Azure. Se você usar o Defender para Armazenamento, os compartilhamentos de arquivos com muitas transações incorrerão em custos significativos, portanto, considere recusar o Defender para Armazenamento para contas de armazenamento específicas.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Bloqueie a conta para evitar a exclusão acidental ou mal-intencionada da conta de armazenamento, o que pode causar perda de dados.",
+ "guid": "e125f557-f42e-4462-b680-0e7375d89a99",
+ "service": "Azure Files",
+ "text": "Aplique um bloqueio do Azure Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 3.x é um protocolo seguro para a Internet, mas talvez você não tenha a capacidade de alterar as políticas organizacionais ou de ISP. Você pode usar um gateway de VPN ou uma conexão ExpressRoute como uma opção alternativa.",
+ "guid": "14cda8e5-c05a-4c69-9352-2f7b39b5d423",
+ "service": "Azure Files",
+ "text": "Abra a porta TCP 445 de saída ou configure um gateway de VPN ou uma conexão do Azure ExpressRoute para que clientes fora do Azure acessem o compartilhamento de arquivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 1 é um protocolo desatualizado, ineficiente e inseguro. Desative-o em clientes para melhorar sua postura de segurança.",
+ "guid": "e2ef284e-804b-4592-866f-5d577069b823",
+ "service": "Azure Files",
+ "text": "Se você abrir a porta 445, certifique-se de desabilitar o SMBv1 em clientes Windows e Linux. Os Arquivos do Azure não dão suporte ao SMB 1, mas você ainda deve desabilitá-lo em seus clientes.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O tráfego de rede viaja pela rede de backbone da Microsoft em vez da Internet pública, o que elimina a exposição ao risco da Internet pública.",
+ "guid": "19d4b509-167c-4144-9705-9d65c48ec279",
+ "service": "Azure Files",
+ "text": "Considere desabilitar o acesso à rede pública para sua conta de armazenamento. Habilite o acesso à rede pública somente se os clientes e serviços SMB externos ao Azure exigirem acesso à sua conta de armazenamento. Se você desabilitar o acesso à rede pública, crie um ponto de extremidade privado para sua conta de armazenamento. Aplicam-se taxas de processamento de dados padrão para pontos de extremidade privados. Um ponto de extremidade privado não bloqueia conexões com o ponto de extremidade público. Você ainda deve desabilitar o acesso à rede pública conforme descrito anteriormente. Se você não precisar de um endereço IP estático para o compartilhamento de arquivos e quiser evitar o custo de pontos de extremidade privados, poderá restringir o acesso ao ponto de extremidade público a redes virtuais e endereços IP específicos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Minimize o risco de criar aberturas para invasores.",
+ "guid": "105c5f3d-dfc6-459b-93f0-c5046972f1ba",
+ "service": "Azure Files",
+ "text": "Habilite regras de firewall que limitam o acesso a redes virtuais específicas. Comece com acesso zero e, em seguida, forneça de forma metódica e incremental a menor quantidade de acesso necessária para clientes e serviços.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use a autenticação baseada em identidade para diminuir a possibilidade de um invasor usar uma chave de conta de armazenamento para acessar compartilhamentos de arquivos.",
+ "guid": "1ba283cb-62bf-4ee8-9657-ba59ddd6bccd",
+ "service": "Azure Files",
+ "text": "Quando possível, use a autenticação baseada em identidade com criptografia de tíquete Kerberos AES-256 para autorizar o acesso a compartilhamentos de arquivos SMB do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Use o Key Vault para recuperar chaves em tempo de execução em vez de salvá-las com seu aplicativo. O Key Vault também facilita a rotação de suas chaves sem interrupção de seus aplicativos. Alterne periodicamente as chaves da conta para reduzir o risco de expor seus dados a ataques mal-intencionados.",
+ "guid": "7cf01b2b-1e7d-47fe-94e1-a65cc7750063",
+ "service": "Azure Files",
+ "text": "Se você usar chaves de conta de armazenamento, armazene-as no Key Vault e certifique-se de regenerá-las periodicamente. Você pode proibir completamente o acesso da chave da conta de armazenamento ao compartilhamento de arquivos removendo o NTLMv2 das configurações de segurança SMB do compartilhamento. Mas você geralmente não deve remover o NTLMv2 das configurações de segurança SMB do compartilhamento porque os administradores ainda precisam usar a chave de conta para algumas tarefas.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Essa configuração garante que todas as solicitações feitas na conta de armazenamento ocorram por meio de conexões seguras (HTTPS). Todas as solicitações feitas por HTTP falharão.",
+ "guid": "4fbd14ad-9bf1-491f-b621-35f086b48ccd",
+ "service": "Azure Files",
+ "text": "Na maioria dos casos, você deve habilitar a opção Transferência segura necessária em todas as suas contas de armazenamento para habilitar a criptografia em trânsito para compartilhamentos de arquivos SMB. Não habilite essa opção se precisar permitir que clientes muito antigos acessem o compartilhamento. Se você desabilitar a transferência segura, certifique-se de usar controles de rede para restringir o tráfego.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS 1.2 é mais seguro e rápido do que o TLS 1.0 e 1.1, que não oferecem suporte a algoritmos criptográficos modernos e conjuntos de criptografia.",
+ "guid": "65d8332d-6657-4466-9dc1-5d1497d14041",
+ "service": "Azure Files",
+ "text": "Configure sua conta de armazenamento para que o TLS 1.2 seja a versão mínima para os clientes enviarem e receberem dados.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O SMB 3.1.1, lançado com o Windows 10, contém atualizações importantes de segurança e desempenho. O AES-256-GCM oferece criptografia de canal mais segura.",
+ "guid": "010a5a8d-db30-4c97-975e-db80658bdb4d",
+ "service": "Azure Files",
+ "text": "Use apenas a versão mais recente do protocolo SMB com suporte (atualmente 3.1.1.) e use apenas AES-256-GCM para criptografia de canal SMB. Os Arquivos do Azure expõem configurações que você pode usar para alternar o protocolo SMB e torná-lo mais compatível ou mais seguro, dependendo dos requisitos da sua organização. Por padrão, todas as versões SMB são permitidas. No entanto, o SMB 2.1 não será permitido se você habilitar Exigir transferência segura porque o SMB 2.1 não dá suporte à criptografia de dados em trânsito. Se você restringir essas configurações a um alto nível de segurança, alguns clientes talvez não consigam se conectar ao compartilhamento de arquivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "04493486-a5be-4bb2-8940-cea321db8380",
+ "service": "Azure Files",
+ "text": "Examine a linha de base de segurança do Armazenamento: Para começar, examine a linha de base de segurança do Armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "85f4e9b5-aa91-4d96-ad22-9132f7412718",
+ "service": "Azure Files",
+ "text": "Entenda os requisitos de segurança da sua organização: os compartilhamentos de arquivos NFS do Azure dão suporte apenas a clientes Linux que usam o protocolo NFSv4.1, com suporte para a maioria dos recursos da especificação do protocolo 4.1. Alguns recursos de segurança, como autenticação Kerberos, listas de controle de acesso (ACLs) e criptografia em trânsito, não são compatíveis.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "7f1ac6f7-d832-4c71-adbd-ae31d36320a7",
+ "service": "Azure Files",
+ "text": "Use segurança e controles no nível da rede para restringir o tráfego de entrada e saída: a autenticação baseada em identidade não está disponível para compartilhamentos de arquivos NFS do Azure, portanto, você deve usar a segurança e os controles no nível da rede para conceder o nível mínimo necessário de acesso a usuários e aplicativos. Para obter mais informações, consulte Como abordar a segurança de rede para sua conta de armazenamento.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Bloqueie a conta para evitar a exclusão acidental ou mal-intencionada da conta de armazenamento, o que pode causar perda de dados.",
+ "guid": "a51426ff-75f8-429b-940a-6ddd2c06d3fb",
+ "service": "Azure Files",
+ "text": "Aplique um bloqueio do Resource Manager na conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Abra a porta 2049 para permitir que os clientes se comuniquem com o compartilhamento de arquivos do Azure NFS.",
+ "guid": "af6d0dd1-6add-4f9b-96b6-e65dba4242a4",
+ "service": "Azure Files",
+ "text": "Você deve abrir a porta 2049 nos clientes nos quais deseja montar seu compartilhamento NFS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O tráfego de rede viaja pela rede de backbone da Microsoft em vez da Internet pública, o que elimina a exposição ao risco da Internet pública.",
+ "guid": "528b4915-a4d9-413d-9b79-e4078f5cd27d",
+ "service": "Azure Files",
+ "text": "Os compartilhamentos de arquivos NFS do Azure só podem ser acessados por meio de redes restritas. Portanto, você deve criar um ponto de extremidade privado para sua conta de armazenamento ou restringir o acesso ao ponto de extremidade público a redes virtuais e endereços IP selecionados. Recomendamos que você crie um ponto de extremidade privado. Você deve configurar a segurança no nível da rede para compartilhamentos NFS porque os Arquivos do Azure não dão suporte à criptografia em trânsito com o protocolo NFS. Você precisa desabilitar a configuração Exigir transferência segura na conta de armazenamento para usar compartilhamentos de arquivos NFS do Azure. As taxas de processamento de dados padrão se aplicam a pontos de extremidade privados. Se você não precisar de um endereço IP estático para o compartilhamento de arquivos e quiser evitar o custo de pontos de extremidade privados, poderá restringir o acesso ao ponto de extremidade público.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Não permita o uso de chaves de conta de armazenamento para tornar sua conta de armazenamento mais segura.",
+ "guid": "2f92995e-d1d1-411d-96cd-309faf0a6ada",
+ "service": "Azure Files",
+ "text": "Considere não permitir o acesso à chave da conta de armazenamento no nível da conta de armazenamento. Você não precisa desse acesso para montar compartilhamentos de arquivos NFS. Mas lembre-se de que o controle administrativo total de um compartilhamento de arquivos, incluindo a capacidade de se apropriar de um arquivo, requer o uso de uma chave de conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "bc87a075-cc79-46be-a413-106c995f41ef",
+ "service": "Azure Files",
+ "text": "Decida se sua carga de trabalho requer o desempenho de compartilhamentos de arquivos premium (SSD Premium do Azure) ou se o armazenamento HDD Standard do Azure é suficiente: determine o tipo de conta de armazenamento e o modelo de cobrança com base no tipo de armazenamento necessário. Se você precisar de grandes quantidades de IOPS (operações de entrada/saída por segundo), velocidades de transferência de dados extremamente rápidas ou latência muito baixa, deverá escolher compartilhamentos de arquivos premium do Azure. Os compartilhamentos de arquivos do Azure NFS só estão disponíveis na camada premium. Os compartilhamentos de arquivos NFS e SMB têm o mesmo preço na camada premium.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "fc9a86d1-8dcf-4e82-87fa-81d736ab60f4",
+ "service": "Azure Files",
+ "text": "Crie uma conta de armazenamento para o compartilhamento de arquivos e escolha um nível de redundância: escolha uma conta padrão (GPv2) ou premium (FileStorage). O nível de redundância escolhido afeta o custo. Quanto mais redundância, maior o custo. O LRS (armazenamento com redundância local) é o mais acessível. O GRS só está disponível para compartilhamentos de arquivos SMB padrão. Os compartilhamentos de arquivos padrão mostram apenas informações de transação no nível da conta de armazenamento, portanto, recomendamos que você implante apenas um compartilhamento de arquivos em cada conta de armazenamento para garantir a visibilidade total da cobrança.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "1a78abc4-bed1-486b-952e-fd147db1123a",
+ "service": "Azure Files",
+ "text": "Entenda como sua fatura é calculada: os compartilhamentos de arquivos padrão do Azure fornecem um modelo pago conforme o uso. Os compartilhamentos premium usam um modelo provisionado no qual você especifica e paga por uma determinada quantidade de capacidade, IOPS e taxa de transferência antecipadamente. No modelo pago conforme o uso, os medidores rastreiam a quantidade de dados armazenados na conta, ou a capacidade, e o número e o tipo de transações com base no uso desses dados. O modelo de pagamento conforme o uso pode ser econômico porque você paga apenas pelo que usa. Com o modelo de pagamento conforme o uso, você não precisa provisionar ou desprovisionar o armazenamento em excesso com base em requisitos de desempenho ou flutuações de demanda.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "52d8f743-4489-49a3-876c-0f36827a8f8e",
+ "service": "Azure Files",
+ "text": "Estimar o custo da capacidade e das operações: você pode usar a calculadora de preços do Azure para modelar os custos associados ao armazenamento, entrada e saída de dados. Compare o custo associado a várias regiões, tipos de conta e configurações de redundância. Para obter mais informações, consulte Preços dos Arquivos do Azure.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "9dede643-062f-40d2-869e-10458f04859a",
+ "service": "Azure Files",
+ "text": "Escolha a camada de acesso mais econômica: os compartilhamentos de arquivos SMB Standard do Azure oferecem três camadas de acesso: otimizado para transações, frequente e esporádico. Todas as três camadas são armazenadas no mesmo hardware de armazenamento padrão. A principal diferença para essas três camadas são os preços de armazenamento de dados em repouso, que são mais baixos nas camadas mais frias, e os preços de transação, que são mais altos nas camadas mais frias. Para obter mais informações, consulte Diferenças nas camadas padrão.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "8ec1a7f3-7cff-41f4-9cd5-59656983c739",
+ "service": "Azure Files",
+ "text": "Decida quais serviços de valor agregado você precisa: os Arquivos do Azure dão suporte a integrações com serviços de valor agregado, como Backup, Sincronização de Arquivos do Azure e Defender para Armazenamento. Essas soluções têm seus próprios custos de licenciamento e produto, mas geralmente são consideradas parte do custo total de propriedade do armazenamento de arquivos. Considere outros aspectos de custo se você usar a Sincronização de Arquivos do Azure.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "ae36a7c7-3255-4544-b751-bdbe08716cc2",
+ "service": "Azure Files",
+ "text": "Criar proteções: crie orçamentos com base em assinaturas e grupos de recursos. Use políticas de governança para restringir tipos de recursos, configurações e locais. Além disso, use o RBAC (controle de acesso baseado em função) para bloquear ações que podem levar a gastos excessivos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "b5ca80d5-d5c8-4d24-8a3c-b2d96a2bcd71",
+ "service": "Azure Files",
+ "text": "Monitore os custos: certifique-se de que os custos permaneçam dentro dos orçamentos, compare os custos com as previsões e veja onde ocorrem gastos excessivos. Você pode usar o painel de análise de custos no portal do Azure para monitorar os custos. Você também pode exportar dados de custo para uma conta de armazenamento e usar o Excel ou o Power BI para analisar esses dados.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "a6bc4298-8317-4153-b281-2b83af53fd26",
+ "service": "Azure Files",
+ "text": "Monitorar o uso: monitore continuamente os padrões de uso para detectar contas de armazenamento e compartilhamentos de arquivos não utilizados ou subutilizados. Verifique se há aumentos inesperados na capacidade, o que pode indicar que você está coletando vários arquivos de log ou arquivos excluídos de forma reversível. Desenvolva uma estratégia para excluir arquivos ou mover arquivos para níveis de acesso mais econômicos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "A migração para os Arquivos do Azure é uma carga de trabalho temporária e pesada de transações. Otimize o preço para cargas de trabalho de alta transação para ajudar a reduzir os custos de migração.",
+ "guid": "4fc0a2e6-1138-4c55-9644-890104fecd40",
+ "service": "Azure Files",
+ "text": "Ao migrar para compartilhamentos de arquivos padrão do Azure, recomendamos que você comece na camada otimizada para transações durante a migração inicial. O uso da transação durante a migração normalmente não é indicativo do uso normal da transação. Essa consideração não se aplica a compartilhamentos de arquivos premium porque o modelo de cobrança provisionado não cobra por transações.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Selecione a camada de acesso apropriada para compartilhamentos de arquivos padrão para reduzir consideravelmente seus custos.",
+ "guid": "4ee4d06f-ae90-4ba1-b87e-608a8871e182",
+ "service": "Azure Files",
+ "text": "Depois de migrar sua carga de trabalho, se você usar compartilhamentos de arquivos padrão, escolha cuidadosamente a camada de acesso mais econômica para seu compartilhamento de arquivos: frequente, esporádico ou otimizado para transações. Depois de operar por alguns dias ou semanas com uso regular, você pode inserir suas contagens de transações na calculadora de preços para descobrir qual camada melhor se adapta à sua carga de trabalho. A maioria dos clientes deve escolher o cool, mesmo que use ativamente o compartilhamento. Mas você deve examinar cada compartilhamento e comparar o saldo da capacidade de armazenamento com as transações para determinar sua camada. Se os custos de transação representarem uma porcentagem significativa de sua fatura, a economia do uso da camada de acesso esporádico geralmente compensa esse custo e minimiza o custo total geral. Recomendamos que você mova compartilhamentos de arquivos padrão entre camadas de acesso somente quando necessário para otimizar as alterações em seu padrão de carga de trabalho. Cada movimento incorre em transações. Para obter mais informações, consulte Alternando entre camadas padrão.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Provisione em excesso compartilhamentos de arquivos premium em um valor razoável para ajudar a manter o desempenho e levar em conta o crescimento futuro e os requisitos de desempenho.",
+ "guid": "569b045f-3018-4487-be79-5ae7fe5f42f6",
+ "service": "Azure Files",
+ "text": "Se você usar compartilhamentos premium, certifique-se de provisionar capacidade e desempenho mais do que suficientes para sua carga de trabalho, mas não tanto a ponto de incorrer em custos desnecessários. Recomendamos o provisionamento excessivo de duas a três vezes. Você pode escalar ou reduzir dinamicamente os compartilhamentos de arquivos premium, dependendo das características de desempenho de armazenamento e entrada/saída (E/S).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As reservas de três anos podem oferecer um desconto de até 36% no custo total do armazenamento de arquivos. As reservas não afetam o desempenho.",
+ "guid": "e4d7ee80-2657-4a1b-bf32-b16588f1511e",
+ "service": "Azure Files",
+ "text": "Use as reservas dos Arquivos do Azure, também conhecidas como instâncias reservadas, para confirmar previamente o uso do armazenamento e obter um desconto. Use reservas para cargas de trabalho de produção ou cargas de trabalho de desenvolvimento/teste com volumes consistentes. Para obter mais informações, consulte Otimizar custos com reservas de armazenamento. As reservas não incluem cobranças de transação, largura de banda, transferência de dados e armazenamento de metadados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os snapshots diferenciais garantem que você não seja cobrado várias vezes pelo armazenamento dos mesmos dados. No entanto, você ainda deve monitorar o uso do instantâneo para ajudar a reduzir sua fatura dos Arquivos do Azure.",
+ "guid": "90fbd856-01ee-41d2-a912-039edc971236",
+ "service": "Azure Files",
+ "text": "Monitore o uso do snapshot. Os snapshots incorrem em cobranças, mas são cobrados com base no uso diferencial de armazenamento de cada snapshot. Você paga apenas pela diferença em cada instantâneo. Para obter mais informações, consulte Instantâneos. A Sincronização de Arquivos do Azure tira instantâneos no nível do compartilhamento e no nível do arquivo como parte do uso regular, o que pode aumentar sua fatura total dos Arquivos do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Defina um período de retenção para que os arquivos excluídos temporariamente não se acumulem e aumentem o custo da capacidade. Após o período de retenção configurado, os dados excluídos permanentemente não incorrem em custo.",
+ "guid": "d28f02bd-5de7-4d5b-bfbf-46ff161833b5",
+ "service": "Azure Files",
+ "text": "Defina períodos de retenção para o recurso de exclusão reversível, especialmente quando você começar a usá-lo pela primeira vez. Considere começar com um curto período de retenção para entender melhor como o recurso afeta sua fatura. O período mínimo de retenção recomendado é de sete dias. Quando você exclui temporariamente compartilhamentos de arquivos padrão e premium, eles são cobrados como capacidade usada em vez de capacidade provisionada. E os compartilhamentos de arquivos premium são cobrados na taxa de instantâneo enquanto estão no estado de exclusão reversível. Os compartilhamentos de arquivos padrão são cobrados à taxa normal enquanto estão no estado de exclusão reversível.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Files",
+ "text": "Crie planos de manutenção e recuperação de emergência: considere recursos de proteção de dados, operações de backup e restauração e procedimentos de failover. Prepare-se para possíveis perdas e inconsistências de dados e o tempo e o custo do failover.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "6fd27f65-59e7-41ee-8994-d93ef20dbd99",
+ "service": "Azure Files",
+ "text": "Monitore a integridade da sua conta de armazenamento: crie painéis de insights de armazenamento para monitorar métricas de disponibilidade, desempenho e resiliência. Configure alertas para identificar e resolver problemas em seu sistema antes que seus clientes os percebam. Use as configurações de diagnóstico para rotear logs de recursos para um workspace de Logs do Azure Monitor. Em seguida, você pode consultar logs para investigar alertas mais profundamente.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "e6d6588e-c646-4221-832a-0e289e272531",
+ "service": "Azure Files",
+ "text": "Examine periodicamente a atividade de compartilhamento de arquivos: a atividade de compartilhamento pode mudar com o tempo. Mova os compartilhamentos de arquivos padrão para camadas de acesso mais esporádico ou você pode provisionar ou desprovisionar a capacidade para compartilhamentos premium. Ao mover compartilhamentos de arquivos padrão para uma camada de acesso diferente, você incorre em uma taxa de transação. Mova compartilhamentos de arquivos padrão somente quando necessário para reduzir sua fatura mensal.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode usar seus processos de DevOps existentes para implantar novas contas de armazenamento e usar o Azure Policy para impor sua configuração.",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Files",
+ "text": "Use a IaC (infraestrutura como código) para definir os detalhes de suas contas de armazenamento em modelos do ARM (modelos do Azure Resource Manager), Bicep ou Terraform.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você pode acompanhar a integridade e a operação de cada uma de suas contas. Crie facilmente dashboards e relatórios que os stakeholders podem usar para acompanhar a integridade de suas contas de armazenamento.",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Files",
+ "text": "Use os insights de armazenamento para acompanhar a integridade e o desempenho de suas contas de armazenamento. Os insights de armazenamento fornecem uma visão unificada das falhas, desempenho, disponibilidade e capacidade de todas as suas contas de armazenamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Monitor fornece uma exibição de disponibilidade, desempenho e resiliência para seus compartilhamentos de arquivos.",
+ "guid": "a4946cee-c1bc-4f12-9819-fddf25f093c4",
+ "service": "Azure Files",
+ "text": "Use o Monitor para analisar métricas, como disponibilidade, latência e uso, e para criar alertas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "6c44da65-6a81-442d-87e7-dd1ecdbca0a5",
+ "service": "Azure Files",
+ "text": "Planejar a escala: entenda as metas de escalabilidade e desempenho para contas de armazenamento, Arquivos do Azure e Sincronização de Arquivos do Azure.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "d9878efd-6174-4cf7-b7f4-429d8e82e577",
+ "service": "Azure Files",
+ "text": "Entenda seus padrões de aplicativo e uso para obter um desempenho previsível: determine a sensibilidade à latência, os requisitos de IOPS e taxa de transferência, a duração e a frequência da carga de trabalho e a paralelização da carga de trabalho. Use os Arquivos do Azure para aplicativos multithread para ajudá-lo a atingir os limites superiores de desempenho de um serviço. Se a maioria das solicitações for centrada em metadados, como createfile, openfile, closefile, queryinfo ou querydirectory, as solicitações criarão uma latência ruim maior do que as operações de leitura e gravação. Se você tiver esse problema, considere separar o compartilhamento de arquivos em vários compartilhamentos de arquivos na mesma conta de armazenamento.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "3e382c2e-26ee-459d-967e-19377821c26e",
+ "service": "Azure Files",
+ "text": "Escolha o tipo de conta de armazenamento ideal: se sua carga de trabalho exigir grandes quantidades de IOPS, velocidades de transferência de dados extremamente rápidas ou latência muito baixa, você deverá escolher contas de armazenamento premium (FileStorage). Você pode usar uma conta v2 de uso geral padrão para a maioria das cargas de trabalho de compartilhamento de arquivos SMB. A principal compensação entre os dois tipos de conta de armazenamento é custo versus desempenho.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "a0564644-9831-4f33-b4e7-6a56a6a658fb",
+ "service": "Azure Files",
+ "text": "Crie contas de armazenamento nas mesmas regiões que conectar clientes para reduzir a latência: quanto mais longe você estiver do serviço de Arquivos do Azure, maior será a latência e mais difícil será atingir os limites de escala de desempenho. Essa consideração é especialmente verdadeira quando você acessa os Arquivos do Azure de ambientes locais. Se possível, verifique se sua conta de armazenamento e seus clientes estão localizados na mesma região do Azure. Otimize para clientes locais minimizando a latência de rede ou usando uma conexão do ExpressRoute para estender redes locais para a nuvem da Microsoft por meio de uma conexão privada.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "0dfbbd8e-9f88-4e9d-b13c-01f12078faef",
+ "service": "Azure Files",
+ "text": "Coletar dados de desempenho: monitore o desempenho da carga de trabalho, incluindo métricas de latência, disponibilidade e uso. Analise logs para diagnosticar problemas como tempos limite e limitação. Crie alertas para notificá-lo se um compartilhamento de arquivos estiver sendo limitado, prestes a ser limitado ou com alta latência.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "86f0acc5-ce95-4ea0-b0b7-b733f1b2b10b",
+ "service": "Azure Files",
+ "text": "Otimizar para implantações híbridas: se você usar a Sincronização de Arquivos do Azure, o desempenho da sincronização dependerá de muitos fatores: o Windows Server e a configuração de disco subjacente, a largura de banda de rede entre o servidor e o armazenamento do Azure, o tamanho do arquivo, o tamanho total do conjunto de dados e a atividade no conjunto de dados. Para medir o desempenho de uma solução baseada na Sincronização de Arquivos do Azure, determine o número de objetos, como arquivos e diretórios, que você processa por segundo.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Aumente a taxa de transferência e o IOPS enquanto reduz o custo total de propriedade. Os benefícios de desempenho aumentam com o número de arquivos que distribuem a carga.",
+ "guid": "24a072d9-074d-4bcf-a65d-9a14336f8075",
+ "service": "Azure Files",
+ "text": "Habilite o SMB Multichannel para compartilhamentos de arquivos SMB premium. O SMB Multichannel permite que um cliente SMB 3.1.1 estabeleça várias conexões de rede com um compartilhamento de arquivos SMB do Azure. O SMB Multichannel só funciona quando o recurso está habilitado no lado do cliente (seu cliente) e no lado do serviço (Azure). Em clientes Windows, o SMB Multichannel está habilitado por padrão, mas você precisa habilitá-lo em sua conta de armazenamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Aumente o desempenho em escala e reduza o custo total de propriedade dos compartilhamentos de arquivos NFS.",
+ "guid": "c06bc804-3315-43f1-96ca-70169c020494",
+ "service": "Azure Files",
+ "text": "Use a opção de montagem do lado do cliente nconnect com compartilhamentos de arquivos NFS do Azure em clientes Linux. O Nconnect permite que você use mais conexões TCP entre o cliente e o serviço premium dos Arquivos do Azure para NFSv4.1.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Evite a limitação para fornecer a melhor experiência possível ao cliente.",
+ "guid": "494347eb-d007-45b5-b13c-9a28ee4f8e9a",
+ "service": "Azure Files",
+ "text": "Verifique se o compartilhamento de arquivos ou a conta de armazenamento não está sendo limitado, o que pode resultar em alta latência, baixa taxa de transferência ou baixo IOPS. As solicitações são limitadas quando os limites de IOPS, entrada ou saída são atingidos. Para contas de armazenamento padrão, a limitação ocorre no nível da conta. Para compartilhamentos de arquivos premium, a limitação geralmente ocorre no nível do compartilhamento.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "5820ff87-d98e-490e-93a0-28028bbb05e6",
+ "service": "Azure Firewall",
+ "text": "Implante o Firewall do Azure em redes virtuais de hub ou como parte de hubs de WAN Virtual do Azure.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "7c605481-a9d5-480f-8738-ac2022ef28ed",
+ "service": "Azure Firewall",
+ "text": "Aproveite a resiliência das Zonas de Disponibilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "2ceafe5f-6511-42a6-9687-cebaf586b293",
+ "service": "Azure Firewall",
+ "text": "Crie a estrutura de Política de Firewall do Azure.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "85a53628-bd7b-43bb-a817-b6f0c11c34c9",
+ "service": "Azure Firewall",
+ "text": "Revise a lista de problemas conhecidos.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "74a2596f-1cc9-4715-8de2-5afdde7b9f9a",
+ "service": "Azure Firewall",
+ "text": "Monitore o estado de integridade do Firewall do Azure.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Crie facilmente arquiteturas hub-and-spoke e transitivas com serviços de segurança nativos para governança e proteção de tráfego. Para obter mais informações sobre topologias de rede, consulte a documentação do Azure Cloud Adoption Framework.",
+ "guid": "21f4d348-c086-4e96-b5bc-91f8a3c25841",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure com topologias de rede tradicionais de Hub & Spokes ou WAN Virtual do Azure para implantar e gerenciar instâncias do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As Políticas de Firewall do Azure podem ser organizadas em uma estrutura hierárquica para sobrepor uma política de base central. Permita políticas granulares para atender aos requisitos de regiões específicas. Delegue políticas de firewall incrementais às equipes de segurança locais por meio do RBAC (controle de acesso baseado em função). Algumas configurações são específicas por instância, por exemplo, regras DNAT e configuração de DNS, então várias políticas especializadas podem ser necessárias.",
+ "guid": "1e604a31-46f0-4fcc-9f0e-1ca46cc3f677",
+ "service": "Azure Firewall",
+ "text": "Crie políticas de firewall do Azure para controlar a postura de segurança em ambientes de rede globais. Atribua políticas a todas as instâncias do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para implantações existentes, migre as regras do Firewall do Azure para as políticas do Gerenciador de Firewall do Azure. Use o Gerenciador de Firewall do Azure para gerenciar centralmente seus firewalls e políticas. Para obter mais informações, consulte Migrar para o Firewall do Azure Premium.",
+ "guid": "d17fbf01-c796-45dd-9ca4-99af38b2ae9b",
+ "service": "Azure Firewall",
+ "text": "Migre as Regras Clássicas do Firewall do Azure para as Políticas do Gerenciador de Firewall do Azure para implantações existentes.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O Grupo de Produtos do Firewall do Azure mantém uma lista atualizada de problemas conhecidos neste local. Esta lista contém informações importantes relacionadas ao comportamento por design, correções em construção, limitações da plataforma, juntamente com possíveis soluções alternativas ou mitigação.",
+ "guid": "b7623c43-bb6b-4629-a655-551c92e2dffa",
+ "service": "Azure Firewall",
+ "text": "Examine a lista de Problemas Conhecidos do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Há limites na estrutura da política, incluindo números de regras e grupos de coleta de regras, tamanho total da política, destinos de origem/destino. Certifique-se de redigir sua política e ficar atrás dos limites documentados.",
+ "guid": "9230da4d-4e27-4106-9552-294b1a93d780",
+ "service": "Azure Firewall",
+ "text": "Verifique se a Política de Firewall do Azure está de acordo com os limites e recomendações do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O Firewall do Azure fornece SLAs diferentes quando é implantado em uma única zona de disponibilidade e quando é implantado em várias zonas. Para obter mais informações, consulte SLA para Firewall do Azure. Para obter informações sobre todos os SLAs do Azure, consulte Resumo de SLA para serviços do Azure.",
+ "guid": "6a88967d-b182-437d-ac3b-1cb45ddfaa86",
+ "service": "Azure Firewall",
+ "text": "Implante o Firewall do Azure em várias zonas de disponibilidade para obter um SLA (contrato de nível de serviço) mais alto.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para arquiteturas tradicionais de Hub & Spokes, os detalhes de várias regiões são explicados neste artigo. Para hubs virtuais protegidos (WAN Virtual do Azure), a Intenção e as Políticas de Roteamento devem ser configuradas para proteger as comunicações entre hubs e branch a branch. Para cargas de trabalho projetadas para serem resistentes a falhas e tolerantes a falhas, lembre-se de considerar essas instâncias do Firewall do Azure e da Rede Virtual do Azure como recursos regionais.",
+ "guid": "a4b78865-a047-4afc-b7e6-b2f54cee83cb",
+ "service": "Azure Firewall",
+ "text": "Em ambientes de várias regiões, implante uma instância do Firewall do Azure por região.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Monitore de perto o indicador de métricas principais do estado de integridade do Firewall do Azure, como taxa de transferência, estado de integridade do firewall, utilização da porta SNAT e métricas de investigação de latência do AZFW. Além disso, o Firewall do Azure agora se integra ao Azure Resource Health. Com a verificação de Integridade do Recurso do Firewall do Azure, agora você pode exibir o status de integridade do Firewall do Azure e resolver problemas de serviço que podem afetar o recurso do Firewall do Azure.",
+ "guid": "9621bb59-3034-4e42-8344-5ce24b47425b",
+ "service": "Azure Firewall",
+ "text": "Monitore as métricas do Firewall do Azure e o estado do Resource Health.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "b0b563a2-ec75-4a12-981a-6c6138175122",
+ "service": "Azure Firewall",
+ "text": "Determine se você precisa de tunelamento forçado.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "c39df35c-43a4-4bc2-ae65-3201a1b274a4",
+ "service": "Azure Firewall",
+ "text": "Crie regras para políticas com base em critérios de acesso com privilégios mínimos.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "08bebd22-0d6a-469c-ae5b-fed8774452de",
+ "service": "Azure Firewall",
+ "text": "Aproveite a inteligência de ameaças.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "89484b0c-7b36-4fa2-9064-ae6db7dc411a",
+ "service": "Azure Firewall",
+ "text": "Habilite o proxy DNS do Firewall do Azure.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "a875d2e4-5476-450f-8206-aa79ecdcb2e3",
+ "service": "Azure Firewall",
+ "text": "Direcione o tráfego de rede por meio do Firewall do Azure.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "50dc96a3-9dca-4aab-97f5-9f8654d4f49c",
+ "service": "Azure Firewall",
+ "text": "Determine se você deseja usar provedores de segurança como serviço (SECaaS) de terceiros.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "98318578-48f2-4870-adc0-a6a2cf9ce25e",
+ "service": "Azure Firewall",
+ "text": "Proteja seus endereços IP públicos do Firewall do Azure com DDoS.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "O Firewall do Azure deve ter conectividade direta com a Internet. Se o AzureFirewallSubnet aprender uma rota padrão para sua rede local por meio do Protocolo de Gateway de Borda, você deverá configurar o Firewall do Azure no modo de túnel forçado. Usando o recurso de túnel forçado, você precisará de outro espaço de endereço /26 para a sub-rede de Gerenciamento do Firewall do Azure. Se essa for uma instância existente do Firewall do Azure que não pode ser reconfigurada no modo de túnel forçado, crie uma UDR com uma rota 0.0.0.0/0. Defina o valor NextHopType como Internet. Associe-o a AzureFirewallSubnet para manter a conectividade com a Internet.",
+ "guid": "a845b563-f080-4a92-83b0-400feb87ee4e",
+ "service": "Azure Firewall",
+ "text": "Se necessário rotear todo o tráfego vinculado à Internet para um próximo salto designado em vez de ir diretamente para a Internet, configure o Firewall do Azure no modo de túnel forçado (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao implantar uma nova instância do Firewall do Azure, se você habilitar o modo de túnel forçado, poderá definir o endereço IP público como Nenhum para implantar um plano de dados totalmente privado. No entanto, o plano de gerenciamento ainda requer um IP público apenas para fins de gerenciamento. O tráfego interno de redes virtuais e locais não usará esse IP público. Para obter mais informações sobre o túnel forçado, consulte Túnel forçado do Firewall do Azure.",
+ "guid": "176ae9e3-7a07-4885-ab4e-72a9ea2ee7fc",
+ "service": "Azure Firewall",
+ "text": "Defina o endereço IP público como Nenhum para implantar um plano de dados totalmente privado ao configurar o Firewall do Azure no modo de túnel forçado (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As Políticas de Firewall do Azure podem ser organizadas em uma estrutura hierárquica para sobrepor uma política de base central. Permita políticas granulares para atender aos requisitos de regiões específicas. Cada política pode conter diferentes conjuntos de regras de DNAT, Rede e Aplicativo com prioridade, ação e ordem de processamento específicas. Crie suas regras com base no princípio Zero Trust de acesso com privilégios mínimos. Como as regras são processadas é explicado neste artigo.",
+ "guid": "f1c5e5d4-9e41-4b27-b53f-fb36ddce75b7",
+ "service": "Azure Firewall",
+ "text": "Crie regras para políticas de firewall com base em critérios de acesso com privilégios mínimos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O IDPS é um dos recursos de segurança mais poderosos do Firewall do Azure (Premium) e deve ser habilitado. Com base nos requisitos de segurança e do aplicativo, e considerando o impacto no desempenho (consulte a seção Custo abaixo), os modos Alerta ou Alerta e negação podem ser selecionados.",
+ "guid": "0722a8f4-bea5-4309-93de-d93fb93e0733",
+ "service": "Azure Firewall",
+ "text": "Habilite o IDPS no modo Alerta ou Alerta e negação.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Habilitar esse recurso aponta clientes nas VNets para o Firewall do Azure como um servidor DNS. Ele protegerá a infraestrutura DNS interna que não será acessada e exposta diretamente. O Firewall do Azure também deve ser configurado para usar o DNS personalizado que será usado para encaminhar consultas DNS.",
+ "guid": "8afc40b9-179e-4b5d-ba89-897925ad6d09",
+ "service": "Azure Firewall",
+ "text": "Habilite a configuração de proxy do DNS (Firewall do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Em uma arquitetura Hub e Spokes tradicional, configure UDRs para forçar o tráfego por meio do Firewall do Azure para conectividade 'SpoketoSpoke', 'SpoketoInternet' e 'SpoketoHybrid'. Na WAN Virtual do Azure, em vez disso, configure a Intenção de Roteamento e as Políticas para redirecionar o tráfego privado e/ou da Internet por meio da instância do Firewall do Azure integrada ao hub.",
+ "guid": "54cc495b-54f8-4dc9-9ed9-e20c15a8beb9",
+ "service": "Azure Firewall",
+ "text": "Configure UDR (rotas definidas pelo usuário) para forçar o tráfego por meio do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o recurso de proxy explícito habilitado no caminho de saída, você pode definir uma configuração de proxy no aplicativo Web de envio (como um navegador da Web) com o Firewall do Azure configurado como o proxy. Como resultado, o tráfego da Web alcançará o endereço IP privado do firewall e, portanto, sairá diretamente do firewall sem usar uma UDR. Esse recurso também facilita o uso de vários firewalls sem modificar as rotas de rede existentes.",
+ "guid": "18462426-38d0-444b-aaec-99aa97aefc57",
+ "service": "Azure Firewall",
+ "text": "Se não for possível aplicar a UDR e apenas o redirecionamento de tráfego da Web for necessário, considere usar o Firewall do Azure como um Proxy Explícito",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode usar suas ofertas conhecidas e de terceiros SECaaS para proteger o acesso à Internet para seus usuários. Esse cenário requer a WAN Virtual do Azure com um Gateway de VPN S2S no Hub, pois ele usa um túnel IPSec para se conectar à infraestrutura do provedor. Os provedores de SECaaS podem cobrar taxas de licença adicionais e limitar a taxa de transferência em conexões IPSec. Soluções alternativas, como o ZScaler Cloud Connector, existem e podem ser mais adequadas.",
+ "guid": "cfcce0d3-c52d-4405-9316-d503ffcf5349",
+ "service": "Azure Firewall",
+ "text": "Configure provedores de segurança de software como serviço (SaaS) de terceiros com suporte no Firewall Manager se quiser usar essas soluções para proteger conexões de saída.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode usar o FQDN com base na resolução DNS no Firewall do Azure e nas políticas de firewall. Esse recurso permite filtrar o tráfego de saída com qualquer protocolo TCP/UDP (incluindo NTP, SSH, RDP e muito mais). Você deve habilitar a configuração de Proxy DNS do Firewall do Azure para usar FQDNs em suas regras de rede. Para saber como funciona, confira Filtragem de FQDN do Firewall do Azure em regras de rede.",
+ "guid": "ce2815a6-eee5-4c54-91e7-9ee1e95a191a",
+ "service": "Azure Firewall",
+ "text": "Use a filtragem de FQDN (Nome de Domínio Totalmente Qualificado) em regras de rede.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Uma marca de serviço representa um grupo de prefixos de endereço IP para ajudar a minimizar a complexidade da criação de regras de segurança. Usando marcas de serviço em regras de rede, é possível habilitar o acesso de saída a serviços específicos no Azure, Dynamics e Office 365 sem abrir grandes intervalos de endereços IP. O Azure manterá automaticamente o mapeamento entre essas marcas e os endereços IP subjacentes usados por cada serviço. A lista de marcas de serviço disponíveis para o Firewall do Azure está listada aqui: Marcas de serviço do Firewall Az.",
+ "guid": "55fe92cd-c2a0-4b0b-bd8b-691291c73651",
+ "service": "Azure Firewall",
+ "text": "Use marcas de serviço em regras de rede para habilitar o acesso seletivo a serviços específicos da Microsoft.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Uma marca FQDN representa um grupo de FQDNs (nomes de domínio totalmente qualificados) associados a serviços conhecidos da Microsoft. Você pode usar uma marca FQDN em regras de aplicativo para permitir o tráfego de rede de saída necessário por meio do firewall para alguns serviços específicos do Azure, Office 365, Windows 365 e Intune.",
+ "guid": "c9cac1b2-3969-4de0-b36f-6f9992d9ebc6",
+ "service": "Azure Firewall",
+ "text": "Use marcas FQDN em regras de aplicativo para habilitar o acesso seletivo a serviços específicos da Microsoft.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Um plano de proteção contra DDoS fornece recursos aprimorados de mitigação para defender seu firewall contra ataques DDoS. O Gerenciador de Firewall do Azure é uma ferramenta integrada para criar sua infraestrutura de firewall e planos de proteção contra DDoS. Para obter mais informações, consulte Configurar um Plano de Proteção contra DDoS do Azure usando o Gerenciador de Firewall do Azure.",
+ "guid": "e7925fd9-7502-4cb4-9b51-cbf8f546a5b2",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure para criar e associar um plano de proteção contra DDoS à sua rede virtual do hub (não se aplica à WAN Virtual do Azure).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Com o Firewall do Azure Premium, se o recurso de Inspeção TLS for usado, é recomendável aproveitar uma AC (Autoridade de Certificação) Corporativa interna para o ambiente de produção. Os certificados autoassinados devem ser usados apenas para fins de teste/PoC.",
+ "guid": "2e318870-f258-484d-aef6-ed2972db1f44",
+ "service": "Azure Firewall",
+ "text": "Use uma PKI corporativa para gerar certificados para inspeção TLS.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Se seus requisitos de segurança exigirem a implementação de uma abordagem Zero-Trust para aplicativos Web (inspeção e criptografia), é recomendável seguir este guia. Neste documento, será explicado como integrar o Firewall do Azure e o Gateway de Aplicativo, em cenários tradicionais de Hub & Spoke e WAN Virtual.",
+ "guid": "34821124-0275-4c49-8f1c-20eb84027df3",
+ "service": "Azure Firewall",
+ "text": "Examine o guia de configuração de Confiança Zero para o Firewall do Azure e o Gateway de Aplicativo",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "ffdfd2b7-e799-4c09-9c76-1471fe5f8db9",
+ "service": "Azure Firewall",
+ "text": "Selecione o SKU do Firewall do Azure a ser implantado.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "cca81cf9-4d7f-4e04-99e9-8ecfb533d814",
+ "service": "Azure Firewall",
+ "text": "Determine se algumas instâncias não precisam de alocação permanente 24 horas por dia, 7 dias por semana.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "50c204ab-2e28-456c-a731-3ecf2e38d6d7",
+ "service": "Azure Firewall",
+ "text": "Determine onde você pode otimizar o uso do firewall em cargas de trabalho.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "365207d2-1008-4a6e-ad87-f4191a31a004",
+ "service": "Azure Firewall",
+ "text": "Monitore e otimize o uso de instâncias de firewall para determinar a relação custo-benefício.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "39b1fd82-3efb-459b-b789-a9dc631f9f90",
+ "service": "Azure Firewall",
+ "text": "Revise e otimize o número de endereços IP públicos necessários e as políticas usadas.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "46753a55-3740-4a6d-808b-fbe485bc66e5",
+ "service": "Azure Firewall",
+ "text": "Revise os requisitos de registro, estime o custo e controle ao longo do tempo.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "O Firewall do Azure pode ser implantado em três SKUs diferentes: Básico, Standard e Premium. O Firewall do Azure Premium é recomendado para proteger aplicativos altamente confidenciais (como processamento de pagamentos). O Firewall do Azure Standard é recomendado para clientes que procuram firewall de Camada 3 a Camada 7 e precisa de dimensionamento automático para lidar com períodos de pico de tráfego de até 30 Gbps. O Firewall do Azure Basic é recomendado para clientes SMB com necessidades de taxa de transferência de 250 Mbps. Se necessário, é possível fazer downgrade ou upgrade entre Standard e Premium, conforme documentado aqui. Para obter mais informações, consulte Escolher o SKU do Firewall do Azure certo para atender às suas necessidades.",
+ "guid": "ba45f704-2456-4d6a-999d-57db4dbf3ff5",
+ "service": "Azure Firewall",
+ "text": "Implante o SKU do Firewall do Azure adequado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode ter ambientes de desenvolvimento ou teste que são usados apenas durante o horário comercial. Para obter mais informações, consulte Desalocar e alocar o Firewall do Azure.",
+ "guid": "2ef42b67-50cc-4d54-bd3d-324ad2044fc7",
+ "service": "Azure Firewall",
+ "text": "Interrompa as implantações do Firewall do Azure que não precisam ser executadas 24 horas por dia, 7 dias por semana.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode usar uma instância central do Firewall do Azure na rede virtual do hub ou no hub seguro da WAN Virtual e compartilhar o mesmo firewall em várias redes virtuais spoke conectadas ao mesmo hub da mesma região. Verifique se não há tráfego inesperado entre regiões como parte da topologia hub-spoke.",
+ "guid": "ae5816a1-1766-425a-a117-2873865a9f10",
+ "service": "Azure Firewall",
+ "text": "Compartilhe a mesma instância do Firewall do Azure em várias cargas de trabalho e Redes Virtuais do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O log Top Flows (conhecido no setor como Fat Flows) mostra as principais conexões que estão contribuindo para a maior taxa de transferência por meio do firewall. É recomendável examinar regularmente o tráfego processado pelo Firewall do Azure e pesquisar possíveis otimizações para reduzir a quantidade de tráfego que atravessa o firewall.",
+ "guid": "791f974e-8c73-46ee-9b9e-26dd3a6c6845",
+ "service": "Azure Firewall",
+ "text": "Examine regularmente o tráfego processado pelo Firewall do Azure e procure otimizações de carga de trabalho de origem",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Para identificar implantações de Firewall do Azure não utilizadas, comece analisando as métricas de monitoramento e UDRs associadas a sub-redes que apontam para o IP privado do firewall. Combine essas informações com outras validações, como se sua instância do Firewall do Azure tiver regras (clássicas) para NAT, Rede e Aplicativo, ou mesmo se a configuração de Proxy DNS estiver definida como Desabilitada e com documentação interna sobre seu ambiente e implantações. Você pode detectar implantações econômicas ao longo do tempo. Para obter mais informações sobre como monitorar logs e métricas, consulte Monitorar logs e métricas do Firewall do Azure e utilização da porta SNAT.",
+ "guid": "6590ab7b-01d8-487c-ad40-c325eada375c",
+ "service": "Azure Firewall",
+ "text": "Examine as instâncias subutilizadas do Firewall do Azure. Identifique e exclua implantações de Firewall do Azure não utilizadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Revise cuidadosamente as políticas, associações e herança do Firewall Manager. As políticas são cobradas com base em associações de firewall. Uma política com zero ou uma associação de firewall é gratuita. Uma política com várias associações de firewall é cobrada a uma taxa fixa. Para obter mais informações, consulte Preços – Gerenciador de Firewall do Azure.",
+ "guid": "c82f1a0b-3dd1-4da7-9006-5b870e0ea843",
+ "service": "Azure Firewall",
+ "text": "Use o Gerenciador de Firewall do Azure e suas políticas para reduzir os custos operacionais, aumentar a eficiência e reduzir a sobrecarga de gerenciamento.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Valide se todos os endereços IP públicos associados estão em uso. Se eles não estiverem em uso, desassocie-os e exclua-os. Avalie a utilização da porta SNAT antes de remover qualquer endereço IP. Você usará apenas o número de IPs públicos de que seu firewall precisa. Para obter mais informações, consulte Monitorar logs e métricas do Firewall do Azure e utilização da porta SNAT.",
+ "guid": "58401f6a-8858-4d03-bf00-7f6d8747297a",
+ "service": "Azure Firewall",
+ "text": "Exclua endereços IP públicos não utilizados.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Firewall do Azure tem a capacidade de registrar metadados de forma abrangente de todo o tráfego que vê, para Workspaces do Log Analytics, Armazenamento ou soluções de terceiros por meio de Hubs de Eventos. No entanto, todas as soluções de registro incorrem em custos de processamento e armazenamento de dados. Em volumes muito grandes, esses custos podem ser significativos, uma abordagem econômica e uma alternativa ao Log Analytics devem ser consideradas e o custo estimado. Considere se é necessário registrar metadados de tráfego para todas as categorias de log e modificá-los em Configurações de Diagnóstico, se necessário.",
+ "guid": "a9f71813-ccf8-427a-9ce3-676b4123eff4",
+ "service": "Azure Firewall",
+ "text": "Revise os requisitos de registro.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "c8e11b57-bc16-4a60-9c0d-aeae7239fe91",
+ "service": "Azure Firewall",
+ "text": "Manter o inventário e o backup da configuração e das políticas do Firewall do Azure.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "be3e8ab7-db2a-40f7-a76a-fba15b34b88d",
+ "service": "Azure Firewall",
+ "text": "Aproveite os logs de diagnóstico para monitoramento e solução de problemas de firewall.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "af454d15-f640-47db-9864-7c31cbdcdffc",
+ "service": "Azure Firewall",
+ "text": "Aproveite a pasta de trabalho de Monitoramento do Firewall do Azure.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "010e0c46-9d19-46fb-9a85-4bb79828db8a",
+ "service": "Azure Firewall",
+ "text": "Revise regularmente seus insights e análises de políticas.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "e455cf35-374c-4e02-9432-e0dc531b829b",
+ "service": "Azure Firewall",
+ "text": "Integre o Firewall do Azure ao Microsoft Defender para Nuvem e ao Microsoft Sentinel.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Firewall do Azure deve ser usado para controlar o tráfego entre VNets, entre VNets e redes locais, o tráfego de saída para a Internet e o tráfego não HTTP/s de entrada. Para o controle de tráfego intra-VNet, é recomendável usar Grupos de Segurança de Rede.",
+ "guid": "337df674-237d-4b82-ac92-ae45f34a6e3d",
+ "service": "Azure Firewall",
+ "text": "Não use o Firewall do Azure para controle de tráfego intra-VNet.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Se a abordagem de IaC (infraestrutura como código) for usada para manter o Firewall do Azure e todas as dependências, o backup e o controle de versão das Políticas de Firewall do Azure já deverão estar em vigor. Caso contrário, um mecanismo complementar baseado no Aplicativo Lógico externo poderá ser implantado para automatizar e fornecer uma solução eficaz.",
+ "guid": "174e4ca6-77d4-4b83-8f05-0c54c43792ec",
+ "service": "Azure Firewall",
+ "text": "Mantenha backups regulares de artefatos do Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os Logs de Diagnóstico são um componente chave para muitas ferramentas e estratégias de monitoramento do Firewall do Azure e devem ser habilitados. Você pode monitorar o Firewall do Azure usando logs de firewall ou pastas de trabalho. Você também pode usar logs de atividades para auditar operações em recursos do Firewall do Azure.",
+ "guid": "7e27b44b-e8c0-4f25-9fce-78a85810d715",
+ "service": "Azure Firewall",
+ "text": "Habilite os Logs de Diagnóstico para o Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os logs de firewall estruturados são um tipo de dados de log organizados em um novo formato específico. Eles usam um esquema predefinido para estruturar os dados de log de uma forma que facilite a pesquisa, a filtragem e a análise. As ferramentas de monitoramento mais recentes são baseadas nesse tipo de log, portanto, geralmente é um pré-requisito. Use o formato anterior de Logs de Diagnóstico somente se houver uma ferramenta existente com um pré-requisito para isso. Não habilite os dois formatos de log ao mesmo tempo.",
+ "guid": "078ab6f4-2ef5-4f91-856c-be9e3c2748a1",
+ "service": "Azure Firewall",
+ "text": "Use o formato Structured Firewall Logs.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A experiência do portal do Firewall do Azure agora inclui uma nova pasta de trabalho na interface do usuário da seção Monitoramento, uma instalação separada não é mais necessária. Com a pasta de trabalho do Firewall do Azure, você pode extrair insights valiosos de eventos do Firewall do Azure, aprofundar suas regras de aplicativo e rede e examinar estatísticas sobre atividades de firewall em URLs, portas e endereços.",
+ "guid": "a246ca16-d2da-4ebc-ad28-0bcbb0813be0",
+ "service": "Azure Firewall",
+ "text": "Use a pasta de trabalho interna de monitoramento do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os alertas devem ser criados para monitorar pelo menos a taxa de transferência, o estado de integridade do firewall, a utilização da porta SNAT e as métricas de investigação de latência do AZFW. Para obter informações sobre como monitorar logs e métricas, consulte Monitorar logs e métricas do Firewall do Azure.",
+ "guid": "0c405dff-403a-4ead-94d9-5539ba1eaea6",
+ "service": "Azure Firewall",
+ "text": "Monitore as principais métricas e crie alertas para indicadores da utilização da capacidade do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Se essas ferramentas estiverem disponíveis no ambiente, é recomendável aproveitar a integração com as soluções Microsoft Defender para Nuvem e Microsoft Sentinel. Com a integração do Microsoft Defender para Nuvem, você pode visualizar o status total da infraestrutura de rede e da segurança de rede em um só lugar, incluindo a Segurança de Rede do Azure em todas as VNets e Hubs Virtuais espalhados por diferentes regiões no Azure. A integração com o Microsoft Sentinel fornece recursos de detecção e prevenção de ameaças.",
+ "guid": "6643f4d1-ee99-4466-9175-164787d00fc3",
+ "service": "Azure Firewall",
+ "text": "Configure a integração do Firewall do Azure com o Microsoft Defender para Nuvem e o Microsoft Sentinel.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A Análise de Política é um novo recurso que fornece insights sobre o impacto de suas políticas de Firewall do Azure. Ele ajuda você a identificar possíveis problemas (atingir limites de política, regras de baixa utilização, regras redundantes, regras muito genéricas, recomendação de uso de grupos de IP) em suas políticas e fornece recomendações para melhorar sua postura de segurança e desempenho de processamento de regras.",
+ "guid": "43d91873-4442-40ae-b2a3-263bc7fdcaab",
+ "service": "Azure Firewall",
+ "text": "Revise regularmente o painel de análise de políticas para identificar possíveis problemas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Consultas de exemplo são fornecidas para o Firewall do Azure. Isso permitirá que você identifique rapidamente o que está acontecendo dentro do seu firewall e verifique qual regra foi acionada ou qual regra está permitindo / bloqueando uma solicitação.",
+ "guid": "8bc24ea6-da9e-48b8-a05c-4fce251d2046",
+ "service": "Azure Firewall",
+ "text": "Familiarize-se com as consultas KQL (Kusto Query Language) para permitir uma análise rápida e a solução de problemas usando os logs do Firewall do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "9469b3e2-6be2-470b-a10b-9fb0150c5733",
+ "service": "Azure Firewall",
+ "text": "Revise e otimize regularmente as regras de firewall.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "9efe3606-1aa2-4e06-bf6a-2e5214cf080f",
+ "service": "Azure Firewall",
+ "text": "Revise os requisitos de política e as oportunidades para resumir intervalos de IP e lista de URLs.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "93db9b9d-c43d-47e2-a1cf-e81841274059",
+ "service": "Azure Firewall",
+ "text": "Avalie os requisitos da porta SNAT.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "fbe59997-e12b-497b-bdbd-d2a5e3f728e7",
+ "service": "Azure Firewall",
+ "text": "Planeje testes de carga para testar o desempenho de dimensionamento automático em seu ambiente.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "c68f8c08-fe1e-4515-a877-67daaa008ab0",
+ "service": "Azure Firewall",
+ "text": "Não habilite ferramentas de diagnóstico e registro em log se não forem necessários.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "A Análise de Política é um novo recurso que fornece insights sobre o impacto de suas políticas de Firewall do Azure. Ele ajuda você a identificar possíveis problemas (atingir limites de política, regras de baixa utilização, regras redundantes, regras muito genéricas, recomendação de uso de grupos de IP) em suas políticas e fornece recomendações para melhorar sua postura de segurança e desempenho de processamento de regras.",
+ "guid": "cbbaf175-2b8e-4a1f-af5a-a9cbfb798ffb",
+ "service": "Azure Firewall",
+ "text": "Use o painel Análise de Política para identificar possíveis otimizações para Políticas de Firewall.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Em vez de criar e manter explicitamente uma longa lista de sites públicos da Internet, considere o uso de Categorias da Web do Firewall do Azure. Esse recurso categorizará dinamicamente o conteúdo da Web e permitirá a criação de Regras de Aplicativo compactas.",
+ "guid": "b8bc28b7-69d4-49d3-8a1e-8dd7ba71ebbe",
+ "service": "Azure Firewall",
+ "text": "Considere as categorias da Web para permitir ou negar o acesso de saída em massa.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se o Firewall do Azure precisar operar no modo IDPS Alertar e negar, considere cuidadosamente o impacto no desempenho, conforme documentado nesta página.",
+ "guid": "b91be607-0c6b-4c0d-bdd2-367879f7632d",
+ "service": "Azure Firewall",
+ "text": "Avalie o impacto no desempenho do IDPS no modo de alerta e negação.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Atualmente, o Firewall do Azure dá suporte a 2496 portas por endereço IP público por instância do Conjunto de Dimensionamento de Máquinas Virtuais de back-end. Por padrão, há duas instâncias do Conjunto de Dimensionamento de Máquinas Virtuais. Portanto, existem 4992 portas por IP de destino de fluxo, porta de destino e protocolo (TCP ou UDP). O firewall pode ser dimensionado até um máximo de 20 instâncias. Você pode contornar os limites configurando implantações do Firewall do Azure com um mínimo de cinco endereços IP públicos para implantações suscetíveis ao esgotamento de SNAT.",
+ "guid": "a5847147-e7ef-48d1-ba16-d896fdce1b9f",
+ "service": "Azure Firewall",
+ "text": "Avalie o possível problema de esgotamento da porta SNAT.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Crie tráfego inicial que não faça parte de seus testes de carga 20 minutos antes do teste. Use as configurações de diagnóstico para capturar eventos de expansão e redução. Você pode usar o serviço de Teste de Carga do Azure para gerar o tráfego inicial. Permite que a instância do Firewall do Azure escale verticalmente suas instâncias ao máximo.",
+ "guid": "908a8bfa-9e9f-4199-8b5a-f2a031ab22e0",
+ "service": "Azure Firewall",
+ "text": "Aqueça corretamente o Firewall do Azure antes de qualquer teste de desempenho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Firewall do Azure é uma implantação dedicada em sua rede virtual. Em sua rede virtual, uma sub-rede dedicada é necessária para a instância do Firewall do Azure. O Firewall do Azure provisiona mais capacidade à medida que é dimensionado. Um espaço de endereço /26 para suas sub-redes garante que o firewall tenha endereços IP suficientes disponíveis para acomodar o dimensionamento. O Firewall do Azure não precisa de uma sub-rede maior que /26. O nome da sub-rede do Firewall do Azure deve ser AzureFirewallSubnet.",
+ "guid": "d0e66443-59f1-48cb-995f-eaa6688c4f3b",
+ "service": "Azure Firewall",
+ "text": "Configure uma sub-rede do Firewall do Azure (AzureFirewallSubnet) com um espaço de endereço /26.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O Firewall do Azure fornece alguns recursos avançados de log que podem ser caros para manter sempre ativos. Em vez disso, eles devem ser usados apenas para fins de solução de problemas e limitados em duração e, em seguida, desativados quando não forem mais necessários. Por exemplo, os principais fluxos e os logs de rastreamento de fluxo são caros podem causar uso excessivo de CPU e armazenamento na infraestrutura do Firewall do Azure.",
+ "guid": "2c51e141-6e45-42cd-8c22-c55b219ffe83",
+ "service": "Azure Firewall",
+ "text": "Não habilite o registro avançado se não for necessário",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "59ed40bd-06a0-4125-ab99-afc88a248aa5",
+ "service": "Azure Front Door",
+ "text": "Estime o padrão e o volume de tráfego. O número de solicitações do cliente para a borda do Azure Front Door pode influenciar sua escolha de camada. Se você precisar dar suporte a um alto volume de solicitações, considere a camada Premium do Azure Front Door porque o desempenho afeta a disponibilidade. No entanto, há uma compensação de custo. Essas camadas são descritas em Eficiência de desempenho.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "51f023f3-53b4-4878-8548-2b08a6b095ab",
+ "service": "Azure Front Door",
+ "text": "Escolha sua estratégia de implantação. As abordagens fundamentais de implantação são ativo-ativo e ativo-passivo. A implantação ativa-ativa significa que vários ambientes ou selos que executam a carga de trabalho atendem ao tráfego. A implantação ativa-passiva significa que apenas a região primária lida com todo o tráfego, mas faz failover para a região secundária quando necessário. Em uma implantação de várias regiões, os selos são executados em diferentes regiões para maior disponibilidade com um balanceador de carga global, como o Azure Front Door, que distribui o tráfego. Portanto, é importante configurar o balanceador de carga para a abordagem de implantação apropriada.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "486f318a-8747-45e5-a5f4-97642d4fada6",
+ "service": "Azure Front Door",
+ "text": "Use o mesmo nome de host no Azure Front Door e nos servidores de origem. Para garantir que os cookies ou URLs de redirecionamento funcionem corretamente, preserve o nome do host HTTP original ao usar um proxy reverso, como um balanceador de carga, na frente de um aplicativo Web.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "9bc96e35-d25f-4521-86f8-8cadefb23576",
+ "service": "Azure Front Door",
+ "text": "Implemente o padrão de monitoramento de ponto de extremidade de integridade. Seu aplicativo deve expor pontos de extremidade de integridade, que agregam o estado dos serviços críticos e dependências que seu aplicativo precisa para atender às solicitações. As investigações de integridade do Azure Front Door usam o ponto de extremidade para detectar a integridade dos servidores de origem. Para obter mais informações, consulte Padrão de monitoramento de ponto de extremidade de integridade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "96c8dc89-cafe-411e-9080-35c13fffb8b3",
+ "service": "Azure Front Door",
+ "text": "Aproveite a funcionalidade interna de rede de distribuição de conteúdo no Azure Front Door. O recurso de rede de distribuição de conteúdo do Azure Front Door tem centenas de pontos de presença e pode ajudar a resistir a ataques de DDoS (negação de serviço distribuído). Esses recursos ajudam a melhorar a confiabilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "750bc3ba-30aa-44fc-88aa-bc93cdf29cdf",
+ "service": "Azure Front Door",
+ "text": "Considere uma opção de gerenciamento de tráfego redundante. O Azure Front Door é um serviço distribuído globalmente que é executado como um singleton em um ambiente. O Azure Front Door é um possível ponto único de falha no sistema. Se o serviço falhar, os clientes não poderão acessar seu aplicativo durante o tempo de inatividade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Você pode selecionar o melhor recurso de origem usando uma série de etapas de decisão e seu design. A origem selecionada atende ao tráfego dentro do intervalo de latência permitido na proporção especificada de pesos.",
+ "guid": "1a6fba56-5098-4506-9be0-940fe556996c",
+ "service": "Azure Front Door",
+ "text": "Escolha um método de roteamento que dê suporte à sua estratégia de implantação. O método ponderado, que distribui o tráfego com base no coeficiente de peso configurado, oferece suporte a modelos ativos-ativos. Um valor baseado em prioridade que configura a região primária para receber todo o tráfego e enviar tráfego para a região secundária como backup oferece suporte a modelos ativo-passivo. Combine os métodos anteriores com latência para que a origem com a menor latência receba tráfego.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Várias origens dão suporte à redundância distribuindo o tráfego em várias instâncias do aplicativo. Se uma instância não estiver disponível, outras origens de back-end ainda poderão receber tráfego.",
+ "guid": "00f51ce2-46a9-4051-ab0e-762743d0837d",
+ "service": "Azure Front Door",
+ "text": "Dar suporte à redundância por ter várias origens em um ou mais pools de back-end. Sempre tenha instâncias redundantes do seu aplicativo e certifique-se de que cada instância exponha um ponto de extremidade ou origem. Você pode colocar essas origens em um ou mais pools de back-end.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As investigações de integridade habilitadas fazem parte da implementação do padrão de monitoramento de integridade. As investigações de integridade garantem que o Azure Front Door roteie apenas o tráfego para instâncias íntegras o suficiente para lidar com solicitações. Para obter mais informações, consulte Práticas recomendadas em investigações de integridade.",
+ "guid": "17fbec2c-ddb4-4490-946c-a151ae0fadd4",
+ "service": "Azure Front Door",
+ "text": "Configure investigações de integridade na origem. Configure o Azure Front Door para realizar verificações de integridade para determinar se a instância de back-end está disponível e pronta para continuar recebendo solicitações.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os tempos limite ajudam a evitar problemas de desempenho e disponibilidade, encerrando solicitações que demoram mais do que o esperado para serem concluídas.",
+ "guid": "1a308f11-1d93-4d57-bd84-cbd8f6198dd2",
+ "service": "Azure Front Door",
+ "text": "Defina um tempo limite para encaminhar solicitações para o back-end. Ajuste a configuração de tempo limite de acordo com as necessidades de seus endpoints. Caso contrário, o Azure Front Door poderá fechar a conexão antes que a origem envie a resposta. Você também pode reduzir o tempo limite padrão do Azure Front Door se todas as suas origens tiverem um tempo limite mais curto. Para obter mais informações, consulte Solução de problemas de solicitações que não respondem.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Defina o mesmo nome de host para evitar mau funcionamento com afinidade, autenticação e autorização de sessão. Para obter mais informações, consulte Preservar o nome do host HTTP original entre um proxy reverso e seu aplicativo Web de back-end.",
+ "guid": "7af90aa7-b21f-432f-858b-2d872c752d7f",
+ "service": "Azure Front Door",
+ "text": "Use o mesmo nome de host no Azure Front Door e sua origem. O Azure Front Door pode reescrever o cabeçalho do host de solicitações de entrada, o que é útil quando você tem vários nomes de domínio personalizados que roteiam para uma origem. No entanto, reescrever o cabeçalho do host pode causar problemas com cookies de solicitação e redirecionamento de URL.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Com a afinidade de sessão, as conexões do usuário permanecem na mesma origem durante a sessão do usuário. Se essa origem ficar indisponível, a experiência do usuário poderá ser interrompida.",
+ "guid": "f66a8d49-8d0a-4952-9db2-ac2e526f08ad",
+ "service": "Azure Front Door",
+ "text": "Decida se seu aplicativo requer afinidade de sessão. Se você tiver requisitos de alta confiabilidade, recomendamos que você desabilite a afinidade de sessão.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Limite as solicitações para impedir que os clientes enviem muito tráfego para seu aplicativo. A limitação de taxa pode ajudá-lo a evitar problemas como uma tempestade de repetição.",
+ "guid": "63faaf18-da4b-4274-ac3c-d955f2a2e01b",
+ "service": "Azure Front Door",
+ "text": "Aproveite as regras de limitação de taxa incluídas em um WAF (firewall de aplicativo Web).",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "ad186a96-5de2-4bf7-acd4-5b534cdb3e97",
+ "service": "Azure Front Door",
+ "text": "Examine a linha de base de segurança do Azure Front Door.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "b31346d7-4fde-42c2-82fe-2e4d54aa8f1b",
+ "service": "Azure Front Door",
+ "text": "Proteja os servidores de back-end. O front-end atua como o único ponto de entrada para o aplicativo.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "903b1844-994a-49e8-8e08-6ef445aec4f7",
+ "service": "Azure Front Door",
+ "text": "Permitir apenas acesso autorizado ao plano de controle. Use o RBAC (controle de acesso baseado em função) do Azure Front Door para restringir o acesso apenas às identidades que precisam dele.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "329c0516-9a14-45ea-ad04-fe75453c8d88",
+ "service": "Azure Front Door",
+ "text": "Bloqueie ameaças comuns na borda. O WAF é integrado ao Azure Front Door. Habilite as regras do WAF nos front-ends para proteger os aplicativos contra explorações e vulnerabilidades comuns na borda da rede, mais perto da origem do ataque.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "d323ca3c-f7df-4f7e-b7c9-698d2bdad3e2",
+ "service": "Azure Front Door",
+ "text": "Proteja o Azure Front Door contra tráfego inesperado. O Azure Front Door usa o plano básico de proteção contra DDoS do Azure para proteger os pontos de extremidade do aplicativo contra ataques de DDoS. Se você precisar expor outros endereços IP públicos do seu aplicativo, considere adicionar o plano padrão de proteção contra DDoS para esses endereços para recursos avançados de proteção e detecção.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "fcb4a654-3e3b-408c-9538-a1dfefdef774",
+ "service": "Azure Front Door",
+ "text": "Proteja os dados em trânsito. Habilite o TLS (Transport Layer Security) de ponta a ponta, o redirecionamento de HTTP para HTTPS e certificados TLS gerenciados quando aplicável. Para obter mais informações, consulte Práticas recomendadas de TLS para o Azure Front Door.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "451f9871-3ca1-40b9-a1f6-c5eb0a37213b",
+ "service": "Azure Front Door",
+ "text": "Monitore a atividade anômala. Revise regularmente os logs para verificar se há ataques e falsos positivos. Envie logs do WAF do Azure Front Door para o SIEM (gerenciamento centralizado de eventos e informações de segurança) da sua organização, como o Microsoft Sentinel, para detectar padrões de ameaças e incorporar medidas preventivas no design da carga de trabalho.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Os conjuntos de regras padrão são atualizados com frequência com base nos 10 principais tipos de ataque do OWASP e nas informações do Microsoft Threat Intelligence. Os conjuntos de regras especializados detectam determinados casos de uso. Por exemplo, as regras de bot classificam os bots como bons, ruins ou desconhecidos com base nos endereços IP do cliente. Eles também bloqueiam bots ruins e endereços IP conhecidos e restringem o tráfego com base na localização geográfica dos chamadores. Usando uma combinação de conjuntos de regras, você pode detectar e bloquear ataques com várias intenções.",
+ "guid": "711c450c-ac42-4570-b2fd-22319b4a7913",
+ "service": "Azure Front Door",
+ "text": "Habilite conjuntos de regras do WAF que detectam e bloqueiam tráfego potencialmente mal-intencionado. Esse recurso está disponível na camada Premium. Recomendamos estes conjuntos de regras: - Padrão - Proteção contra bots - Restrição de IP - Filtragem geográfica - Limitação de taxa",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Reduza os falsos positivos e permita solicitações legítimas para seu aplicativo.",
+ "guid": "a6fe49f4-0b1f-4677-af1f-b766f073ac6c",
+ "service": "Azure Front Door",
+ "text": "Crie exclusões para conjuntos de regras gerenciadas. Teste uma política de WAF no modo de detecção por algumas semanas e ajuste os falsos positivos antes de implantá-la.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O TLS garante que as trocas de dados entre o navegador, o Azure Front Door e as origens de back-end sejam criptografadas para evitar adulterações. O Key Vault oferece suporte a certificados gerenciados e renovação e rotação de certificados simples.",
+ "guid": "450b511f-9e82-45ce-986b-769ea00dbeaa",
+ "service": "Azure Front Door",
+ "text": "Habilite TLS de ponta a ponta, redirecionamento de HTTP para HTTPS e certificados TLS gerenciados quando aplicável. Examine as práticas recomendadas de TLS para o Azure Front Door. Use o TLS versão 1.2 como a versão mínima permitida com cifras relevantes para seu aplicativo. Os certificados gerenciados do Azure Front Door devem ser sua opção padrão para facilitar as operações. No entanto, se você quiser gerenciar o ciclo de vida dos certificados, use seus próprios certificados nos pontos de extremidade de domínio personalizados do Azure Front Door e armazene-os no Key Vault.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "baeb625f-93ac-4181-be7b-07f474584985",
+ "service": "Azure Front Door",
+ "text": "Examine as camadas e os preços do Azure Front Door. Use a calculadora de preços para estimar os custos realistas para cada nível. Compare os recursos e a adequação de cada camada para o seu cenário. Por exemplo, apenas a camada Premium oferece suporte à conexão com sua origem por meio de Link Privado.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "ed02627c-4a6d-4d6e-982f-a1fbee4a7259",
+ "service": "Azure Front Door",
+ "text": "Considere os custos de largura de banda. Os custos de largura de banda do Azure Front Door dependem da camada escolhida e do tipo de transferência de dados. O Azure Front Door fornece relatórios internos para métricas faturáveis. Para avaliar seus custos relacionados à largura de banda e onde você pode concentrar seus esforços de otimização, consulte Relatórios do Azure Front Door.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "e2e0bb7e-521d-4729-9579-5c9539a68867",
+ "service": "Azure Front Door",
+ "text": "Otimize as solicitações recebidas. O Azure Front Door cobra as solicitações de entrada. Você pode definir restrições em sua configuração de projeto.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "337e7030-494e-4be5-8920-9144cb02c399",
+ "service": "Azure Front Door",
+ "text": "Use os recursos de forma eficiente. O Azure Front Door usa um método de roteamento que ajuda na otimização de recursos. A menos que a carga de trabalho seja extremamente sensível à latência, distribua o tráfego uniformemente em todos os ambientes para usar efetivamente os recursos implantados.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "add1a775-b13c-477b-acc7-38dbcccd51fe",
+ "service": "Azure Front Door",
+ "text": "Considere usar uma instância compartilhada fornecida pela organização. Os custos incorridos com serviços centralizados são compartilhados entre as cargas de trabalho. No entanto, considere a compensação com a confiabilidade. Para aplicativos de missão crítica que têm requisitos de alta disponibilidade, recomendamos uma instância autônoma.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "48f2f718-1ae7-476f-a0a1-d6b83e47bbaa",
+ "service": "Azure Front Door",
+ "text": "Preste atenção à quantidade de dados registrados. Os custos relacionados à largura de banda e ao armazenamento podem ser acumulados se determinadas solicitações não forem necessárias ou se os dados de log forem retidos por um longo período de tempo.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "O cache otimiza os custos de transferência de dados porque reduz o número de chamadas da instância do Azure Front Door para a origem.",
+ "guid": "5a9023b8-c181-41d5-aeb5-9c09a85b0792",
+ "service": "Azure Front Door",
+ "text": "Use o cache para pontos de extremidade que dão suporte a ele.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A compactação reduz o consumo de largura de banda e melhora o desempenho.",
+ "guid": "84da68ee-7bb0-4a7d-ad70-d53c186ffd3e",
+ "service": "Azure Front Door",
+ "text": "Considere habilitar a compactação de arquivos. Para essa configuração, o aplicativo deve dar suporte à compactação e o cache deve estar habilitado.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode economizar nos custos de largura de banda desabilitando solicitações que não são necessárias para tomar decisões de roteamento.",
+ "guid": "5d3ad5cb-d897-4ae7-8d1c-ae8398c79ed6",
+ "service": "Azure Front Door",
+ "text": "Desabilite as verificações de integridade em pools de back-end únicos. Se você tiver apenas uma origem configurada no grupo de origens do Azure Front Door, essas chamadas serão desnecessárias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "5e8bfd0e-20d9-441f-814d-c2b49e7033ea",
+ "service": "Azure Front Door",
+ "text": "Use tecnologias de infraestrutura como código (IaC). Use tecnologias de IaC, como modelos Bicep e Azure Resource Manager, para provisionar a instância do Azure Front Door. Essas abordagens declarativas fornecem consistência e manutenção direta. Por exemplo, usando tecnologias de IaC, você pode adotar facilmente novas versões do conjunto de regras.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "e9bd20e3-6e61-4907-9b84-4bd50b867875",
+ "service": "Azure Front Door",
+ "text": "Simplifique as configurações. Use o Azure Front Door para gerenciar facilmente as configurações. Por exemplo, suponha que sua arquitetura dê suporte a microsserviços. O Azure Front Door dá suporte a recursos de redirecionamento, para que você possa usar o redirecionamento baseado em caminho para direcionar serviços individuais.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "bb3943fb-6d97-458d-be6a-d9b71e8898d7",
+ "service": "Azure Front Door",
+ "text": "Lide com a exposição progressiva usando métodos de roteamento do Azure Front Door. Para uma abordagem de balanceamento de carga ponderada, você pode usar uma implantação canário para enviar uma porcentagem específica de tráfego para um back-end. Essa abordagem ajuda você a testar novos recursos e versões em um ambiente controlado antes de implementá-los.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "5e1264a9-c6cc-4d4e-8e73-7ca4b3f05c17",
+ "service": "Azure Front Door",
+ "text": "Colete e analise dados operacionais do Azure Front Door como parte do monitoramento da carga de trabalho. Capture logs e métricas relevantes do Azure Front Door com os Logs do Azure Monitor. Esses dados ajudam você a solucionar problemas, entender o comportamento do usuário e otimizar as operações.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "8bdff2ab-0800-45ef-acab-ff7d320856aa",
+ "service": "Azure Front Door",
+ "text": "Descarregue o gerenciamento de certificados para o Azure. Alivie a carga operacional associada à rotação e renovações de certificação.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Quando o redirecionamento está habilitado, o Azure Front Door redireciona automaticamente os clientes que estão usando o protocolo mais antigo para usar HTTPS para uma experiência segura.",
+ "guid": "829f4fea-1653-4093-aaf7-93b6a30aae1f",
+ "service": "Azure Front Door",
+ "text": "Use o redirecionamento HTTP para HTTPS para dar suporte à compatibilidade com versões futuras.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento do fluxo de entrada é uma parte crucial do monitoramento de um aplicativo. Você deseja rastrear solicitações e fazer melhorias de desempenho e segurança. Você precisa de dados para depurar a configuração do Azure Front Door. Com alertas em vigor, você pode receber notificações instantâneas de quaisquer problemas operacionais críticos.",
+ "guid": "8ad83783-d01c-4772-a76b-39f7c9d61cc7",
+ "service": "Azure Front Door",
+ "text": "Capture logs e métricas. Inclua logs de atividades de recursos, logs de acesso, logs de investigação de integridade e logs do WAF. Configure alertas.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Uma visão holística do seu perfil do Azure Front Door ajuda a impulsionar melhorias com base em relatórios de tráfego e segurança por meio de métricas do WAF.",
+ "guid": "e5e56ee9-79e4-4fa8-9fdb-600748d7df10",
+ "service": "Azure Front Door",
+ "text": "Revise os relatórios de análise integrados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Front Door pode emitir e gerenciar certificados para você. Esse recurso elimina a necessidade de renovações de certificado e minimiza o risco de interrupção devido a um certificado TLS inválido ou expirado.",
+ "guid": "c2fcfdfb-fedb-4b47-93ac-1988250f76cd",
+ "service": "Azure Front Door",
+ "text": "Use certificados TLS gerenciados quando possível.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Você não precisa modificar a configuração para adicionar ou especificar cada subdomínio separadamente.",
+ "guid": "0d7deaf4-ec0e-4e32-8b6b-64f3190d10f6",
+ "service": "Azure Front Door",
+ "text": "Use certificados TLS curinga.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "d18003c9-2d90-4e52-b503-5fcdb4ffcd96",
+ "service": "Azure Front Door",
+ "text": "Planeje a capacidade analisando seus padrões de tráfego esperados. Realize testes completos para entender o desempenho do seu aplicativo sob diferentes cargas. Considere fatores como transações simultâneas, taxas de solicitação e transferência de dados.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "87c450a0-6a4a-453c-ae38-b8f21952ab79",
+ "service": "Azure Front Door",
+ "text": "Analise os dados de desempenho revisando regularmente os relatórios do Azure Front Door. Esses relatórios fornecem insights sobre várias métricas que servem como indicadores de desempenho no nível da tecnologia.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "a9d9ffe4-3fa7-48c8-bc1d-d0685e495dbe",
+ "service": "Azure Front Door",
+ "text": "Otimize as transferências de dados.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "161bc803-0586-4d21-b2ea-018d78209565",
+ "service": "Azure Front Door",
+ "text": "Otimize o uso de sondas de integridade. Obtenha informações de integridade de investigações de integridade somente quando o estado das origens for alterado. Encontre um equilíbrio entre monitorar a precisão e minimizar o tráfego desnecessário.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "8596ddcf-3f3c-4b1c-baa1-a7eb844b2fb6",
+ "service": "Azure Front Door",
+ "text": "Revise o método de roteamento de origem. O Azure Front Door fornece vários métodos de roteamento, incluindo roteamento baseado em latência, baseado em prioridade, ponderado e baseado em afinidade de sessão, para a origem. Esses métodos afetam significativamente o desempenho do aplicativo. Para saber mais sobre a melhor opção de roteamento de tráfego para seu cenário, consulte Métodos de roteamento de tráfego para a origem.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "205d3288-088c-4f24-af39-f9cb610c54a1",
+ "service": "Azure Front Door",
+ "text": "Revise a localização dos servidores de origem. A localização dos servidores de origem afeta a capacidade de resposta do aplicativo. Os servidores de origem devem estar mais próximos dos usuários. O Azure Front Door garante que os usuários de um local específico acessem o ponto de entrada do Azure Front Door mais próximo. Os benefícios de desempenho incluem experiência do usuário mais rápida, melhor uso do roteamento baseado em latência pelo Azure Front Door e tempo de transferência de dados minimizado usando o cache, que armazena o conteúdo mais próximo dos usuários.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "O Azure Front Door oferece uma solução de rede de distribuição de conteúdo robusta que armazena em cache o conteúdo na borda da rede. O cache reduz a carga nos servidores de back-end e reduz a movimentação de dados pela rede, o que ajuda a descarregar o uso da largura de banda.",
+ "guid": "2f6a39a1-884a-4661-accd-f534bf795a96",
+ "service": "Azure Front Door",
+ "text": "Habilite o cache. Você pode otimizar cadeias de caracteres de consulta para armazenamento em cache. Para conteúdo puramente estático, ignore as cadeias de caracteres de consulta para maximizar o uso do cache. Se o aplicativo usar cadeias de caracteres de consulta, considere incluí-las na chave de cache. Incluir as cadeias de caracteres de consulta na chave de cache permite que o Azure Front Door forneça respostas armazenadas em cache ou outras respostas, com base em sua configuração.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "A compactação no Azure Front Door ajuda a fornecer conteúdo no formato ideal, tem uma carga menor e fornece conteúdo aos usuários mais rapidamente.",
+ "guid": "09c90ce3-ade6-413a-9c1b-45d33d6d9069",
+ "service": "Azure Front Door",
+ "text": "Use a compactação de arquivos ao acessar conteúdo para download.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "As solicitações 'HEAD' permitem consultar uma alteração de estado sem buscar todo o seu conteúdo.",
+ "guid": "15daeecf-bcbf-4c46-b196-030839fd4864",
+ "service": "Azure Front Door",
+ "text": "Ao configurar investigações de integridade no Azure Front Door, considere usar solicitações 'HEAD' em vez de solicitações 'GET'. A investigação de integridade lê apenas o código de status, não o conteúdo.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Otimize o desempenho e mantenha a continuidade das sessões do usuário, especialmente quando os aplicativos dependem da manutenção de informações de estado localmente.",
+ "guid": "2a92f55e-a422-49f4-9a26-8ba819a17323",
+ "service": "Azure Front Door",
+ "text": "Avalie se você deve habilitar a afinidade de sessão quando as solicitações do mesmo usuário devem ser direcionadas para o mesmo servidor back-end. Do ponto de vista da confiabilidade, não recomendamos essa abordagem. Se você usar essa opção, o aplicativo deverá se recuperar normalmente sem interromper as sessões do usuário. Há também uma compensação no balanceamento de carga porque restringe a flexibilidade de distribuir o tráfego em vários back-ends uniformemente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "ad7540f5-4cb1-4fc5-b168-e1cd97a0aef6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: para cargas de trabalho críticas, use zonas de disponibilidade para os clusters do AKS.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "904fdfa5-af9a-4195-b683-e3bb7627b394",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: planeje o espaço de endereço IP para garantir que seu cluster possa ser dimensionado de forma confiável, incluindo o tratamento do tráfego de failover em topologias de vários clusters.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "2c1ab1ce-ee84-4737-b426-d236a98d3ae5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite os insights de contêiner para monitorar seu cluster e configurar alertas para eventos que afetam a confiabilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "fa12c27b-df70-41fd-a93a-680e3cacf7ac",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: certifique-se de que as cargas de trabalho sejam criadas para dar suporte ao dimensionamento horizontal e relatar a preparação e a integridade do aplicativo.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "f2297ffc-fec7-43c6-9187-9739264c9d66",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: verifique se a carga de trabalho está em execução em pools de nós do usuário e escolha o SKU do tamanho certo. No mínimo, inclua dois nós para pools de nós de usuário e três nós para o pool de nós do sistema.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "0b542d27-1846-4d1b-9c5e-bd7c0d079cb3",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use o SLA de Tempo de Atividade do AKS para atender às metas de disponibilidade para cargas de trabalho de produção.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Permite que o agendador do Kubernetes isole logicamente as cargas de trabalho por hardware no nó. Ao contrário das tolerâncias, os pods sem um seletor de nó correspondente podem ser agendados em nós rotulados, o que permite que recursos não utilizados nos nós sejam consumidos, mas dá prioridade aos pods que definem o seletor de nó correspondente. Use a afinidade de nó para obter mais flexibilidade, o que permite definir o que acontece se o pod não puder ser correspondido a um nó.",
+ "guid": "b11892cd-f678-4399-bac8-b98095e250c6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: controle o agendamento de pod usando seletores de nó e afinidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A CNI do Azure é necessária para cenários específicos, por exemplo, pools de nós baseados no Windows, requisitos de rede específicos e Políticas de Rede do Kubernetes. Consulte Kubenet versus CNI do Azure para obter mais informações.",
+ "guid": "9e3e8182-95e7-4953-9a2b-9cc2f77bf717",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: Garanta a seleção adequada do plug-in de rede com base nos requisitos de rede e no dimensionamento do cluster.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O SLA de Tempo de Atividade do AKS garante: - disponibilidade de '99,95%' do ponto de extremidade do servidor de API do Kubernetes para Clusters do AKS que usam Zonas de Disponibilidade do Azure ou - disponibilidade de '99,9%' para Clusters do AKS que não usam Zonas de Disponibilidade do Azure.",
+ "guid": "4bfaa73e-a949-404a-a93b-a2b0a7feeff5",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: use o SLA de Tempo de Atividade do AKS para clusters de nível de produção.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a monitorar a integridade e o desempenho de controladores, nós e contêineres disponíveis no Kubernetes por meio da API de Métricas. A integração com o Prometheus permite a coleta de métricas de aplicativos e cargas de trabalho.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Ao distribuir pools de nós em várias zonas, os nós em um pool de nós continuarão em execução mesmo que outra zona tenha ficado inativa. Se houver requisitos de colocalidade, uma implantação regular do AKS baseada em VMSS em uma única zona ou grupos de posicionamento por proximidade poderão ser usados para minimizar a latência entre nós.",
+ "guid": "74ff8612-55b7-4029-81bc-da363b133f16",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use zonas de disponibilidade para maximizar a resiliência em uma região do Azure distribuindo nós de agente do AKS em data centers fisicamente separados.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As cargas de trabalho voltadas para a Internet devem aproveitar o Azure Front Door ou o Gerenciador de Tráfego do Azure para rotear o tráfego globalmente entre clusters do AKS.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: adote uma estratégia de várias regiões implantando clusters do AKS implantados em diferentes regiões do Azure para maximizar a disponibilidade e fornecer continuidade dos negócios.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os limites de recursos de CPU e memória do contêiner são necessários para evitar o esgotamento de recursos no cluster do Kubernetes.",
+ "guid": "f1a92d3f-eab5-4dc2-b0e8-75865842f205",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: defina solicitações e limites de recursos de pod em manifestos de implantação de aplicativo e imponha com Azure Policy.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os pools de nós do sistema exigem um SKU de VM de pelo menos 2 vCPUs e 4 GB de memória, mas 4 vCPUs ou mais são recomendados. Sistema de referência e pools de nós do usuário para requisitos detalhados.",
+ "guid": "55429203-5f2a-4ed1-9107-22d2c47b8ef1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: mantenha o pool de nós do sistema isolado das cargas de trabalho do aplicativo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os aplicativos podem compartilhar a mesma configuração e precisar de VMs habilitadas para GPU, VMs otimizadas para CPU ou memória ou a capacidade de escalar para zero. Evite um grande número de pools de nós para reduzir a sobrecarga de gerenciamento extra.",
+ "guid": "3603ec74-ada6-4050-baa3-fb25386fb7df",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: Separe aplicativos para pools de nós dedicados com base em requisitos específicos.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Para evitar problemas de confiabilidade com as limitações do Azure Load Balancer com alto tráfego de saída simultâneo, use um Gateway NAT para dar suporte ao tráfego de saída confiável em escala.",
+ "guid": "d441f009-ca99-4caf-9544-c71de5949d10",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use um gateway NAT para clusters que executam cargas de trabalho que fazem muitas conexões de saída simultâneas.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "ff274266-a326-4c2c-9b85-7ce50c679b36",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use identidades gerenciadas para evitar o gerenciamento e a rotação de princípios de serviço.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "d44b3684-99d7-4946-ab75-fb58d9d8626e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use o RBAC (controle de acesso baseado em função) do Kubernetes com a ID do Microsoft Entra para acesso com privilégios mínimos e minimize a concessão de privilégios de administrador para proteger a configuração e o acesso a segredos.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "12e0cc02-b585-4d6f-97be-1b073e57522c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use o Microsoft Defender para contêineres com o Azure Sentinel para detectar e responder rapidamente a ameaças em seu cluster e cargas de trabalho em execução neles.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "8e9c196f-b93a-46c5-9507-1e5cad83dd21",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: implante um cluster AKS privado para garantir que o tráfego de gerenciamento de cluster para o servidor de API permaneça em sua rede privada. Ou use a lista de permissões do servidor de API para clusters não privados.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use um firewall de aplicativo Web para proteger o tráfego HTTP(S).",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "feba8909-0760-4a87-833a-b36fabbe722e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: verifique se o pipeline de CI/CID é protegido com verificação com reconhecimento de contêiner.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "O uso do Microsoft Entra ID centraliza o componente de gerenciamento de identidade. Qualquer alteração no status da conta de usuário ou do grupo é atualizada automaticamente no acesso ao cluster do AKS. Os desenvolvedores e proprietários de aplicativos do cluster do Kubernetes precisam de acesso a recursos diferentes.",
+ "guid": "463da713-377d-46e1-a9cf-a384a0657537",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use a integração do Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O AKS e a ID do Microsoft Entra habilitam a autenticação com o Registro de Contêiner do Azure sem o uso de segredos 'imagePullSecrets'. Examine Autenticar com o Registro de Contêiner do Azure do Serviço de Kubernetes do Azure para obter mais informações.",
+ "guid": "f9f7946f-b9b6-40d1-9f30-0bfb38be5c74",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: autentique com a ID do Microsoft Entra no Registro de Contêiner do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Por padrão, o tráfego de rede entre os pools de nós e o servidor de API viaja pela rede de backbone da Microsoft; usando um cluster privado, você pode garantir que o tráfego de rede para o servidor de API permaneça somente na rede privada.",
+ "guid": "10d61300-19e4-403c-bf22-a554c56b4afc",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja o tráfego de rede para o servidor de API com o cluster AKS privado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Ao usar clusters públicos, você ainda pode limitar o tráfego que pode chegar ao servidor de API de clusters usando o recurso de intervalo de IP autorizado. Inclua fontes como os IPs públicos de seus agentes de build de implantação, gerenciamento de operações e ponto de saída de pools de nós (como Firewall do Azure).",
+ "guid": "b845e9a6-c5f3-4cf7-a956-6f1ffde88569",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: para clusters do AKS não privados, use intervalos de IP autorizados pelo servidor de API.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteger o acesso ao Kubernetes API Server é uma das coisas mais importantes que você pode fazer para proteger seu cluster. Integre o RBAC (controle de acesso baseado em função) do Kubernetes com a ID do Microsoft Entra para controlar o acesso ao servidor de API. Desabilite contas locais para impor todo o acesso ao cluster usando identidades baseadas em ID do Microsoft Entra.",
+ "guid": "0b3a4624-de6e-4cfe-af5b-19ad4708087d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja o servidor de API com o RBAC do Microsoft Entra.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteja e controle o tráfego de rede entre pods em um cluster.",
+ "guid": "caabd1f2-e6a9-4c55-9115-349d1d6716bb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use políticas de rede do Azure ou Calico.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O Azure Policy pode ajudar a aplicar imposições e proteções em escala em seus clusters de maneira centralizada e consistente. Ele também pode controlar quais funções os pods são concedidos e se algo está sendo executado contra a política da empresa.",
+ "guid": "d65686d0-3988-49b5-8a98-59818ba81c50",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: proteja clusters e pods com o Azure Policy.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Limite o acesso às ações que os contêineres podem executar. Forneça o menor número de permissões e evite o uso de escalonamento raiz ou privilegiado.",
+ "guid": "f1e41c15-87e4-4135-ab6c-fb6803194f12",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: acesso seguro de contêiner aos recursos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Para verificar o tráfego de entrada em busca de possíveis ataques, use um firewall de aplicativo Web, como o WAF (Firewall de Aplicativo Web) do Azure no Gateway de Aplicativo do Azure ou no Azure Front Door.",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use um firewall de aplicativo Web para proteger o tráfego HTTP(S).",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Verifique se o tráfego de saída do cluster está passando por um ponto de segurança de rede, como o Firewall do Azure ou um proxy HTTP.",
+ "guid": "fa580200-65eb-4cc8-9c23-a5e68f1d86a7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura do cluster: controle o tráfego de saída do cluster.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Proteja e gire segredos, certificados e cadeias de conexão no Azure Key Vault com criptografia forte. Fornece um log de auditoria de acesso e mantém os segredos principais fora do pipeline de implantação.",
+ "guid": "0f5b5089-02fc-4f46-839c-7ff86610366a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use a ID de carga de trabalho do Microsoft Entra de software livre e o driver CSI do repositório de segredos com o Azure Key Vault.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Monitore e mantenha a segurança de seus clusters, contêineres e seus aplicativos.",
+ "guid": "d2895e72-e9c1-4af7-9e5a-53edc92423e7",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use Microsoft Defender para Contêineres.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "c5148caa-6478-4ba8-993b-1a8640716d66",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use SKU de VM apropriado por pool de nós e instâncias reservadas em que a capacidade de longo prazo é esperada.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "90ac2d0c-790e-4b2b-be35-60a55a19397a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: use a camada e o tamanho apropriados do disco gerenciado.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "df9bb42d-c34f-488f-a50c-0624ca247647",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: revise as métricas de desempenho, começando com CPU, memória, armazenamento e rede, para identificar oportunidades de otimização de custos por cluster, nós e namespace.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "43ffe0b7-7bc4-42b0-a370-af4a943b19c0",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster e carga de trabalho: use dimensionadores automáticos para reduzir horizontalmente quando as cargas de trabalho estiverem menos ativas.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Combinar sua seleção com suas demandas de carga de trabalho garante que você não pague por recursos desnecessários.",
+ "guid": "c4ce3529-2891-41f1-aa3f-e87a791b01a3",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: alinhe a seleção de SKU e o tamanho do disco gerenciado com os requisitos de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Selecionar o tipo de instância de máquina virtual correto é fundamental, pois afeta diretamente o custo de execução de aplicativos no AKS. A escolha de uma instância de alta performance sem a utilização adequada pode levar a gastos desnecessários, enquanto a escolha de uma instância poderosa pode levar a problemas de performance e aumento do tempo de inatividade. Para determinar o tipo de instância de máquina virtual correto, considere as características da carga de trabalho, os requisitos de recursos e as necessidades de disponibilidade.",
+ "guid": "1088060f-7467-48db-950d-5890503e2974",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione o tipo de instância de máquina virtual correto.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O AKS dá suporte à criação de nós de agente do Ubuntu ARM64, bem como uma combinação de nós de arquitetura Intel e ARM em um cluster que pode trazer melhor desempenho a um custo menor.",
+ "guid": "ce50c713-ad3e-4781-9193-63485491aa48",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione máquinas virtuais com base na arquitetura Arm.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As VMs spot permitem que você aproveite a capacidade não utilizada do Azure com descontos significativos (até 90% em comparação com os preços pagos conforme o uso). Se o Azure precisar de capacidade de volta, a infraestrutura do Azure removerá os nós spot.",
+ "guid": "7a281f48-217a-4668-aa30-c9d2c84d0d72",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione Máquinas Virtuais Spot do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Devido a muitos fatores, o custo dos recursos varia de acordo com a região no Azure. Avalie os requisitos de custo, latência e conformidade para garantir que você esteja executando sua carga de trabalho de maneira econômica e que ela não afete seus usuários finais nem crie cobranças extras de rede.",
+ "guid": "433efe5b-3776-459c-8560-058f87773838",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: selecione a região apropriada.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Simplificar suas imagens ajuda a reduzir custos, pois novos nós precisam baixar essas imagens. Crie imagens de uma forma que permita que o contêiner seja iniciado o mais rápido possível para ajudar a evitar falhas de solicitação do usuário ou tempos limite enquanto o aplicativo está sendo inicializado, potencialmente levando ao superprovisionamento.",
+ "guid": "65d3f70e-457a-4d62-8140-de2b0c4f7f99",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: mantenha imagens pequenas e otimizadas.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduzir verticalmente automaticamente o número de nós no cluster do AKS permite que você execute um cluster eficiente quando a demanda é baixa e escale verticalmente quando a demanda retornar.",
+ "guid": "b4d583e3-7268-41d9-9e93-0394bed77298",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o Dimensionador Automático de Cluster para reduzir automaticamente o número de nós do agente em resposta ao excesso de capacidade de recursos.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O Node Autoprovision simplifica o processo de seleção de SKU e decide, com base nos requisitos de recursos de pod pendentes, a configuração ideal da VM para executar cargas de trabalho da maneira mais eficiente e econômica.",
+ "guid": "48ae7de4-26f7-457c-b1a4-a18467b7401d",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o provisionamento automático de nó para automatizar a seleção de SKU de VM.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Ajuste o número de pods em uma implantação dependendo da utilização da CPU ou de outras métricas selecionadas, que dão suporte a operações de redução horizontal do cluster.",
+ "guid": "d3194174-d037-4a35-9cd5-244d377cfabb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Horizontal Pod Autoscaler.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Dimensione corretamente seus pods e defina dinamicamente solicitações e limites com base no uso histórico.",
+ "guid": "091dc052-7bf8-4dd1-aca1-d514ddcb2aa8",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Vertical Pod Autoscaler (versão prévia).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Dimensione com base no número de eventos que estão sendo processados. Escolha entre um rico catálogo de 50+ scalers KEDA.",
+ "guid": "fe3d7c5f-f5a9-4b5e-a4f9-81bf76930967",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use o Kubernetes Event Driven Autoscaling (KEDA).",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A base para habilitar a otimização de custos é a disseminação de um cluster de economia de custos. Uma abordagem de operações financeiras (FinOps) é frequentemente usada para ajudar as organizações a reduzir os custos da nuvem. É uma prática que envolve a colaboração entre as equipes de finanças, operações e engenharia para impulsionar o alinhamento das metas de economia de custos e trazer transparência aos custos da nuvem.",
+ "guid": "3a7d1aa1-37a0-40aa-acbf-ff1852c15c93",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: adote uma disciplina financeira de nuvem e uma prática cultural para impulsionar a propriedade do uso da nuvem.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Se você planejou corretamente a capacidade, sua carga de trabalho é previsível e existe por um longo período de tempo, inscreva-se em uma Reserva do Azure ou em um plano de economia para reduzir ainda mais seus custos de recursos.",
+ "guid": "ed669535-43d7-4988-9ec5-3b70762e54eb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: inscreva-se nas Reservas do Azure ou no Plano de Economia do Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a fornecer insights acionáveis sobre os recursos ociosos e não alocados dos clusters. Os insights de contêiner também dão suporte à coleta de métricas do Prometheus e se integram ao Azure Managed Grafana para obter uma visão holística do aplicativo e da infraestrutura.",
+ "guid": "5742c5ca-120a-4b6e-a5cf-51f13b04966c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A extensão de cluster de análise de custos permite que você obtenha insights granulares sobre os custos associados a vários recursos do Kubernetes em seus clusters ou namespaces.",
+ "guid": "6588bddb-d7b6-41a6-8b87-628a758df2fe",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: configure o complemento Análise de Custos do AKS.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "38e28f4f-7465-4e3a-bf05-4d6072d4bae6",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use uma implantação baseada em modelo usando Bicep, Terraform ou outros. Verifique se todas as implantações são repetíveis, rastreáveis e armazenadas em um repositório de código-fonte.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "1255b75f-0f3b-4fd7-96c5-17e4e30bbe11",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: crie um processo automatizado para garantir que seus clusters sejam inicializados com as configurações e implantações necessárias em todo o cluster. Isso geralmente é feito usando o GitOps.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "07b2d10f-e373-484e-9ece-f182a1b714b2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use processos de implantação repetíveis e automatizados para sua carga de trabalho dentro do ciclo de vida de desenvolvimento de software.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "6ec1af22-6132-43a6-9286-20333ee6e244",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite as configurações de diagnóstico para garantir que as interações do painel de controle ou do servidor de API principal sejam registradas.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "4811307d-53ce-4cf9-b022-2c2ab1be5596",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: habilite insights de contêiner para coletar métricas, logs e diagnósticos para monitorar a disponibilidade e o desempenho do cluster e das cargas de trabalho em execução nele.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "20301c55-a815-4a3a-83ec-fe6d1789e697",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: a carga de trabalho deve ser projetada para emitir telemetria que pode ser coletada, que também deve incluir status de atividade e preparação.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "13d37985-5266-4064-97f0-7c7aa7491941",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: use práticas de engenharia de caos direcionadas ao Kubernetes para identificar problemas de confiabilidade de aplicativos ou plataformas.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "d96fea7e-598f-4f59-95c6-d75fc8db1c7a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: otimize sua carga de trabalho para operar e implantar com eficiência em um contêiner.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "8e8fbde0-f037-4eec-bac2-634ab73d7b0a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: imponha a governança de cluster e carga de trabalho usando Azure Policy.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Para criar e executar aplicativos com êxito no AKS, há considerações importantes a serem entendidas e implementadas. Essas áreas incluem recursos de agendamento e multilocação, segurança de cluster e pod ou continuidade dos negócios e recuperação de desastres.",
+ "guid": "95ee25c6-37fc-47c0-a3e1-eea5c1324edb",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: examine a documentação de práticas recomendadas do AKS.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Chaos Studio pode ajudar a simular falhas e disparar situações de recuperação de desastre.",
+ "guid": "2695b4b9-e125-4644-a27c-977eefdbce73",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: examine o Azure Chaos Studio.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os insights de contêiner ajudam a monitorar o desempenho de contêineres coletando métricas de memória e processador de controladores, nós e contêineres disponíveis no Kubernetes por meio da API de Métricas e dos logs de contêiner.",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: configure o monitoramento do cluster com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Configure o Application Insights para monitoramento baseado em código de aplicativos em execução em um cluster do AKS.",
+ "guid": "405f6de4-e769-4066-8e8c-f7887a66d42a",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: monitore o desempenho do aplicativo com o Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os insights de contêiner, que fazem parte do Azure Monitor, fornecem uma experiência de integração perfeita para coletar métricas do Prometheus. Consulte Configurar a extração de métricas do Prometheus para obter mais informações.",
+ "guid": "3c42907d-254e-4b0f-b579-7362e0f37eaa",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: configure a extração de métricas do Prometheus com insights de contêiner.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As cargas de trabalho voltadas para a Internet devem aproveitar o Azure Front Door ou o Gerenciador de Tráfego do Azure para rotear o tráfego globalmente entre clusters do AKS.",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: adote uma estratégia de várias regiões implantando clusters do AKS implantados em diferentes regiões do Azure para maximizar a disponibilidade e fornecer continuidade dos negócios.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Azure Policy pode ajudar a aplicar imposições e proteções em escala em seus clusters de maneira centralizada e consistente. Ele também pode controlar quais funções os pods são concedidos e se algo está sendo executado contra a política da empresa.",
+ "guid": "02f47a84-6d0c-4243-a5ab-743c85dcce67",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: operacionalize os padrões de configuração de clusters e pods com o Azure Policy.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Kubernetes e os controladores de entrada oferecem suporte a muitos padrões avançados de implantação para inclusão em seu processo de engenharia de lançamento. Considere padrões como implantações azul-verde ou versões canário.",
+ "guid": "ecbf4266-e97a-4b02-8d02-ca2fd42cea5b",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use os recursos da plataforma em seu processo de engenharia de lançamento.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Automatize suas áreas de projeto de missão crítica, incluindo implantação e teste.",
+ "guid": "4646ab36-8c28-4740-afac-c9819f0f6ac9",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: para cargas de trabalho críticas, use implantações azul/verde no nível do selo.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "de0e6d8d-65a5-46b0-891b-2ad2aa09de11",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: execute e itere em um exercício detalhado de plano de capacidade que inclui SKU, configurações de dimensionamento automático, endereçamento IP e considerações de failover.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "b78aea0e-3fd2-4dcc-b617-34a26892aa76",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o dimensionador automático de cluster para ajustar automaticamente o número de nós de agente em demandas de carga de trabalho de resposta.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "9b168db7-a88b-4e2c-b555-bc525c7e48da",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: use o dimensionador automático de pod horizontal para ajustar o número de pods em uma implantação, dependendo da utilização da CPU ou de outras métricas selecionadas.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "deadeedd-dab6-4774-84df-f5223ed6ede1",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: execute atividades contínuas de teste de carga que exercitam o dimensionador automático de pod e cluster.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "7b1e9a65-2d5d-4eeb-a349-136895131b06",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: Separe as cargas de trabalho em diferentes pools de nós, permitindo chamadas independentes.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Depois de formalizar seu plano de capacidade, ele deve ser atualizado com frequência, observando continuamente a utilização de recursos do cluster.",
+ "guid": "7b4e5e8b-6e55-4db7-a330-19990bd1e0d2",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: desenvolva um plano de capacidade detalhado e revise e revise continuamente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "A capacidade de escalar ou reduzir verticalmente automaticamente o número de nós no cluster do AKS permite que você execute um cluster eficiente e econômico.",
+ "guid": "631272b4-9ca7-4e6f-ae9b-3c55946b3924",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de cluster: habilite o dimensionador automático de cluster para ajustar automaticamente o número de nós do agente em resposta a restrições de recursos.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ao contrário dos pools de nós do sistema que sempre exigem nós em execução, os pools de nós do usuário permitem que você aumente ou diminua verticalmente.",
+ "guid": "85ffe644-7c4b-4f2d-b2fa-ed8e7c8d2e84",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquiteturas de cluster e carga de trabalho: separe as cargas de trabalho em pools de nós diferentes e considere dimensionar pools de nós do usuário.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ajuda a controlar o balanceamento de recursos para cargas de trabalho que os exigem.",
+ "guid": "bb7f1396-6a84-4e6d-b6d8-5fc48b4c2b5f",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use os recursos avançados do agendador do AKS.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Nem todas as decisões de escala podem ser derivadas de métricas de CPU ou memória. Muitas vezes, as considerações de escala virão de pontos de dados mais complexos ou mesmo externos. Use o KEDA para criar um conjunto de regras de dimensionamento automático significativo com base em sinais específicos para sua carga de trabalho.",
+ "guid": "bc908693-9e21-478c-9fde-e92ba949c89e",
+ "service": "Azure Kubernetes Service",
+ "text": "Arquitetura de carga de trabalho: use métricas significativas de dimensionamento de carga de trabalho.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "f4804af8-4f42-450d-916c-5593c145ccf9",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência: implante modelos em ambientes que dão suporte a zonas de disponibilidade, como o AKS. Ao garantir que as implantações sejam distribuídas entre zonas de disponibilidade, você garante que uma implantação esteja disponível mesmo no caso de uma falha do datacenter. Para maior confiabilidade e disponibilidade, considere uma topologia de implantação de várias regiões.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "995d097a-0de2-4431-947f-561b49a60f21",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência: verifique se você tem computação suficiente para treinamento e inferência. Por meio do planejamento de recursos, verifique se o SKU de computação e as configurações de escala atendem aos requisitos de sua carga de trabalho.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "d494b7f5-ad32-471f-9fc7-18945ca454ab",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência: separe os espaços de trabalho do Machine Learning usados para trabalho exploratório daqueles usados para produção.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "6f1dd2cc-e0af-4203-ab0b-b7c65b7b18ae",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência: ao usar pontos de extremidade online gerenciados para inferência, use uma estratégia de lançamento, como implantações azul-verde, para minimizar o tempo de inatividade e reduzir o risco associado à implantação de novas versões.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "558fcdcf-33e7-4385-82fd-424bc8ae64bc",
+ "service": "Azure Machine Learning",
+ "text": "Requisitos de negócios: selecione o uso de clusters de computação, instâncias de computação e hosts de inferência externalizados com base nas necessidades de confiabilidade, considerando os SLAs (contratos de nível de serviço) como um fator.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "de5be058-1d22-4f38-96aa-3fbca5071a8f",
+ "service": "Azure Machine Learning",
+ "text": "Recuperação: verifique se você tem recursos de autocorreção, como recursos de ponto de verificação compatíveis com o Machine Learning, ao treinar modelos grandes.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "20104165-9764-4920-98dd-63fddc5f58d3",
+ "service": "Azure Machine Learning",
+ "text": "Recuperação: certifique-se de ter uma estratégia de recuperação definida. O Machine Learning não tem failover automático. Portanto, você deve criar uma estratégia que englobe o workspace e todas as suas dependências, como Key Vault, Armazenamento do Azure e Registro de Contêiner do Azure.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Uma implantação de várias regiões garante que suas cargas de trabalho do Machine Learning continuem a ser executadas mesmo que uma região sofra uma interrupção. A implantação multirregional melhora a distribuição de carga entre regiões, potencialmente melhorando o desempenho para usuários localizados em diferentes áreas geográficas. Para obter mais informações, consulte Failover para continuidade dos negócios e recuperação de desastres.",
+ "guid": "046ff188-7d68-492f-850c-c65ee0c9a962",
+ "service": "Azure Machine Learning",
+ "text": "Implantação de modelo multirregional: para maior confiabilidade e disponibilidade, considere um ambiente de implantação multirregional quando possível.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O ponto de verificação do modelo salva periodicamente o estado do modelo de aprendizado de máquina durante o treinamento, para que ele possa ser restaurado em caso de interrupção, falha ou encerramento. Para obter mais informações, consulte Aumente a velocidade do ponto de verificação e reduza o custo com o Nebula.",
+ "guid": "8eaf992c-ccd9-495f-b625-d4f544d38d38",
+ "service": "Azure Machine Learning",
+ "text": "Resiliência de treinamento de modelo: use recursos de ponto de verificação compatíveis com o Machine Learning, incluindo o Contêiner do Azure para PyTorch, a classe TensorFlow Estimator ou o objeto Run e a classe FileDataset que dão suporte ao ponto de verificação do modelo.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As máquinas virtuais de baixa prioridade têm um preço reduzido, mas são preemptivas. Os clusters que usam a camada de máquina virtual dedicada não são preemptados.",
+ "guid": "19720202-b456-44c4-8ff1-28eaa20e1a7d",
+ "service": "Azure Machine Learning",
+ "text": "Usar a camada de máquina virtual dedicada para clusters de computação: use a camada de máquina virtual dedicada para clusters de computação para inferência em lote para garantir que o trabalho em lote não seja preemptado.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "303116b4-65cb-43e5-8ceb-7bebaf16b568",
+ "service": "Azure Machine Learning",
+ "text": "Disponibilidade: reduza a superfície de ataque do workspace do Machine Learning restringindo o acesso ao workspace aos recursos dentro da rede virtual.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "eb9cc8b2-c9a3-4fe7-9578-8918ab53eae6",
+ "service": "Azure Machine Learning",
+ "text": "Confidencialidade: proteja-se contra a exfiltração de dados do workspace do Machine Learning implementando o isolamento de rede. Verifique se o acesso a todos os recursos externos é explicitamente aprovado e o acesso a todos os outros recursos externos não é permitido.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "1cb53633-f0c7-45f4-a98b-76b0314a94ba",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: implemente controles de acesso que autenticam e autorizam o workspace do Machine Learning para recursos externos com base no princípio de privilégios mínimos.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "30341513-1f91-480e-bc19-8031f1851087",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: implemente a segregação de casos de uso para workspaces do Machine Learning configurando workspaces com base em casos de uso ou projetos específicos. Essa abordagem segue o princípio do privilégio mínimo, garantindo que os workspaces sejam acessíveis apenas a indivíduos que exigem acesso a dados e ativos de experimentação para o caso de uso ou projeto.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "1274dc7a-a81c-409d-8cd6-e3bda0ee8687",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: Regular o acesso a modelos fundamentais. Verifique se apenas os registros aprovados têm acesso aos modelos no registro de modelo.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "ca17ad83-954c-4eba-a30f-9e7c3c2079f6",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: Regule o acesso a registros de contêineres aprovados. Verifique se a computação do Machine Learning só pode acessar registros aprovados.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "1ffe0cf7-a26a-4018-bef8-4d7fdf3291e2",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: regule os pacotes do Python que podem ser executados na computação do Machine Learning. Regular os pacotes Python garante que apenas pacotes confiáveis sejam executados.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "8d9aea78-3ebe-4ec6-968d-3daa07abc239",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: exija que o código usado para treinamento em ambientes de computação do Machine Learning seja assinado. Exigir a assinatura de código garante que o código em execução seja de uma fonte confiável e não tenha sido adulterado.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "a6664b76-0292-4bd4-841e-859b65a569c0",
+ "service": "Azure Machine Learning",
+ "text": "Confidencialidade: siga o princípio de privilégios mínimos para RBAC (controle de acesso baseado em função) ao workspace do Machine Learning e recursos relacionados, como a conta de armazenamento do workspace, para garantir que os indivíduos tenham apenas as permissões necessárias para sua função, minimizando assim possíveis riscos de segurança.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "2a509fe2-ce1d-410c-a5cb-780eb8dfaf15",
+ "service": "Azure Machine Learning",
+ "text": "Integridade: estabeleça confiança e acesso verificado implementando criptografia para dados em repouso e dados em trânsito.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "A linha de base de segurança fornece orientação personalizada sobre aspectos cruciais de segurança, como segurança de rede, gerenciamento de identidade, proteção de dados e acesso privilegiado. Para obter a segurança ideal, use o Microsoft Defender para Nuvem para monitorar esses aspectos.",
+ "guid": "0e30e670-0c69-4c8a-82f5-b88494e56879",
+ "service": "Azure Machine Learning",
+ "text": "Linha de base de segurança: para aprimorar a segurança e a conformidade do Serviço de Machine Learning, aplique a linha de base de segurança do Azure para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede virtual gerenciado aumenta a segurança isolando seu workspace de outras redes, reduzindo o risco de acesso não autorizado. Em um cenário em que ocorre uma violação em outra rede dentro de sua organização, a rede isolada do workspace do Machine Learning permanece inalterada, protegendo suas cargas de trabalho de machine learning.",
+ "guid": "aeb66f5c-45bc-45d8-a7bf-a6bd5c6e5f9a",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede virtual gerenciada: configure o isolamento de rede virtual gerenciada para Machine Learning. Quando você habilita o isolamento de rede virtual gerenciada, uma rede virtual gerenciada é criada para o workspace. Os recursos de computação gerenciados que você cria para o workspace usam automaticamente essa rede virtual gerenciada. Se você não puder implementar o isolamento de rede virtual gerenciada, deverá seguir as recomendações de topologia de rede para separar a computação em uma sub-rede dedicada longe do restante dos recursos da solução, incluindo os pontos de extremidade privados para recursos de workspace.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede do Machine Learning aumenta a segurança, garantindo que o acesso ao workspace seja seguro e controlado. Com um ponto de extremidade privado configurado para seu workspace, você pode limitar o acesso ao workspace para ocorrer apenas nos endereços IP privados.",
+ "guid": "af44fe21-713a-435f-97bd-34ec8221f729",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede do Machine Learning: configure um ponto de extremidade privado para seu workspace do Machine Learning e conecte-se ao workspace por meio desse ponto de extremidade privado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Essa configuração minimiza o risco de exfiltração de dados, melhorando a segurança dos dados. Com essa configuração habilitada, um agente mal-intencionado que obtém acesso ao seu sistema não pode enviar seus dados para um destino externo não aprovado.",
+ "guid": "d1cdc5a5-eb9a-43d7-ad74-6169482b28d0",
+ "service": "Azure Machine Learning",
+ "text": "Permitir apenas acesso de saída aprovado: configure o modo de saída no acesso de saída gerenciado do workspace do Machine Learning como \"Permitir apenas saída aprovada\" para minimizar o risco de exfiltração de dados. Configure pontos de extremidade privados, marcas de serviço ou FQDNs (nomes de domínio totalmente qualificados) para recursos que você precisa acessar.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O isolamento de rede reforça a segurança restringindo o acesso às soluções de PaaS (plataforma como serviço) do Azure apenas a endereços IP privados.",
+ "guid": "0d8346f9-f2fe-4a4e-b153-662c5c6e4510",
+ "service": "Azure Machine Learning",
+ "text": "Isolamento de rede virtual para serviços dependentes: configure serviços dependentes, como Armazenamento, Key Vault e Registro de Contêiner com pontos de extremidade privados e desabilite o acesso público.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As identidades gerenciadas melhoram a segurança, eliminando a necessidade de armazenar credenciais e gerenciar e alternar manualmente as entidades de serviço.",
+ "guid": "bf2a8ddf-263e-46fb-b73a-ca8b9ba168e7",
+ "service": "Azure Machine Learning",
+ "text": "Identidade gerenciada: use identidades gerenciadas para autenticação entre o Machine Learning e outros serviços.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar a autenticação local aumenta a segurança da computação do Machine Learning e fornece controle e gerenciamento centralizados de identidades e credenciais de recursos.",
+ "guid": "70477454-0ddb-4ad6-9342-1ad6290bbb06",
+ "service": "Azure Machine Learning",
+ "text": "Desabilitar autenticação local: desabilite a autenticação local para clusters e instâncias de computação do Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar o acesso SSH ajuda a impedir que indivíduos não autorizados obtenham acesso e potencialmente causem danos ao seu sistema e protege você contra ataques de força bruta.",
+ "guid": "cbd359bc-8057-4a9c-9183-c4fc1e70a69b",
+ "service": "Azure Machine Learning",
+ "text": "Desabilitar a porta SSH pública: verifique se a porta pública do Secure Shell (SSH) está fechada no cluster de computação do Machine Learning definindo 'remoteLoginPortPublicAccess' como 'Desabilitado'. Aplique uma configuração semelhante se você usar uma computação diferente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Evite provisionar endereços IP públicos para aumentar a segurança, limitando o potencial de acesso não autorizado à sua instância de computação ou clusters.",
+ "guid": "cc532133-2bba-484f-b316-035b93b3ee6a",
+ "service": "Azure Machine Learning",
+ "text": "Não provisionar endereços IP públicos para computação do Machine Learning: defina enableNodePublicIp como 'false' ao provisionar clusters de computação ou instâncias de computação do Machine Learning. Aplique uma configuração semelhante se você usar uma computação diferente.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso das imagens mais recentes garante que você mantenha um ambiente consistente, estável e seguro, incluindo a garantia de que você tenha os patches de segurança mais recentes.",
+ "guid": "cb49b636-1011-43a0-a12b-25378f677153",
+ "service": "Azure Machine Learning",
+ "text": "Obter a imagem mais recente do sistema operacional: recrie instâncias de computação para obter a imagem mais recente do sistema operacional.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Controles rígidos de acesso ao espaço de trabalho aumentam a segurança, garantindo que os indivíduos tenham apenas as permissões necessárias para sua função. Um cientista de dados, por exemplo, pode ter acesso para executar experimentos, mas não para modificar as configurações de segurança, minimizando possíveis riscos de segurança.",
+ "guid": "17cac647-8c6f-4a6f-a66d-c436e17c91c8",
+ "service": "Azure Machine Learning",
+ "text": "Controles rígidos de acesso ao workspace do Machine Learning: use grupos de ID do Microsoft Entra para gerenciar o acesso ao workspace e aderir ao princípio de privilégios mínimos para RBAC.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Restringir as implantações do catálogo de modelos a registros específicos garante que você implante apenas modelos em registros aprovados. Essa abordagem ajuda a regular o acesso aos modelos fundamentais de software livre.",
+ "guid": "18a61ee3-34d2-484a-a740-3c90d23c64b9",
+ "service": "Azure Machine Learning",
+ "text": "Restringir implantações de catálogo de modelos: restrinja as implantações de modelos a registros específicos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A criptografia de dados em repouso aumenta a segurança dos dados, garantindo que os dados confidenciais sejam criptografados usando chaves gerenciadas diretamente por você. Se você tiver um requisito regulatório para gerenciar suas próprias chaves de criptografia, use esse recurso para cumprir esse requisito.",
+ "guid": "5e14c11e-83fb-40f1-a8dc-d96767d73a13",
+ "service": "Azure Machine Learning",
+ "text": "Criptografar dados em repouso: considere usar chaves gerenciadas pelo cliente com o Machine Learning.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Minimize o risco de exfiltração de dados limitando os requisitos de entrada e saída.",
+ "guid": "6782cd14-a63d-466c-a7c9-8a92afe3b396",
+ "service": "Azure Machine Learning",
+ "text": "Minimize o risco de exfiltração de dados: implemente a prevenção de exfiltração de dados. Por exemplo, crie uma política de ponto de extremidade de serviço para filtrar o tráfego de rede virtual de saída e permitir a exfiltração de dados somente para contas específicas do Armazenamento do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "cac38d1e-d21e-4af5-834d-d607469c6439",
+ "service": "Azure Machine Learning",
+ "text": "Otimização de uso: escolha os recursos apropriados para garantir que eles estejam alinhados com seus requisitos de carga de trabalho. Por exemplo, escolha entre CPUs ou GPUs, vários SKUs ou VMs de prioridade baixa versus regular.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "8e98fc4b-2fa4-44b9-9aa7-1c01f67aecb7",
+ "service": "Azure Machine Learning",
+ "text": "Otimização de uso: verifique se os recursos de computação que não estão sendo usados sejam reduzidos ou desligados quando ociosos para reduzir o desperdício.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "dfafcc35-c8fb-429b-92c0-53f045884794",
+ "service": "Azure Machine Learning",
+ "text": "Otimização de uso: aplique políticas e configure cotas para cumprir os limites superior e inferior do design.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "14149f48-97d8-4614-9236-681f5fd42b34",
+ "service": "Azure Machine Learning",
+ "text": "Otimização de uso: teste a paralelização de cargas de trabalho de treinamento para determinar se os requisitos de treinamento podem ser atendidos em SKUs de custo mais baixo.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "945e262b-3a0f-4ac9-ac51-69b5500f9ee6",
+ "service": "Azure Machine Learning",
+ "text": "Otimização de taxa: compre Instâncias de Máquina Virtual Reservadas do Azure se você tiver uma boa estimativa de uso nos próximos um a três anos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "563a3c8d-4168-4f18-a056-efb624734ecf",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar e otimizar: monitore o uso de recursos, como o uso de CPU e GPU, ao treinar modelos. Se os recursos não estiverem sendo totalmente usados, modifique seu código para usar melhor os recursos ou reduza verticalmente para tamanhos de VM menores ou mais baratos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Selecionar a computação certa é fundamental, pois afeta diretamente o custo de execução de sua carga de trabalho. Escolher uma GPU ou um SKU de alto desempenho sem o uso adequado pode levar a gastos desnecessários, enquanto a escolha de computação subdimensionada pode levar a tempos de treinamento proibitivamente longos e problemas de desempenho.",
+ "guid": "3d87f935-99a6-4aee-aac2-069994de09ff",
+ "service": "Azure Machine Learning",
+ "text": "Otimize os recursos de computação: otimize seus recursos de computação com base nos requisitos de sua carga de trabalho. Escolha o SKU que melhor se adapta à sua carga de trabalho:
- Uso geral – Proporção balanceada de CPU para memória, boa para todos os fins.
- Otimizado para computação – Alta proporção de CPU para memória, boa para cálculos pesados em matemática.
- Memória otimizada – Alta memória para CPU, boa para cálculos na memória ou aplicativos de banco de dados.
- Série M – Máquinas muito grandes que possuem grandes quantidades de memória e CPU.
- GPU – Melhor para modelos com um alto número de variáveis que podem se beneficiar de maior paralelismo e instruções de núcleo especializadas. As aplicações típicas são aprendizado profundo, processamento de imagem ou vídeo, simulações científicas, mineração de dados e aproveitamento de estruturas de desenvolvimento de GPU. Teste com várias famílias e documente os resultados como sua linha de base. À medida que seu modelo e dados evoluem, o recurso de computação mais adequado pode mudar. Monitore os tempos de execução e reavalie conforme necessário.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Configure o dimensionamento automático para clusters de computação para reduzir verticalmente quando seu uso for baixo. Defina o número mínimo de nós como 0 para que os clusters de treinamento sejam reduzidos verticalmente para 0 quando não estiverem em uso.",
+ "guid": "d30cfeeb-6c61-4a9d-9a56-c8296cec72cb",
+ "service": "Azure Machine Learning",
+ "text": "Otimizar o dimensionamento de computação: configure seus clusters de computação para dimensionamento automático para garantir que você use apenas o que precisa. Para clusters de treinamento, defina o número mínimo de nós como 0 e configure a quantidade de tempo que o nó fica ocioso para um tempo apropriado. Para uma experimentação menos iterativa, reduza o tempo para economizar custos. Para uma experimentação mais iterativa, use um tempo maior para evitar o pagamento de escalonamento vertical ou reduzido após cada alteração.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "A definição de políticas de encerramento pode ajudá-lo a economizar custos interrompendo as execuções inexecutadas antecipadamente.",
+ "guid": "098a7bee-444c-4351-aeb1-8bd97036299c",
+ "service": "Azure Machine Learning",
+ "text": "Definir políticas de encerramento de treinamento: defina políticas de encerramento antecipado para limitar a duração das execuções de treinamento ou encerrá-las antecipadamente.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "As máquinas virtuais de baixa prioridade permitem que uma grande quantidade de poder de computação seja usada por um custo baixo. Eles aproveitam a capacidade excedente no Azure.",
+ "guid": "41f2dd91-5765-4dfb-9db0-9b3e976b4afb",
+ "service": "Azure Machine Learning",
+ "text": "Usar máquinas virtuais de baixa prioridade para cargas de trabalho em lotes: considere usar máquinas virtuais de baixa prioridade para cargas de trabalho em lotes que não são sensíveis ao tempo e nas quais as interrupções são recuperáveis.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Por padrão, as instâncias de computação estão disponíveis para você, acumulando custos. Configurar instâncias de computação para desligar quando ociosas ou configurar um agendamento para elas economiza custos quando não estão em uso.",
+ "guid": "e3150ddd-f553-425f-bb91-249a9598e25e",
+ "service": "Azure Machine Learning",
+ "text": "Habilitar o desligamento ocioso para instâncias de computação: habilite o desligamento ocioso para instâncias de computação ou programe um horário de início e término se o tempo de uso for conhecido.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Cargas de trabalho paralelas podem ser executadas em várias instâncias menores, potencialmente gerando economia de custos.",
+ "guid": "8b47ec85-0e9e-428b-9290-c590a7f4ab1a",
+ "service": "Azure Machine Learning",
+ "text": "Paralelizar cargas de trabalho de treinamento: considere paralelizar cargas de trabalho de treinamento. Teste a execução deles com a ajuda dos componentes paralelos no Machine Learning.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Compre Instâncias de VM Reservadas do Azure para pagar antecipadamente pelo uso da máquina virtual e fornecer descontos com preços pagos conforme o uso. O desconto é aplicado automaticamente para o uso da máquina virtual que corresponde à reserva.",
+ "guid": "b4470844-d54d-4a1c-980c-37d09e17940d",
+ "service": "Azure Machine Learning",
+ "text": "Instâncias de VM Reservadas do Azure: compre Instâncias de VM Reservadas do Azure se você tiver uma boa estimativa de uso nos próximos um a três anos. Aproveite as opções de capacidade reservada para serviços quando tiver boas estimativas de uso.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "4dace40c-2627-4eb1-9d18-4a6c03901283",
+ "service": "Azure Machine Learning",
+ "text": "Padrões de desenvolvimento: aproveite os catálogos e registros de modelos do Machine Learning para armazenar, controlar a versão e compartilhar ativos de machine learning.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "2fe1daf9-b388-4d25-8ff8-39908ada7f27",
+ "service": "Azure Machine Learning",
+ "text": "Automatize para eficiência: siga boas práticas de operações de machine learning (MLOps). Quando possível, crie pipelines automatizados de ponta a ponta para processos de preparação, treinamento e pontuação de dados. No desenvolvimento, use scripts em vez de notebooks para modelos de treinamento, pois os scripts são mais fáceis de integrar em pipelines automatizados.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "7b5de736-4956-4313-82be-0a0ff07d7ab6",
+ "service": "Azure Machine Learning",
+ "text": "Implante com confiança: implemente a infraestrutura como código (IaC) para workspaces do Machine Learning, clusters de computação, instâncias de computação e outros ambientes de implantação.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "f8196404-8f76-4e65-9b32-46d8d777d1d3",
+ "service": "Azure Machine Learning",
+ "text": "Observabilidade: monitore o desempenho de seus modelos implantados, incluindo descompasso de dados.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "d212d648-752b-480f-bda5-0d45d0185312",
+ "service": "Azure Machine Learning",
+ "text": "Observabilidade: se seus modelos forem implantados em pontos de extremidade online, habilite o Application Insights para monitorar pontos de extremidade e implantações online. Monitore a infraestrutura de treinamento para garantir que você esteja atendendo aos seus requisitos básicos.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "afd5b803-c151-4b8d-ae08-63cc8961a378",
+ "service": "Azure Machine Learning",
+ "text": "Simplicidade: use ambientes selecionados otimizados para Machine Learning, quando disponíveis.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "Limitar o número de espaços de trabalho reduz o esforço de manutenção e o custo de operação. Para requisitos, como segurança, talvez você precise de vários workspaces separados. Minimize o número de espaços de trabalho quando possível.",
+ "guid": "bb6c4c2f-65f4-4fab-ada7-ebe079bde9cb",
+ "service": "Azure Machine Learning",
+ "text": "Minimizar instâncias de workspace do Machine Learning: minimize o número de workspaces, quando possível, para reduzir a manutenção.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Use registros de modelo de aprendizado de máquina para armazenar e controlar a versão de seus modelos de aprendizado de máquina para acompanhar as alterações e manter a linhagem com o trabalho e os conjuntos de dados usados para treinamento. Com os catálogos de modelos de Machine Learning, suas equipes de ciência de dados podem descobrir, avaliar e ajustar modelos de machine learning básicos pré-treinados. O armazenamento de modelos com versão em registros de modelo do Machine Learning dá suporte a estratégias de implantação, como versões A/B, versões canário e reversões.",
+ "guid": "31841d05-3372-4bd4-b8bc-efcaaee1bd88",
+ "service": "Azure Machine Learning",
+ "text": "Aproveite os catálogos e registros de modelos: aproveite os catálogos e registros de modelos do Machine Learning para armazenar, controlar a versão e compartilhar ativos de aprendizado de máquina. Use catálogos de modelos do Machine Learning para ajudá-lo a implementar testes A/B e implantação de modelos.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento de modelos implantados garante que seus modelos atendam aos requisitos de desempenho. O monitoramento de descompasso de dados ajuda a detectar alterações nos dados de entrada que podem levar a um declínio no desempenho do modelo. O gerenciamento de descompasso de dados ajuda a garantir que seu modelo forneça resultados precisos ao longo do tempo.",
+ "guid": "90a72a7e-6fb5-4e02-a159-7a4d907eb098",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar o desempenho do modelo: monitore o desempenho de seus modelos implantados e detecte descompassos de dados em conjuntos de dados.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "O monitoramento de endpoints oferece visibilidade de métricas como latência de solicitação e solicitações por minuto. Você pode comparar seu desempenho com sua linha de base e usar essas informações para fazer alterações nos recursos de computação de acordo. Métricas de monitoramento, como bytes de rede, podem alertá-lo se você estiver se aproximando dos limites de cota e evitar a limitação. Da mesma forma, monitorar seu ambiente de treinamento fornece as informações para fazer alterações em seu ambiente de treinamento. Use essas informações para decidir aumentar ou diminuir a escala, aumentar ou diminuir com SKUs de desempenho diferente ou escolher entre CPUs ou GPUs.",
+ "guid": "b1d87076-b253-47ae-8727-97f804e49a3c",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar a infraestrutura: se seus modelos forem implantados em pontos de extremidade online, habilite o Application Insights para monitorar pontos de extremidade e implantações online. Monitore a infraestrutura de treinamento para garantir que você esteja atendendo aos seus requisitos básicos. Verifique se você está coletando logs de recursos para Machine Learning.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Ambientes coletados são ambientes pré-criados fornecidos pelo Machine Learning que aceleram o tempo de implantação e reduzem a latência de implantação e treinamento. O uso de ambientes coletados melhora as taxas de sucesso de treinamento e implantação e evita compilações de imagem desnecessárias. Ambientes coletados, como o Contêiner do Azure para PyTorch, também podem ser otimizados para treinar modelos grandes no Machine Learning.",
+ "guid": "4c6895ce-abd9-4c90-a386-c31bc0681869",
+ "service": "Azure Machine Learning",
+ "text": "Preparar ambientes de treinamento de modelo: use ambientes coletados otimizados para Machine Learning, quando disponíveis.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "82ffebb1-2e91-46a4-b796-3fa55c4c20e3",
+ "service": "Azure Machine Learning",
+ "text": "Metas de desempenho: determine o tempo de treinamento aceitável e a frequência de retreinamento para seu modelo. Definir uma meta clara para o tempo de treinamento, juntamente com o teste, ajuda a determinar os recursos de computação, CPU versus GPU e SKUs de CPU necessários para atingir a meta de tempo de treinamento.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "5e526216-1b94-4cfe-86ef-bbce971f7f3a",
+ "service": "Azure Machine Learning",
+ "text": "Metas de desempenho: defina as metas de desempenho aceitáveis para seus modelos implantados, incluindo tempo de resposta, solicitações por segundo, taxa de erro e tempo de atividade. As metas de desempenho atuam como uma referência para a eficiência do modelo implantado. Os destinos podem ajudá-lo a fazer determinações de CPU versus GPU, escolhas de SKU de CPU e requisitos de dimensionamento.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "2d6ddbe2-2bcc-4629-a316-5d56d74ef68a",
+ "service": "Azure Machine Learning",
+ "text": "Atenda aos requisitos de capacidade: escolha os recursos de computação certos para o treinamento do modelo.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "0ab74767-80ac-454e-aab6-b546e38411f8",
+ "service": "Azure Machine Learning",
+ "text": "Atenda aos requisitos de capacidade: escolha os recursos de computação certos para implantações de modelo.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "d47bd862-5302-4ecb-a551-37cb0d15e802",
+ "service": "Azure Machine Learning",
+ "text": "Atenda aos requisitos de capacidade: escolha ambientes de implantação com recursos de dimensionamento automático para adicionar e remover capacidade conforme a demanda flutua.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "e10dead3-58c0-40b2-aa9b-39c64a68c555",
+ "service": "Azure Machine Learning",
+ "text": "Alcance e mantenha o desempenho: monitore continuamente o desempenho de seus modelos implantados, revise os resultados e tome as ações apropriadas.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "e257de8e-a8ef-4b91-81a3-3d832682b1eb",
+ "service": "Azure Machine Learning",
+ "text": "Alcance e mantenha o desempenho: monitore continuamente o desempenho de sua infraestrutura de modelos implantados, analise os resultados e tome as ações apropriadas. Monitore a infraestrutura de treinamento para garantir que você esteja atendendo aos seus requisitos de tempo de treinamento.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "Selecionar a computação certa é fundamental, pois afeta diretamente o tempo de treinamento. Escolher o SKU e a CPU corretos em vez de GPU garante que o treinamento do modelo possa atender aos seus requisitos e metas de desempenho. Escolher um SKU de baixo desempenho que é usado em excesso pode levar a tempos de treinamento proibitivamente longos e problemas de desempenho. Os clusters de computação fornecem a capacidade de melhorar o desempenho escalando horizontalmente as cargas de trabalho que dão suporte ao dimensionamento horizontal. Esse método fornece flexibilidade para lidar com cargas de trabalho com diferentes demandas e permite adicionar ou remover máquinas conforme necessário.",
+ "guid": "352a223c-dabd-46da-8752-56a87c6f18b7",
+ "service": "Azure Machine Learning",
+ "text": "Selecione os serviços de computação apropriados para treinamento de modelo: considere clusters de computação do Machine Learning em instâncias de computação para treinamento de modelo se você precisar de dimensionamento automático. Otimize seus recursos de computação com base nos requisitos de treinamento. Primeiro escolha entre CPUs e GPUs. O padrão é CPUs, mas considere GPUs para cargas de trabalho como aprendizado profundo, processamento de imagem ou vídeo ou grandes quantidades de dados. Em seguida, escolha o SKU de imagem que melhor se adapta à sua carga de trabalho. Use o teste para escolher a opção de computação que otimiza o custo em relação ao tempo de treinamento ao determinar sua linha de base.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O dimensionamento automático ajusta o número de instâncias do modelo implantado para corresponder à demanda.",
+ "guid": "683ae603-156f-4186-8a82-aa2907fbb9bd",
+ "service": "Azure Machine Learning",
+ "text": "Dimensionamento do ambiente de implantação do modelo: use os recursos de dimensionamento automático do ambiente de implantação. Para ambientes de implantação do AKS, use o dimensionador automático de cluster para dimensionar para atender à demanda. Para pontos de extremidade online, dimensione automaticamente por meio da integração com o recurso de dimensionamento automático do Azure Monitor.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Acompanhar o desempenho de modelos em produção alerta você sobre possíveis problemas, como desvio de dados, desvio de previsão, qualidade de dados e desvio de atribuição de recursos. O monitoramento de descompasso de dados ajuda a detectar alterações nos dados de entrada que podem levar a um declínio no desempenho do modelo. O gerenciamento de descompasso de dados ajuda a garantir que seu modelo forneça resultados precisos ao longo do tempo.",
+ "guid": "eccdaab6-7458-4967-9cd4-da6a89e3ce8c",
+ "service": "Azure Machine Learning",
+ "text": "Monitorar o desempenho do modelo: monitore o desempenho de seus modelos implantados.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "O monitoramento de endpoints oferece visibilidade de métricas como latência de solicitação e solicitações por minuto. Você pode comparar seu desempenho com sua linha de base e usar essas informações para fazer alterações nos recursos de computação de acordo. Métricas de monitoramento, como bytes de rede, podem alertá-lo se você estiver se aproximando dos limites de cota e evitar a limitação. Da mesma forma, monitorar seu ambiente de treinamento fornece as informações para fazer alterações em seu ambiente de treinamento. Use essas informações para decidir aumentar ou diminuir a escala, aumentar ou diminuir com SKUs de desempenho diferente ou escolher entre CPUs ou GPUs.",
+ "guid": "76b80c26-8252-416e-aae1-ace03a9403dd",
+ "service": "Azure Machine Learning",
+ "text": "Monitore a infraestrutura: monitore endpoints online e integre-se ao Monitor para rastrear e monitorar as métricas e os logs apropriados. Habilite o Application Insights ao criar implantações online. Monitore a infraestrutura de treinamento e examine o uso de recursos, como memória e uso de CPU ou GPU, ao treinar modelos para garantir que você esteja atendendo aos requisitos de linha de base.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "",
+ "guid": "154d9075-f8f8-4dc8-b8f4-651d875d5dfe",
+ "service": "Azure Openai",
+ "text": "Resiliência: escolha a opção de implantação apropriada de taxa de transferência paga conforme o uso ou provisionada com base em seu caso de uso. Como a capacidade reservada aumenta a resiliência, escolha a taxa de transferência provisionada para soluções de produção. A abordagem de pagamento conforme o uso é ideal para ambientes de desenvolvimento/teste.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "571ddd3c-601e-46a7-bf80-c52f04a301fb",
+ "service": "Azure Openai",
+ "text": "Redundância: adicione os gateways apropriados na frente de suas implantações do OpenAI do Azure. O gateway deve ter a capacidade de resistir a falhas transitórias, como limitação, e também rotear para várias instâncias do OpenAI do Azure. Considere o roteamento para instâncias em diferentes regiões para criar redundância regional.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "4b6855b3-069d-4bb2-b9c6-f1c021803f77",
+ "service": "Azure Openai",
+ "text": "Resiliência: se você estiver usando a taxa de transferência provisionada, considere também implantar uma instância paga conforme o uso para lidar com o estouro. Você pode rotear chamadas para a instância paga conforme o uso por meio do gateway quando o modelo de taxa de transferência provisionada estiver limitado. Você também pode usar o monitoramento para prever quando o modelo será limitado e rotear preventivamente as chamadas para a instância paga conforme o uso.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "7fd57f22-417b-47d5-88c9-ab7a2ceb5599",
+ "service": "Azure Openai",
+ "text": "Resiliência: monitore o uso da capacidade para garantir que você não esteja excedendo os limites de taxa de transferência. Revise regularmente o uso da capacidade para obter previsões mais precisas e ajudar a evitar interrupções de serviço devido a restrições de capacidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "c41d1ed1-6f1d-4e6e-9dde-2d8172365170",
+ "service": "Azure Openai",
+ "text": "Resiliência: siga as diretrizes para arquivos de dados grandes e importe os dados de um repositório de blobs do Azure. Arquivos grandes, de 100 MB ou mais, podem se tornar instáveis quando carregados por meio de formulários de várias partes porque as solicitações são atômicas e não podem ser repetidas ou retomadas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "088c617d-fce0-4fab-b4cd-9f9eb6a96cff",
+ "service": "Azure Openai",
+ "text": "Recuperação: defina uma estratégia de recuperação que inclua um plano de recuperação para modelos ajustados e para dados de treinamento carregados no Azure OpenAI. Como o Azure OpenAI não tem failover automático, você deve criar uma estratégia que englobe todo o serviço e todas as dependências, como o armazenamento que contém dados de treinamento.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Essas informações importantes de taxa de transferência fornecem as informações necessárias para garantir que você atribua TPM suficiente de sua cota para atender à demanda por suas implantações. Atribuir cota suficiente evita a limitação de chamadas para seus modelos implantados.",
+ "guid": "f109deb2-54f9-4405-a9f0-f90fd0f76adf",
+ "service": "Azure Openai",
+ "text": "Monitorar limites de taxa para pagamento conforme o uso: se você estiver usando a abordagem de pagamento conforme o uso, gerencie os limites de taxa para suas implantações de modelo e monitore o uso de tokens por minuto (TPM) e solicitações por minuto (RPM).",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "É importante monitorar a utilização gerenciada por provisionamento para garantir que ela não exceda 100%, para evitar a limitação de chamadas para seus modelos implantados.",
+ "guid": "ef12f5c3-dbe2-4040-be82-724eebc6f87e",
+ "service": "Azure Openai",
+ "text": "Monitorar a utilização gerenciada por provisionamento para taxa de transferência provisionada: se você estiver usando o modelo de pagamento de taxa de transferência provisionada, monitore a utilização gerenciada por provisionamento.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Os filtros de conteúdo bloqueiam prompts ou conclusões com base em uma análise de risco opaca. Verifique se os filtros de conteúdo estão ajustados para permitir o uso esperado para sua carga de trabalho.",
+ "guid": "efcf5f6a-02bb-4cc8-8018-055ebf2e57e0",
+ "service": "Azure Openai",
+ "text": "Ajustar filtros de conteúdo: ajuste os filtros de conteúdo para minimizar falsos positivos de filtros excessivamente agressivos.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "a61b826b-9f3b-4f51-8e0e-a32a92865386",
+ "service": "Azure Openai",
+ "text": "Proteger a confidencialidade: se você carregar dados de treinamento no Azure OpenAI, use chaves gerenciadas pelo cliente para criptografia de dados, implemente uma estratégia de rotação de chaves e exclua dados de treinamento, validação e resultados de treinamento. Se você usar um armazenamento de dados externo para dados de treinamento, siga as práticas recomendadas de segurança para esse armazenamento. Por exemplo, para o Armazenamento de Blobs do Azure, use chaves gerenciadas pelo cliente para criptografia e implemente uma estratégia de rotação de chaves. Use o acesso baseado em identidade gerenciada, implemente um perímetro de rede usando pontos de extremidade privados e habilite logs de acesso.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "9f4bdfff-2c6c-4662-9139-1de51d2dbd20",
+ "service": "Azure Openai",
+ "text": "Proteja a confidencialidade: proteja-se contra a exfiltração de dados limitando as URLs de saída que os recursos do OpenAI do Azure podem acessar.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "b8463e8d-daaa-4209-9944-0fb0587219a8",
+ "service": "Azure Openai",
+ "text": "Proteger a integridade: implemente controles de acesso para autenticar e autorizar o acesso do usuário ao sistema usando o princípio de privilégios mínimos e usando identidades individuais em vez de chaves.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "714249d8-2b60-4920-89a2-eab4a338ac02",
+ "service": "Azure Openai",
+ "text": "Proteja a integridade: implemente a detecção de risco de jailbreak para proteger suas implantações de modelo de linguagem contra ataques de injeção imediata.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "e0383d3b-71f1-4fda-9759-24cfd293abff",
+ "service": "Azure Openai",
+ "text": "Proteger a disponibilidade: use controles de segurança para evitar ataques que possam esgotar as cotas de uso do modelo. Você pode configurar controles para isolar o serviço em uma rede. Se o serviço precisar ser acessível pela Internet, considere usar um gateway para bloquear suspeitas de abuso usando roteamento ou limitação.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Separar segredos do código armazenando-os no Key Vault reduz a chance de vazamento de segredos. A separação também facilita o gerenciamento central de segredos, facilitando responsabilidades como a rotação de chaves.",
+ "guid": "c4310e87-1366-4523-b2e1-244e1074fbb0",
+ "service": "Azure Openai",
+ "text": "Chaves seguras: se sua arquitetura exigir autenticação baseada em chave OpenAI do Azure, armazene essas chaves no Azure Key Vault, não no código do aplicativo.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Controlar o acesso ao Azure OpenAI ajuda a evitar ataques de usuários não autorizados. O uso de pontos de extremidade privados garante que o tráfego de rede permaneça privado entre o aplicativo e a plataforma.",
+ "guid": "4a7a9a07-0229-4175-b784-9a99eded4d54",
+ "service": "Azure Openai",
+ "text": "Restringir o acesso: desabilite o acesso público ao Azure OpenAI, a menos que sua carga de trabalho exija isso. Crie pontos de extremidade privados se você estiver se conectando de consumidores em uma rede virtual do Azure.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso do Microsoft Entra ID centraliza o componente de gerenciamento de identidade e elimina o uso de chaves de API. O uso do RBAC com a ID do Microsoft Entra garante que os usuários ou grupos tenham exatamente as permissões necessárias para realizar seu trabalho. Esse tipo de controle de acesso refinado não é possível com chaves de API do OpenAI do Azure.",
+ "guid": "d5892190-2da9-43f4-b1e1-76b38b369643",
+ "service": "Azure Openai",
+ "text": "ID do Microsoft Entra: use a ID do Microsoft Entra para autenticação e autorize o acesso ao Azure OpenAI usando o RBAC (controle de acesso baseado em função). Desabilite a autenticação local nos Serviços de IA do Azure e defina 'disableLocalAuth' como 'true'. Conceda identidades que executam conclusões ou geração de imagens à função de Usuário OpenAI dos Serviços Cognitivos. Conceda pipelines de automação de modelos e acesso ad hoc à ciência de dados de uma função como Colaborador OpenAI dos Serviços Cognitivos.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "O uso de chaves gerenciadas pelo cliente oferece maior flexibilidade para criar, girar, desabilitar e revogar controles de acesso.",
+ "guid": "60a4703c-1086-45e1-9384-ebb32ab50696",
+ "service": "Azure Openai",
+ "text": "Usar chaves gerenciadas pelo cliente: use chaves gerenciadas pelo cliente para modelos ajustados e dados de treinamento carregados no Azure OpenAI.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Detecte tentativas de jailbreak para identificar e bloquear prompts que tentam ignorar os mecanismos de segurança de suas implantações do OpenAI do Azure.",
+ "guid": "ce66eba7-5972-4cb5-8db0-b75c3720b220",
+ "service": "Azure Openai",
+ "text": "Proteja-se contra ataques de jailbreak: use o Azure AI Content Safety Studio para detectar riscos de jailbreak.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "08f7b66c-7679-479b-8e2f-41b3305613dc",
+ "service": "Azure Openai",
+ "text": "Gerenciamento de custos: desenvolva seu modelo de custo, considerando os tamanhos dos prompts. Entender os tamanhos de entrada e resposta do prompt e como o texto se traduz em tokens ajuda a criar um modelo de custo viável.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "3f66f351-a073-40bb-94d2-326e1ea1a696",
+ "service": "Azure Openai",
+ "text": "Otimização de uso: comece com preços pagos conforme o uso do Azure OpenAI até que o uso do token seja previsível.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "3802ce2d-2a46-445d-92e2-2a23b2e40705",
+ "service": "Azure Openai",
+ "text": "Otimização de taxa: quando o uso do token for suficientemente alto e previsível durante um período de tempo, use o modelo de preços de taxa de transferência provisionada para melhor otimização de custos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "2b2303c0-e057-431d-9a02-20a1a0b2b5b9",
+ "service": "Azure Openai",
+ "text": "Otimização de uso: considere os preços e os recursos do modelo ao escolher modelos. Comece com modelos menos dispendiosos para tarefas menos complexas, como geração de texto ou tarefas de conclusão. Para tarefas mais complexas, como tradução de idiomas ou compreensão de conteúdo, considere o uso de modelos mais avançados. Considere diferentes recursos de modelo e limites máximos de uso de token ao escolher um modelo apropriado para casos de uso como inserção de texto, geração de imagem ou cenários de transcrição. Ao selecionar cuidadosamente o modelo que melhor se adapta às suas necessidades, você pode otimizar os custos e, ao mesmo tempo, obter o desempenho desejado do aplicativo.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "c4104d7c-4a4f-4b8a-9928-558a7c5c61d8",
+ "service": "Azure Openai",
+ "text": "Otimização de uso: use as restrições de limitação de token oferecidas pelas chamadas de API, como 'max_tokens' e 'n', que indicam o número de conclusões a serem geradas.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "fb44ea80-44a3-465f-9d50-98b800a90fd6",
+ "service": "Azure Openai",
+ "text": "Otimização de uso: maximize os pontos de interrupção de preço do Azure OpenAI, por exemplo, o ajuste fino e os pontos de interrupção do modelo, como geração de imagens. Como o ajuste fino é cobrado por hora, use o tempo que tiver disponível por hora para melhorar os resultados do ajuste fino, evitando passar para o próximo período de cobrança. Da mesma forma, o custo para gerar 100 imagens é o mesmo que o custo de 1 imagem. Maximize os pontos de interrupção de preço a seu favor.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "5f027af8-e168-4b86-8255-4ea6f74cfd87",
+ "service": "Azure Openai",
+ "text": "Otimização de uso: remova modelos ajustados não utilizados quando eles não estiverem mais sendo consumidos para evitar incorrer em uma taxa de hospedagem contínua.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "23756c91-3a66-4733-98b7-448bc8441f56",
+ "service": "Azure Openai",
+ "text": "Ajuste o uso: Otimize a entrada imediata e o comprimento da resposta. Prompts mais longos aumentam os custos consumindo mais tokens. No entanto, os prompts que não têm contexto suficiente não ajudam os modelos a produzir bons resultados. Crie prompts concisos que forneçam contexto suficiente para que o modelo gere uma resposta útil. Certifique-se também de otimizar o limite do comprimento da resposta.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "160154da-ea9e-4a84-ac35-8a731658c0fd",
+ "service": "Azure Openai",
+ "text": "Eficiência de custos: 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.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "739c80f6-0570-435b-ab82-2c8ce9d2deb8",
+ "service": "Azure Openai",
+ "text": "Eficiência de custo: como os modelos têm custos de ajuste fino diferentes, considere esses custos se sua solução exigir ajuste fino.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "518fd651-b13e-427e-a0de-f634a014f5b2",
+ "service": "Azure Openai",
+ "text": "Monitore e otimize: configure um sistema de rastreamento de custos que monitore o uso do modelo. Use essas informações para ajudar a informar as escolhas de modelo e os tamanhos de prompt.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "O uso de recursos de API para restringir o uso alinha o consumo do serviço com as necessidades do cliente. Isso economiza dinheiro, garantindo que o modelo não gere uma resposta excessivamente longa que consuma mais tokens do que o necessário.",
+ "guid": "afb53b41-825a-4310-b445-bf391792c568",
+ "service": "Azure Openai",
+ "text": "Crie o código do cliente para definir limites: seus clientes personalizados devem usar os recursos de limite da API de conclusões do OpenAI do Azure, como limite máximo no número de tokens por modelo ('max_tokens') ou número de conclusões para geração ('n'). A configuração de limites garante que o servidor não produza mais do que o cliente precisa.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento contínuo do TPM e do RPM fornece métricas relevantes para otimizar o custo dos modelos do OpenAI do Azure. Você pode acoplar esse monitoramento aos recursos do modelo e aos preços do modelo para otimizar o uso do modelo. Você também pode usar esse monitoramento para otimizar os tamanhos dos prompts.",
+ "guid": "e91029f2-ddf4-41f3-8358-f31b5afbe8ba",
+ "service": "Azure Openai",
+ "text": "Monitore o uso pago conforme o uso: se você usar a abordagem paga conforme o uso, monitore o uso do TPM e do RPM. Use essas informações para informar as decisões de projeto de arquitetura, como quais modelos usar e para otimizar os tamanhos dos prompts.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento contínuo da utilização gerenciada por provisionamento fornece as informações necessárias para entender se você está subutilizando sua taxa de transferência provisionada.",
+ "guid": "06a0b95c-b014-4205-8d0c-f074ec393239",
+ "service": "Azure Openai",
+ "text": "Monitorar o uso da taxa de transferência provisionada: se você usar a taxa de transferência provisionada, monitore a utilização gerenciada por provisionamento para garantir que você não esteja subutilizando a taxa de transferência provisionada adquirida.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "O monitoramento de custos, a definição de orçamentos e a definição de alertas fornecem à governança os processos de responsabilidade apropriados.",
+ "guid": "f18aba52-5587-43e6-b994-8cab7022167f",
+ "service": "Azure Openai",
+ "text": "Gerenciamento de custos: use recursos de gerenciamento de custos com o OpenAI para monitorar custos, definir orçamentos para gerenciar custos e criar alertas para notificar as partes interessadas sobre riscos ou anomalias.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "3c5f9e8e-c1a9-4c18-ac05-72877f24ff22",
+ "service": "Azure Openai",
+ "text": "Cultura do Azure DevOps: garanta a implantação de instâncias do OpenAI do Azure em seus vários ambientes, como desenvolvimento, teste e produção. Certifique-se de ter ambientes para dar suporte ao aprendizado e à experimentação contínuos durante todo o ciclo de desenvolvimento.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "56e72e7c-32bb-414b-bf04-d2883871aacb",
+ "service": "Azure Openai",
+ "text": "Observabilidade: monitore, agregue e visualize métricas apropriadas.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "63aedcb9-e01e-4df3-b9a6-13c13d6971d4",
+ "service": "Azure Openai",
+ "text": "Observabilidade: se o diagnóstico do OpenAI do Azure for insuficiente para suas necessidades, considere usar um gateway como o Gerenciamento de API do Azure na frente do OpenAI do Azure para registrar prompts de entrada e respostas de saída, quando permitido. Essas informações podem ajudá-lo a entender a eficácia do modelo para prompts de entrada.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "fe7a8e0a-b53a-48f0-a204-4e1e7e20ea4b",
+ "service": "Azure Openai",
+ "text": "Implante com confiança: use a IaC (infraestrutura como código) para implantar o Azure OpenAI, implantações de modelo e outras infraestruturas necessárias para ajustar modelos.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "3dffb456-4675-4acb-b797-a5bf591e003a",
+ "service": "Azure Openai",
+ "text": "Implante com confiança: siga as práticas de LLMOps (operações de modelo de linguagem grande) para operacionalizar o gerenciamento de seus LLMs OpenAI do Azure, incluindo implantação, ajuste fino e engenharia de prompt.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "4c82d2b3-c083-4a0e-9cd2-92d2b00b4c96",
+ "service": "Azure Openai",
+ "text": "Automatize para eficiência: se você usar autenticação baseada em chave, implemente uma estratégia automatizada de rotação de chaves.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "O Diagnóstico coleta e analisa métricas e logs, ajudando você a monitorar a disponibilidade, o desempenho e a operação do OpenAI do Azure.",
+ "guid": "ff3d2610-e8e8-4a78-aba5-556758a2798c",
+ "service": "Azure Openai",
+ "text": "Habilitar e configurar o Diagnóstico do Azure: habilite e configure o Diagnóstico para o Serviço OpenAI do Azure.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "63dbbc6a-f840-4893-979c-2afcea82bf5f",
+ "service": "Azure Openai",
+ "text": "Capacidade: Estimar as demandas de elasticidade dos consumidores. Identifique o tráfego de alta prioridade que requer respostas síncronas e o tráfego de baixa prioridade que pode ser assíncrono e em lote.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "14677a1d-0b65-455a-997b-1490c397fbc8",
+ "service": "Azure Openai",
+ "text": "Capacidade: Benchmark requisitos de consumo de token com base nas demandas estimadas dos consumidores. Considere usar a ferramenta de benchmarking do Azure OpenAI para ajudá-lo a validar a taxa de transferência se você estiver usando implantações de PTU (unidade de taxa de transferência provisionada).",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "59c8767d-1b78-4016-92d5-ebd83032fafa",
+ "service": "Azure Openai",
+ "text": "Capacidade: use a taxa de transferência provisionada para cargas de trabalho de produção. A taxa de transferência provisionada oferece memória e computação dedicadas, capacidade reservada e latência máxima consistente para a versão do modelo especificada. A oferta de pagamento conforme o uso pode sofrer de problemas de vizinhos barulhentos, como aumento da latência e limitação em regiões sob uso intenso. Além disso, a abordagem de pagamento conforme o uso não oferece capacidade garantida.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "a318b299-9d54-4dfc-8f20-b00ceed43ed0",
+ "service": "Azure Openai",
+ "text": "Capacidade: adicione os gateways apropriados na frente de suas implantações do OpenAI do Azure. Certifique-se de que o gateway possa rotear para várias instâncias na mesma região ou em regiões diferentes.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "ceb21879-94da-485e-a24b-b30180fb566c",
+ "service": "Azure Openai",
+ "text": "Capacidade: aloque PTUs para cobrir o uso previsto e complemente essas PTUs com uma implantação de TPM para lidar com a elasticidade acima desse limite. Essa abordagem combina a taxa de transferência básica com a taxa de transferência elástica para eficiência. Como outras considerações, essa abordagem requer uma implementação de gateway personalizada para rotear solicitações para a implantação do TPM quando os limites da PTU forem atingidos.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "dd313c03-7429-4cb1-84e9-d982664c2dfc",
+ "service": "Azure Openai",
+ "text": "Capacidade: envie solicitações de alta prioridade de forma síncrona. Enfileire solicitações de baixa prioridade e envie-as em lotes quando a demanda for baixa.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "cdf82e76-ee07-47e6-9985-6b1c0a39dd42",
+ "service": "Azure Openai",
+ "text": "Capacidade: selecione um modelo que se alinhe aos seus requisitos de desempenho, considerando a compensação entre velocidade e complexidade de saída. O desempenho do modelo pode variar significativamente com base no tipo de modelo escolhido. Os modelos projetados para velocidade oferecem tempos de resposta mais rápidos, o que pode ser benéfico para aplicativos que exigem interações rápidas. Por outro lado, modelos mais sofisticados podem fornecer resultados de maior qualidade às custas do aumento do tempo de resposta.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "9aa6da24-6a00-4381-9da6-66c9d5cbf41f",
+ "service": "Azure Openai",
+ "text": "Alcance o desempenho: para aplicativos como chatbots ou interfaces de conversação, considere implementar o streaming. O streaming pode aprimorar o desempenho percebido dos aplicativos OpenAI do Azure, fornecendo respostas aos usuários de maneira incremental, melhorando a experiência do usuário.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "456cbf54-9c2f-4c6e-9739-eca408fa6baf",
+ "service": "Azure Openai",
+ "text": "Obter desempenho: determine quando usar o ajuste fino antes de se comprometer com o ajuste fino. Embora existam bons casos de uso para ajuste fino, como quando as informações necessárias para orientar o modelo são muito longas ou complexas para caber no prompt, certifique-se de que as abordagens de engenharia imediata e geração aumentada por recuperação (RAG) não funcionem ou sejam comprovadamente mais caras.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "2dc38e31-8e03-40f4-842d-58ac317c5106",
+ "service": "Azure Openai",
+ "text": "Obter desempenho: considere o uso de implantações de modelo dedicadas por grupo de consumidores para fornecer isolamento de uso por modelo que pode ajudar a evitar vizinhos barulhentos entre seus grupos de consumidores.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "999ecfef-c272-4cd8-8bd0-9cd5335fb695",
+ "service": "Virtual Machines",
+ "text": "Examine as cotas e os limites de Máquinas Virtuais que podem representar restrições de design. As VMs têm limites e cotas específicos, que variam de acordo com o tipo de VM ou a região. Pode haver restrições de assinatura, como o número de VMs por assinatura ou o número de núcleos por VM. Se outras cargas de trabalho compartilharem sua assinatura, sua capacidade de consumir dados poderá ser reduzida.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "bf605fe8-6171-4c01-8290-d6c79a21cf10",
+ "service": "Virtual Machines",
+ "text": "Realize uma análise do modo de falha para minimizar os pontos de falha analisando as interações da VM com os componentes de rede e armazenamento. Escolha configurações como discos de sistema operacional (SO) efêmeros para localizar o acesso ao disco e evitar saltos de rede. Adicione um balanceador de carga para aprimorar a autopreservação distribuindo o tráfego de rede em várias VMs, o que melhora a disponibilidade e a confiabilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "4cd18dd0-57e4-4fc9-a8ad-74c3333b6d8b",
+ "service": "Virtual Machines",
+ "text": "Calcule seus SLOs (objetivos de nível de serviço) compostos com base nos SLAs (contratos de nível de serviço) do Azure. Verifique se o SLO não é maior do que os SLAs do Azure para evitar expectativas irrealistas e possíveis problemas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "90e0bce0-bc44-42ba-be28-2f3dde2f4b37",
+ "service": "Virtual Machines",
+ "text": "Crie um isolamento de estado. Os dados da carga de trabalho devem estar em um disco de dados separado para evitar interferência no disco do sistema operacional. Se uma VM falhar, você poderá criar um novo disco do sistema operacional com o mesmo disco de dados, o que garante resiliência e isolamento de falhas. Para obter mais informações, consulte Discos do sistema operacional efêmero.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "6d76e7b9-52d3-4878-83ab-2a08df23c8f6",
+ "service": "Virtual Machines",
+ "text": "Torne as VMs e suas dependências redundantes entre zonas. Se uma VM falhar, a carga de trabalho deverá continuar a funcionar devido à redundância. Inclua dependências em suas opções de redundância. Por exemplo, use as opções de redundância internas que estão disponíveis com discos. Use IPs com redundância de zona para garantir a disponibilidade dos dados e o alto tempo de atividade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "56d104f5-469e-4ead-bf17-7c81c746dabe",
+ "service": "Virtual Machines",
+ "text": "Esteja pronto para escalar verticalmente e horizontalmente para evitar a degradação do nível de serviço e evitar falhas. Os Conjuntos de Dimensionamento de Máquinas Virtuais têm recursos de dimensionamento automático que criam novas instâncias conforme necessário e distribuem a carga entre várias VMs e zonas de disponibilidade.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "3395416e-27c6-4ded-941a-de4e562c5c00",
+ "service": "Virtual Machines",
+ "text": "Explore as opções de recuperação automática. O Azure dá suporte ao monitoramento da degradação de integridade e aos recursos de autocorreção para VMs. Por exemplo, os conjuntos de dimensionamento fornecem reparos automáticos de instância. Em cenários mais avançados, a autocorreção envolve o uso do Azure Site Recovery, ter uma espera passiva para fazer failover ou reimplantar da IaC (infraestrutura como código). O método escolhido deve estar alinhado com os requisitos de negócios e suas operações organizacionais. Para obter mais informações, consulte Interrupções de serviço de VM.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "3d633098-6fc7-4752-907c-5a02d53ffba2",
+ "service": "Virtual Machines",
+ "text": "Dimensione corretamente as VMs e suas dependências. Entenda o trabalho esperado da VM para garantir que ela não seja subdimensionada e possa lidar com a carga máxima. Ter capacidade extra para mitigar falhas.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "cbe651de-8754-4078-8066-803f94814634",
+ "service": "Virtual Machines",
+ "text": "Crie um plano abrangente de recuperação de desastres. A preparação para desastres envolve a criação de um plano abrangente e a decisão sobre uma tecnologia para recuperação.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "6bbb44ad-f6ed-4990-b519-a56e4d995170",
+ "service": "Virtual Machines",
+ "text": "Execute operações com rigor. As opções de design de confiabilidade devem ser suportadas por operações eficazes com base nos princípios de monitoramento, teste de resiliência em produção, patches e atualizações de VM de aplicativo automatizados e consistência de implantações. Para orientação operacional, consulte Excelência Operacional.",
+ "type": "checklist",
+ "waf": "fiabilidade"
+ },
+ {
+ "description": "Prepare seu aplicativo para o futuro para dimensionamento e aproveite as garantias de alta disponibilidade que distribuem VMs entre domínios de falha em uma região ou zona de disponibilidade.",
+ "guid": "bb45d3f7-dae7-4eb6-a823-76737e6d0d88",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Use Conjuntos de Dimensionamento de Máquinas Virtuais no modo de orquestração flexível para implantar VMs.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Mantenha a disponibilidade mesmo que uma instância seja considerada não íntegra. Os reparos automáticos iniciam a recuperação substituindo a instância defeituosa. Definir uma janela de tempo pode evitar operações de reparo inadvertidas ou prematuras.",
+ "guid": "29912435-4c36-465e-91e2-6c8fcb42b33f",
+ "service": "Virtual Machines",
+ "text": "(VMs) Implemente pontos de extremidade de integridade que emitem status de integridade da instância em VMs. (Conjunto de escalas) Habilite reparos automáticos no conjunto de dimensionamento especificando a ação de reparo preferencial. Considere definir um período de tempo durante o qual os reparos automáticos serão pausados se o estado da VM for alterado.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "O provisionamento excessivo reduz os tempos de implantação e tem um custo-benefício porque as VMs extras não são cobradas.",
+ "guid": "71982e91-2b16-4f49-b91e-7c52a6e0042a",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Habilite o provisionamento excessivo em conjuntos de dimensionamento.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "Essa opção isola os domínios de falha. Durante os períodos de manutenção, quando um domínio de falha é atualizado, as instâncias de VM ficam disponíveis nos outros domínios de falha.",
+ "guid": "07b6117e-18f8-4df2-9816-9bba2f028219",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Permitir que a orquestração flexível distribua as instâncias de VM pelo maior número possível de domínios de falha.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "As instâncias de VM são provisionadas em locais fisicamente separados em cada região do Azure que são tolerantes a falhas locais. Lembre-se de que, dependendo da disponibilidade de recursos, pode haver um número ímpar de instâncias entre as zonas. O balanceamento de zona oferece suporte à disponibilidade, certificando-se de que, se uma zona estiver inativa, as outras zonas tenham instâncias suficientes. Duas instâncias em cada zona fornecem um buffer durante as atualizações.",
+ "guid": "056b1e06-a521-4662-9c87-19371260efe6",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Implante em zonas de disponibilidade em conjuntos de dimensionamento. Configure pelo menos duas instâncias em cada zona. O balanceamento de zona distribui igualmente as instâncias entre as zonas.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "A capacidade é reservada para seu uso e está disponível dentro do escopo dos SLAs aplicáveis. Você pode excluir reservas de capacidade quando não precisar mais delas e a cobrança for baseada no consumo.",
+ "guid": "2554bcd7-c6b8-4461-aaaa-071092d5483f",
+ "service": "Virtual Machines",
+ "text": "(VMs) Aproveite o recurso de reservas de capacidade.",
+ "type": "recommendation",
+ "waf": "Fiabilidade"
+ },
+ {
+ "description": "",
+ "guid": "fa5e017f-a99c-4fcc-883b-e16427f4e05d",
+ "service": "Virtual Machines",
+ "text": "Examine as linhas de base de segurança para VMs do Linux e do Windows e Conjuntos de Dimensionamento de Máquinas Virtuais.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "63866f61-ef77-4793-9257-dfc53e87a550",
+ "service": "Virtual Machines",
+ "text": "Garanta patches e atualizações de segurança oportunos e automatizados. Certifique-se de que as atualizações sejam distribuídas e validadas automaticamente usando um processo bem definido. Use uma solução como a Automação do Azure para gerenciar atualizações do sistema operacional e manter a conformidade de segurança fazendo atualizações críticas.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "5bc85e31-f7fa-4102-8e43-6fbe7add0d89",
+ "service": "Virtual Machines",
+ "text": "Identifique as VMs que mantêm o estado. Verifique se os dados são classificados de acordo com os rótulos de confidencialidade fornecidos pela sua organização. Proteja os dados usando controles de segurança, como níveis apropriados de criptografia em repouso e em trânsito. Se você tiver requisitos de alta sensibilidade, considere usar controles de alta segurança, como criptografia dupla e computação confidencial do Azure para proteger os dados em uso.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "d5320544-6d25-46c7-ab46-e81e5d85d9b3",
+ "service": "Virtual Machines",
+ "text": "Forneça segmentação para as VMs e conjuntos de dimensionamento definindo limites de rede e controles de acesso. Coloque as VMs em grupos de recursos que compartilham o mesmo ciclo de vida.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "becd6031-a256-4186-995e-75817fc7783c",
+ "service": "Virtual Machines",
+ "text": "Aplique controles de acesso às identidades que tentam acessar as VMs e também às VMs que alcançam outros recursos. Use a ID do Microsoft Entra para necessidades de autenticação e autorização. Coloque senhas fortes, autenticação multifator e RBAC (controle de acesso baseado em função) em vigor para suas VMs e suas dependências, como segredos, para permitir que as identidades permitidas executem apenas as operações esperadas de suas funções.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "cc96d188-8a1f-4b48-9525-d6f3f867f322",
+ "service": "Virtual Machines",
+ "text": "Use controles de rede para restringir o tráfego de entrada e saída. Isole VMs e conjuntos de dimensionamento na Rede Virtual do Azure e defina grupos de segurança de rede para filtrar o tráfego. Proteja-se contra ataques distribuídos de negação de serviço (DDoS). Use balanceadores de carga e regras de firewall para proteger contra tráfego mal-intencionado e ataques de exfiltração de dados.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "66e5f683-0d57-4ed1-b2bd-68e4549631bc",
+ "service": "Virtual Machines",
+ "text": "Reduza a superfície de ataque protegendo as imagens do sistema operacional e removendo componentes não utilizados. Use imagens menores e remova binários que não são necessários para executar a carga de trabalho. Aperte as configurações da VM removendo recursos, como contas e portas padrão, que você não precisa.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "961b264a-fddf-43d4-b137-a132429c2874",
+ "service": "Virtual Machines",
+ "text": "Proteja segredos, como os certificados necessários para proteger os dados em trânsito. Considere usar a extensão do Azure Key Vault para Windows ou Linux que atualiza automaticamente os certificados armazenados em um cofre de chaves. Quando detecta uma alteração nos certificados, a extensão recupera e instala os certificados correspondentes.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "39b32108-5423-42aa-beaa-1601df1971f6",
+ "service": "Virtual Machines",
+ "text": "Detecção de ameaças. Monitore VMs em busca de ameaças e configurações incorretas. Use o Defender para Servidores para capturar alterações de VM e sistema operacional e manter uma trilha de auditoria de acesso, novas contas e alterações nas permissões.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "",
+ "guid": "fb9921a8-884c-40df-a588-a554143809f2",
+ "service": "Virtual Machines",
+ "text": "Prevenção de ameaças. Proteja-se contra ataques de malware e agentes mal-intencionados implementando controles de segurança como firewalls, software antivírus e sistemas de detecção de intrusão. Determine se um TEE (Ambiente de Execução Confiável) é necessário.",
+ "type": "checklist",
+ "waf": "segurança"
+ },
+ {
+ "description": "Quando as VMs se comunicam com outros recursos, elas cruzam um limite de confiança. Os conjuntos de dimensionamento e as VMs devem autenticar sua identidade antes que a comunicação seja permitida. A ID do Microsoft Entra lida com essa autenticação usando identidades gerenciadas.",
+ "guid": "21e2209a-6217-464b-9886-1914124b0721",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Atribua uma identidade gerenciada a conjuntos de dimensionamento. Todas as VMs no conjunto de dimensionamento obtêm a mesma identidade por meio do perfil de VM especificado. (VMs) Você também pode atribuir uma identidade gerenciada a VMs individuais ao criá-las e, em seguida, adicioná-la a um conjunto de dimensionamento, se necessário.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os recursos fornecidos pelo Azure são baseados em sinais capturados em muitos locatários e podem proteger os recursos melhor do que os controles personalizados. Você também pode usar políticas para impor esses controles.",
+ "guid": "f13132ec-ac80-4a27-a14e-b7b357523df1",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Escolha SKUs de VM com recursos de segurança. Por exemplo, alguns SKUs dão suporte à criptografia do BitLocker e a computação confidencial fornece criptografia de dados em uso. Revise os recursos para entender as limitações.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "A marcação é uma maneira comum de segmentar e organizar recursos e pode ser crucial durante o gerenciamento de incidentes. Para obter mais informações, consulte Finalidade de nomear e marcar.",
+ "guid": "944802d9-671c-479f-b973-fd6111a18486",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Aplique tags recomendadas pela organização nos recursos provisionados.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Os recursos no perfil de segurança são habilitados automaticamente quando a VM é criada. Para obter mais informações, consulte Linha de base de segurança do Azure para Conjuntos de Dimensionamento de Máquinas Virtuais.",
+ "guid": "a6b12603-c2e3-43fd-9a79-6e6317817278",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina um perfil de segurança com os recursos de segurança que você deseja habilitar na configuração da VM. Por exemplo, quando você especifica a criptografia no host no perfil, os dados armazenados no host da VM são criptografados em repouso e os fluxos são criptografados para o serviço de armazenamento.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Você pode definir controles de segmentação no perfil de rede. Os invasores verificam endereços IP públicos, o que torna as VMs vulneráveis a ameaças.",
+ "guid": "3c83a4bb-2b58-4fae-9a65-37490fecaf1c",
+ "service": "Virtual Machines",
+ "text": "(VMs) Escolha opções de rede segura para o perfil de rede da sua VM. Não associe diretamente endereços IP públicos às suas VMs e não habilite o encaminhamento de IP. Verifique se todos os adaptadores de rede virtual têm um grupo de segurança de rede associado.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "Desabilitar o acesso à rede pública ajuda a impedir o acesso não autorizado aos seus dados e recursos.",
+ "guid": "fe1df647-99c3-43ea-b8ed-507b23f120e0",
+ "service": "Virtual Machines",
+ "text": "(VMs) Escolha opções de armazenamento seguro para o perfil de armazenamento da VM. Habilite a criptografia de disco e a criptografia de dados em repouso por padrão. Desabilite o acesso à rede pública aos discos da VM.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "As extensões são usadas para inicializar as VMs com o software certo que protege o acesso de e para as VMs. As extensões fornecidas pela Microsoft são atualizadas com frequência para acompanhar os padrões de segurança em evolução.",
+ "guid": "06c4068a-2562-4cc4-9269-8bdb6b349c3a",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Inclua extensões em suas VMs que protegem contra ameaças. Por exemplo, - Extensão do Key Vault para Windows e Linux - Autenticação de ID do Microsoft Entra - Microsoft Antimalware para Serviços de Nuvem e Máquinas Virtuais do Azure - Extensão do Azure Disk Encryption para Windows e Linux.",
+ "type": "recommendation",
+ "waf": "Segurança"
+ },
+ {
+ "description": "",
+ "guid": "3e760d37-8430-4da5-833d-95bff2d43e4f",
+ "service": "Virtual Machines",
+ "text": "Estime custos realistas. Use a calculadora de preços para estimar os custos de suas VMs. Identifique a melhor VM para sua carga de trabalho usando o seletor de VM. Para obter mais informações, consulte Preços do Linux e do Windows.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "284bc1f9-59a6-491e-8070-d05e31e29ee7",
+ "service": "Virtual Machines",
+ "text": "Implemente proteções de custos. Use políticas de governança para restringir tipos de recursos, configurações e locais. Use o RBAC para bloquear ações que podem levar a gastos excessivos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "353f0d7a-b104-43c3-b3e9-926af6458844",
+ "service": "Virtual Machines",
+ "text": "Escolha os recursos certos. Sua seleção de tamanhos de plano de VM e SKUs afeta diretamente o custo geral. Escolha VMs com base nas características da carga de trabalho. A carga de trabalho é intensiva em CPU ou executa processos interruptíveis? Cada SKU tem opções de disco associadas que afetam o custo geral.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "dff9f383-b459-4359-907e-bd33a92d4bd6",
+ "service": "Virtual Machines",
+ "text": "Escolha os recursos certos para recursos dependentes. Economize nos custos de armazenamento de backup para a camada padrão do cofre usando o armazenamento do Backup do Azure com capacidade reservada. Ele oferece um desconto quando você se compromete com uma reserva de um ou três anos.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "24cfa2c5-9e77-48e8-82ad-c5e98c636a69",
+ "service": "Virtual Machines",
+ "text": "Escolha o modelo de faturamento certo. Avalie se os modelos baseados em compromisso para computação otimizam os custos com base nos requisitos de negócios da carga de trabalho. Considere estas opções do Azure:",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "046215f1-13ee-4fbf-893d-eeafa28ab76b",
+ "service": "Virtual Machines",
+ "text": "Monitore o uso. Monitore continuamente os padrões de uso e detecte VMs não utilizadas ou subutilizadas. Para essas instâncias, desligue as instâncias de VM quando elas não estiverem em uso. O monitoramento é uma abordagem fundamental da Excelência Operacional. Para obter mais informações, consulte as recomendações em Excelência Operacional.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "",
+ "guid": "877c04dd-441f-4202-9b87-9eeb3c60b564",
+ "service": "Virtual Machines",
+ "text": "Procure maneiras de otimizar. Algumas estratégias incluem escolher a abordagem mais econômica entre aumentar os recursos em um sistema existente, ou escalar verticalmente, e adicionar mais instâncias desse sistema, ou escalar horizontalmente. Você pode descarregar a demanda distribuindo-a para outros recursos ou pode reduzir a demanda implementando filas de prioridade, descarregamento de gateway, buffer e limitação de taxa. Para obter mais informações, consulte as recomendações em Eficiência de desempenho.",
+ "type": "checklist",
+ "waf": "custar"
+ },
+ {
+ "description": "Os SKUs são precificados de acordo com os recursos que oferecem. Se você não precisar de recursos avançados, não gaste demais em SKUs. As máquinas virtuais spot aproveitam a capacidade excedente no Azure a um custo menor.",
+ "guid": "90700d86-70f6-433f-b995-b9ad8cfdec84",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Escolha o tamanho e o SKU do plano de VM corretos. Identifique os melhores tamanhos de VM para sua carga de trabalho. Use o seletor de VM para identificar a melhor VM para sua carga de trabalho. Consulte os preços do Windows e do Linux. Para cargas de trabalho como trabalhos de processamento em lotes altamente paralelos que podem tolerar algumas interrupções, considere usar Máquinas Virtuais Spot do Azure. As máquinas virtuais spot são boas para experimentar, desenvolver e testar soluções em grande escala.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Alguns tipos de disco de alto desempenho oferecem recursos e estratégias extras de otimização de custos. A capacidade de ajuste do disco SSD Premium v2 pode reduzir custos porque fornece alto desempenho sem superprovisionamento, o que poderia levar a recursos subutilizados.",
+ "guid": "14211a5a-ea48-4aa1-9f24-e46689328dda",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Avalie as opções de disco associadas aos SKUs da VM. Determine suas necessidades de desempenho, tendo em mente suas necessidades de capacidade de armazenamento e levando em conta os padrões flutuantes de carga de trabalho. Por exemplo, o disco SSD Premium v2 do Azure permite que você ajuste granularmente seu desempenho, independentemente do tamanho do disco.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduza os custos de infraestrutura de computação aplicando os grandes descontos das máquinas virtuais spot.",
+ "guid": "38d3a88b-a84f-46f3-95ce-76a4e245027b",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Combine VMs regulares com máquinas virtuais spot. A orquestração flexível permite distribuir máquinas virtuais spot com base em uma porcentagem especificada.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Reduzir ou interromper recursos quando eles não estão em uso reduz o número de VMs em execução no conjunto de dimensionamento, o que economiza custos. O recurso Start/Stop é uma opção de automação de baixo custo.",
+ "guid": "eccee9b1-70f3-4c96-8223-35e24d842201",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Reduza o número de instâncias de VM quando a demanda diminuir. Defina uma política de redução horizontal com base em critérios. Pare as VMs fora do horário comercial. Você pode usar o recurso Iniciar/Parar da Automação do Azure e configurá-lo de acordo com suas necessidades de negócios.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "Você pode maximizar suas licenças locais enquanto obtém os benefícios da nuvem.",
+ "guid": "3c34c3e4-5715-472e-953e-2d5030bf18a0",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Aproveite a mobilidade de licenças usando o Benefício Híbrido do Azure. As VMs têm uma opção de licenciamento que permite que você traga suas próprias licenças do sistema operacional Windows Server local para o Azure. O Benefício Híbrido do Azure também permite que você traga determinadas assinaturas do Linux para o Azure.",
+ "type": "recommendation",
+ "waf": "Custar"
+ },
+ {
+ "description": "",
+ "guid": "fc1734b9-fefe-403d-bfc9-c2beca6f12a2",
+ "service": "Virtual Machines",
+ "text": "Monitore as instâncias de VM. Colete logs e métricas de instâncias de VM para monitorar o uso de recursos e medir a integridade das instâncias. Algumas métricas comuns incluem uso da CPU, número de solicitações e latência de entrada/saída (E/S). Configure alertas do Azure Monitor para ser notificado sobre problemas e detectar alterações de configuração em seu ambiente.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "724b847d-caf4-4e90-83e7-f4c71e68c4f7",
+ "service": "Virtual Machines",
+ "text": "Monitore a integridade das VMs e suas dependências.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "f99e71a9-05ee-41c2-81b7-8d794763040b",
+ "service": "Virtual Machines",
+ "text": "Crie um plano de manutenção que inclua patches regulares do sistema como parte das operações de rotina. Inclua processos de emergência que permitam a aplicação imediata de patches. Você pode ter processos personalizados para gerenciar a aplicação de patch ou delegar parcialmente a tarefa ao Azure.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "ca34b9c2-69db-4256-a354-c491877f79ac",
+ "service": "Virtual Machines",
+ "text": "Automatize processos de inicialização, execução de scripts e configuração de VMs. Você pode automatizar processos usando extensões ou scripts personalizados. Recomendamos as seguintes opções:",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "821779c7-588f-40af-a740-8dd41fb585fd",
+ "service": "Virtual Machines",
+ "text": "Tenha processos para instalar atualizações automáticas. Considere usar a aplicação automática de patches de convidado de VM para uma distribuição oportuna de patches críticos e patches de segurança. Use o Azure Update Manager para gerenciar atualizações do sistema operacional para suas máquinas virtuais Windows e Linux no Azure.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "079c8821-00dd-4eaf-9cae-5a3dbfd6fdfa",
+ "service": "Virtual Machines",
+ "text": "Crie um ambiente de teste que corresponda ao seu ambiente de produção para testar atualizações e alterações antes de implantá-las na produção. Tenha processos em vigor para testar as atualizações de segurança, linhas de base de desempenho e falhas de confiabilidade. Aproveite as bibliotecas de falhas do Azure Chaos Studio para injetar e simular condições de erro. Para obter mais informações, consulte Biblioteca de falhas e ações do Azure Chaos Studio.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "77cdbef0-ba18-4ef0-9ef4-088931e331c7",
+ "service": "Virtual Machines",
+ "text": "Gerencie sua cota. Planeje o nível de cota que sua carga de trabalho requer e revise esse nível regularmente à medida que a carga de trabalho evolui. Se você precisar aumentar ou diminuir sua cota, solicite essas alterações com antecedência.",
+ "type": "checklist",
+ "waf": "Operações"
+ },
+ {
+ "description": "A orquestração flexível pode gerenciar instâncias de VM em escala. Entregar VMs individuais adiciona sobrecarga operacional. Por exemplo, quando você exclui instâncias de VM, os discos e NICs associados também são excluídos automaticamente. As instâncias de VM são distribuídas em vários domínios de falha para que as operações de atualização não interrompam o serviço.",
+ "guid": "3049efb5-d3ae-4e36-a8fa-12f2c4a44144",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Os Conjuntos de Dimensionamento de Máquinas Virtuais no modo de orquestração flexível podem ajudar a simplificar a implantação e o gerenciamento de sua carga de trabalho. Por exemplo, você pode gerenciar facilmente a autocorreção usando reparos automáticos.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "A segurança é o principal motivo para atualizações. As garantias de segurança para as instâncias não devem diminuir com o tempo. As atualizações contínuas são feitas em lotes, o que garante que todas as instâncias não fiquem inativas ao mesmo tempo.",
+ "guid": "19de83a6-2f87-49b1-8241-d1d687f46658",
+ "service": "Virtual Machines",
+ "text": "(Conjunto de escalas) Mantenha suas VMs atualizadas definindo uma política de atualização. Recomendamos atualizações contínuas. No entanto, se você precisar de controle granular, opte por atualizar manualmente. Para orquestração flexível, você pode usar o Azure Update Manager.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As VMs no conjunto de dimensionamento são criadas e os aplicativos especificados são pré-instalados, o que facilita o gerenciamento.",
+ "guid": "65c832e8-2882-45ed-b239-0e68f74975aa",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Implante automaticamente aplicativos de VM da Galeria de Computação do Azure definindo os aplicativos no perfil.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "As extensões podem ajudar a simplificar a instalação do software em escala sem que você precise instalá-lo, configurá-lo ou atualizá-lo manualmente em cada VM.",
+ "guid": "40266c61-9685-4ee1-8cb6-a899a6b573f2",
+ "service": "Virtual Machines",
+ "text": "Instale componentes de software pré-construídos como extensões como parte da inicialização. O Azure dá suporte a muitas extensões que podem ser usadas para configurar, monitorar, proteger e fornecer aplicativos utilitários para suas VMs. Habilite atualizações automáticas em extensões.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "Os dados de monitoramento estão no centro da resolução de incidentes. Uma pilha de monitoramento abrangente fornece informações sobre o desempenho das VMs e sua integridade. Ao monitorar continuamente as instâncias, você pode estar pronto ou evitar falhas como sobrecarga de desempenho e problemas de confiabilidade.",
+ "guid": "72e210dc-5abb-4569-b650-ec27003bb1cf",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Monitore e meça a integridade das instâncias de VM. Implante a extensão do agente do Monitor em suas VMs para coletar dados de monitoramento do sistema operacional convidado com regras de coleta de dados específicas do sistema operacional. Habilite os insights da VM para monitorar a integridade e o desempenho e exibir tendências dos dados coletados. Use o diagnóstico de inicialização para obter informações à medida que as VMs são inicializadas. O diagnóstico de inicialização também diagnostica falhas de inicialização.",
+ "type": "recommendation",
+ "waf": "Operações"
+ },
+ {
+ "description": "",
+ "guid": "0303e75c-321d-42b0-9226-b05f43633d50",
+ "service": "Virtual Machines",
+ "text": "Defina metas de desempenho. Identifique métricas de VM para rastrear e medir indicadores de desempenho, como tempo de resposta, utilização da CPU e utilização de memória, bem como métricas de carga de trabalho, como transações por segundo, usuários simultâneos e disponibilidade e integridade.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "f2c0ba97-9170-43ab-90b5-b30f159913ba",
+ "service": "Virtual Machines",
+ "text": "Considere o perfil de desempenho de VMs, conjuntos de dimensionamento e configuração de disco em seu planejamento de capacidade. Cada SKU tem um perfil diferente de memória e CPU e se comporta de maneira diferente dependendo do tipo de carga de trabalho. Realize pilotos e provas de conceito para entender o comportamento de desempenho sob a carga de trabalho específica.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "ffee7b2f-b57c-40cc-a8ab-9044dead9dc7",
+ "service": "Virtual Machines",
+ "text": "Ajuste de desempenho da VM. Aproveite a otimização de desempenho e o aprimoramento de recursos conforme exigido pela carga de trabalho. Por exemplo, use Non-Volatile Memory Express (NVMe) conectado localmente para casos de uso de alto desempenho e rede acelerada e use SSD Premium v2 para melhor desempenho e escalabilidade.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "75cf3a03-3d7c-4199-8138-45ff62b1f7a5",
+ "service": "Virtual Machines",
+ "text": "Leve em consideração os serviços dependentes. As dependências de carga de trabalho, como cache, tráfego de rede e redes de distribuição de conteúdo, que interagem com as VMs podem afetar o desempenho. Além disso, considere a distribuição geográfica, como zonas e regiões, que podem adicionar latência.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "739525ea-4d0a-4965-baef-ab0325fbed67",
+ "service": "Virtual Machines",
+ "text": "Colete dados de desempenho. Siga as práticas recomendadas de Excelência Operacional para monitorar e implantar as extensões apropriadas para visualizar métricas que acompanham os indicadores de desempenho.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "",
+ "guid": "39acd43b-a405-439b-83c9-b9d79d9cdba6",
+ "service": "Virtual Machines",
+ "text": "Grupos de posicionamento por proximidade. Use grupos de posicionamento por proximidade em cargas de trabalho em que a baixa latência é necessária para garantir que as VMs estejam fisicamente localizadas próximas umas das outras.",
+ "type": "checklist",
+ "waf": "desempenho"
+ },
+ {
+ "description": "O dimensionamento correto de suas VMs é uma decisão fundamental que afeta significativamente o desempenho de sua carga de trabalho. Sem o conjunto certo de VMs, você pode ter problemas de desempenho e acumular custos desnecessários.",
+ "guid": "67cc04db-4b74-40f4-9bf6-0ba5f758b45e",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Escolha SKUs para VMs que se alinham ao seu planejamento de capacidade. Tenha uma boa compreensão de seus requisitos de carga de trabalho, incluindo o número de núcleos, memória, armazenamento e largura de banda de rede para que você possa filtrar SKUs inadequados.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Os grupos de posicionamento por proximidade reduzem a distância física entre os recursos de computação do Azure, o que pode melhorar o desempenho e reduzir a latência de rede entre VMs autônomas, VMs em vários conjuntos de disponibilidade ou VMs em vários conjuntos de dimensionamento.",
+ "guid": "ef3de2ad-d5b6-4931-9fc7-28249d9300c0",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Implante VMs de carga de trabalho sensíveis à latência em grupos de posicionamento por proximidade.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Os SSDs Premium oferecem VMs de suporte a disco de alto desempenho e baixa latência com cargas de trabalho com uso intensivo de E/S. O SSD Premium v2 não requer redimensionamento de disco, o que permite alto desempenho sem provisionamento excessivo e minimiza o custo da capacidade não utilizada. Quando disponível em SKUs de VM, o NVMe conectado localmente ou dispositivos semelhantes podem oferecer alto desempenho, especialmente para casos de uso que exigem altas operações de entrada/saída por segundo (IOPS) e baixa latência.",
+ "guid": "a91aae92-2b2c-4c88-b268-2c70b995a952",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina o perfil de armazenamento analisando o desempenho do disco das cargas de trabalho existentes e o SKU da VM. Use SSDs Premium para VMs de produção. Ajuste o desempenho dos discos com o SSD Premium v2. Use dispositivos NVMe conectados localmente.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Ele permite a virtualização de E/S de raiz única (SR-IOV) para uma VM, o que melhora muito seu desempenho de rede.",
+ "guid": "57e446da-1b2e-4bdc-abc9-3e978a11e940",
+ "service": "Virtual Machines",
+ "text": "(VMs) Considere habilitar a rede acelerada.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ },
+ {
+ "description": "Se a demanda do aplicativo aumentar, a carga nas instâncias de VM no conjunto de dimensionamento aumentará. As regras de dimensionamento automático garantem que você tenha recursos suficientes para atender à demanda.",
+ "guid": "785858b0-2f0b-476d-9f1e-af92b57314c9",
+ "service": "Virtual Machines",
+ "text": "(VMs, conjunto de dimensionamento) Defina regras de dimensionamento automático para aumentar ou diminuir o número de instâncias de VM em seu conjunto de dimensionamento com base na demanda.",
+ "type": "recommendation",
+ "waf": "Desempenho"
+ }
+ ],
+ "metadata": {
+ "name": "WAF Service Guides",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "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": "Não aplicável para o projeto atual",
+ "name": "N/A"
+ },
+ {
+ "description": "Não é necessário",
+ "name": "Não é necessário"
+ }
+ ],
+ "waf": [
+ {
+ "name": "segurança"
+ },
+ {
+ "name": "Custar"
+ },
+ {
+ "name": "custar"
+ },
+ {
+ "name": "Fiabilidade"
+ },
+ {
+ "name": "fiabilidade"
+ },
+ {
+ "name": "Segurança"
+ },
+ {
+ "name": "desempenho"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Operações"
+ },
+ {
+ "name": "Desempenho"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "Sim"
+ },
+ {
+ "name": "Não"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists-ext/wafsg_checklist.zh-Hant.json b/checklists-ext/wafsg_checklist.zh-Hant.json
new file mode 100644
index 000000000..8c43d06d0
--- /dev/null
+++ b/checklists-ext/wafsg_checklist.zh-Hant.json
@@ -0,0 +1,5618 @@
+{
+ "$schema": "https://raw.githubusercontent.com/Azure/review-checklists/main/checklists/checklist.schema.json",
+ "categories": [],
+ "items": [
+ {
+ "description": "",
+ "guid": "a549f1f2-55ec-4094-b8c5-1be6fd4f4d38",
+ "service": "App Service Web Apps",
+ "text": "確定使用者流的優先順序:並非所有流都同樣重要。為每個流程分配優先順序,以指導您的設計決策。用戶流設計可能會影響為應用服務計劃和配置選擇的服務層級和實例數。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "a67a6739-c1af-48d6-a3d1-001fb5105139",
+ "service": "App Service Web Apps",
+ "text": "預測潛在故障:規劃潛在故障的緩解策略。下表顯示了故障模式分析的範例。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "b47d664a-75c8-4739-80d8-6cf9f60abb56",
+ "service": "App Service Web Apps",
+ "text": "構建冗餘:在應用程式和支援基礎結構中構建冗餘。將實例分散到可用區以提高容錯能力。如果一個區域發生故障,流量將路由到其他區域。跨多個區域部署應用程式,以確保應用程式保持可用,即使整個區域發生中斷也是如此。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "6b8fa1ed-cfa0-4435-9146-b3d1a8edb432",
+ "service": "App Service Web Apps",
+ "text": "制定可靠的擴展策略:應用程式上的意外負載可能會使其不可靠。根據您的工作負載特徵考慮正確的縮放方法。有時,您可以縱向擴展以處理負載。但是,如果負載繼續增加,請橫向擴展到新實例。首選自動縮放而不是手動方法。在縮放操作期間,始終保持額外容量的緩衝區,以防止性能下降。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "ac7f205b-9117-4b49-8f22-9f31528dfdbd",
+ "service": "App Service Web Apps",
+ "text": "規劃可恢復性:冗餘對於業務連續性至關重要。如果一個實例無法訪問,則故障轉移到另一個實例。探索應用服務中的自動修復功能,例如實例的自動修復。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "55917a7d-4410-45fc-bba7-42e64d85c9cd",
+ "service": "App Service Web Apps",
+ "text": "執行可靠性測試:執行負載測試以評估應用程式在負載下的可靠性和性能。測試計劃應包括驗證自動恢復操作的方案。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "dcceb232-19d6-48dc-a91f-5b4907cc3dda",
+ "service": "App Service Web Apps",
+ "text": "使用運行狀況探測來識別無響應的輔助角色:應用服務具有內置功能,可定期 ping Web 應用程式的特定路徑。無響應的實例將從負載均衡器中刪除,並替換為新實例。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "高級應用服務計劃提供高級縮放功能,並確保在發生故障時提供冗餘。",
+ "guid": "696fd187-e2a8-45e8-bbe7-a6d3cb1fca62",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)為生產工作負載選擇應用服務計劃的高級層。 根據您的容量規劃設置最大和最小工作線程數。有關詳細資訊,請參閱應用服務計劃概述。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當多個實例分佈在各個區域時,您的應用程式可以承受單個區域中的故障。流量會自動轉移到其他區域中的正常運行的實例,並在一個區域不可用時保持應用程式的可靠性。",
+ "guid": "830faa5e-7767-4526-8550-547a345dd398",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)啟用區域冗餘。請考慮預置三個以上的實例以增強容錯能力。 檢查區域對區域冗餘的支持,因為並非所有區域都提供此功能。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "禁用 ARR 關聯時,傳入請求將均勻分佈在所有可用節點上。均勻分佈的請求可防止流量使任何單個節點不堪重負。如果節點不可用,則可以將請求無縫重定向到其他正常運行的節點。 避免會話相關性,以確保應用服務實例保持無狀態。無狀態應用服務可降低複雜性,並確保節點之間的行為一致。 刪除粘性會話,以便應用服務可以添加或刪除實例以水平縮放。",
+ "guid": "3551bbd4-1f44-4bca-b25c-53e16f79cafe",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)請考慮禁用應用程式請求路由 (ARR) 關聯功能。ARR 關聯會創建粘性會話,將使用者重定向到處理其先前請求的節點。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "自動修復規則可説明您的應用程式自動從意外問題中恢復。當超出閾值時,配置的規則會觸發修復操作。 自動修復可實現自動主動維護。",
+ "guid": "2a428ce1-dc25-4a1b-baf4-5edc909369fe",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)根據請求計數、慢速請求、記憶體限制以及性能基線中的其他指標定義自動修復規則。將此配置視為擴展策略的一部分。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "運行狀況檢查可以及早發現問題。然後,當運行狀況檢查請求失敗時,系統可以自動採取糾正措施。 負載均衡器將流量從不正常的實例路由出去,從而將使用者定向到正常運行的節點。",
+ "guid": "4dd04acd-7d69-45b8-aa22-223c4ecc0a8c",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)開啟健康檢查功能,並提供回應健康檢查請求的路徑。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "e13358d7-cf1a-4356-a8eb-afe901ca3b36",
+ "service": "App Service Web Apps",
+ "text": "查看安全基線:若要增強託管在應用服務計劃上的應用程式的安全狀況,請查看應用服務的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cedf41d1-6f8a-4898-9cbd-064e66931bfa",
+ "service": "App Service Web Apps",
+ "text": "使用最新的運行時和庫:在進行更新之前,請徹底測試應用程序構建,以便及早發現問題並確保順利過渡到新版本。應用服務支援用於更新現有堆疊和停用終止支援堆疊的語言運行時支援策略。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "469151fd-f51c-43ab-84f7-5d6c01e99fba",
+ "service": "App Service Web Apps",
+ "text": "通過隔離邊界創建分段以遏制違規行為:應用身份分段。例如,實施基於角色的訪問控制 (RBAC) 以根據角色分配特定許可權。遵循最小許可權原則,將訪問許可權限制為僅必要許可權。此外,在網路級別創建分段。在 Azure 虛擬網路中注入應用服務應用以進行隔離,並定義網路安全組 (NSG) 以篩選流量。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "794e1680-facc-4258-89cb-a07f1fa6e4d0",
+ "service": "App Service Web Apps",
+ "text": "對標識應用訪問控制:限制對 Web 應用的向內訪問和從 Web 應用對其他資源的向外訪問。此配置對標識應用訪問控制,並有助於維護工作負載的整體安全態勢。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "0ff3e194-df50-4856-b798-7487e5fc4d34",
+ "service": "App Service Web Apps",
+ "text": "控制進出應用程式的網路流量:不要將應用程式終結點公開給公共 Internet。相反,請在放置在專用子網中的 Web 應用上添加專用終結點。在應用程式前面設置一個與該專用終結點通信的反向代理。請考慮使用應用程式閘道或 Azure Front Door 來實現此目的。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a6fcbd07-0da4-4386-902d-6708c5a5cc23",
+ "service": "App Service Web Apps",
+ "text": "加密數據:使用端到端傳輸層安全性 (TLS) 保護傳輸中的數據。使用客戶管理的金鑰對靜態數據進行完全加密。有關詳細資訊,請參閱使用客戶管理的密鑰進行靜態加密。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "410bf979-2e37-4dfc-82ba-33dc8e9fbbf0",
+ "service": "App Service Web Apps",
+ "text": "減少攻擊面:刪除不需要的預設配置。例如,禁用遠程調試、原始程式碼管理管理員 (SCM) 網站的本地身份驗證和基本身份驗證。禁用不安全的協定,如 HTTP 和檔案傳輸協定 (FTP)。通過 Azure 策略強制實施配置。有關詳細資訊,請參閱 Azure 策略。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "7157fe29-fe06-4c84-965d-8d450ac4bfe0",
+ "service": "App Service Web Apps",
+ "text": "保護應用程式機密:需要處理敏感資訊,例如 API 金鑰或身份驗證令牌。可以在應用設置中使用 Azure Key Vault 引用,而不是直接將這些機密硬編碼到應用程式代碼或配置檔中。當應用程式啟動時,應用服務會自動使用應用的託管標識從Key Vault 中檢索機密值。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ae9e2e30-a31e-4459-ae31-fbcb8307016e",
+ "service": "App Service Web Apps",
+ "text": "為應用程式啟用資源日誌:為應用程式啟用資源日誌,以創建全面的活動跟蹤,在跟蹤安全事件的調查期間提供有價值的數據。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "應用程式從 Key Vault 檢索機密,以驗證來自應用程式的外部通信。Azure 管理標識,不需要預配或輪換任何機密。 對於控制的粒度,您具有不同的身份。如果身份遭到洩露,不同的身份使吊銷變得容易。",
+ "guid": "8f1a9e86-9309-4e41-bde5-0828c15daebf",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)將託管標識分配給 Web 應用。若要保持隔離邊界,請不要在應用程式之間共用或重複使用標識。 如果使用容器進行部署,請確保安全地連接到容器註冊表。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "自定義域使用傳輸層安全性 (TLS) 協定通過 HTTPS 實現安全通信,從而確保對敏感數據的保護並建立使用者信任。",
+ "guid": "cb4271e8-40e1-4cd3-ad1e-5d4584c485d7",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為應用程式配置自定義域。 禁用 HTTP 並僅接受 HTTPS 請求。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用此功能時,您不必在應用程式代碼中使用身份驗證庫,從而降低了複雜性。當請求到達應用程式時,用戶已經過身份驗證。",
+ "guid": "0e19e111-ccad-457f-94b5-ee2deebc553c",
+ "service": "App Service Web Apps",
+ "text": "(應用服務) 評估應用服務內置身份驗證是否是對存取應用程式的使用者進行身份驗證的正確機制。應用服務內置身份驗證與 Microsoft Entra ID 集成。此功能處理跨多個登錄供應商的令牌驗證和使用者身份管理,並支援 OpenID Connect。使用此功能時,您沒有細粒度級別的授權,並且沒有測試身份驗證的機制。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "獲得使用 Azure 虛擬網路的安全優勢。例如,應用程式可以安全地訪問網路內的資源。 添加專用終結點以幫助保護應用程式。專用終結點限制了對公共網路的直接暴露,並允許通過反向代理進行受控訪問。",
+ "guid": "1835b31e-37b4-431a-b783-eb28fec46518",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為虛擬網路整合配置應用程式。 對應用服務應用使用專用終結點。阻止所有公共交通。 通過虛擬網路集成路由容器映射拉取。來自應用程式的所有傳出流量都通過虛擬網路。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "我們不建議將基本身份驗證作為安全部署方法。Microsoft Entra ID 採用基於 OAuth 2.0 令牌的身份驗證,該身份驗證提供了許多優勢和增強功能,可解決與基本身份驗證關聯的限制。 策略限制對應用程式資源的訪問,僅允許來自特定域的請求,並保護跨區域請求。",
+ "guid": "07adcdee-eecc-43c4-9cf8-40e06efa96cc",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)要實施強化,請執行以下操作: - 禁用使用使用者名和密碼的基本身份驗證,以支持基於 Microsoft Entra ID 的身份驗證。 - 關閉遠端調試,以便不打開入站埠。- 啟用 CORS 策略以收緊傳入請求。 - 禁用 FTP 等協定。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "機密與應用的配置分開保存。應用設置在靜態時進行加密。 應用服務還管理機密輪換。",
+ "guid": "298db56c-a733-4a8c-a009-224a1417de53",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)始終使用 Key Vault 引用作為應用設置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "為在應用服務計劃中運行的資源獲取實時保護。防範威脅並增強整體安全態勢。",
+ "guid": "6cd4ee41-8ebd-4a7e-9da4-793705575ea0",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)為應用服務啟用 Microsoft Defender for Cloud。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "日誌記錄捕獲訪問模式。它記錄相關事件,這些事件提供有關使用者如何與應用程式或平臺交互的寶貴見解。這些資訊對於問責制、合規性和安全性目的至關重要。",
+ "guid": "93a4781a-8e68-4ad4-af67-4ae28d534e6e",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)啟用診斷日誌記錄並向應用添加檢測。日誌將發送到 Azure 儲存帳戶、Azure 事件中心和 Log Analytics。有關審核日誌類型的更多資訊,請參閱支援的日誌類型。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "bb84a1f1-7f43-4656-bc0d-70abc288979b",
+ "service": "App Service Web Apps",
+ "text": "估計初始成本:作為成本建模練習的一部分,請使用 Azure 定價計算機根據計劃運行的實例數評估與各個層關聯的大致成本。每個應用服務層都提供不同的計算選項。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "8616b469-c0d7-4da8-afe4-28a9c55941b5",
+ "service": "App Service Web Apps",
+ "text": "評估折扣選項:更高的層級包括專用計算實例。如果工作負載具有可預測且一致的使用模式,則可以應用預留折扣。請確保分析使用方式數據,以確定適合您的工作負荷的預留類型。有關詳細資訊,請參閱使用應用服務預留實例節省成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "08ccd533-7d3f-438e-8274-a30d3e10d81e",
+ "service": "App Service Web Apps",
+ "text": "瞭解使用方式計量:Azure 根據應用服務計劃的定價層按小時費率收費,按比例分配到秒。根據分配 VM 實例的時間,將對計劃中的每個橫向擴展實例收取費用。請注意未充分利用的計算資源,這些資源可能會由於 SKU 選擇欠佳或配置不當的縮減配置而導致過度分配而增加成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "9d33583d-156b-4a49-b361-1eae39f5d6df",
+ "service": "App Service Web Apps",
+ "text": "考慮密度和隔離之間的權衡:可以使用應用服務計劃在同一計算上託管多個應用程式,從而通過共用環境節省成本。有關詳細資訊,請參閱權衡。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "19d66260-5bfe-466e-89b0-f2573223acf9",
+ "service": "App Service Web Apps",
+ "text": "評估縮放策略對成本的影響:在實施自動縮放時,必須正確設計、測試和配置擴展和縮減。為自動縮放建立精確的最大和最小限制。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "b4798bde-d65a-4c44-a75e-e7c8c05df60e",
+ "service": "App Service Web Apps",
+ "text": "優化環境成本:考慮使用“基本”或“免費”層來運行預生產環境。這些層是低性能和低成本。如果您使用“基本”或“免費”層,請使用監管來強制執行該層,限制實例和 CPU 的數量,限制縮放並限制日誌保留。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "0cfc5cbc-61b7-4b64-a2eb-52e15c243cad",
+ "service": "App Service Web Apps",
+ "text": "實施設計模式:此策略可減少工作負載生成的請求量。請考慮使用諸如Backends for Frontends模式和Gateway Aggregation模式之類的模式,這些模式可以最大程度地減少請求數量並降低成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "300e19c7-7406-47ca-aeca-bca5032f2b8a",
+ "service": "App Service Web Apps",
+ "text": "定期檢查與數據相關的成本:延長數據保留期或昂貴的存儲層可能會導致高昂的存儲成本。由於頻寬使用和日誌記錄數據的長期保留,可能會累積更多費用。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "085263b2-cffe-4537-9ecb-75ef967c2985",
+ "service": "App Service Web Apps",
+ "text": "優化部署成本:利用部署槽位來優化成本。該插槽在與生產實例相同的計算環境中運行。對於在插槽之間切換的藍綠部署等方案,可以策略性地使用它們。這種方法最大限度地減少了停機時間,並確保了平穩的過渡。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "與較高級別相比,「免費」和“基本”級別對預算友好。它們為不需要高級計劃的全部功能和性能的非生產環境提供了經濟高效的解決方案。",
+ "guid": "df7294a6-460e-4d50-b4a9-66141caada1d",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)對於較低的環境,請選擇「免費」或“基本”層。我們建議將這些層用於實驗性用途。當您不再需要這些層時,請將其刪除。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "開發/測試計劃為 Azure 服務提供更低的費率,這使得它們在非生產環境中具有成本效益。 使用預留實例預付計算資源費用並獲得大幅折扣。",
+ "guid": "a4bd3bc2-554f-483f-9707-dcf9f1b7cdd2",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)利用折扣並探索以下優惠定價: - 使用開發/測試計劃降低環境。 - 在高級 V3 層和應用服務環境中預配的專用計算的 Azure 預留和 Azure 節省計畫。 將預留實例用於具有可預測使用模式的穩定工作負載。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以及早發現成本飆升、效率低下或意外費用。這種積極主動的方法可説明您提供預算控制,以防止超支。",
+ "guid": "12f02b69-d400-403d-9e8a-1a67ed102764",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)監視應用服務資源產生的成本。在 Azure 門戶中運行成本分析工具。 創建預算和警報以通知利益相關者。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "防止浪費,減少不必要的開支。",
+ "guid": "e48373a3-b551-4715-853c-dee4f114466e",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)當需求減少時進行縮減。若要縮減,請定義縮放規則以減少 Azure Monitor 中的實例數。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "3aa6c22d-807b-4efd-9ebe-b290c995d0b3",
+ "service": "App Service Web Apps",
+ "text": "管理發佈:使用部署槽位有效地管理發佈。您可以將應用程式部署到插槽,執行測試並驗證其功能。驗證后,您可以無縫地將應用程式移動到生產環境。此過程不會產生額外費用,因為插槽在與生產實例相同的虛擬機 (VM) 環境中運行。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "751098a9-7103-4250-bd52-f48a5fbe8b73",
+ "service": "App Service Web Apps",
+ "text": "運行自動化測試:在提升 Web 應用的發佈之前,請全面測試其性能、功能以及與其他元件的整合。使用 Azure 負載測試,它與 Apache JMeter(一種用於效能測試的常用工具)集成。探索用於其他類型測試的自動化工具,例如用於功能測試的 Phantom。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "0de22a93-9404-4512-b374-6c753628943e",
+ "service": "App Service Web Apps",
+ "text": "部署不可變單元:實現部署標記模式,將應用服務劃分為不可變標記。應用服務支援使用容器,這些容器本質上是不可變的。請考慮為應用服務 Web 應用設置自訂容器。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "3175ebdb-2846-4f48-b450-278df163c188",
+ "service": "App Service Web Apps",
+ "text": "確保生產環境安全:創建單獨的應用服務計劃以運行生產環境和預生產環境。不要直接在生產環境中進行更改,以確保穩定性和可靠性。在將更改提升到生產環境之前,使用單獨的實例可以靈活地進行開發和測試。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "b883e190-a830-4bf4-8c08-ee3b85248abf",
+ "service": "App Service Web Apps",
+ "text": "管理證書:對於自定義域,您需要管理 TLS 證書。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "您可以及時發現問題並採取必要的措施來保持可用性和性能。",
+ "guid": "75f6aad9-2abc-4171-9715-ba708928d39a",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)監控實例的運行狀況並啟動實例運行狀況探測。設置用於處理運行狀況探測請求的特定路徑。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌提供有關應用行為的寶貴見解。監控流量模式並識別異常情況。",
+ "guid": "91d861ad-a4ae-462e-8775-56cbecb31951",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)為應用程式和實例啟用診斷日誌。 頻繁的日誌記錄可能會降低系統的性能,增加存儲成本,並且如果您無法安全地訪問日誌,還會帶來風險。請遵循以下最佳實踐: - 記錄正確級別的資訊。 - 設置保留策略。 - 保留對授權訪問和未經授權的嘗試的審計跟蹤。- 將日誌視為數據,並應用數據保護控制。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應用服務會自動處理證書獲取、證書驗證、證書續訂和從 Key Vault 導入證書等過程。或者,將證書上傳到 Key Vault,並授權應用服務資源供應商訪問它。",
+ "guid": "70e24ecc-5113-4d7d-8a79-8ac24fe1f838",
+ "service": "App Service Web Apps",
+ "text": "(應用服務)利用應用服務託管證書將證書管理卸載到 Azure。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "避免停機和錯誤。 如果在交換后檢測到問題,請快速恢復到上次已知的良好狀態。",
+ "guid": "7a592a00-a940-4d2e-a919-56ad3237092e",
+ "service": "App Service Web Apps",
+ "text": "(應用服務計劃)在將暫存槽與生產槽交換應用之前,請驗證該應用在過渡槽中的更改。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "018624c9-6396-4e1c-8b0c-83d39b40c2a1",
+ "service": "App Service Web Apps",
+ "text": "識別和監控性能指標:為應用程式的關鍵指標設置目標,例如傳入請求的數量、應用程式回應請求所需的時間、待處理的請求以及 HTTP 回應中的錯誤。將關鍵指標視為工作負載性能基線的一部分。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "c66aabbd-8b2a-4295-9492-78cd5aea690a",
+ "service": "App Service Web Apps",
+ "text": "評估容量:類比各種使用者方案,以確定處理預期流量所需的最佳容量。使用負載測試來瞭解應用程式在不同負載級別下的行為方式。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "7e11019e-4329-458a-b84a-9233aa8de1a5",
+ "service": "App Service Web Apps",
+ "text": "選擇正確的層:將專用計算用於生產工作負載。高級層提供更大的 SKU,具有更高的記憶體和 CPU 容量、更多實例和更多功能,例如區域冗餘。有關詳細資訊,請參閱高級 V3 定價層。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "97fdfb16-a73b-497a-853a-fe608cfc1750",
+ "service": "App Service Web Apps",
+ "text": "優化縮放策略:如果可能,請使用自動縮放,而不是在應用程式負載發生變化時手動調整實例數。通過自動縮放,應用服務會根據預定義的規則或觸發器調整伺服器容量。確保進行充分的性能測試,併為正確的觸發器設置正確的規則。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "45d7e1a5-2b7e-4b6b-8925-bf0b760a9d7e",
+ "service": "App Service Web Apps",
+ "text": "使用緩存:從不經常更改且訪問成本高昂的資源中檢索信息會影響性能。複雜的查詢(包括聯接和多次查找)會影響運行時。執行快取以最大程度地減少處理時間和延遲。緩存查詢結果,避免重複往返資料庫或後端,減少後續請求的處理時間。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "c8094d1c-6371-4984-98c1-ca5d72a7732d",
+ "service": "App Service Web Apps",
+ "text": "查看性能反模式:若要確保 Web 應用程式根據業務需求執行和縮放,請避免使用典型的反模式。下面是應用服務更正的一些反模式。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "在啟用 Always On 的情況下,應用程式永遠不會卸載。",
+ "guid": "2c97ff90-e7cd-4888-a0c9-c21ea287071c",
+ "service": "App Service Web Apps",
+ "text": "當應用程式共用單個應用服務計劃時,啟用 Always On 設置。應用服務應用在空閒時自動卸載以節省資源。下一個請求會觸發冷啟動,這可能會導致請求超時。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "選擇 HTTP/2 而不是 HTTP/1.1,因為 HTTP/2 完全多路複用連接,重用連接以減少開銷,並壓縮標頭以最大程度地減少數據傳輸。",
+ "guid": "d735fb9e-9e87-415c-93d0-4918b5cf104e",
+ "service": "App Service Web Apps",
+ "text": "考慮將 HTTP/2 用於應用程式以提高協定效率。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "ee4fab35-3fcf-469c-aa4a-baaa7ea46a76",
+ "service": "Azure Application Gateway",
+ "text": "在區域感知配置中部署實例(如果可用)。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "897c9b7a-c56c-4390-9938-71ed0ee875d8",
+ "service": "Azure Application Gateway",
+ "text": "在虛擬網路中將應用程式閘道與 Web 應用程式防火牆 (WAF) 配合使用,以保護來自 Internet 的入站“HTTP/S”流量。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "9d1d0113-dcc3-4309-bf89-57f43eff537c",
+ "service": "Azure Application Gateway",
+ "text": "在新部署中,除非有令人信服的理由使用 Azure 應用程式閘道 v1,否則請使用 Azure 應用程式閘道 v2。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "規劃規則更新",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "使用運行狀況探測檢測後端不可用",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "查看間隔和閾值設置對運行狀況探測的影響",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "通過運行狀況終結點驗證下游依賴項",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "在存取應用程式閘道或進行進一步更改之前,請規劃足夠的更新時間進行更新。例如,從後端池中刪除伺服器可能需要一些時間,因為它們必須耗盡現有連接。",
+ "guid": "f6991e25-5c9d-4b36-9df6-d4cd17d6d7cc",
+ "service": "Azure Application Gateway",
+ "text": "規劃規則更新",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "如果使用應用程式閘道對多個後端實例上的傳入流量進行負載均衡,建議使用運行狀況探測。這些將確保流量不會路由到無法處理流量的後端。",
+ "guid": "93d5c5fc-95da-40dc-a935-bcdf72bb49bc",
+ "service": "Azure Application Gateway",
+ "text": "使用運行狀況探測檢測後端不可用",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "運行狀況探測按設定的時間間隔向配置的終結點發送請求。此外,在後端被標記為不正常之前,還可以容忍失敗請求的閾值。這些數位需要權衡取捨。- 設置更高的間隔會給您的服務帶來更高的負載。每個應用程式閘道實例都會發送自己的運行狀況探測,因此每30秒100個實例意味著每30秒有100個請求。- 設置較低的間隔會在檢測到中斷之前留出更多時間。- 設置較低的不正常閾值可能意味著短暫的暫時性故障可能會使後端癱瘓。- 設置高閾值可能需要更長的時間才能將後端從輪換中移除。",
+ "guid": "e4a0745d-0b8a-459b-8fc0-0399061a6425",
+ "service": "Azure Application Gateway",
+ "text": "查看間隔和閾值設置對運行狀況探測的影響",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "假設每個後端都有自己的依賴項,以確保故障被隔離。例如,託管在應用程式閘道後面的應用程式可能有多個後端,每個後端都連接到不同的資料庫(副本)。當此類依賴項失敗時,應用程式可能正在運行,但不會返回有效結果。因此,理想情況下,運行狀況終結點應驗證所有依賴項。請記住,如果對運行狀況終結點的每次調用都有一個直接依賴項調用,則該資料庫每 30 秒將接收 100 個查詢,而不是 1 個。為避免這種情況,運行狀況終結點應在短時間內緩存依賴項的狀態。",
+ "guid": "4d7b12c2-d9bb-4547-8238-c2c93491afed",
+ "service": "Azure Application Gateway",
+ "text": "通過運行狀況終結點驗證下游依賴項",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "某些方案可能會強制你專門在應用程式閘道上實施規則。例如,如果需要ModSec CRS 2.2.9、CRS 3.0或 CRS 3.1 規則,則這些規則只能在應用程式閘道上實現。相反,速率限制和地理篩選僅在 Azure Front Door 上可用,在 AppGateway 上不可用。",
+ "guid": "2cc68719-238d-40f1-9eda-37a4b77cabc2",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Front Door 和應用程式閘道保護 HTTP/S“應用程式時,請在 Front Door 中使用 WAF 策略並鎖定應用程式閘道以僅接收來自 Azure Front Door 的流量。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "設置 TLS 策略以增強安全性",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "使用 AppGateway 進行 TLS 終止",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Key Vault 儲存 TLS 證書",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "重新加密後端流量時,請確保後端伺服器證書包含根證書頒發機構 (CA) 和中間證書頒發機構 (CA)",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "對後端池資源使用適當的 DNS 伺服器",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "遵守應用程式閘道的所有 NSG 限制",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5ff5e810-ac1d-42ef-9a30-812c15c42be8",
+ "service": "Azure Application Gateway",
+ "text": "避免在應用程式閘道子網上使用UDR",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "啟用 WAF 時,請注意應用程式閘道容量更改",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "設置 TLS 策略以提高安全性。確保您始終使用可用的最新 TLS 策略版本。這將強制執行 TLS 1.2 和更強的密碼。",
+ "guid": "c394ed0c-ddb2-4efa-b4eb-deb2f11cff32",
+ "service": "Azure Application Gateway",
+ "text": "設置 TLS 策略以增強安全性",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用應用程式閘道進行 TLS 終止具有以下優點:- 性能提高,因為發送到不同後端的請求必須重新向每個後端進行身份驗證。- 更好地利用後端伺服器,因為它們不必執行 TLS 處理- 通過訪問請求內容實現智慧路由。- 更易於證書管理,因為證書只需安裝在應用程式網關上。",
+ "guid": "f2c0a397-56bb-45f1-ac4d-b1837045db05",
+ "service": "Azure Application Gateway",
+ "text": "使用 AppGateway 進行 TLS 終止",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "應用程式閘道可以與 Key Vault 整合。這提供了更強大的安全性、更輕鬆的角色和職責分離、對託管證書的支援以及更輕鬆的證書續訂和輪換過程。",
+ "guid": "db6594c5-00d9-42e3-9190-0da310bd8af5",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Key Vault 儲存 TLS 證書",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "後端伺服器的TLS證書必須由知名的CA頒發。如果證書不是由受信任的 CA 頒發的,則應用程式閘道會檢查證書是否由受信任的 CA 頒發,依此類推,直到找到受信任的 CA 證書。只有這樣才能建立安全連接。否則,應用程式閘道會將後端標記為不正常。",
+ "guid": "79778b7d-1a8d-47bf-9000-cfe8f28007ed",
+ "service": "Azure Application Gateway",
+ "text": "重新加密後端流量時,請確保後端伺服器證書包含根證書頒發機構 (CA) 和中間證書頒發機構 (CA)",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "當後端池包含可解析的 FQDN 時,DNS 解析基於專用 DNS 區域或自定義 DNS 伺服器(如果在 VNet 上配置),或者使用 Azure 提供的預設 DNS。",
+ "guid": "32630271-62af-4005-933b-36e73b3d6c43",
+ "service": "Azure Application Gateway",
+ "text": "對後端池資源使用適當的 DNS 伺服器",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "應用程式閘道子網支援 NSG,但存在一些限制。例如,禁止與某些埠範圍進行某些通信。確保您了解這些限制的含義。有關詳細資訊,請參閱網路安全組。",
+ "guid": "5644f4cb-0c54-41d6-9aff-27357089743c",
+ "service": "Azure Application Gateway",
+ "text": "遵守應用程式閘道的所有 NSG 限制",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在應用程式閘道子網上使用使用者定義的路由 (UDR) 可能會導致一些問題。後端的運行狀況可能是未知的。可能無法生成應用程式閘道日誌和指標。建議不要在應用程式閘道子網上使用UDR,以便可以查看後端運行狀況、日誌和指標。如果組織需要在應用程式閘道子網中使用 UDR,請確保查看支援的方案。有關詳細資訊,請參閱支援的使用者自定義路由。",
+ "guid": "96ac0266-6e5d-4944-bccb-0c6b3bd00b89",
+ "service": "Azure Application Gateway",
+ "text": "避免在應用程式閘道子網上使用UDR",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "啟用WAF后,應用程式閘道必須緩衝每個請求,直到它完全到達,檢查請求是否與其核心規則集中的任何規則衝突匹配,然後將數據包轉發到後端實例。當有大檔上傳(大小為 30MB+)時,可能會導致嚴重的延遲。由於應用程式閘道的容量要求與 WAF 不同,因此建議在未進行適當測試和驗證的情況下在應用程式閘道上啟用 WAF。",
+ "guid": "3ac67acb-dcca-413d-b0f9-50441d51675f",
+ "service": "Azure Application Gateway",
+ "text": "啟用 WAF 時,請注意應用程式閘道容量更改",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "熟悉應用程式閘道定價",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "審查未充分利用的資源",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "03e1fbfa-86c2-4550-a6aa-e111d6ab895d",
+ "service": "Azure Application Gateway",
+ "text": "停止未使用的應用程式閘道實例",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "具有縮減和橫向擴展策略",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "查看不同參數的消耗指標",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "有關應用程式閘道定價的資訊,請參閱瞭解 Azure 應用程式閘道和 Web 應用程式防火牆的定價。您還可以利用定價計算機。確保選項的大小足夠大,以滿足容量需求,並在不浪費資源的情況下提供預期的性能。",
+ "guid": "dc1995b1-dcc3-4864-a862-0c5ceeb3452c",
+ "service": "Azure Application Gateway",
+ "text": "熟悉應用程式閘道定價",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "識別並刪除後端池為空的應用程式閘道實例,以避免不必要的成本。",
+ "guid": "baadcfab-050c-4d30-a79a-a235e775836a",
+ "service": "Azure Application Gateway",
+ "text": "審查未充分利用的資源",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "當應用程式閘道處於停止狀態時,不會向你收費。持續運行的應用程式閘道實例可能會產生額外的成本。評估使用模式,並在不需要實例時停止實例。例如,在開發/測試環境中,下班后的使用率預計會很低。有關如何停止和啟動實例的資訊,請參閱以下文章。",
+ "guid": "6af81413-0516-4067-9e26-8aad8d2d06ca",
+ "service": "Azure Application Gateway",
+ "text": "在不使用時停止應用程式閘道實例",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "橫向擴展策略可確保有足夠的實例來處理傳入流量和峰值。此外,制定縮減策略,確保在需求下降時減少實例數量。考慮實例大小的選擇。大小會對成本產生重大影響。估計應用程式閘道實例計數中介紹了一些注意事項。有關詳細資訊,請參閱什麼是 Azure 應用程式閘道 v2?",
+ "guid": "a63e6bb7-8040-4b43-9d0e-6ca8a3413315",
+ "service": "Azure Application Gateway",
+ "text": "具有縮減和橫向擴展策略",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據 Azure 跟蹤的指標,根據應用程式閘道的計量實例進行計費。評估各種指標和容量單位,並確定成本驅動因素。有關詳細資訊,請參閱 Microsoft 成本管理和計費。以下指標是應用程式閘道的關鍵。此資訊可用於驗證預配的實例計數是否與傳入流量匹配。 估計的計費容量單位- 固定計費容量單位- 當前容量單位有關詳細資訊,請參閱應用程式網關指標。請確保將頻寬成本考慮在內。",
+ "guid": "352664a9-dea7-4e45-9f4a-b1160768ac1b",
+ "service": "Azure Application Gateway",
+ "text": "查看不同參數的消耗指標",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "監控容量指標",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "在應用程式閘道和 Web 應用程式防火牆 (WAF) 上啟用診斷Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Monitor 網路見解",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "將超時設置與後端應用程式匹配",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure 顧問監視 Key Vault 配置問題",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "78bbcbf2-30c3-4c77-8e8f-8faf4c4b817d",
+ "service": "Azure Application Gateway",
+ "text": "配置和監視 SNAT 埠限制",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "在設計中考慮 SNAT 埠限制",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "使用這些指標作為預配的應用程式閘道容量利用率的指標。我們強烈建議設置有關容量的警報。有關詳細資訊,請參閱應用程式網關高流量支援。",
+ "guid": "2aeef441-2f0c-4f28-b3fe-85bb210e70d4",
+ "service": "Azure Application Gateway",
+ "text": "監控容量指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "還有其他指標可以指示應用程式閘道或後端的問題。建議評估以下警報:- 不正常主機計數 - 響應狀態 (維度 4xx 和 5xx) - 後端回應狀態 (維度 4xx 和 5xx) - 後端最後一個字節回應時間 - 應用程式網關總時間有關詳細資訊,請參閱應用程式網關的指標。",
+ "guid": "af883a3e-1ece-4f8a-9732-95a461fe244c",
+ "service": "Azure Application Gateway",
+ "text": "使用指標進行故障排除",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌允許您查看防火牆日誌、性能日誌和訪問日誌。使用這些日誌來管理和排查應用程式閘道實例的問題。有關詳細資訊,請參閱應用程式網關的後端運行狀況和診斷日誌。",
+ "guid": "2a3d27da-fdb8-49b0-95ed-7f9b32b4f7ca",
+ "service": "Azure Application Gateway",
+ "text": "在應用程式閘道和 Web 應用程式防火牆 (WAF) 上啟用診斷Enable diagnostics on Application Gateway and Web Application Firewall (WAF)",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Monitor 網路見解提供網路資源(包括應用程式閘道)的運行狀況和指標的全面檢視。有關應用程式閘道的其他詳細資訊和支援的功能,請參閱 Azure Monitor 網路見解。",
+ "guid": "69a9c288-6a98-447b-92f8-68c84adc85cd",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure Monitor 網路見解",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "確保您已配置 IdleTimeout 設定以符合後端應用程式的偵聽器和流量特徵。默認值設置為 4 分鐘,最大值為 30 分鐘。有關詳細資訊,請參閱Load Balancer TCP Reset and Idle Timeout。有關工作負載注意事項,請參閱Monitoring application health for reliability。",
+ "guid": "82f522dd-25e0-4e7c-a547-bc23577f7f1c",
+ "service": "Azure Application Gateway",
+ "text": "將超時設置與後端應用程式匹配",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應用程式閘道每 4 小時檢查一次連結的 Key Vault 中是否存在續訂的證書版本。如果由於任何不正確的 Key Vault 配置而無法訪問它,它會記錄該錯誤並推送相應的顧問建議。您必須配置 Advisor 警報以保持更新並立即修復此類問題,以避免任何與控制或數據平面相關的問題。有關詳細資訊,請參閱調查和解決密鑰保管庫錯誤。若要為此特定情況設置警報,請使用“建議類型”作為應用程式網關的“解決 Azure Key Vault 問題”。",
+ "guid": "6f9954fb-dff1-4d54-8672-0c1245908dca",
+ "service": "Azure Application Gateway",
+ "text": "使用 Azure 顧問監視 Key Vault 配置問題",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "SNAT 埠限制對於應用程式閘道上的後端連接非常重要。有一些單獨的因素會影響應用程式閘道達到 SNAT 埠限制的方式。例如,如果後端是公共IP位址,則需要自己的SNAT埠。為了避免 SNAT 埠限制,可以增加每個應用程式閘道的實例數,橫向擴展後端以具有更多 IP 位址,或者將後端移動到同一虛擬網路中併為後端使用專用 IP 位址。如果達到 SNAT 埠限制,應用程式閘道上的每秒請求數 (RPS) 將受到影響。例如,如果應用程式閘道達到 SNAT 埠限制,則它將無法打開與後端的新連接,並且請求將失敗。",
+ "guid": "ca428415-6120-410f-9a91-c1baeb6c0084",
+ "service": "Azure Application Gateway",
+ "text": "在設計中考慮 SNAT 埠限制",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "261fdf60-ce3b-4abd-8a85-b39ebb208df9",
+ "service": "Azure Application Gateway",
+ "text": "估計應用程式閘道實例計數",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "定義最大實例計數",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "定義最小實例計數",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "定義應用程式閘道子網大小",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "958240c8-23f1-447d-9cb7-ce9edb5aa606",
+ "service": "Azure Application Gateway",
+ "text": "利用應用程式閘道 V2 功能實現自動縮放和性能優勢",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "對於應用程式閘道 v2 SKU,自動縮放需要一些時間(大約 6 到 7 分鐘),然後額外的實例集才能準備好為流量提供服務。在此期間,如果流量出現短暫的高峰,則會出現暫時性延遲或流量丟失。我們建議您將最小實例計數設置為最佳水準。在估計平均實例計數並確定應用程式閘道自動縮放趨勢後,請根據應用程式模式定義最小實例計數。有關資訊,請參閱應用程式閘道高流量支援。檢查過去一個月的當前計算單元。此指標表示閘道的CPU利用率。要定義最小實例計數,請將峰值使用量除以 10。例如,如果過去一個月的平均當前計算單位數為50,則將最小實例計數設置為5。",
+ "guid": "4d24ceaf-6ff5-4b88-96e2-851546c368c1",
+ "service": "Azure Application Gateway",
+ "text": "定義最小實例計數",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "建議將 125 作為最大自動縮放實例計數。請確保具有應用程式閘道的子網具有足夠的可用IP位址來支援縱向擴展實例集。將最大實例計數設置為125不會產生任何成本影響,因為您只需為已使用的容量付費。",
+ "guid": "895dcecb-9895-4a39-bafd-4df574353366",
+ "service": "Azure Application Gateway",
+ "text": "定義最大實例計數",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "應用程式閘道需要虛擬網路中的專用子網。子網可以包含已部署的應用程式閘道資源的多個實例。還可以在該子網 v1 或 v2 SKU 中部署其他應用程式閘道資源。以下是定義子網大小的一些注意事項:- 應用程式閘道為每個實例使用一個專用IP位址,如果配置了專用前端IP,則使用另一個專用IP位址。- Azure 在每個子網中保留5個IP位址供內部使用。- 應用程式閘道(標準或 WAF SKU)最多可支援 32 個實例。以 32 個實例 IP 位址 + 1 個專用前端 IP + 5 個 Azure 預留為例,建議最小子網大小為 /26。由於 Standard_v2 或 WAF_v2 SKU 最多可以支援 125 個實例,因此使用相同的計算,建議使用子網大小為 /24。- 如果要在同一子網中部署其他應用程式網關資源,請考慮標準和標準 v2 的最大實例計數所需的其他 IP 位址。",
+ "guid": "57675336-826b-4523-b248-bfe3c324c38a",
+ "service": "Azure Application Gateway",
+ "text": "定義應用程式閘道子網大小",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "v2 SKU 提供自動縮放功能,以確保應用程式閘道可以隨著流量的增加而縱向擴展。與 v1 SKU 相比,v2 具有增強工作負載性能的功能。例如,更好的 TLS 卸載性能、更快的部署和更新時間、區域冗餘等。有關自動縮放功能的詳細資訊,請參閱縮放應用程式網關 v2 和 WAF v2。如果運行的是 v1 SKU 應用程式閘道,請考慮遷移到應用程式閘道 v2 SKU。有關詳細資訊,請參閱將 Azure 應用程式閘道和 Web 應用程式防火牆從 v1 遷移到 v2。",
+ "guid": "508791c8-897f-4490-8590-fc33a9df8f73",
+ "service": "Azure Application Gateway",
+ "text": "利用自動縮放和性能優勢的功能",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "d68b4fc0-fd9c-499a-9fd4-2c572735bd36",
+ "service": "Azure Blob Storage",
+ "text": "使用故障模式分析:通過考慮內部依賴項(例如虛擬網路、Azure Key Vault 或 Azure 內容分發網路或 Azure Front Door 終結點的可用性)來最大程度地減少故障點。如果工作負載訪問 Blob 儲存所需的憑據從 Key Vault 中丟失,或者工作負載使用基於已刪除的內容分發網路的終結點,則可能會發生故障。在這些情況下,工作負載可能需要使用備用終結點進行連接。有關故障模式分析的一般資訊,請參閱執行故障模式分析的建議。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "817f9103-607a-4e3d-ba94-1a3adffaff8f",
+ "service": "Azure Blob Storage",
+ "text": "定義可靠性和恢復目標:查看 Azure 服務級別協定 (SLA)。派生存儲帳戶的服務級別目標 (SLO)。例如,SLO 可能會受到所選冗餘配置的影響。考慮區域性中斷的影響、數據丟失的可能性以及中斷后恢復訪問所需的時間。此外,還要考慮在故障模式分析過程中確定的任何內部依賴項的可用性。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Blob Storage",
+ "text": "配置數據冗餘:為了獲得最大的持久性,請選擇跨可用性區域或全球區域複製數據的配置。為了獲得最大可用性,請選擇一種配置,該配置允許用戶端在主要區域中斷期間從次要區域讀取數據。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "e71dbbd7-5e50-4ade-b5e5-4b9e59d10706",
+ "service": "Azure Blob Storage",
+ "text": "設計應用程式:設計應用程式以在主要區域因任何原因不可用時無縫切換到從次要區域讀取數據。這僅適用於異地冗餘存儲 (GRS) 和異地區域冗餘存儲 (GZRS) 配置。設計用於處理中斷的應用程式可減少最終使用者的停機時間。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "2243ff8e-7ce3-4999-9eee-3b3377f4df8b",
+ "service": "Azure Blob Storage",
+ "text": "探索可幫助您實現恢復目標的功能:使 blob 可還原,以便在它們被錯誤損壞、編輯或刪除時可以恢復它們。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Blob Storage",
+ "text": "創建恢復計劃:考慮數據保護功能、備份和還原操作或故障轉移過程。為潛在的數據丟失和數據不一致以及故障轉移的時間和成本做好準備。有關詳細資訊,請參閱有關設計災難恢復策略的建議。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "ffdb383d-6a9a-4ebb-b902-12320390dd84",
+ "service": "Azure Blob Storage",
+ "text": "監視潛在的可用性問題:訂閱 Azure 服務運行狀況儀錶板以監視潛在的可用性問題。使用 Azure Monitor 中的存儲指標和診斷日誌來調查警報。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "冗餘可保護您的數據免受意外故障的影響。ZRS 和 GZRS 設定選項可在不同的可用性區域之間複製,並使應用程式能夠在中斷期間繼續讀取數據。有關詳細資訊,請參閱按中斷方案劃分的持久性和可用性以及持久性和可用性參數。",
+ "guid": "e426149f-841f-4865-878e-311cfe914db9",
+ "service": "Azure Blob Storage",
+ "text": "配置您的帳戶以實現冗餘。為了獲得最大的可用性和持久性,請使用區域冗餘存儲 (ZRS) 或 GZRS 配置您的帳戶。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此屬性可幫助您估計啟動帳戶故障轉移時可能丟失的數據量。在上次同步時間之前寫入的所有數據和元數據在次要區域上都可用,但在上次同步時間之後寫入的數據和元數據可能會丟失,因為它不會寫入次要區域。",
+ "guid": "f42e13de-f6f3-4fad-97f3-f657b8aa1f6c",
+ "service": "Azure Blob Storage",
+ "text": "在啟動故障轉移或故障回復之前,請通過檢查上次同步時間屬性的值來評估數據丟失的可能性。此建議僅適用於 GRS 和 GZRS 配置。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "使用軟刪除選項,存儲帳戶可以恢復已刪除的容器和 Blob。版本控制選項會自動跟蹤對 blob 所做的更改。此選項使您可以將 blob 還原到以前的狀態。時間點還原選項可防止意外刪除或損壞 blob,並允許將塊 blob 數據還原到早期狀態。有關詳細資訊,請參閱數據保護概述。",
+ "guid": "6ba14c6a-6f37-46a3-a2a8-e38373925d6f",
+ "service": "Azure Blob Storage",
+ "text": "作為備份和恢復策略的一部分,請啟用容器軟刪除、blob 軟刪除、版本控制和時間點還原選項。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "5738d99e-ae27-47ca-959c-0dabef735931",
+ "service": "Azure Blob Storage",
+ "text": "查看 Azure 儲存的安全基線:若要開始,請先查看存儲的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "54dc05f5-631d-41ac-8ad7-40a451e48efd",
+ "service": "Azure Blob Storage",
+ "text": "使用網路控制來限制入口和出口流量:禁用到存儲帳戶的所有公共流量。使用帳戶網路控制來授予用戶和應用程式所需的最低訪問許可權級別。有關詳細資訊,請參閱如何處理存儲帳戶的網路安全。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3d39bc4a-58c1-4d69-8116-751252d03104",
+ "service": "Azure Blob Storage",
+ "text": "減少攻擊面:阻止匿名訪問、帳戶密鑰訪問或通過非安全 (HTTP) 連接進行訪問可以減少攻擊面。要求用戶端使用最新版本的傳輸層安全性 (TLS) 協定發送和接收數據。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b0e33ead-c6ca-4386-acee-30e929390ca0",
+ "service": "Azure Blob Storage",
+ "text": "在不使用密碼或密鑰的情況下授權訪問:與共用密鑰和共用訪問簽名相比,Microsoft Entra ID 提供卓越的安全性和易用性。僅向安全主體授予他們執行任務所需的許可權。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c2d96110-7950-4f81-8c41-34e1fa015631",
+ "service": "Azure Blob Storage",
+ "text": "保護敏感資訊:保護敏感資訊,例如帳戶密鑰和共用訪問簽名令牌。雖然通常不建議使用這些形式的授權,但您應確保輪換、過期並安全地存儲它們。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cd6916c2-09f8-4269-971d-60a07e57cbbd",
+ "service": "Azure Blob Storage",
+ "text": "啟用「需要安全傳輸」選項:為所有存儲帳戶啟用此設置可確保針對存儲帳戶發出的所有請求都必須通過安全連接進行。通過 HTTP 發出的任何請求都將失敗。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "f944c199-636d-46b4-bc23-ee8bdfefa7a5",
+ "service": "Azure Blob Storage",
+ "text": "保護關鍵物件:應用不可變性策略來保護關鍵物件。策略可防止出於法律、合規性或其他業務目的而存儲的 blob 被修改或刪除。為設定的時間段配置保全,或在管理員解除限制之前配置保全。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "80a10cbe-93f3-410a-b7ad-d7b5234add61",
+ "service": "Azure Blob Storage",
+ "text": "檢測威脅:啟用 Microsoft Defender for Storage 以檢測威脅。當活動出現異常時,將觸發安全警報。警報通過電子郵件通知訂閱管理員,其中包含可疑活動的詳細資訊以及有關如何調查和修正威脅的建議。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "當允許對存儲帳戶進行匿名訪問時,具有適當許可權的使用者可以修改容器的匿名訪問設置,以啟用對該容器中數據的匿名訪問。",
+ "guid": "4380d8e1-fdb6-45da-a1e1-109e162f43d3",
+ "service": "Azure Blob Storage",
+ "text": "禁用對容器和 blob 的匿名讀取訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "鎖定帳戶可以防止其被刪除並導致數據丟失。",
+ "guid": "09543d14-a0c7-49dc-89d1-74b1913c3b03",
+ "service": "Azure Blob Storage",
+ "text": "在存儲帳戶上應用 Azure 資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "從零訪問開始,然後逐步授權客戶端和服務所需的最低訪問級別,以最大限度地降低為攻擊者創造不必要機會的風險。",
+ "guid": "1b8c4090-6b15-45e0-8833-ee5285ebd444",
+ "service": "Azure Blob Storage",
+ "text": "禁用流向存儲帳戶的公共終結點的流量。為在 Azure 中運行的用戶端創建專用終結點。僅當 Azure 外部的用戶端和服務需要直接存取記憶體帳戶時,才啟用公共終結點。啟用防火牆規則,限制對特定虛擬網路的訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 RBAC,沒有可以洩露的密碼或金鑰。安全主體(使用者、組、託管標識或服務主體)由 Microsoft Entra ID 進行身份驗證,以返回 OAuth 2.0 令牌。令牌用於授權針對 Blob 儲存服務的請求。",
+ "guid": "2ecbd38b-7ae5-4858-916a-0554e8f2d41d",
+ "service": "Azure Blob Storage",
+ "text": "使用 Azure 基於角色的存取控制 (RBAC) 授權存取權限。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "僅允許使用 Microsoft Entra ID 授權的安全請求。",
+ "guid": "4d731629-d6d3-4aa9-b46f-6259451f08f0",
+ "service": "Azure Blob Storage",
+ "text": "禁止共用金鑰授權。這不僅會禁用帳戶密鑰訪問,還會禁用服務和帳戶共用訪問簽名令牌,因為它們基於帳戶密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Key Vault 允許在運行時檢索金鑰,而不是使用應用程式保存密鑰。Key Vault 還使輪換密鑰變得容易,而不會中斷應用程式。定期輪換帳戶密鑰可以降低將數據暴露給惡意攻擊的風險。",
+ "guid": "62ae35d2-7f0b-4c63-b0ff-1a1f85d39b89",
+ "service": "Azure Blob Storage",
+ "text": "我們建議您不要使用帳戶密鑰。如果必須使用帳戶密鑰,請將其存儲在 Key Vault 中,並確保定期重新生成它們。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最佳做法可説明你防止共享訪問簽名令牌洩露,並在發生洩漏時快速恢復。",
+ "guid": "e2163930-a35e-415f-bea3-a019e5c2a5c7",
+ "service": "Azure Blob Storage",
+ "text": "建議不要使用共用訪問簽名令牌。評估是否需要共用訪問簽名令牌來保護對 Blob 儲存資源的訪問。如果必須創建一個,請在創建和分發共用訪問簽名之前查看此共享訪問簽名最佳做法清單。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 比 TLS 1.0 和 1.1 更安全、更快,後者不支援現代加密演算法和密碼套件。",
+ "guid": "d586222d-d9d1-4f51-ba29-58021c0ee0ae",
+ "service": "Azure Blob Storage",
+ "text": "配置存儲帳戶,以便用戶端可以使用 TLS 1.2 的最低版本發送和接收數據。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "客戶管理的金鑰提供了更大的靈活性和控制力。例如,可以將加密密鑰存儲在 Key Vault 中,並自動輪換它們。",
+ "guid": "33303cd1-5b9c-4688-aa24-50cb53f5caac",
+ "service": "Azure Blob Storage",
+ "text": "請考慮使用自己的加密金鑰來保護記憶體中的資料。有關詳細資訊,請參閱用於 Azure 儲存加密的客戶管理的密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "6f7ce98b-ec2c-4535-9e6a-11c077c9bd3f",
+ "service": "Azure Blob Storage",
+ "text": "確定用於計算帳單的計量:計量用於跟蹤帳戶中存儲的數據量(數據容量)以及為寫入和讀取數據而執行的操作的數量和類型。此外,還有一些計量與使用可選功能相關聯,例如 blob 索引標記、blob 清單、更改源支援、加密範圍和 SSH 檔案傳輸協定 (SFTP) 支援。有關詳細資訊,請參閱如何對 Blob 儲存收費。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "0c2e2825-34c7-4ad5-ad21-a270b1b402c0",
+ "service": "Azure Blob Storage",
+ "text": "瞭解每個計量的價格:請確保使用適當的定價頁面,並在該頁面中應用適當的設置。有關更多資訊,請參閱查找每個計量的單價。考慮與每個價格關聯的操作數。例如,與寫入和讀取操作關聯的價格適用於10,000個操作。要確定單個操作的價格,請將上市價格除以 10,000。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "31b047a5-abfe-4452-ad3e-a4b99cad0e4b",
+ "service": "Azure Blob Storage",
+ "text": "估計容量和操作成本:可以使用 Azure 定價計算機對與數據存儲、入口和出口關聯的成本進行建模。使用欄位可以比較與各種區域、帳戶類型、命名空間類型和冗餘配置關聯的成本。對於某些方案,可以使用 Microsoft 文件中提供的示例計算和工作表。例如,可以估計存檔數據的成本,或估計使用 AzCopy 命令傳輸 blob 的成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "51e5c8d4-4794-4514-bb01-54a517927a05",
+ "service": "Azure Blob Storage",
+ "text": "為容量選擇計費模型:評估使用基於承諾的模型是否比使用基於消耗的模型更具成本效益。如果不確定需要多少容量,可以從基於消耗的模型開始,監視容量指標,然後稍後進行評估。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "8a5b488c-2b97-4e55-8997-659d64c62030",
+ "service": "Azure Blob Storage",
+ "text": "選擇帳戶類型、冗餘級別和預設訪問層:在創建存儲帳戶時,必須為每個設置選擇一個值。所有值都會影響事務費用和容量費用。創建帳戶后,可以更改除帳戶類型之外的所有這些設置。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "b675b5be-352c-4a06-94ed-8457e3d5db8c",
+ "service": "Azure Blob Storage",
+ "text": "選擇最經濟高效的預設訪問層:除非為每個 blob 上傳指定層,否則 blob 會根據預設訪問層設置推斷其訪問層。對存儲帳戶的預設訪問層設置的更改適用於帳戶中尚未顯式設置訪問層的所有 Blob。如果收集了大量 blob,則此成本可能會很高。有關層更改如何影響每個現有 blob 的詳細資訊,請參閱更改 blob 的訪問層。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "fbf53f6f-f5af-47ef-8e28-e471bf173884",
+ "service": "Azure Blob Storage",
+ "text": "將數據直接上傳到最具成本效益的訪問層:例如,如果帳戶的預設訪問層設置為熱訪問層,但您出於存檔目的上傳檔,請指定一個較冷的層作為存檔,或者指定一個冷層作為上傳操作的一部分。上傳 blob 後,使用生命週期管理策略根據使用方式指標(如上次訪問時間)將 blob 放在最具成本效益的層。預先選擇最優化的層可以降低成本。如果更改已上傳的塊 blob 的層,則在首次上傳 blob 時,您需要支付寫入初始層的費用,然後支付寫入所需層的費用。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "3549725f-8de2-4431-a8e2-fb88c2def5b4",
+ "service": "Azure Blob Storage",
+ "text": "制定數據生命週期管理計劃:利用訪問層和生命週期管理來優化事務和容量成本。使用頻率較低的數據應放置在較冷的訪問層中,而經常訪問的數據應放置在較熱的訪問層中。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "df99152b-4af1-4cea-b2bd-b06fd2425c57",
+ "service": "Azure Blob Storage",
+ "text": "確定需要哪些功能:某些功能(如版本控制和 blob 軟刪除)會產生額外的事務和容量成本以及其他費用。在選擇要添加到帳戶的功能時,請務必查看描述這些功能的文章中的定價和計費部分。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "b69e35ad-ee70-4787-bcb2-9cde1aa2600c",
+ "service": "Azure Blob Storage",
+ "text": "創建防護措施:根據訂閱和資源組創建預算。使用治理策略來限制資源類型、配置和位置。此外,使用 RBAC 阻止可能導致超支的操作。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "41cc33cd-773d-463f-b9e3-07256ea9e3f0",
+ "service": "Azure Blob Storage",
+ "text": "監控成本:確保成本保持在預算範圍內,將成本與預測進行比較,並查看出現超支的地方。可以使用 Azure 門戶中的「成本分析」窗格來監視成本。還可以將成本數據匯出到存儲帳戶,並使用 Excel 或 Power BI 分析該數據。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "94b3fa52-a17f-44ec-b4ba-9801c2764632",
+ "service": "Azure Blob Storage",
+ "text": "監視使用方式:持續監視使用模式,並檢測未使用或未充分利用的帳戶和容器。使用存儲見解來標識無使用率或使用率或使用率低的帳戶。啟用 blob 清單報告,並使用 Azure Databricks 或 Azure Synapse Analytics 和 Power BI 等工具來分析成本數據。注意容量的意外增加,這可能表明你正在收集大量日誌檔、blob 版本或軟刪除的 blob。制定一種策略,用於使物件過期或過渡到更具成本效益的訪問層。制定計劃,使物件過期或將物件移動到更經濟的訪問層。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "較冷的層具有更高的數據傳輸成本。通過減少大文件的數量,可以減少傳輸數據所需的操作數量。",
+ "guid": "7eb7a0d4-912b-4d5c-af98-31200e20cc63",
+ "service": "Azure Blob Storage",
+ "text": "將小檔打包到較大檔中,然後再將它們移動到較冷的層。您可以使用 TAR 或 ZIP 等檔案格式。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "來自存檔層的高優先順序解除凍結可能會導致帳單高於正常水準。",
+ "guid": "8d3e7da9-3091-4daf-8a07-37116d9e3f7e",
+ "service": "Azure Blob Storage",
+ "text": "從存檔存儲中解除凍結 blob 時,請使用標準優先順序解除凍結。僅在緊急數據恢復情況下使用高優先順序解除凍結。有關詳細資訊,請參閱將存檔的 blob 解除凍結到連線層",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "將資源日誌存儲在存儲帳戶中以供以後分析可能是一個更便宜的選項。使用生命週期管理策略來管理存儲帳戶中的日誌保留期可以防止大量日誌檔隨著時間的推移而積累,這可能會導致不必要的容量費用。",
+ "guid": "f29291b5-d170-453b-bdbb-379f229fdc5b",
+ "service": "Azure Blob Storage",
+ "text": "通過選擇適當的日誌存儲位置並管理日誌保留期,降低使用資源日誌的成本。如果只計劃偶爾查詢日誌(例如,查詢日誌以進行合規性審核),請考慮將資源日誌發送到存儲帳戶,而不是將其發送到 Azure Monitor 日誌工作區。可以使用無伺服器查詢解決方案(例如 Azure Synapse Analytics)來分析日誌。有關詳細資訊,請參閱優化不頻繁查詢的成本。使用生命週期管理策略刪除或歸檔日誌。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "對 blob 的每個寫入操作都會創建一個新版本。這會增加容量成本。您可以通過刪除不再需要的版本來控制成本。",
+ "guid": "496e994f-ae82-40c2-90cb-eb03a9e2205c",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用版本控制,請使用生命週期管理策略自動刪除舊的 blob 版本。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "每次覆蓋 blob 時,都會添加一個新版本,這會導致存儲容量費用增加。若要降低容量費用,請將經常覆蓋的數據存儲在禁用了版本控制的單獨存儲帳戶中。",
+ "guid": "91514322-4007-4a99-85f0-e73c181d95fa",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用版本控制,則將經常被覆蓋的 blob 放入未啟用版本控制的帳戶中。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "每次覆蓋 blob 時,都會創建一個新的快照。容量費用增加的原因可能難以訪問,因為這些快照的創建不會顯示在日誌中。若要降低容量費用,請將經常覆蓋的數據存儲在禁用軟刪除的單獨存儲帳戶中。保留期可防止軟刪除的 blob 堆積起來並增加容量成本。",
+ "guid": "7041f493-74f4-42e8-bbd2-15602763dc40",
+ "service": "Azure Blob Storage",
+ "text": "如果啟用軟刪除,則將經常被覆蓋的 blob 放入未啟用軟刪除的帳戶中。設置保留期。請考慮從較短的保留期開始,以更好地瞭解該功能如何影響您的帳單。建議的最短保留期為 7 天。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "啟用SFTP終端節點會產生每小時費用。通過深思熟慮地禁用 SFTP 支援,然後根據需要啟用它,您可以避免在您的帳戶中產生被動費用。",
+ "guid": "c1d10494-a396-4add-aae2-aaf5aa5aa0da",
+ "service": "Azure Blob Storage",
+ "text": "僅當 SFTP 支援用於傳輸數據時,才啟用 SFTP 支援。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "加密範圍每月產生費用。",
+ "guid": "b71aeb26-fc96-486c-8bed-c5c616c1d0b1",
+ "service": "Azure Blob Storage",
+ "text": "禁用任何不需要的加密範圍,以避免產生不必要的費用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Blob Storage",
+ "text": "創建維護和緊急恢復計劃:考慮數據保護功能、備份和還原操作以及故障轉移過程。為潛在的數據丟失和數據不一致以及故障轉移的時間和成本做好準備。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "bdd60136-85dd-45cc-ac07-37d69124d9ab",
+ "service": "Azure Blob Storage",
+ "text": "監視存儲帳戶的運行狀況:創建存儲見解儀錶板,以監視可用性、性能和復原能力指標。設置警報,在客戶注意到問題之前識別並解決系統中的問題。使用診斷設置將資源日誌路由到 Azure Monitor 日誌工作區。然後,可以查詢日誌以更深入地調查警報。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "b842f2e7-9ac7-4d2e-9c9a-a3fb2ddc2441",
+ "service": "Azure Blob Storage",
+ "text": "啟用 blob 清單報告:啟用 blob 清單報告以查看儲存帳戶內容的保留、合法保留或加密狀態。還可以使用 blob 清單報告來了解數據的總大小、期限、層分佈或數據的其他屬性。使用 Azure Databricks 或 Azure Synapse Analytics 和 Power BI 等工具更好地可視化庫存數據,併為利益幹系人創建報表。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "b54e930b-e9fe-4b7b-adc2-b0f0d0b0f05c",
+ "service": "Azure Blob Storage",
+ "text": "設置用於刪除 blob 或將其移動到經濟高效的存取層的策略:使用一組初始條件創建生命週期管理策略。策略運行會自動根據定義的條件刪除或設置 blob 的訪問層。使用監視指標和 blob 清單報告定期分析容器使用方式,以便可以優化條件以優化成本效率。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "可以使用現有的 DevOps 流程來部署新的儲存帳戶,並使用 Azure Policy 強制實施其配置。",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Blob Storage",
+ "text": "使用基礎結構即代碼 (IaC) 在 Azure 資源管理器範本(ARM 範本)、Bicep 或 Terraform 中定義記憶體帳戶的詳細資訊。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您可以追蹤每個帳戶的運行狀況和操作。輕鬆創建儀錶板和報告,利益幹系人可以使用這些儀錶板和報告來跟蹤存儲帳戶的運行狀況。",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Blob Storage",
+ "text": "使用存儲見解跟蹤存儲帳戶的運行狀況和性能。存儲見解提供所有存儲帳戶的故障、性能、可用性和容量的統一視圖。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "61755535-55a0-4064-8537-e9cdf07e1baa",
+ "service": "Azure Blob Storage",
+ "text": "規劃縮放:瞭解存儲帳戶的縮放目標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "bd64ef47-64e7-4c7e-b19f-ccfd451083e0",
+ "service": "Azure Blob Storage",
+ "text": "選擇最佳存儲帳戶類型:如果工作負載需要高事務速率、較小的對象和始終較低的事務延遲,請考慮使用高級塊 blob 儲存帳戶。在大多數情況下,標準的常規用途 v2 帳戶最合適。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "b21b6a75-b065-43f1-8298-5778460e2ba0",
+ "service": "Azure Blob Storage",
+ "text": "減少客戶端和伺服器之間的傳輸距離:將數據放置在最靠近連接客戶端的區域(理想情況下在同一區域)。通過使用物件複製或內容分發網路,針對遙遠區域的用戶端進行優化。默認網路配置可提供最佳性能。修改網路設置只是為了提高安全性。通常,網路設置不會減少行駛距離,也不會提高性能。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "ef4063df-4ac9-4e8b-9391-cf99ea520f3a",
+ "service": "Azure Blob Storage",
+ "text": "選擇高效的命名方案:通過使用最靠近 blob 分區鍵開頭的哈希標記前綴(帳戶、容器、虛擬目錄或 blob 名稱),減少清單、清單、查詢和讀取操作的延遲。此方案主要受益於具有平面命名空間的帳戶。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "45c2db00-baf4-4e7a-8ceb-871abc5f5d64",
+ "service": "Azure Blob Storage",
+ "text": "優化數據用戶端的性能:選擇最適合工作負載的數據大小、傳輸頻率和頻寬的數據傳輸工具。某些工具(如 AzCopy)針對性能進行了優化,幾乎不需要干預。考慮影響延遲的因素,並通過查看隨每個工具發佈的性能優化指南來微調性能。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "97486b6a-ea0c-4100-86e0-319ce0c8ad21",
+ "service": "Azure Blob Storage",
+ "text": "優化自定義代碼的性能:請考慮使用存儲 SDK,而不是為 blob REST 操作創建自己的包裝器。Azure SDK 針對性能進行了優化,並提供用於微調性能的機制。在創建應用程式之前,請查看 Blob 儲存的性能和可伸縮性清單。考慮使用查詢加速在存儲請求期間過濾掉不需要的數據,並防止用戶端在網路上不必要地傳輸數據。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "0b2ed074-7dcb-460a-8455-144171d2fe8f",
+ "service": "Azure Blob Storage",
+ "text": "收集性能數據:監視存儲帳戶,以確定因限制而產生的性能瓶頸。有關詳細資訊,請參閱使用「監視存儲見解」監視存儲服務。同時使用指標和日誌。指標提供限制錯誤等數位。日誌描述活動。如果看到限制指標,則可以使用日誌來識別哪些用戶端正在接收限制錯誤。有關更多資訊,請參閱審核數據平面操作。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "減少存儲帳戶與 VM、服務和本地用戶端之間的物理距離可以提高性能並減少網路延遲。減少物理距離還可以降低託管在 Azure 中的應用程式的成本,因為單個區域內的頻寬使用是免費的。",
+ "guid": "1a37ef87-aa18-44a6-9877-6665fb1dc486",
+ "service": "Azure Blob Storage",
+ "text": "在放置依賴資源的同一區域中預配存儲帳戶。對於未託管在 Azure 上的應用程式(例如行動裝置應用或本地企業服務),請將儲存帳戶放置在離這些用戶端更近的區域中。有關詳細資訊,請參閱 Azure 地理位置。如果來自不同區域的用戶端不需要相同的數據,則在每個區域創建一個單獨的帳戶。如果來自不同區域的用戶端只需要一些數據,請考慮使用物件複製策略將相關物件異步複製到另一個區域中的存儲帳戶。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "內容可以更快地交付給客戶端,因為它使用 Microsoft 全球邊緣網路,該網路在全球擁有數百個全球和本地存取點。",
+ "guid": "7ee0dea0-804f-457c-9660-1fe756011d25",
+ "service": "Azure Blob Storage",
+ "text": "對於 Web 用戶端(流式傳輸視頻、音訊或靜態網站內容)的廣泛使用,請考慮通過 Azure Front Door 使用內容分發網路。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "使用最接近分區鍵開頭的哈希代碼或秒值可減少列出、查詢和讀取 blob 所需的時間。",
+ "guid": "36fc9ddc-5d24-4ecc-a67e-3fd7bc0c4373",
+ "service": "Azure Blob Storage",
+ "text": "盡早在 blob 的分區鍵中添加哈希字元序列(例如三位數位)。分區鍵是帳戶名稱、容器名稱、虛擬目錄名稱和 blob 名稱。如果您計劃在名稱中使用時間戳,請考慮在該標記的開頭添加秒值。有關詳細資訊,請參閱分區。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "大於 256 KiB 的 blob 或塊大小可利用平臺中專門針對較大 blob 和塊大小的性能增強功能。",
+ "guid": "78872d9e-216b-4cc3-8686-0471d46a1acd",
+ "service": "Azure Blob Storage",
+ "text": "上傳 blob 或塊時,請使用大於 256 KiB 的 blob 或塊大小。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "473b3683-6d53-4521-89c4-d8aa1d1df633",
+ "service": "Azure Expressroute",
+ "text": "根據業務需求,在 ExpressRoute 線路或 ExpressRoute Direct 之間進行選擇。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "b356e60e-cb41-4ee6-a8d5-290b429619f7",
+ "service": "Azure Expressroute",
+ "text": "在本地和 Azure 之間配置主動-主動 ExpressRoute 連接。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "877b9a2d-8171-441b-ba7f-b8c6191f12bc",
+ "service": "Azure Expressroute",
+ "text": "設置可用性區域感知 ExpressRoute 虛擬網路閘道。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "64ad6a67-7f17-4d55-a365-0ec8716fb135",
+ "service": "Azure Expressroute",
+ "text": "在不同區域中配置 ExpressRoute 虛擬網路閘道。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "20bbf3a5-e3d8-42eb-9b88-9c4a811a483a",
+ "service": "Azure Expressroute",
+ "text": "將網站到網站 VPN 配置為 ExpressRoute 專用對等互連的備份。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "198fd707-5344-46d9-a3f9-c05a90749ccb",
+ "service": "Azure Expressroute",
+ "text": "配置服務運行狀況以接收 ExpressRoute 線路維護通知。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "在初始規劃階段,需要決定是要配置 ExpressRoute 線路還是 ExpressRoute Direct 連接。ExpressRoute 線路允許在連接供應商的説明下連接到 Azure。ExpressRoute Direct 允許將本地網路直接擴展到對等互連位置的 Microsoft 網路。您還需要確定頻寬要求和 SKU 類型要求,以滿足您的業務需求。",
+ "guid": "09e0dd1a-b1f7-46c3-8df1-48e841f53dca",
+ "service": "Azure Expressroute",
+ "text": "規劃 ExpressRoute 線路或 ExpressRoute Direct",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "為了提高復原能力,請計劃在本地邊緣和對等互連位置(供應商/Microsoft 邊緣位置)之間設置多個路徑。可以通過不同的服務提供者或與本地網路不同的位置來實現此配置。",
+ "guid": "67812ddc-7c52-4b52-9569-b3f84d591def",
+ "service": "Azure Expressroute",
+ "text": "物理層多樣性",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "若要規劃災難恢復,請在多個對等互連位置設置ExpressRoute線路。您可以在同一城域網或不同城域網的對等位置創建線路,並選擇與不同的服務提供者合作,以實現通過每個線路的不同路徑。有關詳細資訊,請參閱設計災難恢復和設計高可用性。",
+ "guid": "257031a8-f034-436c-9f54-e82aab53c559",
+ "service": "Azure Expressroute",
+ "text": "規劃異地冗餘線路",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "在本地和 Azure 之間配置主動-主動連接時,ExpressRoute 專用線路可保證“99.95%”的可用性。此模式提供更高的 Expressroute 連接可用性。此外,還建議配置 BFD,以便在連接上出現鏈路故障時更快地進行故障轉移。",
+ "guid": "068037d8-673f-4e86-bc9d-bf83fbe61d12",
+ "service": "Azure Expressroute",
+ "text": "規劃主動-主動連接",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "創建可用性區域感知虛擬網路閘道以提高復原能力,並規劃不同區域中的虛擬網路閘道以實現災難恢復和高可用性。",
+ "guid": "21f65e89-ffe2-489f-89f2-16cbc2e257d9",
+ "service": "Azure Expressroute",
+ "text": "規劃虛擬網路閘道",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "根據各種可用指標為 ExpressRoute 線路和虛擬網路閘道運行狀況設置監視和警報。",
+ "guid": "0f875bf3-de86-41b5-80d2-477de2f769a2",
+ "service": "Azure Expressroute",
+ "text": "監控電路和網關運行狀況",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "ExpressRoute 使用服務運行狀況來通知計劃內和計劃外維護。配置服務運行狀況將通知你對 ExpressRoute 線路所做的更改。",
+ "guid": "c84ca8b2-74f8-4d25-8fc3-5b30c9969b5f",
+ "service": "Azure Expressroute",
+ "text": "啟用服務運行狀況",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "ca1c5676-1b0a-426e-baaf-da74ab806cb4",
+ "service": "Azure Expressroute",
+ "text": "配置活動記錄以將日誌發送到存檔。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ef124dcd-17e6-4b4e-9bdd-511ef1959a05",
+ "service": "Azure Expressroute",
+ "text": "維護有權訪問 ExpressRoute 資源的管理帳戶清單。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "23fbb2f6-a269-4fb5-a3a0-04aae0516c91",
+ "service": "Azure Expressroute",
+ "text": "在 ExpressRoute 線路上配置 MD5 哈希。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8e02b876-d810-498b-b9a5-e50730fb10d6",
+ "service": "Azure Expressroute",
+ "text": "為 ExpressRoute Direct 資源配置 MACSec。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "946a3e3d-bbaf-4b4a-ab80-2ef0a4631f30",
+ "service": "Azure Expressroute",
+ "text": "通過專用對等互連和 Microsoft 對等互連對虛擬網路流量加密流量。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "通過活動日誌,可以深入瞭解在訂閱級別對 ExpressRoute 資源執行的操作。使用活動日誌,您可以確定在控制平面上執行操作的人員和時間。數據保留期僅為 90 天,需要存儲在 Log Analytics、事件中心或存儲帳戶中以進行存檔。",
+ "guid": "9631d7ef-657c-4b07-9c75-96b2dcc5c5d2",
+ "service": "Azure Expressroute",
+ "text": "配置活動記錄以將日誌發送到存檔",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Azure RBAC 配置角色,以限制可以在 ExpressRoute 線路上添加、更新或刪除對等互連配置的用戶帳戶。",
+ "guid": "42b91c75-909f-4366-b014-48ab48639faf",
+ "service": "Azure Expressroute",
+ "text": "維護管理帳戶的清單",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在配置專用對等互連或 Microsoft 對等互連期間,應用 MD5 哈希來保護本地路由和 MSEE 路由器之間的消息。",
+ "guid": "78f7d298-53bf-49ae-8ed7-994d46ccf2dd",
+ "service": "Azure Expressroute",
+ "text": "在 ExpressRoute 線路上配置 MD5 哈希",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "媒體訪問控制安全是數據鏈路層的點對點安全。ExpressRoute Direct 支援配置 MACSec,以防止對 ARP、DHCP、LACP 等協定的安全威脅,這些協定通常在乙太網路上不受保護。有關如何配置 MACSec 的詳細資訊,請參閱適用於 ExpressRoute Direct 埠的 MACSec。",
+ "guid": "d495a140-702d-4e08-bb86-7ceac8141df2",
+ "service": "Azure Expressroute",
+ "text": "為 ExpressRoute Direct 資源配置 MACSecConfigure MACSec for ExpressRoute Direct resources",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在 ExpressRoute 線路上配置網站到網站 VPN 隧道,以加密本地網路和 Azure 虛擬網路之間的數據傳輸。您可以使用專用對等互連或使用 Microsoft 對等互連來配置隧道。",
+ "guid": "7729c230-dbdf-4aec-9295-fcb0a0c365f2",
+ "service": "Azure Expressroute",
+ "text": "使用 IPsec 加密流量",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "43d6df90-c15b-494c-8d35-c4fc9180fbdb",
+ "service": "Azure Expressroute",
+ "text": "熟悉 ExpressRoute 定價。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "92065590-2f1a-4a81-a6a6-2b102f66f9e3",
+ "service": "Azure Expressroute",
+ "text": "確定所需的 ExpressRoute 線路 SKU 和頻寬。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "f6e0770f-fa13-450e-8c81-baf51ba1b550",
+ "service": "Azure Expressroute",
+ "text": "確定所需的 ExpressRoute 虛擬網路閘道大小。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "07d0ba21-7eef-47d1-8ba0-26fefa26c733",
+ "service": "Azure Expressroute",
+ "text": "監控成本並創建預算警報。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "d7be65f4-6500-49ea-92e3-3121fca4a076",
+ "service": "Azure Expressroute",
+ "text": "取消預配不再使用的 ExpressRoute 線路。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "有關 ExpressRoute 定價的資訊,請參閱瞭解 Azure ExpressRoute 的定價。您也可以使用定價計算機。確保選項的大小足夠大,以滿足容量需求,並在不浪費資源的情況下提供預期的性能。",
+ "guid": "f230ac81-7590-4300-9b9f-95d784e60ab2",
+ "service": "Azure Expressroute",
+ "text": "熟悉 ExpressRoute 定價",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 使用費的收費方式在三種不同的 SKU 類型之間有所不同。使用本地 SKU 時,系統會自動向您收取無限數據計劃的費用。使用標準和高級 SKU,可以選擇按流量計費或無限制的數據計劃。所有入口數據都是免費的,除非使用 Global Reach 外掛程式。請務必瞭解哪些 SKU 類型和數據計劃最適合您的工作負載,以最好地優化成本和預算。有關調整 ExpressRoute 線路大小的詳細資訊,請參閱升級 ExpressRoute 線路頻寬。",
+ "guid": "3d8a5d49-af34-431f-b47f-ee8cf05479b5",
+ "service": "Azure Expressroute",
+ "text": "確定所需的 SKU 和頻寬",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 虛擬網路閘道用於通過專用對等互連將流量傳遞到虛擬網路。查看首選虛擬網路閘道 SKU 的性能和規模需求。在本地到 Azure 工作負載上選擇適當的閘道 SKU。",
+ "guid": "82224292-a5a6-4b85-9b2f-b617117c4285",
+ "service": "Azure Expressroute",
+ "text": "確定 ExpressRoute 虛擬網路閘道大小",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "監視 ExpressRoute 線路的成本,並創建針對支出異常和超支風險的警報。有關詳細資訊,請參閱監視ExpressRoute成本。",
+ "guid": "e2e81918-e05e-49e1-a37c-cb65840c8699",
+ "service": "Azure Expressroute",
+ "text": "監控成本並創建預算警報",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "ExpressRoute 線路從創建的那一刻起就收費。為了減少不必要的成本,請與服務提供者取消預配線路,並從訂閱中刪除 ExpressRoute 線路。有關如何刪除 ExpressRoute 線路的步驟,請參閱取消預配 ExpressRoute 線路。",
+ "guid": "131104a1-a17f-4b6b-9384-0b636a5d5265",
+ "service": "Azure Expressroute",
+ "text": "取消預配並刪除不再使用的 ExpressRoute 線路。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "4c7d0c83-02a0-4535-a378-c2ab4c13469c",
+ "service": "Azure Expressroute",
+ "text": "在本地網路和 Azure 網路之間配置連接監視。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "69c4fb71-4d2c-4534-a4db-5e3146a31e1d",
+ "service": "Azure Expressroute",
+ "text": "配置服務運行狀況以接收通知。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "33b4fca5-1f90-4947-8091-6c23aba0651a",
+ "service": "Azure Expressroute",
+ "text": "使用網路見解查看通過 ExpressRoute 見解提供的指標和儀錶板。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "638c050d-7555-4575-bb8d-a4f2b613fa87",
+ "service": "Azure Expressroute",
+ "text": "查看 ExpressRoute 資源指標。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "通過連接監視,可以通過 ExpressRoute 專用對等互連和 Microsoft 對等互連連接監視本地資源與 Azure 之間的連接。連接監視器可以通過識別問題在網路路徑上的位置來檢測網路問題,並説明您快速解決配置或硬體故障。",
+ "guid": "c6766a4e-7531-4335-af44-4fd1a3c706f4",
+ "service": "Azure Expressroute",
+ "text": "配置連接監視",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "設置服務運行狀況通知,以便在訂閱中的所有 ExpressRoute 線路發生計劃內和即將進行的維護時發出警報。如果發生計劃外維護,服務運行狀況還會顯示過去的維護以及 RCA。",
+ "guid": "5ff3a7b5-974a-466d-ab01-ad90c143969d",
+ "service": "Azure Expressroute",
+ "text": "配置服務運行狀況",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "通過具有網路見解的 ExpressRoute 見解,可以查看和分析 ExpressRoute 線路、閘道、連接指標和運行狀況儀錶板。ExpressRoute 見解還提供 ExpressRoute 連接的拓撲視圖,可在其中在一個位置查看對等互連元件的詳細資訊。可用指標:- 可用性- 輸送量- 閘道指標",
+ "guid": "210546e8-29e3-40d9-869f-6236fddaadd0",
+ "service": "Azure Expressroute",
+ "text": "使用 Network Insights 查看指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "ExpressRoute 使用 Azure Monitor 收集指標,並根據配置創建警報。收集 ExpressRoute 線路、ExpressRoute 閘道、ExpressRoute 閘道連接和 ExpressRoute Direct 的指標。這些指標可用於診斷連接問題和瞭解 ExpressRoute 連接的性能。",
+ "guid": "8031ed87-7573-469a-9b05-01f4ff4d9231",
+ "service": "Azure Expressroute",
+ "text": "查看 ExpressRoute 資源指標",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "測試 ExpressRoute 閘道性能以滿足工作負載要求。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "增加 ExpressRoute 閘道的大小。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "102ee202-4b37-498a-8826-d698d11e3b03",
+ "service": "Azure Expressroute",
+ "text": "升級 ExpressRoute 線路頻寬。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "627c2d5f-e638-41fd-be98-9ba1bf195ce3",
+ "service": "Azure Expressroute",
+ "text": "啟用 ExpressRoute FastPath 以獲得更高的輸送量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "040f4b75-2706-42f3-9a9c-cee611032d91",
+ "service": "Azure Expressroute",
+ "text": "監視 ExpressRoute 線路和閘道指標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "使用 Azure 連接工具包測試 ExpressRoute 線路的性能,以瞭解網路連接的頻寬、容量和延遲。",
+ "guid": "256753af-fb4b-49b2-a965-4b65265ee8dd",
+ "service": "Azure Expressroute",
+ "text": "測試 ExpressRoute 閘道性能以滿足工作負載要求。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "升級到更高的閘道 SKU,以提高本地環境和 Azure 環境之間的輸送量性能。",
+ "guid": "9bc85bda-be71-4df0-924c-2604ef7f05fa",
+ "service": "Azure Expressroute",
+ "text": "增加 ExpressRoute 閘道的大小。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "升級您的電路頻寬以滿足您的工作負載要求。線路頻寬在連接到 ExpressRoute 線路的所有虛擬網路之間共用。根據工作負載,一個或多個虛擬網路可能會耗盡線路上的所有頻寬。",
+ "guid": "db8f8202-db07-497f-be72-17db8bda90c5",
+ "service": "Azure Expressroute",
+ "text": "升級 ExpressRoute 線路頻寬",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果使用的是超高性能或 ErGW3AZ 虛擬網路閘道,則可以啟用 FastPath 以提高本地網路和 Azure 虛擬網路之間的數據路徑性能。",
+ "guid": "01566559-f881-409b-b04e-7d79a71f18e4",
+ "service": "Azure Expressroute",
+ "text": "啟用 ExpressRoute FastPath 以獲得更高的輸送量",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "根據 ExpressRoute 指標設置警報,以便在達到特定閾值時主動通知你。這些指標有助於瞭解 ExpressRoute 連接可能發生的異常情況,例如 ExpressRoute 線路發生的中斷和維護。",
+ "guid": "6440df71-d371-4190-920f-01c1815446db",
+ "service": "Azure Expressroute",
+ "text": "監視 ExpressRoute 線路和閘道指標",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "94d626bf-3509-4311-8700-696d8d18617e",
+ "service": "Azure Files",
+ "text": "使用故障模式分析:通過考慮內部依賴項(例如虛擬網路、Azure Key Vault 或 Azure 內容分發網路或 Azure Front Door 終結點的可用性)來最大程度地減少故障點。如果需要憑據來訪問 Azure 檔存儲,並且憑據從 Key Vault 中丟失,則可能會失敗。或者,如果您的工作負載使用基於缺失的內容分發網路的端點,則可能會失敗。在這些情況下,您可能需要配置工作負載以連接到備用終端節點。有關故障模式分析的一般資訊,請參閱執行故障模式分析的建議。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "bedde06b-f58a-43ab-b6cc-76e41503e72a",
+ "service": "Azure Files",
+ "text": "定義可靠性和恢復目標:查看 Azure 服務級別協定 (SLA)。派生存儲帳戶的服務級別目標 (SLO)。例如,您選擇的冗餘配置可能會影響 SLO。考慮區域性中斷的影響、數據丟失的可能性以及中斷后恢復訪問所需的時間。此外,還要考慮在故障模式分析過程中確定的內部依賴項的可用性。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "f9c07c6b-c5ab-4e57-83f7-9455042e2e23",
+ "service": "Azure Files",
+ "text": "配置數據冗餘:為了獲得最大的持久性,請選擇跨可用性區域或全球區域複製數據的配置。為了獲得最大可用性,請選擇一種配置,該配置允許用戶端在主要區域中斷期間從次要區域讀取數據。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "61e937b4-1989-496a-af6f-5df76d352ed8",
+ "service": "Azure Files",
+ "text": "設計應用程式:將應用程式設計為無縫切換,以便在主要區域不可用時從次要區域讀取數據。此設計注意事項僅適用於異地冗餘存儲 (GRS) 和異地區域冗餘存儲 (GZRS) 配置。設計應用程式以正確處理中斷,從而減少客戶的停機時間。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "cb1c49d6-9cdb-48f6-a3f8-c35c2037fc92",
+ "service": "Azure Files",
+ "text": "探索可幫助您實現恢復目標的功能: 使檔可還原,以便您可以恢復損壞、編輯或刪除的檔。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "3a9677e5-9506-4aaa-bac6-48b5002070c1",
+ "service": "Azure Files",
+ "text": "創建恢復計劃:考慮數據保護功能、備份和還原操作或故障轉移過程。為潛在的數據丟失和數據不一致以及故障轉移的時間和成本做好準備。有關詳細資訊,請參閱有關設計災難恢復策略的建議。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "8b151d5d-630d-438e-b7ad-aa487d6c5561",
+ "service": "Azure Files",
+ "text": "監視潛在的可用性問題:訂閱 Azure 服務運行狀況儀錶板以監視潛在的可用性問題。使用 Azure Monitor 中的存儲指標和診斷日誌來調查警報。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "冗餘可保護您的數據免受意外故障的影響。ZRS 和 GZRS 設定選項可在各種可用性區域之間複製,並使應用程式能夠在中斷期間繼續讀取數據。有關詳細資訊,請參閱按中斷方案劃分的持久性和可用性以及持久性和可用性參數。",
+ "guid": "5596d241-a342-4c47-b8db-29f7a519bf36",
+ "service": "Azure Files",
+ "text": "配置存儲帳戶以實現冗餘。為了獲得最大的可用性和持久性,請使用區域冗餘存儲 (ZRS)、GRS 或 GZRS 配置您的帳戶。有限的 Azure 區域支援標準和高級文件共用的 ZRS。僅標準 SMB 帳戶支援 GRS 和 GZRS。高級SMB共用和NFS共用不支援 GRS 和 GZRS。Azure 檔存儲不支援讀取訪問異地冗餘存儲 (RA-GRS) 或讀取訪問異地區域冗餘存儲 (RA-GZRS)。如果將存儲帳戶配置為使用RA-GRS或RA-GZRS,則檔共用將配置為GRS或 GZRS 並計費。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此屬性可幫助您估計在啟動帳戶故障轉移時可能丟失的數據量。在上次同步時間之前寫入的所有數據和元數據在次要區域上都可用,但你可能會丟失在上次同步時間之後寫入的數據和元數據,因為它不會寫入次要區域。",
+ "guid": "9fc3b4c1-257d-4bab-b373-1938930410a5",
+ "service": "Azure Files",
+ "text": "在啟動故障轉移或故障回復之前,請檢查“上次同步時間”屬性的值,以評估數據丟失的可能性。此建議僅適用於 GRS 和 GZRS 配置。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "軟刪除在文件共享級別工作,可防止意外刪除 Azure 檔案共用。時間點還原可防止意外刪除或損壞,因為您可以將文件共用還原到早期狀態。有關詳細資訊,請參閱數據保護概述。",
+ "guid": "8bcb6fde-bf94-4f36-8eae-347e5d4f0dea",
+ "service": "Azure Files",
+ "text": "作為備份和恢復策略的一部分,請啟用軟刪除並使用快照進行時間點還原。可以使用 Azure 備份來備份 SMB 文件共用。還可以使用 Azure 檔案同步將本地 SMB 文件共享備份到 Azure 檔共用。 Azure 備份還允許執行 Azure 檔的保管備份(預覽版),以保護數據免受勒索軟體攻擊或由於惡意參與者或流氓管理員而導致的源數據丟失。通過使用保管備份,Azure 備份將數據複製並存儲在恢復服務保管庫中。這將創建數據的異地副本,您可以保留長達 99 年。Azure 備份根據備份策略中定義的計劃和保留期創建和管理恢復點。瞭解更多資訊。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "2548e433-aeab-4738-bec1-0a3587ac4d15",
+ "service": "Azure Files",
+ "text": "查看 Azure 儲存的安全基線:若要開始,請查看存儲的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "6121894c-398e-479f-b386-309e7cf3caa0",
+ "service": "Azure Files",
+ "text": "考慮使用網路控制來限制入口和出口流量:在某些情況下,你可能會習慣於將存儲帳戶公開給公共 Internet,例如,如果使用基於身份的身份驗證來授予對文件共用的訪問許可權。但是,我們建議您使用網路控制來向使用者和應用程式授予所需的最低訪問許可權級別。有關詳細資訊,請參閱如何處理存儲帳戶的網路安全。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8395a636-8c19-4b22-a175-2a0f0d83f44f",
+ "service": "Azure Files",
+ "text": "減少攻擊面:在傳輸過程中使用加密,並阻止通過非安全 (HTTP) 連接進行訪問,以減少攻擊面。要求用戶端使用最新版本的傳輸層安全性 (TLS) 協定發送和接收數據。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "62e5154f-98cb-4dc2-8e62-dd5c546d6a6d",
+ "service": "Azure Files",
+ "text": "最大程度地減少存儲帳戶密鑰的使用:與使用存儲帳戶密鑰相比,基於標識的身份驗證可提供更高的安全性。但是,必須使用存儲帳戶密鑰才能獲得對文件共用的完全管理控制權,包括獲取檔擁有權的能力。僅向安全主體授予他們執行任務所需的必要許可權。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "dd5352d4-faa0-4a85-83db-00395c1a9df8",
+ "service": "Azure Files",
+ "text": "保護敏感資訊:保護敏感資訊,例如存儲帳戶密鑰和密碼。我們不建議您使用這些形式的授權,但如果您這樣做,則應確保輪換、過期並安全地存儲它們。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1edd34b4-610b-483a-83a0-d8bcb5915558",
+ "service": "Azure Files",
+ "text": "檢測威脅:啟用 Microsoft Defender for Storage,以檢測通過 SMB 或 FileREST 協定訪問或利用 Azure 檔共用的潛在有害嘗試。訂閱管理員會收到電子郵件警報,其中包含可疑活動的詳細資訊以及有關如何調查和修正威脅的建議。Defender for Storage 不支援 Azure 檔共用的防病毒功能。如果使用Defender for Storage,則事務密集型文件共用會產生大量成本,因此請考慮為特定存儲帳戶退出宣告Defender for Storage。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "鎖定帳戶以防止意外或惡意刪除存儲帳戶,這可能會導致數據丟失。",
+ "guid": "e125f557-f42e-4462-b680-0e7375d89a99",
+ "service": "Azure Files",
+ "text": "在存儲帳戶上應用 Azure 資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.x 是一種 Internet 安全協定,但您可能無法更改組織或 ISP 策略。可以使用 VPN 閘道或 ExpressRoute 連接作為替代選項。",
+ "guid": "14cda8e5-c05a-4c69-9352-2f7b39b5d423",
+ "service": "Azure Files",
+ "text": "打開 TCP 連接埠 445 出站,或為 Azure 外部的用戶端設置 VPN 閘道或 Azure ExpressRoute 連接,以存取檔案共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 1 是一種過時、低效且不安全的協定。在用戶端上禁用它以改善您的安全狀況。",
+ "guid": "e2ef284e-804b-4592-866f-5d577069b823",
+ "service": "Azure Files",
+ "text": "如果打開埠 445,請確保在 Windows 和 Linux 用戶端上禁用 SMBv1。Azure 檔存儲不支援 SMB 1,但你仍應在用戶端上禁用它。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路流量通過 Microsoft 主幹網路(而不是公共 Internet)傳輸,從而消除了公共 Internet 的風險暴露。",
+ "guid": "19d4b509-167c-4144-9705-9d65c48ec279",
+ "service": "Azure Files",
+ "text": "請考慮禁用對存儲帳戶的公用網路訪問。僅當 Azure 外部的 SMB 用戶端和服務需要存取記憶體帳戶時,才啟用公用網路訪問。如果禁用公用網路訪問,請為存儲帳戶創建專用終結點。專用終結點的標準數據處理費率適用。專用終結點不會阻止與公共終結點的連接。如前所述,您仍應禁用公共網路訪問。如果文件共用不需要靜態 IP 位址,並且想要避免專用終結點的成本,則可以改為限制對特定虛擬網路和 IP 位址的公共終結點訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "最大限度地降低為攻擊者創造機會的風險。",
+ "guid": "105c5f3d-dfc6-459b-93f0-c5046972f1ba",
+ "service": "Azure Files",
+ "text": "啟用防火牆規則,限制對特定虛擬網路的訪問。從零訪問開始,然後有條不紊地逐步提供客戶端和服務所需的最少訪問量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用基於身份的身份驗證可降低攻擊者使用存儲帳戶密鑰訪問檔共用的可能性。",
+ "guid": "1ba283cb-62bf-4ee8-9657-ba59ddd6bccd",
+ "service": "Azure Files",
+ "text": "如果可能,請將基於身份的身份驗證與 AES-256 Kerberos 票證加密結合使用,以授權訪問 SMB Azure 文件共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Key Vault 在運行時檢索金鑰,而不是將它們與應用程式一起保存。Key Vault 還使輪換密鑰變得容易,而不會中斷應用程式。定期輪換帳戶密鑰,以降低將數據暴露給惡意攻擊的風險。",
+ "guid": "7cf01b2b-1e7d-47fe-94e1-a65cc7750063",
+ "service": "Azure Files",
+ "text": "如果使用存儲帳戶密鑰,請將其存儲在 Key Vault 中,並確保定期重新生成它們。可以通過從共用的SMB安全設置中刪除NTLMv2來完全禁止儲存帳戶密鑰訪問檔案共用。但是,通常不應從共用的SMB安全設置中刪除NTLMv2,因為管理員仍需要使用帳戶密鑰執行某些任務。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "此設置可確保針對存儲帳戶發出的所有請求都通過安全連接 (HTTPS) 進行。通過 HTTP 發出的任何請求都將失敗。",
+ "guid": "4fbd14ad-9bf1-491f-b621-35f086b48ccd",
+ "service": "Azure Files",
+ "text": "在大多數情況下,應在所有存儲帳戶上啟用「需要安全傳輸」選項,以便為SMB檔共用啟用傳輸中加密。如果您需要允許非常舊的用戶端訪問共用,請不要啟用此選項。如果禁用安全傳輸,請務必使用網路控制來限制流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 1.2 比 TLS 1.0 和 1.1 更安全、更快,後者不支援現代加密演算法和密碼套件。",
+ "guid": "65d8332d-6657-4466-9dc1-5d1497d14041",
+ "service": "Azure Files",
+ "text": "配置存儲帳戶,使TLS 1.2 成為客戶端發送和接收數據的最低版本。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "SMB 3.1.1 隨 Windows 10 一起發佈,其中包含重要的安全和性能更新。AES-256-GCM 提供更安全的通道加密。",
+ "guid": "010a5a8d-db30-4c97-975e-db80658bdb4d",
+ "service": "Azure Files",
+ "text": "僅使用受支援的最新SMB協定版本(當前為3.1.1.1.),並且僅使用AES-256-GCM進行SMB通道加密。Azure 檔公開了一些設置,您可以使用這些設置來切換 SMB 協定並使其更相容或更安全,具體取決於組織的要求。默認情況下,允許使用所有SMB版本。但是,如果啟用“需要安全傳輸”,則不允許使用SMB 2.1,因為SMB 2.1不支援對傳輸中的數據進行加密。如果將這些設置限制為高安全級別,則某些用戶端可能無法連接到文件共用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "04493486-a5be-4bb2-8940-cea321db8380",
+ "service": "Azure Files",
+ "text": "查看存儲的安全基線:若要開始,請查看存儲的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "85f4e9b5-aa91-4d96-ad22-9132f7412718",
+ "service": "Azure Files",
+ "text": "了解組織的安全要求:NFS Azure 檔共用僅支援使用 NFSv4.1 協定的 Linux 用戶端,並支援 4.1 協議規範中的大多數功能。某些安全功能(如 Kerberos 身份驗證、存取控制清單 (ACL) 和傳輸中加密)不受支援。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "7f1ac6f7-d832-4c71-adbd-ae31d36320a7",
+ "service": "Azure Files",
+ "text": "使用網路級安全性和控制來限制入口和出口流量:基於標識的身份驗證不適用於NFS Azure 檔案共用,因此必須使用網路級別安全性和控制來向使用者和應用程式授予所需的最低訪問許可權級別。有關詳細資訊,請參閱如何處理存儲帳戶的網路安全。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "鎖定帳戶以防止意外或惡意刪除存儲帳戶,這可能會導致數據丟失。",
+ "guid": "a51426ff-75f8-429b-940a-6ddd2c06d3fb",
+ "service": "Azure Files",
+ "text": "在存儲帳戶上應用資源管理器鎖。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "打開埠 2049,讓用戶端與 NFS Azure 檔共用通信。",
+ "guid": "af6d0dd1-6add-4f9b-96b6-e65dba4242a4",
+ "service": "Azure Files",
+ "text": "您必須在要將 NFS 共用裝載到的用戶端上打開埠 2049。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路流量通過 Microsoft 主幹網路(而不是公共 Internet)傳輸,從而消除了公共 Internet 的風險暴露。",
+ "guid": "528b4915-a4d9-413d-9b79-e4078f5cd27d",
+ "service": "Azure Files",
+ "text": "NFS Azure 檔共用只能通過受限網路訪問。因此,必須為存儲帳戶創建專用終結點,或限制對所選虛擬網路和IP位址的公共終結點訪問。建議創建專用終結點。必須為 NFS 共用配置網路級安全性,因為 Azure 檔案存儲不支援使用 NFS 協定進行傳輸中的加密。需要在存儲帳戶上禁用“需要安全傳輸”設置才能使用 NFS Azure 檔共用。標準數據處理費率適用於專用終結點。如果文件共用不需要靜態 IP 位址,並且想要避免專用終結點的成本,則可以改為限制公共終結點訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁止使用存儲帳戶金鑰,以提高存儲帳戶的安全性。",
+ "guid": "2f92995e-d1d1-411d-96cd-309faf0a6ada",
+ "service": "Azure Files",
+ "text": "請考慮在儲存帳戶級別禁止存儲帳戶密鑰訪問。您不需要此存取權限即可載入 NFS 檔案共用。但請記住,對文件共用的完全管理控制(包括獲取檔擁有權的能力)需要使用存儲帳戶密鑰。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "bc87a075-cc79-46be-a413-106c995f41ef",
+ "service": "Azure Files",
+ "text": "確定工作負載是否需要高級文件共用 (Azure Premium SSD) 的性能,或者 Azure 標準 HDD 儲存是否足夠:根據所需的存儲類型確定存儲帳戶類型和計費模型。如果需要每秒大量輸入/輸出操作 (IOPS)、極快的數據傳送速率或非常低的延遲,則應選擇高級 Azure 檔案共用。NFS Azure 檔案共用僅在高級層上可用。NFS 和 SMB 檔共用在高級層上的價格相同。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "fc9a86d1-8dcf-4e82-87fa-81d736ab60f4",
+ "service": "Azure Files",
+ "text": "為檔共用創建存儲帳戶,並選擇冗餘級別:選擇標準 (GPv2) 或高級 (FileStorage) 帳戶。您選擇的冗餘級別會影響成本。冗餘越多,成本就越高。本地冗餘存儲 (LRS) 是最經濟實惠的。GRS 僅適用於標準 SMB 檔案共用。標準文件共用僅顯示存儲帳戶級別的事務資訊,因此建議在每個存儲帳戶中僅部署一個文件共用,以確保完整的計費可見性。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "1a78abc4-bed1-486b-952e-fd147db1123a",
+ "service": "Azure Files",
+ "text": "了解帳單的計算方式:標準 Azure 文件共用提供即用即付模型。高級共用使用預配模型,在該模型中,你可以預先指定一定數量的容量、IOPS 和輸送量,並為此付費。在即用即付模型中,計量器會根據您對該數據的使用方式跟蹤帳戶中存儲的數據量、容量以及事務的數量和類型。現收現付模式可能具有成本效益,因為您只需按實際使用量付費。使用即用即付模式,您無需根據性能要求或需求波動過度預配或取消預配存儲。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "52d8f743-4489-49a3-876c-0f36827a8f8e",
+ "service": "Azure Files",
+ "text": "估計容量和操作的成本:可以使用 Azure 定價計算機對與數據存儲、入口和出口關聯的成本進行建模。比較與各種區域、帳戶類型和冗餘配置相關的成本。有關詳細資訊,請參閱 Azure 檔存儲定價。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "9dede643-062f-40d2-869e-10458f04859a",
+ "service": "Azure Files",
+ "text": "選擇最具成本效益的訪問層:標準 SMB Azure 檔共用提供三個訪問層:事務優化、熱和冷。所有三層都存儲在相同的標準存儲硬體上。這三個層的主要區別在於它們的靜態數據存儲價格(在較冷層中較低)和事務價格(在較冷層中較高)。有關詳細資訊,請參閱標準層中的差異。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "8ec1a7f3-7cff-41f4-9cd5-59656983c739",
+ "service": "Azure Files",
+ "text": "確定需要哪些增值服務:Azure 檔支援與備份、Azure 檔同步和存儲 Defender 等增值服務集成。這些解決方案有自己的許可和產品成本,但通常被視為檔存儲總擁有成本的一部分。如果使用 Azure 檔案同步,請考慮其他成本方面。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "ae36a7c7-3255-4544-b751-bdbe08716cc2",
+ "service": "Azure Files",
+ "text": "創建防護措施:根據訂閱和資源組創建預算。使用治理策略來限制資源類型、配置和位置。此外,使用基於角色的訪問控制 (RBAC) 來阻止可能導致超支的操作。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "b5ca80d5-d5c8-4d24-8a3c-b2d96a2bcd71",
+ "service": "Azure Files",
+ "text": "監控成本:確保成本保持在預算範圍內,將成本與預測進行比較,並查看出現超支的地方。可以使用 Azure 門戶中的「成本分析」窗格來監視成本。還可以將成本數據匯出到存儲帳戶,並使用 Excel 或 Power BI 分析該數據。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "a6bc4298-8317-4153-b281-2b83af53fd26",
+ "service": "Azure Files",
+ "text": "監視使用方式:持續監視使用模式,以檢測未使用或未充分利用的存儲帳戶和文件共用。檢查容量是否意外增加,這可能表明您正在收集大量日誌檔或軟刪除的檔。制定刪除檔或將文件移動到更具成本效益的訪問層的策略。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "遷移到 Azure 檔存儲是一種臨時的事務繁重工作負載。優化高事務工作負載的價格,以説明降低遷移成本。",
+ "guid": "4fc0a2e6-1138-4c55-9644-890104fecd40",
+ "service": "Azure Files",
+ "text": "遷移到標準 Azure 檔共享時,建議在初始遷移期間從事務優化層開始。遷移期間的事務使用方式通常並不表示正常的事務使用方式。此注意事項不適用於高級文件共享,因為預配的計費模型不對事務收費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "為標準文件共享選擇適當的訪問層,以大大降低成本。",
+ "guid": "4ee4d06f-ae90-4ba1-b87e-608a8871e182",
+ "service": "Azure Files",
+ "text": "遷移工作負載后,如果使用標準文件共用,請仔細為文件共享選擇最具成本效益的訪問層:熱訪問層、冷訪問層或事務優化訪問層。在正常使用幾天或幾周後,您可以在定價計算機中插入交易計數,以確定哪個層最適合您的工作負載。大多數客戶應該選擇酷,即使他們積極使用共用。但是,您應該檢查每個共用,並將儲存容量與事務的餘額進行比較,以確定您的層。如果事務成本在帳單中佔很大比例,則使用冷訪問層所節省的成本通常會抵消此成本,並最大程度地降低總成本。我們建議您僅在必要時才在訪問層之間移動標準文件共用,以針對工作負載模式的變化進行優化。每次移動都會產生事務。有關詳細資訊,請參閱在標準層之間切換。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "按合理的數量超額預置高級文件共用,以説明保持性能並考慮未來的增長和性能要求。",
+ "guid": "569b045f-3018-4487-be79-5ae7fe5f42f6",
+ "service": "Azure Files",
+ "text": "如果使用高級共用,請確保為工作負載預置足夠的容量和性能,但不要過多,以免產生不必要的成本。我們建議將預留空間超額增加 2 到 3 倍。您可以根據儲存和輸入/輸出 (IO) 性能特徵動態擴展或縮減高級檔案共用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "三年期預留可以提供高達 36% 的文件存儲總成本折扣。預留不會影響性能。",
+ "guid": "e4d7ee80-2657-4a1b-bf32-b16588f1511e",
+ "service": "Azure Files",
+ "text": "使用 Azure 檔存儲預留(也稱為預留實例)預先承諾存儲使用方式並獲得折扣。對生產工作負載或具有一致佔用空間的開發/測試工作負載使用預留。有關詳細資訊,請參閱使用存儲預留優化成本。預留不包括事務、頻寬、數據傳輸和元數據存儲費用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "差異快照可確保您不會因存儲相同的數據而多次付費。但是,仍應監視快照使用方式,以幫助減少 Azure 檔存儲帳單。",
+ "guid": "90fbd856-01ee-41d2-a912-039edc971236",
+ "service": "Azure Files",
+ "text": "監控快照使用方式。快照會產生費用,但會根據每個快照的差異存儲使用方式進行計費。您只需為每個快照中的差額付費。有關更多資訊,請參閱快照。Azure 檔同步將共用級和檔級快照作為常規使用的一部分,這可能會增加 Azure 檔存儲總帳單。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "設置保留期,以便軟刪除的檔不會堆積起來並增加容量成本。在配置的保留期之後,永久刪除的數據不會產生費用。",
+ "guid": "d28f02bd-5de7-4d5b-bfbf-46ff161833b5",
+ "service": "Azure Files",
+ "text": "設置軟刪除功能的保留期,尤其是在您首次開始使用它時。請考慮從較短的保留期開始,以更好地瞭解該功能如何影響您的帳單。建議的最短保留期為 7 天。軟刪除標準檔共享和高級文件共享時,它們按已用容量計費,而不是按預配容量計費。高級文件共用在軟刪除狀態下按快照費率計費。在軟刪除狀態下,標準文件共用按正常費率計費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "ab85e732-c3b0-47d2-ae0c-fa0ccf3ee4d1",
+ "service": "Azure Files",
+ "text": "創建維護和緊急恢復計劃:考慮數據保護功能、備份和還原操作以及故障轉移過程。為潛在的數據丟失和數據不一致以及故障轉移的時間和成本做好準備。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "6fd27f65-59e7-41ee-8994-d93ef20dbd99",
+ "service": "Azure Files",
+ "text": "監視存儲帳戶的運行狀況:創建存儲見解儀錶板,以監視可用性、性能和復原能力指標。設置警報,在客戶注意到問題之前識別並解決系統中的問題。使用診斷設置將資源日誌路由到 Azure Monitor 日誌工作區。然後,可以查詢日誌以更深入地調查警報。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "e6d6588e-c646-4221-832a-0e289e272531",
+ "service": "Azure Files",
+ "text": "定期查看文件共享活動:共享活動可能會隨時間而變化。將標準文件共用移動到較冷的訪問層,也可以預配或取消預配高級共用的容量。將標準文件共用移動到不同的訪問層時,會產生事務費用。僅在需要時移動標準文件共用,以減少月度帳單。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "可以使用現有的 DevOps 流程來部署新的儲存帳戶,並使用 Azure Policy 強制實施其配置。",
+ "guid": "d069785a-7a9f-4a12-9642-3987b04328d1",
+ "service": "Azure Files",
+ "text": "使用基礎結構即代碼 (IaC) 在 Azure 資源管理器範本(ARM 範本)、Bicep 或 Terraform 中定義記憶體帳戶的詳細資訊。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您可以追蹤每個帳戶的運行狀況和操作。輕鬆創建儀錶板和報告,利益幹系人可以使用這些儀錶板和報告來跟蹤存儲帳戶的運行狀況。",
+ "guid": "9475eb5c-afb9-446a-bcb1-85ecc26112a9",
+ "service": "Azure Files",
+ "text": "使用存儲見解跟蹤存儲帳戶的運行狀況和性能。存儲見解提供所有存儲帳戶的故障、性能、可用性和容量的統一視圖。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Monitor 提供文件共用的可用性、性能和復原能力的視圖。",
+ "guid": "a4946cee-c1bc-4f12-9819-fddf25f093c4",
+ "service": "Azure Files",
+ "text": "使用「監視器」分析可用性、延遲和使用方式等指標,並創建警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "6c44da65-6a81-442d-87e7-dd1ecdbca0a5",
+ "service": "Azure Files",
+ "text": "規劃縮放:瞭解存儲帳戶、Azure 檔案存儲和 Azure 檔案同步的可伸縮性和性能目標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "d9878efd-6174-4cf7-b7f4-429d8e82e577",
+ "service": "Azure Files",
+ "text": "瞭解應用程式和使用模式以實現可預測的性能:確定延遲敏感度、IOPS 和輸送量要求、工作負載持續時間和頻率以及工作負載並行化。將 Azure 檔案儲存用於多線程應用程式,以幫助你實現服務的性能上限。如果大多數請求都以元數據為中心,例如 createfile、openfile、closefile、queryinfo 或 querydirectory,則這些請求會產生較差的延遲,高於讀取和寫入操作。如果遇到此問題,請考慮將文件共用分隔為同一存儲帳戶中的多個文件共用。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "3e382c2e-26ee-459d-967e-19377821c26e",
+ "service": "Azure Files",
+ "text": "選擇最佳存儲帳戶類型:如果工作負載需要大量的 IOPS、極快的數據傳輸速度或非常低的延遲,則應選擇高級 (FileStorage) 儲存帳戶。可以將標準常規用途 v2 帳戶用於大多數SMB檔共用工作負載。這兩種存儲帳戶類型之間的主要權衡是成本與性能。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "a0564644-9831-4f33-b4e7-6a56a6a658fb",
+ "service": "Azure Files",
+ "text": "在與連接用戶端相同的區域中創建存儲帳戶,以減少延遲:距離 Azure 檔案存儲服務越遠,延遲就越大,實現性能規模限制的難度就越大。從本地環境訪問 Azure 檔案儲存時,此注意事項尤其正確。如果可能,請確保存儲帳戶和客戶端位於同一 Azure 區域中。通過最大程度地減少網路延遲或使用 ExpressRoute 連接透過專用連接將本地網路擴展到 Microsoft 雲,從而針對本地用戶端進行優化。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "0dfbbd8e-9f88-4e9d-b13c-01f12078faef",
+ "service": "Azure Files",
+ "text": "收集性能數據:監控工作負載性能,包括延遲、可用性和使用方式指標。分析日誌以診斷超時和限制等問題。創建警報,在文件共用受到限制、即將受到限制或遇到高延遲時通知你。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "86f0acc5-ce95-4ea0-b0b7-b733f1b2b10b",
+ "service": "Azure Files",
+ "text": "針對混合部署進行優化:如果使用 Azure 檔同步,則同步性能取決於許多因素:Windows Server 和基礎磁碟配置、伺服器與 Azure 儲存之間的網路頻寬、檔大小、數據集總大小以及數據集上的活動。若要衡量基於 Azure 檔同步的解決方案的性能,請確定每秒處理的物件數,例如文件和目錄。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "提高輸送量和 IOPS,同時降低總擁有成本。性能優勢隨著分配負載的文件數量的增加而增加。",
+ "guid": "24a072d9-074d-4bcf-a65d-9a14336f8075",
+ "service": "Azure Files",
+ "text": "為高級SMB檔共享啟用SMB多通道。SMB 多通道允許SMB 3.1.1用戶端建立到SMB Azure檔共用的多個網路連接。僅當在用戶端(用戶端)和服務端 (Azure) 上都啟用該功能時,SMB 多通道才有效。在 Windows 用戶端上,SMB 多通道預設處於啟用狀態,但你需要在存儲帳戶上啟用它。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "大規模提高性能,並降低NFS檔共用的總擁有成本。",
+ "guid": "c06bc804-3315-43f1-96ca-70169c020494",
+ "service": "Azure Files",
+ "text": "在 Linux 用戶端上將 nconnect 用戶端裝載選項與 NFS Azure 檔共用一起使用。Nconnect 使你能夠在用戶端和適用於 NFSv4.1 的 Azure 檔案存儲高級服務之間使用更多 TCP 連接。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "避免限制,以提供最佳的客戶端體驗。",
+ "guid": "494347eb-d007-45b5-b13c-9a28ee4f8e9a",
+ "service": "Azure Files",
+ "text": "請確保檔共用或存儲帳戶未受到限制,這可能會導致高延遲、低輸送量或低 IOPS。當達到 IOPS、入口或出口限制時,請求將受到限制。對於標準存儲帳戶,限制發生在帳戶級別。對於高級文件共用,限制通常發生在共享級別。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "5820ff87-d98e-490e-93a0-28028bbb05e6",
+ "service": "Azure Firewall",
+ "text": "在中心虛擬網路中部署 Azure 防火牆,或作為 Azure 虛擬 WAN 中心的一部分部署 Azure 防火牆。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "7c605481-a9d5-480f-8738-ac2022ef28ed",
+ "service": "Azure Firewall",
+ "text": "利用可用區彈性。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "2ceafe5f-6511-42a6-9687-cebaf586b293",
+ "service": "Azure Firewall",
+ "text": "創建 Azure 防火牆策略結構。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "85a53628-bd7b-43bb-a817-b6f0c11c34c9",
+ "service": "Azure Firewall",
+ "text": "查看「已知問題」 清單。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "74a2596f-1cc9-4715-8de2-5afdde7b9f9a",
+ "service": "Azure Firewall",
+ "text": "監視 Azure 防火牆運行狀況。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "使用用於流量治理和保護的原生安全服務輕鬆創建中心輻射型和可傳遞架構。 有關網路拓撲的詳細資訊,請參閱 Azure 雲採用框架文檔。",
+ "guid": "21f4d348-c086-4e96-b5bc-91f8a3c25841",
+ "service": "Azure Firewall",
+ "text": "將 Azure 防火牆管理器與傳統的 Hub & Spokes 或 Azure 虛擬 WAN 網路拓撲結合使用,以部署和管理 Azure 防火牆的實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "Azure 防火牆策略可以按層次結構進行排列,以覆蓋中央基本策略。允許使用精細的策略來滿足特定區域的要求。通過基於角色的訪問控制 (RBAC) 將增量防火牆策略委派給本地安全團隊。某些設置是特定於每個實例的,例如 DNAT 規則和 DNS 配置,然後可能需要多個專用策略。",
+ "guid": "1e604a31-46f0-4fcc-9f0e-1ca46cc3f677",
+ "service": "Azure Firewall",
+ "text": "創建 Azure 防火牆策略以管理全球網路環境中的安全狀況。將策略分配給 Azure 防火牆的所有實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "對於現有部署,請將 Azure 防火牆規則遷移到 Azure 防火牆管理器策略。使用 Azure 防火牆管理器集中管理防火牆和策略。 有關詳細資訊,請參閱遷移到 Azure 防火牆高級版。",
+ "guid": "d17fbf01-c796-45dd-9ca4-99af38b2ae9b",
+ "service": "Azure Firewall",
+ "text": "將 Azure 防火牆經典規則遷移到現有部署的 Azure 防火牆管理器策略。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "Azure 防火牆產品組在此位置維護已知問題的更新清單。此清單包含與按設計行為、正在構建的修復、平臺限制以及可能的解決方法或緩解措施相關的重要資訊。",
+ "guid": "b7623c43-bb6b-4629-a655-551c92e2dffa",
+ "service": "Azure Firewall",
+ "text": "查看 Azure 防火牆已知問題清單。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "策略結構存在限制,包括規則和規則集合組的數量、策略總大小、源/目標目標。請務必撰寫您的政策,並保持在記錄的閾值之後。",
+ "guid": "9230da4d-4e27-4106-9552-294b1a93d780",
+ "service": "Azure Firewall",
+ "text": "確保 Azure 防火牆策略遵守 Azure 防火牆限制和建議。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "當 Azure 防火牆部署在單個可用性區域中時,以及當它部署在多個區域中時,它會提供不同的 SLA。有關詳細資訊,請參閱 Azure 防火牆的 SLA。有關所有 Azure SLA 的資訊,請參閱 Azure 服務的 SLA 摘要。",
+ "guid": "6a88967d-b182-437d-ac3b-1cb45ddfaa86",
+ "service": "Azure Firewall",
+ "text": "跨多個可用性區域部署 Azure 防火牆,以實現更高的服務級別協定 (SLA)。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "對於傳統的 Hub & Spokes 體系結構,本文將介紹多區域詳細資訊。對於受保護的虛擬中心 (Azure 虛擬 WAN) ,必須配置路由意向和策略,以保護中心間和分支到分支的通信。對於設計為具有抗故障和容錯能力的工作負載,請記住將 Azure 防火牆和 Azure 虛擬網路的實例視為區域資源。",
+ "guid": "a4b78865-a047-4afc-b7e6-b2f54cee83cb",
+ "service": "Azure Firewall",
+ "text": "在多區域環境中,為每個區域部署一個 Azure 防火牆實例。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "密切監視 Azure 防火牆運行狀況的關鍵指標指示器,例如輸送量、防火牆運行狀況、SNAT 埠利用率和 AZFW 延遲探測指標。此外,Azure 防火牆現在與 Azure 資源運行狀況集成。通過 Azure 防火牆資源運行狀況檢查,現在可以查看 Azure 防火牆的運行狀況,並解決可能影響 Azure 防火牆資源的服務問題。",
+ "guid": "9621bb59-3034-4e42-8344-5ce24b47425b",
+ "service": "Azure Firewall",
+ "text": "監視 Azure 防火牆指標和資源運行狀況狀態。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "b0b563a2-ec75-4a12-981a-6c6138175122",
+ "service": "Azure Firewall",
+ "text": "確定是否需要強制隧道。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c39df35c-43a4-4bc2-ae65-3201a1b274a4",
+ "service": "Azure Firewall",
+ "text": "根據最低許可權訪問條件為策略創建規則。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "08bebd22-0d6a-469c-ae5b-fed8774452de",
+ "service": "Azure Firewall",
+ "text": "利用威脅情報。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "89484b0c-7b36-4fa2-9064-ae6db7dc411a",
+ "service": "Azure Firewall",
+ "text": "啟用 Azure 防火牆 DNS 代理。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a875d2e4-5476-450f-8206-aa79ecdcb2e3",
+ "service": "Azure Firewall",
+ "text": "通過 Azure 防火牆定向網路流量。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "50dc96a3-9dca-4aab-97f5-9f8654d4f49c",
+ "service": "Azure Firewall",
+ "text": "確定是否要使用第三方安全即服務 (SECaaS) 提供者。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "98318578-48f2-4870-adc0-a6a2cf9ce25e",
+ "service": "Azure Firewall",
+ "text": "使用 DDoS 保護 Azure 防火牆公共 IP 位址。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 防火牆必須具有直接的 Internet 連接。如果 AzureFirewallSubnet 透過邊界閘道協定獲知到本地網路的預設路由,則必須在強制隧道模式下配置 Azure 防火牆。使用強制隧道功能時,需要另一個 /26 位址空間用於 Azure 防火牆管理子網。如果這是無法在強制隧道模式下重新配置的現有 Azure 防火牆實例,則需要將其命名為 AzureFirewallManagementSubnet,請創建具有 0.0.0.0/0 路由的 UDR。將 NextHopType 值設置為 Internet。將其與 AzureFirewallSubnet 關聯以維護 Internet 連接。",
+ "guid": "a845b563-f080-4a92-83b0-400feb87ee4e",
+ "service": "Azure Firewall",
+ "text": "如果需要將所有 Internet 綁定流量路由到指定的下一躍點,而不是直接路由到 Internet,請在強制隧道模式下配置 Azure 防火牆(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "部署新的 Azure 防火牆實例時,如果啟用強制隧道模式,則可以將公共 IP 位址設置為“無”以部署完全專用的數據平面。但是,管理平面仍然需要公共IP僅用於管理目的。來自虛擬網路和本地網路的內部流量不會使用該公共IP。有關強制隧道的詳細資訊,請參閱 Azure 防火牆強制隧道。",
+ "guid": "176ae9e3-7a07-4885-ab4e-72a9ea2ee7fc",
+ "service": "Azure Firewall",
+ "text": "在強制隧道模式下配置 Azure 防火牆時,將公共IP位址設置為“無”,以部署完全專用的數據平面(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 防火牆策略可以按層次結構進行排列,以覆蓋中央基本策略。允許使用精細的策略來滿足特定區域的要求。每個策略可以包含不同的 DNAT、網路和應用程式規則集,這些規則具有特定的優先順序、操作和處理順序。根據最低許可權訪問零信任原則創建規則。本文介紹了如何處理規則。",
+ "guid": "f1c5e5d4-9e41-4b27-b53f-fb36ddce75b7",
+ "service": "Azure Firewall",
+ "text": "根據最低許可權訪問條件為防火牆策略創建規則。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "IDPS 是最強大的 Azure 防火牆 (高級) 安全功能之一,應啟用。根據安全性和應用程式要求,並考慮性能影響(請參閱下面的“成本”部分),可以選擇“警報”或“警報”和“拒絕”模式。",
+ "guid": "0722a8f4-bea5-4309-93de-d93fb93e0733",
+ "service": "Azure Firewall",
+ "text": "在警報或警報和拒絕模式下啟用 IDPS。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "啟用此功能會將 VNet 中的用戶端作為 DNS 伺服器指向 Azure 防火牆。它將保護不會被直接訪問和暴露的內部DNS基礎設施。還必須將 Azure 防火牆配置為使用用於轉發 DNS 查詢的自定義 DNS。",
+ "guid": "8afc40b9-179e-4b5d-ba89-897925ad6d09",
+ "service": "Azure Firewall",
+ "text": "啟用 Azure 防火牆 (DNS) 代理配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在傳統的 Hub & Spokes 體系結構中,配置 UDR 以強制流量通過 Azure 防火牆進行“SpoketoSpoke”、“SpoketoInternet”和“SpoketoHybrid”連接。在 Azure 虛擬 WAN 中,請配置路由意向和策略,以通過整合到中心的 Azure 防火牆實例重定向專用和/或 Internet 流量。",
+ "guid": "54cc495b-54f8-4dc9-9ed9-e20c15a8beb9",
+ "service": "Azure Firewall",
+ "text": "配置使用者定義的路由 (UDR) 以強制流量通過 Azure 防火牆。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "在出站路徑上啟用顯式代理功能后,可以在發送 Web 應用程式(例如 Web 瀏覽器)上配置代理設置,並將 Azure 防火牆配置為代理。因此,Web 流量將到達防火牆的專用IP位址,因此直接從防火牆退出,而無需使用UDR。此功能還有助於在不修改現有網路路由的情況下使用多個防火牆。",
+ "guid": "18462426-38d0-444b-aaec-99aa97aefc57",
+ "service": "Azure Firewall",
+ "text": "如果無法應用 UDR,並且只需要 Web 流量重定向,請考慮使用 Azure 防火牆作為顯式代理",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "您可以使用熟悉的同類最佳第三方 SECaaS 產品來保護使用者的互聯網訪問。此方案確實需要在中心中使用 S2S VPN 閘道的 Azure 虛擬 WAN,因為它使用 IPSec 隧道連接到供應商的基礎結構。SECaaS 供應商可能會收取額外的許可費用並限制IPSec連接的輸送量。存在 ZScaler Cloud Connector 等替代解決方案,可能更合適。",
+ "guid": "cfcce0d3-c52d-4405-9316-d503ffcf5349",
+ "service": "Azure Firewall",
+ "text": "如果要使用受支援的第三方軟體即服務 (SaaS) 安全提供者來保護出站連接,請在 Firewall Manager 中配置這些解決方案。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "可以在 Azure 防火牆和防火牆策略中使用基於 DNS 解析的 FQDN。此功能允許您使用任何 TCP/UDP 協定(包括 NTP、SSH、RDP 等)篩選出站流量。必須啟用 Azure 防火牆 DNS 代理配置才能在網路規則中使用 FQDN。若要瞭解其工作原理,請參閱網路規則中的 Azure 防火牆 FQDN 篩選。",
+ "guid": "ce2815a6-eee5-4c54-91e7-9ee1e95a191a",
+ "service": "Azure Firewall",
+ "text": "在網路規則中使用完全限定的功能變數名稱 (FQDN) 篩選。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "服務標記表示一組IP位址前綴,以説明最大程度地降低安全規則創建的複雜性。使用網路規則中的服務標記,可以在不打開大範圍 IP 位址的情況下啟用對 Azure、Dynamics 和 Office 365 中特定服務的出站訪問。Azure 將自動維護這些標記與每個服務使用的基礎 IP 位址之間的映射。此處列出了可用於 Azure 防火牆的服務標記清單:Az Firewall Service Tags。",
+ "guid": "55fe92cd-c2a0-4b0b-bd8b-691291c73651",
+ "service": "Azure Firewall",
+ "text": "在網路規則中使用服務標記以啟用對特定 Microsoft 服務的選擇性訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "FQDN 標記表示與已知 Microsoft 服務關聯的一組完全限定的功能變數名稱 (FQDN)。可以在應用程式規則中使用 FQDN 標記,以允許某些特定 Azure 服務、Office 365、Windows 365 和 Intune 所需的出站網路流量通過防火牆。",
+ "guid": "c9cac1b2-3969-4de0-b36f-6f9992d9ebc6",
+ "service": "Azure Firewall",
+ "text": "在應用程式規則中使用 FQDN 標記以啟用對特定 Microsoft 服務的選擇性訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "DDoS 防護計劃提供增強的緩解功能,以保護您的防火牆免受 DDoS 攻擊。Azure 防火牆管理器是一個集成工具,用於創建防火牆基礎結構和 DDoS 保護計劃。有關詳細資訊,請參閱使用 Azure 防火牆管理器配置 Azure DDoS 防護計劃。",
+ "guid": "e7925fd9-7502-4cb4-9b51-cbf8f546a5b2",
+ "service": "Azure Firewall",
+ "text": "使用 Azure 防火牆管理器創建 DDoS 保護計劃並將其與中心虛擬網路關聯(不適用於 Azure 虛擬 WAN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Azure 防火牆高級版時,如果使用 TLS 檢查功能,建議將內部企業證書頒發機構 (CA) 用於生產環境。自簽名證書應僅用於測試/PoC 目的。",
+ "guid": "2e318870-f258-484d-aef6-ed2972db1f44",
+ "service": "Azure Firewall",
+ "text": "使用企業 PKI 產生用於 TLS 檢查的證書。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "如果您的安全要求需要對 Web 應用程式(檢查和加密)實施零信任方法,建議遵循本指南。在本文檔中,將介紹如何在傳統的中心輻射型和虛擬 WAN 方案中將 Azure 防火牆和應用程式閘道集成在一起。",
+ "guid": "34821124-0275-4c49-8f1c-20eb84027df3",
+ "service": "Azure Firewall",
+ "text": "查看 Azure 防火牆和應用程式閘道的零信任配置指南",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ffdfd2b7-e799-4c09-9c76-1471fe5f8db9",
+ "service": "Azure Firewall",
+ "text": "選擇要部署的 Azure 防火牆 SKU。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "cca81cf9-4d7f-4e04-99e9-8ecfb533d814",
+ "service": "Azure Firewall",
+ "text": "確定某些實例是否不需要永久 24x7 分配。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "50c204ab-2e28-456c-a731-3ecf2e38d6d7",
+ "service": "Azure Firewall",
+ "text": "確定可以在哪些方面優化跨工作負載的防火牆使用。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "365207d2-1008-4a6e-ad87-f4191a31a004",
+ "service": "Azure Firewall",
+ "text": "監控和優化防火牆實例的使用方式,以確定成本效益。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "39b1fd82-3efb-459b-b789-a9dc631f9f90",
+ "service": "Azure Firewall",
+ "text": "查看並優化所需的公共IP位址數和使用的策略數。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "46753a55-3740-4a6d-808b-fbe485bc66e5",
+ "service": "Azure Firewall",
+ "text": "審查日誌記錄要求,估計成本並隨著時間的推移進行控制。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "Azure 防火牆可以部署在三個不同的 SKU 中:基本、標準和高級。建議使用 Azure 防火牆高級版來保護高度敏感的應用程式(例如付款處理)。對於尋找第 3 層至第 7 層防火牆且需要自動縮放以處理高達 30 Gbps 的峰值流量期的客戶,建議使用 Azure 防火牆標準版。 對於輸送量需求為 250 Mbps 的 SMB 客戶,建議使用 Azure 防火牆基本版。如果需要,可以在標準版和高級版之間降級或升級,如此處所述。 有關詳細資訊,請參閱選擇正確的 Azure 防火牆 SKU 以滿足你的需求。",
+ "guid": "ba45f704-2456-4d6a-999d-57db4dbf3ff5",
+ "service": "Azure Firewall",
+ "text": "部署正確的 Azure 防火牆 SKU。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可能具有僅在工作時間使用的開發或測試環境。有關詳細資訊,請參閱取消分配和分配 Azure 防火牆。",
+ "guid": "2ef42b67-50cc-4d54-bd3d-324ad2044fc7",
+ "service": "Azure Firewall",
+ "text": "停止不需要 24x7 全天候運行的 Azure 防火牆部署。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "可以在中心虛擬網路或虛擬 WAN 安全中心中使用 Azure 防火牆的中心實例,並在從同一區域連接到同一中心的許多分支虛擬網路中共用同一防火牆。確保中心輻射型拓撲中沒有意外的跨區域流量。",
+ "guid": "ae5816a1-1766-425a-a117-2873865a9f10",
+ "service": "Azure Firewall",
+ "text": "在多個工作負載和 Azure 虛擬網路之間共用同一 Azure 防火牆實例。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "Top Flows 日誌(在業界稱為 Fat Flows)顯示通過防火牆實現最高輸送量的頂級連接。建議定期查看 Azure 防火牆處理的流量,並搜索可能的優化方法,以減少通過防火牆的流量。",
+ "guid": "791f974e-8c73-46ee-9b9e-26dd3a6c6845",
+ "service": "Azure Firewall",
+ "text": "定期查看 Azure 防火牆處理的流量,並查找原始工作負載優化",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "若要識別未使用的 Azure 防火牆部署,請首先分析與指向防火牆專用 IP 的子網關聯的監視指標和 UDR。將該資訊與其他驗證相結合,例如,Azure 防火牆實例是否具有針對 NAT、網路和應用程式的任何規則 (經典) ,或者即使 DNS 代理設置配置為 已禁用,以及有關環境和部署的內部文檔。您可以檢測出在一段時間內具有成本效益的部署。 有關監視日誌和指標的詳細資訊,請參閱監視 Azure 防火牆日誌和指標和 SNAT 埠利用率。",
+ "guid": "6590ab7b-01d8-487c-ad40-c325eada375c",
+ "service": "Azure Firewall",
+ "text": "查看未充分利用的 Azure 防火牆實例。識別並刪除未使用的 Azure 防火牆部署。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "請仔細查看 Firewall Manager 策略、關聯和繼承。策略根據防火牆關聯進行計費。具有零個或一個防火牆關聯的策略是免費的。具有多個防火牆關聯的策略按固定費率計費。有關詳細資訊,請參閱定價 - Azure 防火牆管理器。",
+ "guid": "c82f1a0b-3dd1-4da7-9006-5b870e0ea843",
+ "service": "Azure Firewall",
+ "text": "使用 Azure 防火牆管理器及其策略可降低運營成本、提高效率並減少管理開銷。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "驗證是否所有關聯的公共IP位址都在使用中。如果它們未在使用中,請取消關聯並刪除它們。在刪除任何IP位址之前評估SNAT埠利用率。您只需使用防火牆所需的公共IP數量。有關詳細資訊,請參閱監視 Azure 防火牆日誌和指標以及 SNAT 埠利用率。",
+ "guid": "58401f6a-8858-4d03-bf00-7f6d8747297a",
+ "service": "Azure Firewall",
+ "text": "刪除未使用的公共IP位址。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "Azure 防火牆能夠通過事件中心將它看到的所有流量的元數據全面記錄到 Log Analytics 工作區、存儲或第三方解決方案中。但是,所有日誌記錄解決方案都會產生數據處理和存儲成本。在非常大的數量下,這些成本可能很高,應考慮一種經濟高效的方法和日誌分析的替代方法,並估算成本。考慮是否需要記錄所有日誌記錄類別的流量元數據,並在需要時在診斷設置中進行修改。",
+ "guid": "a9f71813-ccf8-427a-9ce3-676b4123eff4",
+ "service": "Azure Firewall",
+ "text": "查看記錄要求。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "c8e11b57-bc16-4a60-9c0d-aeae7239fe91",
+ "service": "Azure Firewall",
+ "text": "維護 Azure 防火牆配置和策略的清單和備份。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "be3e8ab7-db2a-40f7-a76a-fba15b34b88d",
+ "service": "Azure Firewall",
+ "text": "利用診斷日誌進行防火牆監控和故障排除。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "af454d15-f640-47db-9864-7c31cbdcdffc",
+ "service": "Azure Firewall",
+ "text": "利用 Azure 防火牆監視工作簿。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "010e0c46-9d19-46fb-9a85-4bb79828db8a",
+ "service": "Azure Firewall",
+ "text": "定期查看您的政策洞察和分析。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "e455cf35-374c-4e02-9432-e0dc531b829b",
+ "service": "Azure Firewall",
+ "text": "將 Azure 防火牆與 Microsoft Defender for Cloud 和 Microsoft Sentinel 集成。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "應使用 Azure 防火牆來控制跨 VNet、VNet 與本地網路之間的流量、到 Internet 的出站流量以及傳入的非 HTTP/s 流量。對於 VNet 內部流量控制,建議使用網路安全組。",
+ "guid": "337df674-237d-4b82-ac92-ae45f34a6e3d",
+ "service": "Azure Firewall",
+ "text": "請勿使用 Azure 防火牆進行 VNet 內部流量控制。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "如果使用基礎結構即代碼 (IaC) 方法來維護 Azure 防火牆和所有依賴項,則 Azure 防火牆策略的備份和版本控制應已到位。如果沒有,可以部署基於外部邏輯應用的配套機制,以自動化並提供有效的解決方案。",
+ "guid": "174e4ca6-77d4-4b83-8f05-0c54c43792ec",
+ "service": "Azure Firewall",
+ "text": "維護 Azure Policy 專案的定期備份。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷日誌是 Azure 防火牆的許多監視工具和策略的關鍵元件,應啟用它。可以使用防火牆日誌或工作簿監視 Azure 防火牆。還可以使用活動日誌來審核對 Azure 防火牆資源的操作。",
+ "guid": "7e27b44b-e8c0-4f25-9fce-78a85810d715",
+ "service": "Azure Firewall",
+ "text": "啟用 Azure 防火牆的診斷日誌。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "結構化防火牆日誌是一種以特定新格式組織的日誌數據類型。它們使用預定義的架構來構建日誌數據,使其易於搜索、篩選和分析。最新的監視工具基於這種類型的日誌,因此它通常是先決條件。僅當存在具有先決條件的現有工具時,才使用以前的診斷日誌格式。不要同時啟用這兩種日誌記錄格式。",
+ "guid": "078ab6f4-2ef5-4f91-856c-be9e3c2748a1",
+ "service": "Azure Firewall",
+ "text": "使用結構化防火牆日誌格式。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure 防火牆門戶體驗現在在“監視”部分 UI 下包含一個新工作簿,不再需要單獨安裝。使用 Azure 防火牆工作簿,可以從 Azure 防火牆事件中提取有價值的見解,深入研究應用程式和網路規則,並檢查有關 URL、埠和地址之間的防火牆活動的統計資訊。",
+ "guid": "a246ca16-d2da-4ebc-ad28-0bcbb0813be0",
+ "service": "Azure Firewall",
+ "text": "使用內置的 Azure 防火牆監視工作簿。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "應創建警報,至少監視輸送量、防火牆運行狀況狀態、SNAT 埠利用率和 AZFW 延遲探測指標。有關監視日誌和指標的資訊,請參閱監視 Azure 防火牆日誌和指標。",
+ "guid": "0c405dff-403a-4ead-94d9-5539ba1eaea6",
+ "service": "Azure Firewall",
+ "text": "監視關鍵指標,併為 Azure 防火牆容量利用率的指標創建警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "如果這些工具在環境中可用,建議利用與 Microsoft Defender for Cloud 和 Microsoft Sentinel 解決方案的集成。借助 Microsoft Defender for Cloud 集成,可以在一個位置可視化網路基礎結構和網路安全的全面狀態,包括分佈在 Azure 中不同區域的所有 VNet 和虛擬中心的 Azure 網路安全。與 Microsoft Sentinel 集成可提供威脅檢測和預防功能。",
+ "guid": "6643f4d1-ee99-4466-9175-164787d00fc3",
+ "service": "Azure Firewall",
+ "text": "配置 Azure 防火牆與 Microsoft Defender for Cloud 和 Microsoft Sentinel 的集成。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "策略分析是一項新功能,可深入瞭解 Azure 防火牆策略的影響。它可以説明您識別策略中的潛在問題(達到策略限制、低利用率規則、冗餘規則、規則過於通用、IP 組使用建議),並提供建議以改善您的安全狀況和規則處理性能。",
+ "guid": "43d91873-4442-40ae-b2a3-263bc7fdcaab",
+ "service": "Azure Firewall",
+ "text": "定期查看策略分析儀錶板,以確定潛在問題。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "為 Azure 防火牆提供了示例查詢。這些將使您能夠快速識別防火牆內部發生的情況,並檢查觸發了哪個規則,或者哪個規則允許/阻止請求。",
+ "guid": "8bc24ea6-da9e-48b8-a05c-4fce251d2046",
+ "service": "Azure Firewall",
+ "text": "熟悉 KQL(Kusto 查詢語言)查詢,以便使用 Azure 防火牆日誌進行快速分析和故障排除。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "9469b3e2-6be2-470b-a10b-9fb0150c5733",
+ "service": "Azure Firewall",
+ "text": "定期審查和優化防火牆規則。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "9efe3606-1aa2-4e06-bf6a-2e5214cf080f",
+ "service": "Azure Firewall",
+ "text": "查看策略要求和機會,以匯總IP範圍和URL清單。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "93db9b9d-c43d-47e2-a1cf-e81841274059",
+ "service": "Azure Firewall",
+ "text": "評估 SNAT 埠要求。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "fbe59997-e12b-497b-bdbd-d2a5e3f728e7",
+ "service": "Azure Firewall",
+ "text": "規劃負載測試以測試環境中的自動縮放性能。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "c68f8c08-fe1e-4515-a877-67daaa008ab0",
+ "service": "Azure Firewall",
+ "text": "如果不需要,請不要啟用診斷工具和日誌記錄。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "策略分析是一項新功能,可深入瞭解 Azure 防火牆策略的影響。它可以説明您識別策略中的潛在問題(達到策略限制、低利用率規則、冗餘規則、規則過於通用、IP 組使用建議),並提供建議以改善您的安全狀況和規則處理性能。",
+ "guid": "cbbaf175-2b8e-4a1f-af5a-a9cbfb798ffb",
+ "service": "Azure Firewall",
+ "text": "使用「策略分析」儀錶板確定防火牆策略的潛在優化。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "不要顯式構建和維護一長串公共 Internet 網站,而應考慮使用 Azure 防火牆 Web 類別。此功能將對 Web 內容進行動態分類,並允許創建緊湊的應用程式規則。",
+ "guid": "b8bc28b7-69d4-49d3-8a1e-8dd7ba71ebbe",
+ "service": "Azure Firewall",
+ "text": "請考慮使用 Web 類別來批量允許或拒絕出站訪問。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果需要 Azure 防火牆在 IDPS 模式下運行警報和拒絕,請仔細考慮本頁中所述的性能影響。",
+ "guid": "b91be607-0c6b-4c0d-bdd2-367879f7632d",
+ "service": "Azure Firewall",
+ "text": "評估IDPS在警報和拒絕模式下的性能影響。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆目前支援每個後端虛擬機規模集實例的每個公共IP位址 2496個埠。默認情況下,有兩個虛擬機規模集實例。因此,每個流目標 IP、目標埠和協定(TCP 或 UDP)有 4992 個埠。防火牆最多可擴展到20個實例。可以通過將 Azure 防火牆部署配置為至少 5 個公共 IP 位址,以便部署容易受到 SNAT 耗盡的影響,從而繞過這些限制。",
+ "guid": "a5847147-e7ef-48d1-ba16-d896fdce1b9f",
+ "service": "Azure Firewall",
+ "text": "評估潛在的 SNAT 埠耗盡問題。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "在測試前 20 分鐘創建不屬於負載測試的初始流量。使用診斷設置來捕獲縱向擴展和縱向縮減事件。可以使用 Azure 負載測試服務來生成初始流量。允許 Azure 防火牆實例將其實例縱向擴展到最大值。",
+ "guid": "908a8bfa-9e9f-4199-8b5a-f2a031ab22e0",
+ "service": "Azure Firewall",
+ "text": "在進行任何性能測試之前,請正確預熱 Azure 防火牆。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆是虛擬網路中的專用部署。在虛擬網路中,Azure 防火牆實例需要專用子網。Azure 防火牆在縮放時預配更多容量。其子網的 /26 位址空間可確保防火牆有足夠的可用IP位址來適應縮放。Azure 防火牆不需要大於 /26 的子網。Azure 防火牆子網名稱必須是 AzureFirewallSubnet。",
+ "guid": "d0e66443-59f1-48cb-995f-eaa6688c4f3b",
+ "service": "Azure Firewall",
+ "text": "配置具有 /26 位址空間的 Azure 防火牆子網 (AzureFirewallSubnet)。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure 防火牆提供了一些高級日誌記錄功能,這些功能保持始終處於活動狀態的成本可能很高。相反,它們應僅用於故障排除目的,並且持續時間有限,然後在不再需要時禁用。例如,「排名靠前」流和「流跟蹤日誌」成本高昂可能會導致 Azure 防火牆基礎結構上的 CPU 和存儲使用率過高。",
+ "guid": "2c51e141-6e45-42cd-8c22-c55b219ffe83",
+ "service": "Azure Firewall",
+ "text": "如果不需要,請不要啟用高級日誌記錄",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "59ed40bd-06a0-4125-ab99-afc88a248aa5",
+ "service": "Azure Front Door",
+ "text": "估計流量模式和流量。從用戶端到 Azure Front Door 邊緣的請求數可能會影響層選擇。如果需要支援大量請求,請考慮使用 Azure Front Door Premium 層,因為性能最終會影響可用性。但是,需要進行成本權衡。性能效率中介紹了這些層。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "51f023f3-53b4-4878-8548-2b08a6b095ab",
+ "service": "Azure Front Door",
+ "text": "選擇您的部署策略。基本的部署方法是主動-主動和主動-被動。主動-主動部署意味著運行工作負載的多個環境或標記為流量提供服務。主動-被動部署意味著只有主要區域處理所有流量,但在必要時會故障轉移到次要區域。在多區域部署中,標記在不同區域運行,以便使用全域負載均衡器(如 Azure Front Door)分配流量,從而實現更高的可用性。因此,為適當的部署方法配置負載均衡器非常重要。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "486f318a-8747-45e5-a5f4-97642d4fada6",
+ "service": "Azure Front Door",
+ "text": "在 Azure Front Door 和源伺服器上使用相同的主機名。為確保 Cookie 或重定向 URL 正常工作,請在 Web 應用程式前面使用反向代理(如負載均衡器)時保留原始 HTTP 主機名。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "9bc96e35-d25f-4521-86f8-8cadefb23576",
+ "service": "Azure Front Door",
+ "text": "實現運行狀況終結點監視模式。應用程式應公開運行狀況終結點,這些終結點聚合應用程式為請求提供服務所需的關鍵服務和依賴項的狀態。Azure Front Door 運行狀況探測使用終結點來檢測源伺服器的運行狀況。有關詳細資訊,請參閱運行狀況終結點監視模式。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "96c8dc89-cafe-411e-9080-35c13fffb8b3",
+ "service": "Azure Front Door",
+ "text": "利用 Azure Front Door 中的內置內容分發網路功能。Azure Front Door 的內容分發網路功能具有數百個邊緣位置,可説明抵禦分散式拒絕服務 (DDoS) 攻擊。這些功能有助於提高可靠性。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "750bc3ba-30aa-44fc-88aa-bc93cdf29cdf",
+ "service": "Azure Front Door",
+ "text": "請考慮冗餘流量管理選項。Azure Front Door 是一項全球分散式服務,在環境中作為單一實例運行。Azure Front Door 是系統中的潛在單點故障。如果服務失敗,則用戶端在停機期間無法訪問您的應用程式。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "您可以通過使用一系列決策步驟和您的設計來選擇最佳的原始資源。選定的源在允許的延遲範圍內以指定的權重比率提供流量。",
+ "guid": "1a6fba56-5098-4506-9be0-940fe556996c",
+ "service": "Azure Front Door",
+ "text": "選擇支援您的部署策略的路由方法。 加權方法根據配置的權重係數分配流量,支持主動-主動模型。 基於優先順序的值將主要區域配置為接收所有流量並將流量作為備份發送到次要區域,該值支持主動-被動模型。 將上述方法與延遲相結合,使延遲最低的源接收流量。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "多個源通過在應用程式的多個實例之間分配流量來支援冗餘。如果一個實例不可用,則其他後端源仍然可以接收流量。",
+ "guid": "00f51ce2-46a9-4051-ab0e-762743d0837d",
+ "service": "Azure Front Door",
+ "text": "通過在一個或多個後端池中擁有多個源來支援冗餘。始終具有應用程式的冗餘實例,並確保每個實例都公開一個端點或源。您可以將這些源放置在一個或多個後端池中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "啟用的運行狀況探測是運行狀況監視模式實現的一部分。運行狀況探測可確保 Azure Front Door 僅將流量路由到運行狀況良好且足以處理請求的實例。 有關詳細資訊,請參閱有關運行狀況探測的最佳做法。",
+ "guid": "17fbec2c-ddb4-4490-946c-a151ae0fadd4",
+ "service": "Azure Front Door",
+ "text": "在源上設置運行狀況探測。配置 Azure Front Door 以執行運行狀況檢查,以確定後端實例是否可用並準備好繼續接收請求。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "超時通過終止完成時間超過預期時間的請求來説明防止性能問題和可用性問題。",
+ "guid": "1a308f11-1d93-4d57-bd84-cbd8f6198dd2",
+ "service": "Azure Front Door",
+ "text": "設置將請求轉發到後端的超時。 根據端點的需求調整超時設置。否則,Azure Front Door 可能會在源發送回應之前關閉連接。 如果所有源的超時都較短,還可以降低 Azure Front Door 的預設超時。 有關更多資訊,請參閱對無回應請求進行故障排除。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "設置相同的主機名,以防止會話親和性、身份驗證和授權出現故障。有關詳細資訊,請參閱在反向代理與其後端 Web 應用程式之間保留原始 HTTP 主機名。",
+ "guid": "7af90aa7-b21f-432f-858b-2d872c752d7f",
+ "service": "Azure Front Door",
+ "text": "在 Azure Front Door 和源上使用相同的主機名。Azure Front Door 可以重寫傳入請求的主機標頭,這在有多個路由到一個源的自定義功能變數名稱時非常有用。但是,重寫主機標頭可能會導致請求 Cookie 和 URL 重定向問題。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過會話相關性,使用者連接在用戶會話期間保持在同一源上。如果該源不可用,用戶體驗可能會中斷。",
+ "guid": "f66a8d49-8d0a-4952-9db2-ac2e526f08ad",
+ "service": "Azure Front Door",
+ "text": "確定應用程式是否需要會話相關性。如果您有較高的可靠性要求,我們建議您關閉會話親和性。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "限制請求以防止用戶端向您的應用程式發送過多流量。速率限制可以説明您避免重試風暴等問題。",
+ "guid": "63faaf18-da4b-4274-ac3c-d955f2a2e01b",
+ "service": "Azure Front Door",
+ "text": "利用 Web 應用程式防火牆 (WAF) 附帶的速率限制規則。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "ad186a96-5de2-4bf7-acd4-5b534cdb3e97",
+ "service": "Azure Front Door",
+ "text": "查看 Azure Front Door 的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b31346d7-4fde-42c2-82fe-2e4d54aa8f1b",
+ "service": "Azure Front Door",
+ "text": "保護後端伺服器。前端充當應用程式的單一入口點。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "903b1844-994a-49e8-8e08-6ef445aec4f7",
+ "service": "Azure Front Door",
+ "text": "僅允許對控制平面進行授權訪問。使用 Azure Front Door 基於角色的存取控制 (RBAC) 將存取權限限限為僅需要它的標識。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "329c0516-9a14-45ea-ad04-fe75453c8d88",
+ "service": "Azure Front Door",
+ "text": "在邊緣阻止常見威脅。WAF 與 Azure Front Door 集成。在前端啟用 WAF 規則,以保護應用程式免受網路邊緣、更靠近攻擊源的常見漏洞和漏洞的攻擊。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d323ca3c-f7df-4f7e-b7c9-698d2bdad3e2",
+ "service": "Azure Front Door",
+ "text": "保護 Azure Front Door 免受意外流量的影響。Azure Front Door 使用 Azure DDoS 防護的基本計劃來保護應用程式終結點免受 DDoS 攻擊。如果需要公開應用程式中的其他公共IP位址,請考慮為這些位址添加 DDoS 防護標準計劃,以實現高級保護和檢測功能。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "fcb4a654-3e3b-408c-9538-a1dfefdef774",
+ "service": "Azure Front Door",
+ "text": "保護傳輸中的數據。啟用端到端傳輸層安全性 (TLS)、HTTP 到 HTTPS 重定向和託管 TLS 證書(如果適用)。有關詳細資訊,請參閱 Azure Front Door 的 TLS 最佳做法。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "451f9871-3ca1-40b9-a1f6-c5eb0a37213b",
+ "service": "Azure Front Door",
+ "text": "監視異常活動。定期查看日誌,檢查是否存在攻擊和誤報。將 WAF 日誌從 Azure Front Door 發送到組織的集中式安全資訊和事件管理 (SIEM)(例如 Microsoft Sentinel),以檢測威脅模式並在工作負載設計中整合預防措施。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "默認規則集會根據 OWASP 前 10 種攻擊類型和來自 Microsoft 威脅情報的資訊頻繁更新。 專用規則集可檢測某些用例。例如,機器人規則根據用戶端IP位址將機器人分類為好、壞或未知。它們還可以阻止惡意機器人和已知IP位址,並根據呼叫者的地理位置限制流量。 通過使用規則集的組合,您可以檢測和阻止具有各種意圖的攻擊。",
+ "guid": "711c450c-ac42-4570-b2fd-22319b4a7913",
+ "service": "Azure Front Door",
+ "text": "啟用WAF規則集,以檢測和阻止潛在的惡意流量。此功能在高級層上可用。我們建議設置以下規則: - 預設 - 機器人保護 - IP 限制 - 地理過濾 - 速率限制",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "減少誤報,並允許對應用程式的合法請求。",
+ "guid": "a6fe49f4-0b1f-4677-af1f-b766f073ac6c",
+ "service": "Azure Front Door",
+ "text": "為託管規則集創建排除項。 在檢測模式下測試 WAF 策略幾周,並在部署之前調整任何誤報。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "TLS 可確保對瀏覽器、Azure Front Door 和後端源之間的數據交換進行加密,以防止篡改。 Key Vault 提供託管證書支援以及簡單的證書續訂和輪換。",
+ "guid": "450b511f-9e82-45ce-986b-769ea00dbeaa",
+ "service": "Azure Front Door",
+ "text": "啟用端到端 TLS、HTTP 到 HTTPS 重定向和託管 TLS 證書(如果適用)。 查看 Azure Front Door 的 TLS 最佳做法。 使用 TLS 版本 1.2 作為允許的最低版本,並使用與您的應用程式相關的密碼。 為了便於操作,Azure Front Door 託管證書應是預設選項。但是,如果要管理證書的生命週期,請在 Azure Front Door 自定義域終結點中使用自己的證書,並將其存儲在 Key Vault 中。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "baeb625f-93ac-4181-be7b-07f474584985",
+ "service": "Azure Front Door",
+ "text": "查看 Azure Front Door 層和定價。使用定價計算機來估計每個層級的實際成本。比較每個層的功能和適用性,以適應你的方案。例如,只有高級層支援通過專用連結連接到源。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "ed02627c-4a6d-4d6e-982f-a1fbee4a7259",
+ "service": "Azure Front Door",
+ "text": "考慮頻寬成本。Azure Front Door 的頻寬成本取決於所選的層和數據傳輸類型。Azure Front Door 為計費指標提供內置報告。若要評估與頻寬相關的成本以及可以將優化工作重點放在何處,請參閱 Azure Front Door 報告。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "e2e0bb7e-521d-4729-9579-5c9539a68867",
+ "service": "Azure Front Door",
+ "text": "優化傳入請求。Azure Front Door 對傳入的請求進行計費。您可以在設計設定中設定限制。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "337e7030-494e-4be5-8920-9144cb02c399",
+ "service": "Azure Front Door",
+ "text": "有效利用資源。Azure Front Door 使用有助於資源優化的路由方法。除非工作負載對延遲非常敏感,否則請在所有環境中均勻分配流量,以有效使用已部署的資源。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "add1a775-b13c-477b-acc7-38dbcccd51fe",
+ "service": "Azure Front Door",
+ "text": "請考慮使用組織提供的共享實例。集中式服務產生的成本在工作負載之間分攤。但是,請考慮與可靠性的權衡。對於具有高可用性要求的任務關鍵型應用程式,我們建議使用自治實例。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "48f2f718-1ae7-476f-a0a1-d6b83e47bbaa",
+ "service": "Azure Front Door",
+ "text": "請注意記錄的數據量。如果不需要某些請求,或者如果長時間保留日誌記錄數據,則與頻寬和存儲相關的成本可能會產生。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "緩存可優化數據傳輸成本,因為它減少了從 Azure Front Door 實例到源的調用次數。",
+ "guid": "5a9023b8-c181-41d5-aeb5-9c09a85b0792",
+ "service": "Azure Front Door",
+ "text": "對支援緩存的終結點使用緩存。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "壓縮可減少頻寬消耗並提高性能。",
+ "guid": "84da68ee-7bb0-4a7d-ad70-d53c186ffd3e",
+ "service": "Azure Front Door",
+ "text": "請考慮啟用檔壓縮。對於此配置,應用程式必須支援壓縮,並且必須啟用緩存。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以通過禁用不需要做出路由決策的請求來節省頻寬成本。",
+ "guid": "5d3ad5cb-d897-4ae7-8d1c-ae8398c79ed6",
+ "service": "Azure Front Door",
+ "text": "在單個後端池中禁用運行狀況檢查。如果在 Azure Front Door 源組中只配置了一個源,則不需要這些調用。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "5e8bfd0e-20d9-441f-814d-c2b49e7033ea",
+ "service": "Azure Front Door",
+ "text": "使用基礎結構即代碼 (IaC) 技術。使用 Bicep 和 Azure 資源管理器範本等 IaC 技術預配 Azure Front Door 實例。這些聲明性方法提供了一致性和直接的維護。例如,通過使用 IaC 技術,您可以輕鬆採用新的規則集版本。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "e9bd20e3-6e61-4907-9b84-4bd50b867875",
+ "service": "Azure Front Door",
+ "text": "簡化配置。使用 Azure Front Door 輕鬆管理配置。例如,假設您的架構支援微服務。Azure Front Door 支援重定向功能,因此可以使用基於路徑的重定向來定位各個服務。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "bb3943fb-6d97-458d-be6a-d9b71e8898d7",
+ "service": "Azure Front Door",
+ "text": "使用 Azure Front Door 路由方法處理漸進式暴露。對於加權負載均衡方法,您可以使用 Canary 部署將特定百分比的流量發送到後端。此方法可説明您在推出新功能和版本之前,在受控環境中對其進行測試。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "5e1264a9-c6cc-4d4e-8e73-7ca4b3f05c17",
+ "service": "Azure Front Door",
+ "text": "在工作負載監視過程中收集和分析 Azure Front Door 操作數據。使用 Azure Monitor 日誌捕獲相關的 Azure Front Door 日誌和指標。此數據可説明您排查故障、瞭解用戶行為並優化操作。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "8bdff2ab-0800-45ef-acab-ff7d320856aa",
+ "service": "Azure Front Door",
+ "text": "將證書管理卸載到 Azure。減輕與認證輪換和續訂相關的運營負擔。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "啟用重定向后,Azure Front Door 會自動重定向使用舊協定的用戶端,以使用 HTTPS 提供安全體驗。",
+ "guid": "829f4fea-1653-4093-aaf7-93b6a30aae1f",
+ "service": "Azure Front Door",
+ "text": "使用 HTTP 到 HTTPS 重定向來支援向前相容性。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監視入口流是監視應用程式的關鍵部分。您希望跟蹤請求並進行性能和安全性改進。需要數據來調試 Azure Front Door 配置。 有了警報,您可以立即收到任何關鍵操作問題的通知。",
+ "guid": "8ad83783-d01c-4772-a76b-39f7c9d61cc7",
+ "service": "Azure Front Door",
+ "text": "捕獲日誌和指標。 包括資源活動日誌、訪問日誌、運行狀況探測日誌和 WAF 日誌。設置警報。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Front Door 配置檔的整體視圖有助於通過WAF指標根據流量和安全報告推動改進。",
+ "guid": "e5e56ee9-79e4-4fa8-9fdb-600748d7df10",
+ "service": "Azure Front Door",
+ "text": "查看內置分析報告。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Front Door 可以為你頒發和管理證書。此功能消除了證書續訂的需要,並最大限度地降低了由於 TLS 證書無效或過期而導致中斷的風險。",
+ "guid": "c2fcfdfb-fedb-4b47-93ac-1988250f76cd",
+ "service": "Azure Front Door",
+ "text": "盡可能使用託管 TLS 證書。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "您無需修改設定即可單獨添加或指定每個子域。",
+ "guid": "0d7deaf4-ec0e-4e32-8b6b-64f3190d10f6",
+ "service": "Azure Front Door",
+ "text": "使用通配符 TLS 證書。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "d18003c9-2d90-4e52-b503-5fcdb4ffcd96",
+ "service": "Azure Front Door",
+ "text": "通過分析預期的流量模式來規劃容量。進行全面的測試,以瞭解應用程式在不同負載下的性能。考慮併發事務、請求速率和數據傳輸等因素。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "87c450a0-6a4a-453c-ae38-b8f21952ab79",
+ "service": "Azure Front Door",
+ "text": "通過定期查看 Azure Front Door 報告來分析性能數據。這些報告提供了對各種指標的見解,這些指標在技術級別用作性能指標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "a9d9ffe4-3fa7-48c8-bc1d-d0685e495dbe",
+ "service": "Azure Front Door",
+ "text": "優化數據傳輸。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "161bc803-0586-4d21-b2ea-018d78209565",
+ "service": "Azure Front Door",
+ "text": "優化運行狀況探測的使用。僅當源的狀態發生變化時,才從運行狀況探測獲取運行狀況資訊。在監控準確性和盡量減少不必要的流量之間取得平衡。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "8596ddcf-3f3c-4b1c-baa1-a7eb844b2fb6",
+ "service": "Azure Front Door",
+ "text": "查看源路由方法。Azure Front Door 提供各種到源的路由方法,包括基於延遲、基於優先順序、加權和基於會話相關性的路由。這些方法會顯著影響應用程式的性能。若要詳細瞭解適用於你的方案的最佳流量路由選項,請參閱到源的流量路由方法。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "205d3288-088c-4f24-af39-f9cb610c54a1",
+ "service": "Azure Front Door",
+ "text": "查看源伺服器的位置。源伺服器的位置會影響應用程式的回應能力。源伺服器應該更接近使用者。Azure Front Door 可確保來自特定位置的用戶訪問最近的 Azure Front Door 入口點。性能優勢包括更快的用戶體驗、Azure Front Door 更好地使用基於延遲的路由,以及通過使用緩存(將內容存儲在更靠近使用者的位置)來最大程度地減少數據傳輸時間。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure Front Door 提供可靠的內容分發網路解決方案,可在網路邊緣緩存內容。緩存可減少後端伺服器的負載,並減少網路上的數據移動,這有助於減輕頻寬使用負擔。",
+ "guid": "2f6a39a1-884a-4661-accd-f534bf795a96",
+ "service": "Azure Front Door",
+ "text": "啟用快取。 您可以優化查詢字串以進行快取。對於純靜態內容,請忽略查詢字串以最大限度地利用緩存。 如果應用程式使用查詢字串,請考慮將它們包含在緩存鍵中。在緩存鍵中包含查詢字串后,Azure Front Door 可以根據你的配置提供緩存的回應或其他回應。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "Azure Front Door 中的壓縮有助於以最佳格式交付內容,具有較小的有效負載,並更快地將內容交付給使用者。",
+ "guid": "09c90ce3-ade6-413a-9c1b-45d33d6d9069",
+ "service": "Azure Front Door",
+ "text": "在訪問可下載內容時使用檔壓縮。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "“HEAD”請求允許您查詢狀態更改,而無需獲取其全部內容。",
+ "guid": "15daeecf-bcbf-4c46-b196-030839fd4864",
+ "service": "Azure Front Door",
+ "text": "在 Azure Front Door 中配置運行狀況探測時,請考慮使用“HEAD”請求,而不是“GET”請求。 運行狀況探測僅讀取狀態代碼,而不讀取內容。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "優化性能並保持使用者會話的連續性,尤其是當應用程式依賴於在本地維護狀態資訊時。",
+ "guid": "2a92f55e-a422-49f4-9a26-8ba819a17323",
+ "service": "Azure Front Door",
+ "text": "評估當來自同一使用者的請求應定向到同一後端伺服器時,是否應啟用會話相關性。 從可靠性角度來看,我們不建議使用此方法。如果使用此選項,應用程式應正常恢復,而不會中斷用戶會話。 在負載均衡方面也存在權衡,因為它限制了在多個後端之間均勻分配流量的靈活性。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "ad7540f5-4cb1-4fc5-b168-e1cd97a0aef6",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:對於關鍵工作負載,請使用 AKS 群集的可用性區域。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "904fdfa5-af9a-4195-b683-e3bb7627b394",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:規劃IP位址空間,以確保集群能夠可靠地擴展,包括處理多集群拓撲中的故障轉移流量。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "2c1ab1ce-ee84-4737-b426-d236a98d3ae5",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:啟用容器見解以監視群集,併為影響可靠性的事件配置警報。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "fa12c27b-df70-41fd-a93a-680e3cacf7ac",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:確保構建的工作負載支援水平擴展,並報告應用程式的就緒情況和運行狀況。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "f2297ffc-fec7-43c6-9187-9739264c9d66",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:確保工作負載在用戶節點池上運行,並選擇正確大小的 SKU。至少包括兩個用於用戶節點池的節點和三個用於系統節點池的節點。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "0b542d27-1846-4d1b-9c5e-bd7c0d079cb3",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 AKS 運行時間 SLA 來滿足生產工作負載的可用性目標。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "允許 Kubernetes 調度器按節點中的硬體邏輯隔離工作負載。與容忍度不同,沒有匹配節點選擇器的 Pod 可以調度在標記的節點上,這允許節點上未使用的資源使用,但優先考慮定義匹配節點選擇器的 Pod。使用節點親和性可提高靈活性,這使您可以定義如果 Pod 無法與節點匹配時會發生什麼情況。",
+ "guid": "b11892cd-f678-4399-bac8-b98095e250c6",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用節點選擇器和親和性控制Pod調度。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "特定方案(例如,基於 Windows 的節點池、特定網路要求和 Kubernetes 網路策略)需要 Azure CNI。有關詳細資訊,請參閱 Kubenet 與 Azure CNI。",
+ "guid": "9e3e8182-95e7-4953-9a2b-9cc2f77bf717",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:確保根據網路需求和集群大小正確選擇網路外掛程式。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "AKS 運行時間 SLA 保證: - 對於使用 Azure 可用性區域的 AKS 群集,Kubernetes API 伺服器終結點的可用性為“99.95%”,或者 - 對於不使用 Azure 可用性區域的 AKS 群集,可用性為“99.9%”。",
+ "guid": "4bfaa73e-a949-404a-a93b-a2b0a7feeff5",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:將 AKS 運行時間 SLA 用於生產級群集。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容器見解有助於通過指標 API 監控 Kubernetes 中可用的控制器、節點和容器的運行狀況和性能。與 Prometheus 集成後,可以收集應用程式和工作負載指標。",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "通過將節點池分佈在多個區域中,即使另一個區域已關閉,一個節點池中的節點也將繼續運行。如果存在同域性要求,則可以使用基於 VMSS 的常規 AKS 部署到單個區域或鄰近放置組來最大程度地減少節點間延遲。",
+ "guid": "74ff8612-55b7-4029-81bc-da363b133f16",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用可用性區域將 AKS 代理節點分佈在物理上獨立的數據中心,從而最大限度地提高 Azure 區域內的復原能力。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "面向 Internet 的工作負載應利用 Azure Front Door 或 Azure 流量管理員在 AKS 群集之間全域路由流量。",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:通過部署跨不同 Azure 區域部署的 AKS 群集來採用多區域策略,以最大限度地提高可用性並提供業務連續性。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容器 CPU 和記憶體資源限制對於防止 Kubernetes 集群中的資源耗盡是必要的。",
+ "guid": "f1a92d3f-eab5-4dc2-b0e8-75865842f205",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:在應用程式部署清單中定義Pod資源請求和限制,並使用 Azure Policy 強制實施。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "系統節點池需要至少 2 個 vCPU 和 4 GB 記憶體的 VM SKU,但建議使用 4 個或更多的 vCPU。參考系統和用戶節點池,瞭解詳細要求。",
+ "guid": "55429203-5f2a-4ed1-9107-22d2c47b8ef1",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:將系統節點池與應用程式工作負載隔離。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "應用程式可能共用相同的配置,並且需要啟用了 GPU 的 VM、CPU 或記憶體優化的 VM,或者能夠擴展到零。避免使用大量節點池,以減少額外的管理開銷。",
+ "guid": "3603ec74-ada6-4050-baa3-fb25386fb7df",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:根據特定要求將應用程式分離到專用節點池中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "為了避免 Azure 負載均衡器限制在高併發出站流量下的可靠性問題,我們改用 NAT 閘道來支持大規模的可靠出口流量。",
+ "guid": "d441f009-ca99-4caf-9544-c71de5949d10",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:將 NAT 閘道用於運行產生許多併發出站連接的工作負載的集群。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "ff274266-a326-4c2c-9b85-7ce50c679b36",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用託管標識來避免管理和輪換服務原則。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d44b3684-99d7-4946-ab75-fb58d9d8626e",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:將 Kubernetes 基於角色的訪問控制 (RBAC) 與 Microsoft Entra ID 結合使用,以實現最低許可權訪問,並最大程度地授予管理員許可權以保護配置和機密訪問。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "12e0cc02-b585-4d6f-97be-1b073e57522c",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:將 Microsoft Defender 用於容器與 Azure Sentinel 結合使用,以檢測並快速回應群集及其上運行的工作負載中的威脅。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8e9c196f-b93a-46c5-9507-1e5cad83dd21",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:部署專用 AKS 群集,以確保流向 API 伺服器的群集管理流量保留在專用網路上。或者對非私有集群使用 API 伺服器允許清單。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Web 應用程式防火牆來保護 HTTP(S) 流量。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "feba8909-0760-4a87-833a-b36fabbe722e",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:確保您的 CI/CID 管道通過容器感知掃描得到強化。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Microsoft Entra ID 可以集中標識管理元件。用戶帳戶或組狀態的任何更改都會在訪問 AKS 群集時自動更新。Kubernetes 集群的開發人員和應用程式擁有者需要訪問不同的資源。",
+ "guid": "463da713-377d-46e1-a9cf-a384a0657537",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra 集成。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "AKS 和 Microsoft Entra ID 支援使用 Azure 容器註冊表進行身份驗證,而無需使用“imagePullSecrets”機密。有關詳細資訊,請查看從 Azure Kubernetes 服務使用 Azure 容器註冊表進行身份驗證。",
+ "guid": "f9f7946f-b9b6-40d1-9f30-0bfb38be5c74",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra ID 對 Azure 容器註冊表進行身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "默認情況下,節點池和 API 伺服器之間的網路流量通過 Microsoft 主幹網路傳輸;通過使用私有集群,您可以確保流向 API 伺服器的網路流量僅保持在私有網路上。",
+ "guid": "10d61300-19e4-403c-bf22-a554c56b4afc",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用專用 AKS 群集保護到 API 伺服器的網路流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用公共集群時,您仍然可以使用授權IP範圍功能來限制可以到達集群 API 伺服器的流量。包括部署生成代理的公共IP、操作管理和節點池的出口點(例如 Azure 防火牆)等源。",
+ "guid": "b845e9a6-c5f3-4cf7-a956-6f1ffde88569",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:對於非專用 AKS 群集,請使用 API 伺服器授權的 IP 範圍。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保護對 Kubernetes API 伺服器的訪問是您可以做的最重要的事情之一,以保護您的集群。將 Kubernetes 基於角色的訪問控制 (RBAC) 與 Microsoft Entra ID 整合,以控制對 API 伺服器的訪問。禁用本地帳戶以使用基於 Microsoft Entra ID 的標識強制執行所有群集訪問。",
+ "guid": "0b3a4624-de6e-4cfe-af5b-19ad4708087d",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Entra RBAC 保護 API 伺服器。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "保護和控制集群中 Pod 之間的網路流量。",
+ "guid": "caabd1f2-e6a9-4c55-9115-349d1d6716bb",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure 網路策略或 Calico。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure Policy 可以説明以集中、一致的方式在群集上應用大規模強制實施和保護措施。它還可以控制授予 pod 哪些功能,以及是否有任何內容違反公司策略。",
+ "guid": "d65686d0-3988-49b5-8a98-59818ba81c50",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure Policy 保護群集和 Pod。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "限制對容器可以執行的操作的訪問。提供最少數量的許可權,並避免使用 root 或特權升級。",
+ "guid": "f1e41c15-87e4-4135-ab6c-fb6803194f12",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:保護容器對資源的訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "若要掃描傳入流量以查找潛在攻擊,請使用 Web 應用程式防火牆,例如 Azure 應用程式閘道或 Azure Front Door 上的 Azure Web 應用程式防火牆 (WAF)。",
+ "guid": "4658f193-0b5d-41c9-b2c9-0a5f500799ea",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Web 應用程式防火牆來保護 HTTP(S) 流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "確保群集的出站流量通過網路安全點,例如 Azure 防火牆或 HTTP 代理。",
+ "guid": "fa580200-65eb-4cc8-9c23-a5e68f1d86a7",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:控制集群出口流量。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用強加密保護和輪換 Azure Key Vault 中的機密、證書和連接字串。提供訪問審核日誌,並將核心機密排除在部署管道之外。",
+ "guid": "0f5b5089-02fc-4f46-839c-7ff86610366a",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:將開源 Microsoft Entra 工作負載 ID 和機密存儲 CSI 驅動程式與 Azure Key Vault 配合使用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "監控和維護集群、容器及其應用程式的安全性。",
+ "guid": "d2895e72-e9c1-4af7-9e5a-53edc92423e7",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Microsoft Defender for Containers。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "c5148caa-6478-4ba8-993b-1a8640716d66",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:對每個節點池和預期具有長期容量的預留實例使用適當的 VM SKU。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "90ac2d0c-790e-4b2b-be35-60a55a19397a",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:使用適當的託管磁碟層和大小。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "df9bb42d-c34f-488f-a50c-0624ca247647",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:查看性能指標,從CPU、記憶體、存儲和網路開始,按集群、節點和命名空間確定成本優化機會。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "43ffe0b7-7bc4-42b0-a370-af4a943b19c0",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:當工作負載不太活躍時,使用自動縮放程式進行縮減。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "將您的選擇與工作負載需求相匹配,可確保您不會為不需要的資源付費。",
+ "guid": "c4ce3529-2891-41f1-aa3f-e87a791b01a3",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:使 SKU 選擇和託管磁碟大小與工作負載要求保持一致。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "選擇正確的虛擬機實例類型至關重要,因為它直接影響在AKS上運行應用程式的成本。選擇高性能實例而沒有適當的利用率可能會導致浪費支出,而選擇功能強大的實例可能會導致性能問題和停機時間增加。要確定正確的虛擬機實例類型,請考慮工作負載特徵、資源要求和可用性需求。",
+ "guid": "1088060f-7467-48db-950d-5890503e2974",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇正確的虛擬機實例類型。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "AKS 支援在群集中創建ARM64 Ubuntu代理節點,以及混合使用Intel和ARM體系結構的節點,這些節點可以以更低的成本帶來更好的性能。",
+ "guid": "ce50c713-ad3e-4781-9193-63485491aa48",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇基於Arm架構的虛擬機。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "現成 VM 允許你以大幅折扣利用未使用的 Azure 容量(與即用即付價格相比,最高可享受 90%)。如果 Azure 需要恢復容量,Azure 基礎結構將逐出 Spot 節點。",
+ "guid": "7a281f48-217a-4668-aa30-c9d2c84d0d72",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:選擇「Azure 現成虛擬機」。。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "由於許多因素,Azure 中每個區域的資源成本會有所不同。評估成本、延遲和合規性要求,以確保您以經濟高效的方式運行工作負載,並且不會影響您的最終使用者或產生額外的網路費用。",
+ "guid": "433efe5b-3776-459c-8560-058f87773838",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:選擇合適的地域。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "簡化圖像有助於降低成本,因為新節點需要下載這些圖像。以允許容器儘快啟動的方式生成映像,以説明避免在應用程式啟動時使用者請求失敗或超時,這可能導致過度預配。",
+ "guid": "65d3f70e-457a-4d62-8140-de2b0c4f7f99",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:維護小型和優化的映像。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過自動縮減 AKS 群集中的節點數,可以在需求較低時運行高效的群集,並在需求返回時縱向擴展。",
+ "guid": "b4d583e3-7268-41d9-9e93-0394bed77298",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用 Cluster Autoscaler 以自動減少代理節點的數量,以響應資源容量過剩。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "節點自動配置簡化了 SKU 選擇過程,並根據待處理的 Pod 資源要求決定最佳 VM 配置,以最高效且經濟高效的方式運行工作負載。",
+ "guid": "48ae7de4-26f7-457c-b1a4-a18467b7401d",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:啟用節點自動預配以自動選擇 VM SKU。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據 CPU 利用率或其他支援集群縮減操作的選擇指標調整部署中的 Pod 數量。",
+ "guid": "d3194174-d037-4a35-9cd5-244d377cfabb",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用水準Pod自動縮放器。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "調整 Pod 的大小,並根據歷史使用方式動態設置請求和限制。",
+ "guid": "091dc052-7bf8-4dd1-aca1-d514ddcb2aa8",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用垂直 Pod 自動縮放程式(預覽版)。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "根據正在處理的事件數進行縮放。從 50+ KEDA 潔牙器的豐富目錄中選擇。",
+ "guid": "fe3d7c5f-f5a9-4b5e-a4f9-81bf76930967",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Kubernetes 事件驅動的自動縮放 (KEDA)。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "實現成本優化的基礎是成本節約集群的分佈。財務運營方法 (FinOps) 通常用於幫助組織降低雲成本。它是一種涉及財務、運營和工程團隊之間協作的做法,旨在推動成本節約目標的一致性,並使雲成本透明化。",
+ "guid": "3a7d1aa1-37a0-40aa-acbf-ff1852c15c93",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:採用雲財務規則和文化實踐來推動對雲使用的擁有權。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "如果正確規劃了容量,則工作負載是可預測的,並且會存在較長的時間段,請註冊 Azure 預留或節省計劃以進一步降低資源成本。",
+ "guid": "ed669535-43d7-4988-9ec5-3b70762e54eb",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:註冊 Azure 預留或 Azure 節省計劃。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "容器見解有助於提供有關集群、空閒和未分配資源的可操作見解。容器見解還支援收集 Prometheus 指標,並與 Azure 託管 Grafana 集成,以全面瞭解應用程式和基礎結構。",
+ "guid": "5742c5ca-120a-4b6e-a5cf-51f13b04966c",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過成本分析集群擴展,您可以深入瞭解與集群或命名空間中的各種 Kubernetes 資源關聯的成本。",
+ "guid": "6588bddb-d7b6-41a6-8b87-628a758df2fe",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:配置 AKS 成本分析載入項。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "38e28f4f-7465-4e3a-bf05-4d6072d4bae6",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Bicep、Terraform 或其他工具使用基於範本的部署。確保所有部署都是可重複的、可跟蹤的,並存儲在原始程式碼儲存庫中。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "1255b75f-0f3b-4fd7-96c5-17e4e30bbe11",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:構建自動化流程,以確保您的集群已啟動必要的集群範圍的配置和部署。這通常使用 GitOps 執行。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "07b2d10f-e373-484e-9ece-f182a1b714b2",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:在軟體開發生命週期內對工作負載使用可重複的自動化部署過程。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "6ec1af22-6132-43a6-9286-20333ee6e244",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用診斷設置,以確保記錄控制平面或核心 API 伺服器交互。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "4811307d-53ce-4cf9-b022-2c2ab1be5596",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:啟用容器見解以收集指標、日誌和診斷,以監視集群及其上運行的工作負載的可用性和性能。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "20301c55-a815-4a3a-83ec-fe6d1789e697",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:工作負載應設計為發出可收集的遙測數據,其中還應包括活動和就緒狀態。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "13d37985-5266-4064-97f0-7c7aa7491941",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用針對 Kubernetes 的混沌工程實踐來識別應用程式或平臺可靠性問題。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "d96fea7e-598f-4f59-95c6-d75fc8db1c7a",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:優化工作負載,以在容器中高效運行和部署。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "8e8fbde0-f037-4eec-bac2-634ab73d7b0a",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:使用 Azure Policy 強制實施群集和工作負載治理。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "若要在 AKS 中成功生成和運行應用程式,需要瞭解和實施一些關鍵注意事項。這些領域包括多租戶和調度器功能、集群和 Pod 安全性,或業務連續性和災難恢復。",
+ "guid": "95ee25c6-37fc-47c0-a3e1-eea5c1324edb",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:查看 AKS 最佳做法文檔。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Chaos Studio 可以幫助類比故障並觸發災難恢復情況。",
+ "guid": "2695b4b9-e125-4644-a27c-977eefdbce73",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:查看 Azure Chaos Studio。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "容器見解通過指標 API 和容器日誌從 Kubernetes 中可用的控制器、節點和容器收集記憶體和處理器指標,從而幫助監控容器的性能。",
+ "guid": "6661db46-26b0-4cc9-9002-f52bce55ca03",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:使用容器見解配置集群監控。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "配置 Application Insights,以便對 AKS 群集中運行的應用程式進行基於代碼的監視。",
+ "guid": "405f6de4-e769-4066-8e8c-f7887a66d42a",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 Azure Monitor 監視應用程式性能。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "容器見解是 Azure Monitor 的一部分,可提供無縫的載入體驗來收集 Prometheus 指標。有關更多資訊,請參閱配置 Prometheus 指標的抓取。",
+ "guid": "3c42907d-254e-4b0f-b579-7362e0f37eaa",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用容器洞察配置 Prometheus 指標抓取。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "面向 Internet 的工作負載應利用 Azure Front Door 或 Azure 流量管理員在 AKS 群集之間全域路由流量。",
+ "guid": "844d923f-cfe0-4a3a-97ff-67c072c4220c",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:通過部署跨不同 Azure 區域部署的 AKS 群集來採用多區域策略,以最大限度地提高可用性並提供業務連續性。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Azure Policy 可以説明以集中、一致的方式在群集上應用大規模強制實施和保護措施。它還可以控制授予 pod 哪些功能,以及是否有任何內容違反公司策略。",
+ "guid": "02f47a84-6d0c-4243-a5ab-743c85dcce67",
+ "service": "Azure Kubernetes Service",
+ "text": "群集體系結構:使用 Azure Policy 操作群集和 Pod 配置標準。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "Kubernetes 和入口控制器支援許多高級部署模式,可包含在您的發佈工程流程中。考慮藍綠部署或金絲雀發佈等模式。",
+ "guid": "ecbf4266-e97a-4b02-8d02-ca2fd42cea5b",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:在發佈工程過程中使用平臺功能。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "自動執行任務關鍵型設計領域,包括部署和測試。",
+ "guid": "4646ab36-8c28-4740-afac-c9819f0f6ac9",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:對於任務關鍵型工作負載,請使用標記級別的藍/綠部署。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "de0e6d8d-65a5-46b0-891b-2ad2aa09de11",
+ "service": "Azure Kubernetes Service",
+ "text": "群集和工作負載體系結構:執行和反覆運算詳細的容量計劃練習,其中包括SKU、自動縮放設置、IP 尋址和故障轉移注意事項。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "b78aea0e-3fd2-4dcc-b617-34a26892aa76",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用集群自動縮放程式,以自動調整代理節點數,以回應工作負載需求。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "9b168db7-a88b-4e2c-b555-bc525c7e48da",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:使用 Horizontal Pod 自動縮放器根據 CPU 利用率或其他選擇指標調整部署中的 Pod 數量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "deadeedd-dab6-4774-84df-f5223ed6ede1",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:執行持續的負載測試活動,這些活動會執行 Pod 和集群自動縮放程式。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "7b1e9a65-2d5d-4eeb-a349-136895131b06",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:將工作負載分離到不同的節點池中,允許獨立擴展。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "在正式確定容量計劃后,應通過持續觀察集群的資源利用率來頻繁更新容量計劃。",
+ "guid": "7b4e5e8b-6e55-4db7-a330-19990bd1e0d2",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:制定詳細的容量計劃,並不斷審查和修訂。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "通過自動增加或減少 AKS 群集中的節點數,可以運行高效且經濟高效的群集。",
+ "guid": "631272b4-9ca7-4e6f-ae9b-3c55946b3924",
+ "service": "Azure Kubernetes Service",
+ "text": "集群架構:啟用集群自動縮放程式,以根據資源限制自動調整代理節點數。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "與始終需要運行節點的系統節點池不同,用戶節點池允許您縱向擴展或縮減。",
+ "guid": "85ffe644-7c4b-4f2d-b2fa-ed8e7c8d2e84",
+ "service": "Azure Kubernetes Service",
+ "text": "集群和工作負載架構:將工作負載分離到不同的節點池中,並考慮縮放用戶節點池。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "説明控制需要資源的工作負載的資源平衡。",
+ "guid": "bb7f1396-6a84-4e6d-b6d8-5fc48b4c2b5f",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載體系結構:使用 AKS 高級計劃程式功能。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "並非所有規模決策都可以從 CPU 或記憶體指標中得出。通常,規模考慮因素將來自更複雜甚至外部的數據點。使用 KEDA 根據特定於工作負載的信號生成有意義的自動縮放規則集。",
+ "guid": "bc908693-9e21-478c-9fde-e92ba949c89e",
+ "service": "Azure Kubernetes Service",
+ "text": "工作負載架構:使用有意義的工作負載擴展指標。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "f4804af8-4f42-450d-916c-5593c145ccf9",
+ "service": "Azure Machine Learning",
+ "text": "復原能力:將模型部署到支援可用性區域的環境,例如 AKS。通過確保部署分佈在可用性區域中,可以確保即使在數據中心發生故障時,部署也可用。為了增強可靠性和可用性,請考慮使用多區域部署拓撲。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "995d097a-0de2-4431-947f-561b49a60f21",
+ "service": "Azure Machine Learning",
+ "text": "復原能力:確保有足夠的計算能力進行訓練和推理。通過資源規劃,確保計算 SKU 和縮放設置滿足工作負載的要求。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "d494b7f5-ad32-471f-9fc7-18945ca454ab",
+ "service": "Azure Machine Learning",
+ "text": "復原能力:將用於探索性工作的機器學習工作區與用於生產工作的工作區隔離開來。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "6f1dd2cc-e0af-4203-ab0b-b7c65b7b18ae",
+ "service": "Azure Machine Learning",
+ "text": "復原能力:使用託管連線終結點進行推理時,請使用發佈策略(如藍綠部署)來最大程度地減少停機時間,並降低與部署新版本相關的風險。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "558fcdcf-33e7-4385-82fd-424bc8ae64bc",
+ "service": "Azure Machine Learning",
+ "text": "業務需求:根據可靠性需求選擇計算集群、計算實例和外部化推理主機的使用,並將服務級別協定 (SLA) 作為一個因素。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "de5be058-1d22-4f38-96aa-3fbca5071a8f",
+ "service": "Azure Machine Learning",
+ "text": "恢復:在訓練大型模型時,請確保具有自我修復功能,例如機器學習支援的檢查點功能。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "20104165-9764-4920-98dd-63fddc5f58d3",
+ "service": "Azure Machine Learning",
+ "text": "恢復:確保已定義恢復策略。機器學習沒有自動故障轉移功能。因此,必須設計一個包含工作區及其所有依賴項的策略,例如 Key Vault、Azure 存儲和 Azure 容器註冊表。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "多區域部署可確保機器學習工作負載繼續運行,即使一個區域發生中斷也是如此。多區域部署改善了跨區域的負載分佈,從而有可能提高位於不同地理區域的使用者的性能。有關詳細資訊,請參閱用於業務連續性和災難恢復的故障轉移。",
+ "guid": "046ff188-7d68-492f-850c-c65ee0c9a962",
+ "service": "Azure Machine Learning",
+ "text": "多區域模型部署:為了增強可靠性和可用性,請盡可能考慮使用多區域部署環境。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "模型檢查點會在訓練期間定期保存機器學習模型的狀態,以便在發生中斷、失敗或終止時可以恢復該模型。更多資訊,請參見使用 Nebula 提升檢查點速度並降低成本。",
+ "guid": "8eaf992c-ccd9-495f-b625-d4f544d38d38",
+ "service": "Azure Machine Learning",
+ "text": "模型訓練復原能力:使用機器學習支援的檢查點功能,包括用於 PyTorch 的 Azure 容器、TensorFlow Estimator 類或支援模型檢查點的 Run 物件和 FileDataset 類。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "低優先順序虛擬機的價格較低,但可以搶佔。使用專用虛擬機層的群集不會被搶佔。",
+ "guid": "19720202-b456-44c4-8ff1-28eaa20e1a7d",
+ "service": "Azure Machine Learning",
+ "text": "將專用虛擬機層用於計算群集:將專用虛擬機層用於計算群集進行批量推理,以確保批處理作業不會被搶佔。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "303116b4-65cb-43e5-8ceb-7bebaf16b568",
+ "service": "Azure Machine Learning",
+ "text": "可用性:通過將工作區的訪問限制為虛擬網路中的資源,減少機器學習工作區的攻擊面。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "eb9cc8b2-c9a3-4fe7-9578-8918ab53eae6",
+ "service": "Azure Machine Learning",
+ "text": "機密性:通過實施網路隔離,防止數據從機器學習工作區外洩。確保明確批准對所有外部資源的訪問,並且不允許訪問所有其他外部資源。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1cb53633-f0c7-45f4-a98b-76b0314a94ba",
+ "service": "Azure Machine Learning",
+ "text": "完整性:實施訪問控制,根據最小許可權原則對外部資源的機器學習工作區進行身份驗證和授權。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "30341513-1f91-480e-bc19-8031f1851087",
+ "service": "Azure Machine Learning",
+ "text": "完整性:通過根據特定用例或項目設置工作區,為機器學習工作區實施用例隔離。此方法遵循最小許可權原則,確保只有需要訪問用例或專案的數據和實驗資產的個人才能訪問工作區。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1274dc7a-a81c-409d-8cd6-e3bda0ee8687",
+ "service": "Azure Machine Learning",
+ "text": "完整性:規範對基礎模型的訪問。確保只有經過批准的註冊表才能訪問模型註冊表中的模型。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "ca17ad83-954c-4eba-a30f-9e7c3c2079f6",
+ "service": "Azure Machine Learning",
+ "text": "完整性:規範對已批准的容器註冊表的訪問。確保機器學習計算只能訪問已批准的註冊表。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "1ffe0cf7-a26a-4018-bef8-4d7fdf3291e2",
+ "service": "Azure Machine Learning",
+ "text": "完整性:規範可在機器學習計算上運行的 Python 包。規範 Python 包可確保僅運行受信任的包。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "8d9aea78-3ebe-4ec6-968d-3daa07abc239",
+ "service": "Azure Machine Learning",
+ "text": "完整性:要求對用於在機器學習計算環境中進行訓練的代碼進行簽名。要求代碼簽名可確保運行的代碼來自受信任的源,並且未被篡改。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "a6664b76-0292-4bd4-841e-859b65a569c0",
+ "service": "Azure Machine Learning",
+ "text": "機密性:對機器學習工作區和相關資源(如工作區存儲帳戶)的基於角色的訪問控制 (RBAC) 遵循最小許可權原則,以確保個人僅擁有其角色所需的許可權,從而最大程度地降低潛在的安全風險。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "2a509fe2-ce1d-410c-a5cb-780eb8dfaf15",
+ "service": "Azure Machine Learning",
+ "text": "完整性:通過對靜態數據和傳輸中的數據實施加密,建立信任和經過驗證的訪問。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "安全基線為網路安全、身份管理、數據保護和特權訪問等關鍵安全方面提供量身定製的指導。為了獲得最佳安全性,請使用 Microsoft Defender for Cloud 來監視這些方面。",
+ "guid": "0e30e670-0c69-4c8a-82f5-b88494e56879",
+ "service": "Azure Machine Learning",
+ "text": "安全基線:若要增強機器學習服務的安全性和合規性,請應用機器學習的 Azure 安全基線。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "託管虛擬網路隔離通過將工作區與其他網路隔離來增強安全性,從而降低未經授權訪問的風險。如果組織內的另一個網路發生違規,則機器學習工作區的隔離網路不受影響,從而保護機器學習工作負載。",
+ "guid": "aeb66f5c-45bc-45d8-a7bf-a6bd5c6e5f9a",
+ "service": "Azure Machine Learning",
+ "text": "託管虛擬網路隔離:為機器學習配置託管虛擬網路隔離。啟用託管虛擬網路隔離時,將為工作區創建託管虛擬網路。為工作區創建的託管計算資源會自動使用此託管虛擬網路。如果無法實現託管虛擬網路隔離,則必須按照網路拓撲建議將計算分離到專用子網中,遠離解決方案中的其他資源,包括工作區資源的專用終結點。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "機器學習網路隔離可確保對工作區的訪問安全且受控,從而增強安全性。為工作區配置專用終結點后,可以將對工作區的訪問限製為僅通過專用IP位址進行。",
+ "guid": "af44fe21-713a-435f-97bd-34ec8221f729",
+ "service": "Azure Machine Learning",
+ "text": "機器學習網路隔離:為機器學習工作區配置專用終結點,並通過該專用終結點連接到工作區。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "這種配置將數據外泄的風險降到最低,提高了數據的安全性。啟用此配置后,獲得系統訪問許可權的惡意參與者無法將您的數據發送到未經批准的外部目標。",
+ "guid": "d1cdc5a5-eb9a-43d7-ad74-6169482b28d0",
+ "service": "Azure Machine Learning",
+ "text": "僅允許已批准的出站訪問:將機器學習工作區託管的出站訪問上的出站模式配置為「僅允許已批准的出站」,以最大程度地降低數據外泄的風險。為需要訪問的資源配置專用終結點、服務標記或完全限定的功能變數名稱 (FQDN)。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "網路隔離通過將對 Azure 平臺即服務 (PaaS) 解決方案的訪問限制為僅私有 IP 位址來增強安全性。",
+ "guid": "0d8346f9-f2fe-4a4e-b153-662c5c6e4510",
+ "service": "Azure Machine Learning",
+ "text": "依賴服務的虛擬網路隔離:使用專用終結點配置依賴服務(例如存儲、Key Vault 和容器註冊表),並禁用公共訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "託管標識通過消除存儲憑據以及手動管理和輪換服務主體的需要來提高安全性。",
+ "guid": "bf2a8ddf-263e-46fb-b73a-ca8b9ba168e7",
+ "service": "Azure Machine Learning",
+ "text": "託管標識:使用託管標識在機器學習和其他服務之間進行身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用本地身份驗證可提高機器學習計算的安全性,並提供對身份和資源憑據的集中控制和管理。",
+ "guid": "70477454-0ddb-4ad6-9342-1ad6290bbb06",
+ "service": "Azure Machine Learning",
+ "text": "禁用本地身份驗證:禁用機器學習計算群集和實例的本地身份驗證。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用 SSH 訪問有助於防止未經授權的個人獲得訪問許可權並可能對您的系統造成損害,並保護您免受暴力攻擊。",
+ "guid": "cbd359bc-8057-4a9c-9183-c4fc1e70a69b",
+ "service": "Azure Machine Learning",
+ "text": "禁用公共 SSH 埠:通過將“remoteLoginPortPublicAccess”設置為“Disabled”,確保在機器學習計算群集上關閉公共安全外殼 (SSH) 埠。如果使用不同的計算,請應用類似的配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "避免預配公共IP位址,通過限制未經授權訪問計算實例或集群的可能性來增強安全性。",
+ "guid": "cc532133-2bba-484f-b316-035b93b3ee6a",
+ "service": "Azure Machine Learning",
+ "text": "不要為機器學習計算預配公共IP位址:在預配機器學習計算群集或計算實例時,將 enableNodePublicIp 設置為“false”。如果使用不同的計算,請應用類似的配置。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用最新的映像可確保您保持一致、穩定和安全的環境,包括確保您擁有最新的安全補丁。",
+ "guid": "cb49b636-1011-43a0-a12b-25378f677153",
+ "service": "Azure Machine Learning",
+ "text": "獲取最新的作業系統映像:重新創建計算實例以獲取最新的操作系統映像。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "嚴格的工作區訪問控制可確保個人僅擁有其角色所需的許可權,從而增強安全性。例如,數據科學家可能有權運行實驗,但無權修改安全設置,從而最大程度地降低潛在的安全風險。",
+ "guid": "17cac647-8c6f-4a6f-a66d-c436e17c91c8",
+ "service": "Azure Machine Learning",
+ "text": "嚴格的機器學習工作區訪問控制:使用 Microsoft Entra ID 組管理工作區訪問,並遵循 RBAC 的最小特權原則。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "將模型目錄中的部署限制為特定註冊表可確保僅將模型部署到已批准的註冊表。這種方法有助於規範對開源基礎模型的訪問。",
+ "guid": "18a61ee3-34d2-484a-a740-3c90d23c64b9",
+ "service": "Azure Machine Learning",
+ "text": "限制模型目錄部署:將模型部署限制為特定註冊表。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "對靜態數據進行加密可確保使用由您直接管理的密鑰對敏感數據進行加密,從而增強數據安全性。如果您有管理自己的加密密鑰的法規要求,請使用此功能來滿足該要求。",
+ "guid": "5e14c11e-83fb-40f1-a8dc-d96767d73a13",
+ "service": "Azure Machine Learning",
+ "text": "加密靜態數據:考慮將客戶管理的密鑰與機器學習結合使用。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "通過限制入站和出站要求,最大限度地降低數據外泄的風險。",
+ "guid": "6782cd14-a63d-466c-a7c9-8a92afe3b396",
+ "service": "Azure Machine Learning",
+ "text": "最大程度地降低數據外泄風險:實施數據外洩防護。例如,創建一個服務終結點策略來篩選出口虛擬網路流量,並僅允許數據外洩到特定的 Azure 儲存帳戶。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cac38d1e-d21e-4af5-834d-d607469c6439",
+ "service": "Azure Machine Learning",
+ "text": "使用方式優化:選擇適當的資源,以確保它們符合工作負載要求。例如,在 CPU 或 GPU、各種 SKU 或低優先順序與常規優先順序 VM 之間進行選擇。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "8e98fc4b-2fa4-44b9-9aa7-1c01f67aecb7",
+ "service": "Azure Machine Learning",
+ "text": "使用方式優化:確保未使用的計算資源在空閒時縮減或關閉,以減少浪費。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "dfafcc35-c8fb-429b-92c0-53f045884794",
+ "service": "Azure Machine Learning",
+ "text": "使用優化:應用策略並配置配額以符合設計的上限和下限。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "14149f48-97d8-4614-9236-681f5fd42b34",
+ "service": "Azure Machine Learning",
+ "text": "使用方式優化:測試並行化訓練工作負載,以確定是否可以在成本較低的SKU上滿足培訓要求。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "945e262b-3a0f-4ac9-ac51-69b5500f9ee6",
+ "service": "Azure Machine Learning",
+ "text": "速率優化:如果對未來一到三年的使用方式有很好的估計,請購買 Azure 虛擬機預留實例。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "563a3c8d-4168-4f18-a056-efb624734ecf",
+ "service": "Azure Machine Learning",
+ "text": "監控和優化:在訓練模型時監控資源使用方式,例如CPU和 GPU 使用方式。如果資源未得到充分利用,請修改代碼以更好地使用資源,或縮減到更小或更便宜的 VM 大小。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "選擇正確的計算至關重要,因為它直接影響運行工作負載的成本。在沒有正確使用的情況下選擇 GPU 或高性能 SKU 可能會導致浪費性支出,而選擇容量過小的計算可能會導致訓練時間過長和性能問題。",
+ "guid": "3d87f935-99a6-4aee-aac2-069994de09ff",
+ "service": "Azure Machine Learning",
+ "text": "優化計算資源:根據工作負載的要求優化計算資源。選擇最適合您的工作負載的 SKU:
- 通用 – 平衡的 CPU 與記憶體比率,適用於所有用途。
- 計算優化 – 高 CPU 與記憶體比率,適用於數學密集型計算。
- 記憶體優化 – 高記憶體到CPU,適用於記憶體計算或資料庫應用程式。
- M 系列 – 具有大量記憶體和 CPU 的超大型機器。
- GPU – 更適合具有大量變數的模型,這些變數可以從更高的並行度和專門的核心指令中受益。典型應用包括深度學習、圖像或視頻處理、科學類比、數據挖掘以及利用 GPU 開發框架。使用多個系列進行測試,並將結果記錄為基線。隨著模型和數據的發展,最合適的計算資源可能會發生變化。監控執行時間,並根據需要重新評估。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "為計算群集配置自動縮放,以便在其使用率較低時進行縮減。 將最小節點數設置為0,以便訓練集群在不使用時縮減為0。",
+ "guid": "d30cfeeb-6c61-4a9d-9a56-c8296cec72cb",
+ "service": "Azure Machine Learning",
+ "text": "優化計算縮放:將計算群集配置為自動縮放,以確保僅使用所需的內容。對於訓練集群,請將最小節點數設置為 0,並將節點空閑的時間配置為適當的時間。對於反覆運算次數較少的實驗,減少時間以節省成本。對於更多反覆運算實驗,請使用更長的時間,以防止在每次更改後為擴大或縮小規模付費。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "設置終止策略可以通過提前停止不良運行來説明您節省成本。",
+ "guid": "098a7bee-444c-4351-aeb1-8bd97036299c",
+ "service": "Azure Machine Learning",
+ "text": "設置培訓終止策略:設置提前終止策略以限制培訓運行的持續時間或提前終止訓練。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "低優先順序虛擬機允許以低成本使用大量計算能力。他們利用 Azure 中的剩餘容量。",
+ "guid": "41f2dd91-5765-4dfb-9db0-9b3e976b4afb",
+ "service": "Azure Machine Learning",
+ "text": "將低優先順序虛擬機用於批處理工作負載:請考慮將低優先順序虛擬機用於對時間不敏感且中斷可恢復的批處理工作負載。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "默認情況下,計算實例可供您使用,但會產生成本。將計算實例配置為在空閒時關閉或為它們配置計劃,可以在不使用它們時節省成本。",
+ "guid": "e3150ddd-f553-425f-bb91-249a9598e25e",
+ "service": "Azure Machine Learning",
+ "text": "為計算實例啟用空閒關閉:為計算實例啟用空閒關閉,或計劃在使用時間已知的情況下啟動和停止時間。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "並行工作負載可以在多個較小的實例上運行,從而可能節省成本。",
+ "guid": "8b47ec85-0e9e-428b-9290-c590a7f4ab1a",
+ "service": "Azure Machine Learning",
+ "text": "並行化訓練工作負載:考慮並行化訓練工作負載。在機器學習中的並行元件的説明下測試運行它們。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "購買 Azure 虛擬機預留實例以預付虛擬機使用費,並通過即用即付定價提供折扣。折扣將自動應用於與預留匹配的虛擬機使用量。",
+ "guid": "b4470844-d54d-4a1c-980c-37d09e17940d",
+ "service": "Azure Machine Learning",
+ "text": "Azure 虛擬機預留實例:如果對未來一到三年的使用方式有很好的估計,請購買 Azure 虛擬機預留實例。當您對使用方式有良好的估計時,請利用服務的預留容量選項。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "4dace40c-2627-4eb1-9d18-4a6c03901283",
+ "service": "Azure Machine Learning",
+ "text": "開發標準:利用機器學習模型目錄和註冊表來存儲、版本控制和共用機器學習資產。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "2fe1daf9-b388-4d25-8ff8-39908ada7f27",
+ "service": "Azure Machine Learning",
+ "text": "自動化以提高效率:遵循良好的機器學習操作 (MLOps) 做法。如果可能,請為數據準備、訓練和評分過程構建端到端的自動化管道。在開發中,使用腳本而不是筆記本來訓練模型,因為腳本更容易集成到自動化管道中。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "7b5de736-4956-4313-82be-0a0ff07d7ab6",
+ "service": "Azure Machine Learning",
+ "text": "充滿信心地部署:為機器學習工作區、計算群集、計算實例和其他部署環境實施基礎結構即代碼 (IaC)。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "f8196404-8f76-4e65-9b32-46d8d777d1d3",
+ "service": "Azure Machine Learning",
+ "text": "可觀測性:監視已部署模型的性能,包括數據偏移。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "d212d648-752b-480f-bda5-0d45d0185312",
+ "service": "Azure Machine Learning",
+ "text": "可觀測性:如果模型部署到連線終結點,請啟用Application Insights以監視連線終結點和部署。監控培訓基礎設施,確保您滿足基線要求。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "afd5b803-c151-4b8d-ae08-63cc8961a378",
+ "service": "Azure Machine Learning",
+ "text": "簡單性:使用針對機器學習優化的精選環境(如果可用)。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "限制工作區的數量可以減少維護工作量和運營成本。對於安全性等要求,可能需要多個單獨的工作區。盡可能減少工作區的數量。",
+ "guid": "bb6c4c2f-65f4-4fab-ada7-ebe079bde9cb",
+ "service": "Azure Machine Learning",
+ "text": "最小化機器學習工作區實例:盡可能減少工作區的數量,以減少維護。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "使用機器學習模型註冊表來存儲機器學習模型並對其進行版本控制,以跟蹤更改並維護與用於訓練的作業和數據集的世系。借助機器學習模型目錄,數據科學團隊可以發現、評估和微調預訓練的基礎機器學習模型。在機器學習模型註冊表中存儲版本化模型支援 A/B 版本、金絲雀版本和回滾等部署策略。",
+ "guid": "31841d05-3372-4bd4-b8bc-efcaaee1bd88",
+ "service": "Azure Machine Learning",
+ "text": "利用模型目錄和註冊表:利用機器學習模型目錄和註冊表來存儲、版本控制和共用機器學習資產。使用機器學習模型目錄來幫助你實現模型的 A/B 測試和部署。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監視已部署的模型可確保模型滿足性能要求。監視數據偏移可説明您檢測輸入數據中可能導致模型性能下降的更改。管理數據偏移有助於確保模型隨著時間的推移提供準確的結果。",
+ "guid": "90a72a7e-6fb5-4e02-a159-7a4d907eb098",
+ "service": "Azure Machine Learning",
+ "text": "監視模型性能:監視已部署模型的性能,並檢測數據集上的數據偏移。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "通過監控端點,您可以查看請求延遲和每分鐘請求數等指標。您可以將性能與基線進行比較,並使用此資訊對計算資源進行相應的更改。監視指標(如網路位元組數)可以在接近配額限制時發出警報,並防止限制。同樣,監控您的培訓環境可為您提供更改培訓環境的資訊。使用該資訊來決定是縱向擴展還是縮減,使用不同的高性能 SKU 進行縱向擴展或縮減,或者在 CPU 或 GPU 之間進行選擇。",
+ "guid": "b1d87076-b253-47ae-8727-97f804e49a3c",
+ "service": "Azure Machine Learning",
+ "text": "監視基礎結構:如果模型部署到連線終結點,請啟用Application Insights以監視連線終結點和部署。監控培訓基礎設施,確保您滿足基線要求。確保收集用於機器學習的資源日誌。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "特選環境是由機器學習提供的預創建環境,可加快部署時間並減少部署和訓練延遲。使用特選環境可以提高訓練和部署成功率,並避免不必要的映像構建。特選環境(例如用於 PyTorch 的 Azure 容器)也可以進行優化,以便在機器學習上訓練大型模型。",
+ "guid": "4c6895ce-abd9-4c90-a386-c31bc0681869",
+ "service": "Azure Machine Learning",
+ "text": "策展模型訓練環境:使用針對機器學習優化的策展環境(如果可用)。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "82ffebb1-2e91-46a4-b796-3fa55c4c20e3",
+ "service": "Azure Machine Learning",
+ "text": "性能目標:確定模型可接受的訓練時間和重新訓練頻率。為訓練時間設定明確的目標以及測試,有助於確定滿足訓練時間目標所需的計算資源、CPU 與 GPU 以及 CPU SKU。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "5e526216-1b94-4cfe-86ef-bbce971f7f3a",
+ "service": "Azure Machine Learning",
+ "text": "性能目標:為已部署的模型定義可接受的性能目標,包括響應時間、每秒請求數、錯誤率和運行時間。性能目標可作為已部署模型效率的基準。目標可以幫助您確定 CPU 與 GPU、CPU SKU 選擇和縮放要求。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "2d6ddbe2-2bcc-4629-a316-5d56d74ef68a",
+ "service": "Azure Machine Learning",
+ "text": "滿足容量要求:為模型訓練選擇正確的計算資源。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "0ab74767-80ac-454e-aab6-b546e38411f8",
+ "service": "Azure Machine Learning",
+ "text": "滿足容量要求:為模型部署選擇正確的計算資源。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "d47bd862-5302-4ecb-a551-37cb0d15e802",
+ "service": "Azure Machine Learning",
+ "text": "滿足容量要求:選擇具有自動縮放功能的部署環境,以便在需求波動時添加和刪除容量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "e10dead3-58c0-40b2-aa9b-39c64a68c555",
+ "service": "Azure Machine Learning",
+ "text": "實現並維持性能:持續監視已部署模型的性能,查看結果,並採取適當的措施。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "e257de8e-a8ef-4b91-81a3-3d832682b1eb",
+ "service": "Azure Machine Learning",
+ "text": "實現並維持性能:持續監控已部署模型的基礎架構的性能,查看結果並採取適當的措施。監控培訓基礎設施,以確保您滿足培訓時間的要求。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "選擇正確的計算至關重要,因為它直接影響訓練時間。選擇正確的 SKU 和 CPU 而不是 GPU 可確保您的模型訓練能夠滿足您的要求和性能目標。選擇過度使用的低性能 SKU 可能會導致訓練時間過長和性能問題。計算集群通過橫向擴展支援水平擴展的工作負載來提高性能。此方法為處理具有不同需求的工作負載提供了靈活性,並允許您根據需要添加或刪除計算機。",
+ "guid": "352a223c-dabd-46da-8752-56a87c6f18b7",
+ "service": "Azure Machine Learning",
+ "text": "為模型訓練選擇適當的計算服務:如果需要自動縮放,請考慮使用機器學習計算集群而不是計算實例進行模型訓練。根據訓練要求優化計算資源。首先在 CPU 和 GPU 之間進行選擇。默認使用 CPU,但請考慮將 GPU 用於深度學習、圖像或視頻處理或大量數據等工作負載。接下來,選擇最適合您的工作負載的映射 SKU。使用測試來選擇計算選項,該選項在確定基線時根據訓練時間優化成本。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "自動縮放會調整已部署模型的實例數以滿足需求。",
+ "guid": "683ae603-156f-4186-8a82-aa2907fbb9bd",
+ "service": "Azure Machine Learning",
+ "text": "模型部署環境縮放:使用部署環境的自動縮放功能。對於 AKS 部署環境,請使用群集自動縮放程式進行縮放以滿足需求。對於連線終結點,通過與 Azure Monitor 自動縮放功能集成自動縮放。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "在生產環境中跟蹤模型的性能會提醒您注意潛在問題,例如數據漂移、預測漂移、數據品質和特徵歸因漂移。監視數據偏移可説明您檢測輸入數據中可能導致模型性能下降的更改。管理數據偏移有助於確保模型隨著時間的推移提供準確的結果。",
+ "guid": "eccdaab6-7458-4967-9cd4-da6a89e3ce8c",
+ "service": "Azure Machine Learning",
+ "text": "監視模型性能:監視已部署模型的性能。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "通過監控端點,您可以查看請求延遲和每分鐘請求數等指標。您可以將性能與基線進行比較,並使用此資訊對計算資源進行相應的更改。監視指標(如網路位元組數)可以在接近配額限制時發出警報,並防止限制。同樣,監控您的培訓環境可為您提供更改培訓環境的資訊。使用該資訊來決定是縱向擴展還是縮減,使用不同的高性能 SKU 進行縱向擴展或縮減,或者在 CPU 或 GPU 之間進行選擇。",
+ "guid": "76b80c26-8252-416e-aae1-ace03a9403dd",
+ "service": "Azure Machine Learning",
+ "text": "監控基礎結構:監控在線端點並與 Monitor 集成,以跟蹤和監控適當的指標和日誌。在創建連線部署時啟用ApplicationInsights。在訓練模型時,監控訓練基礎結構並查看資源使用方式,例如記憶體和 CPU 或 GPU 使用方式,以確保滿足基線要求。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "154d9075-f8f8-4dc8-b8f4-651d875d5dfe",
+ "service": "Azure Openai",
+ "text": "復原能力:根據您的使用案例選擇適當的部署選項,即付或預配輸送量。由於預留容量可提高復原能力,因此請為生產解決方案選擇預置輸送量。即用即付方法非常適合開發/測試環境。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "571ddd3c-601e-46a7-bf80-c52f04a301fb",
+ "service": "Azure Openai",
+ "text": "冗餘:在 Azure OpenAI 部署之前添加適當的閘道。網關必須能夠承受暫時性故障(如限制),並能夠路由到多個 Azure OpenAI 實例。考慮路由到不同區域的實例以構建區域冗餘。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "4b6855b3-069d-4bb2-b9c6-f1c021803f77",
+ "service": "Azure Openai",
+ "text": "復原能力:如果使用預置輸送量,請考慮同時部署即用即付實例以處理溢出。當您的預置輸送量模型受到限制時,您可以通過網關將調用路由到按使用量付費的實例。您還可以使用監控來預測模型何時會受到限制,並先發制人地將調用路由到按使用量付費的實例。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "7fd57f22-417b-47d5-88c9-ab7a2ceb5599",
+ "service": "Azure Openai",
+ "text": "復原能力:監視容量使用方式,以確保不會超過輸送量限制。定期審查容量使用方式,以實現更準確的預測,並説明防止由於容量限制而導致的服務中斷。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "c41d1ed1-6f1d-4e6e-9dde-2d8172365170",
+ "service": "Azure Openai",
+ "text": "復原能力:按照大型數據檔的指南操作,並從 Azure blob 儲存導入數據。100 MB 或更大的大檔在通過多部分表單上傳時可能會變得不穩定,因為請求是原子的,無法重試或恢復。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "088c617d-fce0-4fab-b4cd-9f9eb6a96cff",
+ "service": "Azure Openai",
+ "text": "恢復:定義恢復策略,其中包括針對經過微調的模型的恢復計劃以及上傳到 Azure OpenAI 的訓練數據的恢復計劃。由於 Azure OpenAI 沒有自動故障轉移功能,因此必須設計一個包含整個服務和所有依賴項的策略,例如包含訓練數據的存儲。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "這些重要的輸送量資訊提供了確保從配額分配足夠的 TPM 以滿足部署需求所需的資訊。分配足夠的配額可以防止對已部署模型的調用受到限制。",
+ "guid": "f109deb2-54f9-4405-a9f0-f90fd0f76adf",
+ "service": "Azure Openai",
+ "text": "監視即用即付的速率限制:如果使用即用即付方法,請管理模型部署的速率限制,並監視每分鐘令牌數 (TPM) 和每分鐘請求數 (RPM) 的使用方式。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "請務必監視預配管理的利用率,以確保其不超過 100%,以防止對已部署模型的調用受到限制。",
+ "guid": "ef12f5c3-dbe2-4040-be82-724eebc6f87e",
+ "service": "Azure Openai",
+ "text": "監視預置輸送量的預置託管利用率:如果使用預置輸送量付款模型,請監視預置託管的利用率。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "內容過濾器根據不透明的風險分析阻止提示或完成。確保對內容過濾器進行調整,以允許工作負載的預期使用量。",
+ "guid": "efcf5f6a-02bb-4cc8-8018-055ebf2e57e0",
+ "service": "Azure Openai",
+ "text": "調整內容過濾器:調整內容過濾器,以最大程度地減少過於激進的篩檢程式造成的誤報。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "a61b826b-9f3b-4f51-8e0e-a32a92865386",
+ "service": "Azure Openai",
+ "text": "保護機密性:如果將訓練數據上傳到 Azure OpenAI,請使用客戶管理的密鑰進行數據加密,實施金鑰輪換策略,並刪除訓練、驗證和訓練結果數據。如果使用外部數據存儲來存儲訓練數據,請遵循該存儲的安全最佳實踐。例如,對於 Azure Blob 儲存,請使用客戶管理的金鑰進行加密,並實施金鑰輪換策略。使用基於託管標識的訪問,使用專用終結點實現網路邊界,並啟用訪問日誌。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "9f4bdfff-2c6c-4662-9139-1de51d2dbd20",
+ "service": "Azure Openai",
+ "text": "保護機密性:通過限制 Azure OpenAI 資源可以訪問的出站 URL 來防止數據外洩。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "b8463e8d-daaa-4209-9944-0fb0587219a8",
+ "service": "Azure Openai",
+ "text": "保護完整性:實施訪問控制,通過使用最小特權原則並使用個人身份(而不是密鑰)來驗證和授權使用者對系統的訪問。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "714249d8-2b60-4920-89a2-eab4a338ac02",
+ "service": "Azure Openai",
+ "text": "保護完整性:實施越獄風險檢測,以保護語言模型部署免受提示注入攻擊。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "e0383d3b-71f1-4fda-9759-24cfd293abff",
+ "service": "Azure Openai",
+ "text": "保護可用性:使用安全控制來防止可能耗盡模型使用配額的攻擊。您可以設定控制項以隔離網路上的服務。如果必須可以從 Internet 訪問服務,請考慮使用閘道,通過使用路由或限制來阻止可疑的濫用。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "通過將機密存儲在 Key Vault 中來將機密與代碼分離,可以減少洩露機密的機會。分離還有助於對機密進行集中管理,從而減輕密鑰輪換等職責。",
+ "guid": "c4310e87-1366-4523-b2e1-244e1074fbb0",
+ "service": "Azure Openai",
+ "text": "安全密鑰:如果體系結構需要基於 Azure OpenAI 金鑰的身份驗證,請將這些密鑰存儲在 Azure Key Vault 中,而不是應用程式代碼中。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "控制對 Azure OpenAI 的訪問有助於防止來自未經授權用戶的攻擊。使用專用終結點可確保網路流量在應用程式和平台之間保持私密。",
+ "guid": "4a7a9a07-0229-4175-b784-9a99eded4d54",
+ "service": "Azure Openai",
+ "text": "限制訪問:禁用對 Azure OpenAI 的公共訪問,除非工作負載需要。如果從 Azure 虛擬網路中的使用者進行連接,請創建專用終結點。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用 Microsoft Entra ID 可以集中標識管理元件,並消除 API 金鑰的使用。將 RBAC 與 Microsoft Entra ID 結合使用可確保使用者或組具有完成工作所需的許可權。使用 Azure OpenAI API 金鑰無法實現這種精細的存取控制。",
+ "guid": "d5892190-2da9-43f4-b1e1-76b38b369643",
+ "service": "Azure Openai",
+ "text": "Microsoft Entra ID:使用 Microsoft Entra ID 進行身份驗證,並使用基於角色的訪問控制 (RBAC) 授權訪問 Azure OpenAI。在 Azure AI 服務中禁用本地身份驗證,並將“disableLocalAuth”設置為“true”。向執行完成或圖像生成的標識授予認知服務 OpenAI 使用者角色。授予模型自動化管道和臨時數據科學訪問許可權,例如認知服務 OpenAI 貢獻者。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "使用客戶管理的金鑰可以更靈活地創建、輪換、禁用和撤銷訪問控制。",
+ "guid": "60a4703c-1086-45e1-9384-ebb32ab50696",
+ "service": "Azure Openai",
+ "text": "使用客戶管理的金鑰:使用客戶管理的金鑰進行微調的模型和上傳到 Azure OpenAI 的訓練數據。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "檢測越獄嘗試,以識別和阻止試圖繞過 Azure OpenAI 部署的安全機制的提示。",
+ "guid": "ce66eba7-5972-4cb5-8db0-b75c3720b220",
+ "service": "Azure Openai",
+ "text": "防範越獄攻擊:使用 Azure AI 內容安全工作室檢測越獄風險。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "08f7b66c-7679-479b-8e2f-41b3305613dc",
+ "service": "Azure Openai",
+ "text": "成本管理:開發成本模型,考慮提示大小。瞭解提示輸入和回應大小以及文本如何轉換為令牌有助於創建可行的成本模型。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "3f66f351-a073-40bb-94d2-326e1ea1a696",
+ "service": "Azure Openai",
+ "text": "使用方式優化:從 Azure OpenAI 的即用即付定價開始,直到令牌使用方式可預測為止。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "3802ce2d-2a46-445d-92e2-2a23b2e40705",
+ "service": "Azure Openai",
+ "text": "速率優化:當令牌使用量足夠高且在一段時間內可預測時,請使用預設輸送量定價模型進行更好的成本優化。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "2b2303c0-e057-431d-9a02-20a1a0b2b5b9",
+ "service": "Azure Openai",
+ "text": "使用方式優化:在選擇模型時,請考慮模型定價和功能。從成本較低的模型開始,用於不太複雜的任務,如文本生成或完成任務。對於更複雜的任務,如語言翻譯或內容理解,請考慮使用更高級的模型。在選擇適用於文本嵌入、圖像生成或聽錄方案等用例的模型時,請考慮不同的模型功能和最大令牌使用限制。通過仔細選擇最適合您需求的模型,您可以優化成本,同時仍能實現所需的應用程式性能。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "c4104d7c-4a4f-4b8a-9928-558a7c5c61d8",
+ "service": "Azure Openai",
+ "text": "使用優化:使用 API 調用提供的令牌限制約束,例如“max_tokens”和“n”,這些約束指示要生成的完成數。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "fb44ea80-44a3-465f-9d50-98b800a90fd6",
+ "service": "Azure Openai",
+ "text": "使用方式優化:最大化 Azure OpenAI 價格斷點,例如,微調和模型斷點,如圖像生成。由於微調是按小時收費的,因此請盡可能多地使用每小時可用的時間來改善微調結果,同時避免滑入下一個計費週期。同樣,生成100張圖像的成本與生成1張圖像的成本相同。最大化價格斷點,以發揮您的優勢。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "5f027af8-e168-4b86-8255-4ea6f74cfd87",
+ "service": "Azure Openai",
+ "text": "使用優化:當不再使用未使用的微調模型時,將其刪除,以避免產生持續的託管費用。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "23756c91-3a66-4733-98b7-448bc8441f56",
+ "service": "Azure Openai",
+ "text": "調整使用方式:優化提示輸入和響應長度。較長的提示會消耗更多的令牌,從而增加成本。但是,缺少足夠上下文的提示並不能説明模型產生良好的結果。創建簡潔的提示,為模型提供足夠的上下文以生成有用的回應。此外,請確保優化回應長度的限制。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "160154da-ea9e-4a84-ac35-8a731658c0fd",
+ "service": "Azure Openai",
+ "text": "成本效益:盡可能批量處理請求,以最大程度地減少每次調用的開銷,從而降低總體成本。確保優化批量大小。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "739c80f6-0570-435b-ab82-2c8ce9d2deb8",
+ "service": "Azure Openai",
+ "text": "成本效益:由於模型具有不同的微調成本,因此,如果您的解決方案需要微調,請考慮這些成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "518fd651-b13e-427e-a0de-f634a014f5b2",
+ "service": "Azure Openai",
+ "text": "監視和優化:設置用於監視模型使用方式的成本跟蹤系統。使用該資訊來説明為模型選擇和提示大小提供資訊。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "使用 API 功能來限制使用可以使服務使用與客戶需求保持一致。這通過確保模型不會生成消耗過多代幣的過長回應來節省資金。",
+ "guid": "afb53b41-825a-4310-b445-bf391792c568",
+ "service": "Azure Openai",
+ "text": "設計用戶端代碼以設置限制:自定義用戶端應使用 Azure OpenAI 完成 API 的限制功能,例如每個模型的令牌數 (“max_tokens”) 或生成完成數 (“n”) 的最大限制。設置限制可確保伺服器產生的產品不會超過用戶端的需求。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "持續監視 TPM 和 RPM 可提供相關指標,以優化 Azure OpenAI 模型的成本。您可以將此監視與模型功能和模型定價相結合,以優化模型使用。您還可以使用此監視來優化提示大小。",
+ "guid": "e91029f2-ddf4-41f3-8358-f31b5afbe8ba",
+ "service": "Azure Openai",
+ "text": "監視即用即付使用方式:如果使用即用即付方法,請監視 TPM 和 RPM 的使用方式。使用該資訊為架構設計決策提供資訊,例如要使用的模型,並優化提示大小。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "持續監控預置管理的利用率可為您提供所需的資訊,以便在您未充分利用預置輸送量時瞭解。",
+ "guid": "06a0b95c-b014-4205-8d0c-f074ec393239",
+ "service": "Azure Openai",
+ "text": "監視預設輸送量使用方式:如果使用預設輸送量,請監視預設管理的利用率,以確保不會未充分利用所購買的預設輸送量。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "成本監視、設置預算和設置警報為治理提供了適當的問責流程。",
+ "guid": "f18aba52-5587-43e6-b994-8cab7022167f",
+ "service": "Azure Openai",
+ "text": "成本管理:使用 OpenAI 的成本管理功能來監控成本,設置預算以管理成本,並創建警報以通知利益相關者風險或異常情況。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "3c5f9e8e-c1a9-4c18-ac05-72877f24ff22",
+ "service": "Azure Openai",
+ "text": "Azure DevOps 文化:確保在各種環境(例如開發、測試和生產)中部署 Azure OpenAI 實例。確保您擁有支援整個開發週期中持續學習和試驗的環境。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "56e72e7c-32bb-414b-bf04-d2883871aacb",
+ "service": "Azure Openai",
+ "text": "可觀測性:監控、聚合和可視化適當的指標。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "63aedcb9-e01e-4df3-b9a6-13c13d6971d4",
+ "service": "Azure Openai",
+ "text": "可觀察性:如果 Azure OpenAI 診斷不足以滿足你的需求,請考慮在 Azure OpenAI 前面使用 Azure API 管理等網關,在允許的情況下記錄傳入提示和傳出回應。此資訊可説明您瞭解模型對傳入提示的有效性。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "fe7a8e0a-b53a-48f0-a204-4e1e7e20ea4b",
+ "service": "Azure Openai",
+ "text": "自信地部署:使用基礎結構即代碼 (IaC) 部署 Azure OpenAI、模型部署以及微調模型所需的其他基礎結構。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "3dffb456-4675-4acb-b797-a5bf591e003a",
+ "service": "Azure Openai",
+ "text": "自信地部署:遵循大型語言模型操作 (LLMOps) 做法,實施 Azure OpenAI LLM 的管理,包括部署、微調和提示工程。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "4c82d2b3-c083-4a0e-9cd2-92d2b00b4c96",
+ "service": "Azure Openai",
+ "text": "自動化以提高效率:如果您使用基於密鑰的身份驗證,請實施自動化密鑰輪換策略。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "診斷收集和分析指標和日誌,説明你監視 Azure OpenAI 的可用性、性能和操作。",
+ "guid": "ff3d2610-e8e8-4a78-aba5-556758a2798c",
+ "service": "Azure Openai",
+ "text": "啟用和配置 Azure 診斷:為 Azure OpenAI 服務啟用和配置診斷。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "63dbbc6a-f840-4893-979c-2afcea82bf5f",
+ "service": "Azure Openai",
+ "text": "容量:估計消費者的彈性需求。識別需要同步回應的高優先順序流量和可以異步和批量的低優先順序流量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "14677a1d-0b65-455a-997b-1490c397fbc8",
+ "service": "Azure Openai",
+ "text": "容量:根據消費者的估計需求對代幣消費要求進行基準測試。如果使用預設輸送量單元 (PTU) 部署,請考慮使用 Azure OpenAI 基準測試工具來幫助驗證輸送量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "59c8767d-1b78-4016-92d5-ebd83032fafa",
+ "service": "Azure Openai",
+ "text": "容量:對生產工作負載使用預設輸送量。預置輸送量為指定模型版本提供專用記憶體和計算、預留容量以及一致的最大延遲。現收現付產品可能會遇到嘈雜的鄰居問題,例如在大量使用的區域中延遲增加和節流。此外,即用即付方法不提供有保證的容量。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "a318b299-9d54-4dfc-8f20-b00ceed43ed0",
+ "service": "Azure Openai",
+ "text": "容量:在 Azure OpenAI 部署之前添加適當的閘道。確保閘道可以路由到相同或不同區域中的多個實例。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "ceb21879-94da-485e-a24b-b30180fb566c",
+ "service": "Azure Openai",
+ "text": "容量:分配 PTU 以滿足預測的使用方式,並使用 TPM 部署來補充這些 PTU,以處理超過該限制的彈性。這種方法將基本輸送量與彈性輸送量相結合,以提高效率。與其他注意事項一樣,此方法需要自定義網關實現,以便在達到 PTU 限制時將請求路由到 TPM 部署。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "dd313c03-7429-4cb1-84e9-d982664c2dfc",
+ "service": "Azure Openai",
+ "text": "容量:同步發送高優先順序請求。對低優先順序請求進行排隊,並在需求較低時批量發送它們。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "cdf82e76-ee07-47e6-9985-6b1c0a39dd42",
+ "service": "Azure Openai",
+ "text": "容量:選擇符合性能要求的模型,同時考慮速度和輸出複雜性之間的權衡。根據所選的模型類型,模型性能可能會有很大差異。專為速度而設計的模型可提供更快的回應時間,這對於需要快速交互的應用程式非常有用。相反,更複雜的模型可能會以增加回應時間為代價提供更高品質的輸出。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "9aa6da24-6a00-4381-9da6-66c9d5cbf41f",
+ "service": "Azure Openai",
+ "text": "實現性能:對於聊天機器人或對話介面等應用程式,請考慮實現流式處理。流式處理可以通過以增量方式向使用者提供回應來增強 Azure OpenAI 應用程式的感知性能,從而改善用戶體驗。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "456cbf54-9c2f-4c6e-9739-eca408fa6baf",
+ "service": "Azure Openai",
+ "text": "實現性能:在承諾進行微調之前,確定何時使用微調。儘管有一些很好的微調用例,例如當引導模型所需的資訊太長或太複雜而無法適應提示時,但請確保提示工程和檢索增強生成 (RAG) 方法不起作用或明顯更昂貴。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "2dc38e31-8e03-40f4-842d-58ac317c5106",
+ "service": "Azure Openai",
+ "text": "實現性能:考慮對每個消費者組使用專用模型部署,以提供每個模型的使用隔離,這有助於防止消費者組之間的干擾鄰居。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "999ecfef-c272-4cd8-8bd0-9cd5335fb695",
+ "service": "Virtual Machines",
+ "text": "查看可能會造成設計限制的虛擬機配額和限制。VM 具有特定的限制和配額,這些限制和配額因 VM 類型或區域而異。可能存在訂閱限制,例如每個訂閱的 VM 數量或每個 VM 的核心數。如果其他工作負載共用你的訂閱,則使用數據的能力可能會降低。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "bf605fe8-6171-4c01-8290-d6c79a21cf10",
+ "service": "Virtual Machines",
+ "text": "執行故障模式分析,通過分析虛擬機與網路和記憶體的交互來最大程度地減少故障點。選擇臨時操作系統 (OS) 磁碟等配置,以當地語系化磁碟訪問並避免網路躍點。添加負載均衡器,通過在多個 VM 之間分配網路流量來增強自我保護,從而提高可用性和可靠性。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "4cd18dd0-57e4-4fc9-a8ad-74c3333b6d8b",
+ "service": "Virtual Machines",
+ "text": "根據 Azure 服務級別協定 (SLA) 計算複合服務級別目標 (SLO)。確保 SLO 不高於 Azure SLA,以避免不切實際的期望和潛在問題。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "90e0bce0-bc44-42ba-be28-2f3dde2f4b37",
+ "service": "Virtual Machines",
+ "text": "創建狀態隔離。工作負載數據應位於單獨的數據磁碟上,以防止干擾 OS 磁碟。如果 VM 發生故障,可以使用相同的數據磁碟創建新的 OS 磁碟,從而確保復原能力和故障隔離。有關詳細資訊,請參閱臨時OS磁碟。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "6d76e7b9-52d3-4878-83ab-2a08df23c8f6",
+ "service": "Virtual Machines",
+ "text": "使 VM 及其依賴項在區域之間冗餘。如果 VM 發生故障,由於冗餘,工作負載應繼續運行。在冗餘選擇中包含依賴項。例如,使用磁碟可用的內置冗餘選項。使用區域冗餘 IP 來確保數據可用性和高正常運行時間。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "56d104f5-469e-4ead-bf17-7c81c746dabe",
+ "service": "Virtual Machines",
+ "text": "做好縱向擴展和橫向擴展的準備,以防止服務級別降級並避免故障。虛擬機規模集具有自動縮放功能,可根據需要創建新實例,並在多個 VM 和可用性區域之間分配負載。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "3395416e-27c6-4ded-941a-de4e562c5c00",
+ "service": "Virtual Machines",
+ "text": "探索自動恢復選項。Azure 支援 VM 的運行狀況降級監視和自我修復功能。例如,規模集提供自動實例修復。在更高級的方案中,自我修復涉及使用 Azure Site Recovery、具有要故障轉移到的被動備用資料庫,或從基礎結構即代碼 (IaC) 重新部署。您選擇的方法應與業務需求和組織運營保持一致。有關詳細資訊,請參閱 VM 服務中斷。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "3d633098-6fc7-4752-907c-5a02d53ffba2",
+ "service": "Virtual Machines",
+ "text": "適當調整 VM 及其依賴項的大小。瞭解 VM 的預期工作,以確保其大小不大,並且能夠處理最大負載。具有額外的容量來緩解故障。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "cbe651de-8754-4078-8066-803f94814634",
+ "service": "Virtual Machines",
+ "text": "制定全面的災難恢復計劃。災難準備涉及制定全面的計劃並決定恢復技術。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "6bbb44ad-f6ed-4990-b519-a56e4d995170",
+ "service": "Virtual Machines",
+ "text": "嚴謹地運行操作。可靠性設計選擇必須得到基於以下原則的有效操作的支援:監視、生產中的彈性測試、自動化應用程式 VM 補丁和升級以及部署的一致性。有關操作指南,請參閱卓越操作。",
+ "type": "checklist",
+ "waf": "可靠性"
+ },
+ {
+ "description": "讓您的應用程式經得起未來擴展的考驗,並利用高可用性保證,將 VM 分佈在區域或可用性區域中的容錯域中。",
+ "guid": "bb45d3f7-dae7-4eb6-a823-76737e6d0d88",
+ "service": "Virtual Machines",
+ "text": "(規模集)在靈活業務流程模式下使用虛擬機規模集來部署 VM。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "即使實例被認為運行狀況不佳,也能保持可用性。自動修復通過替換故障實例來啟動恢復。設置時間視窗可以防止無意或過早的修復操作。",
+ "guid": "29912435-4c36-465e-91e2-6c8fcb42b33f",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)實施在 VM 上發出實例運行狀況的運行狀況終結點。 (規模集)通過指定首選修復操作,在規模集上啟用自動修復。 請考慮設置一個時間範圍,在此期間,如果 VM 的狀態發生變化,自動修復將暫停。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "過度預配可縮短部署時間,並具有成本效益,因為不會對額外的 VM 進行計費。",
+ "guid": "71982e91-2b16-4f49-b91e-7c52a6e0042a",
+ "service": "Virtual Machines",
+ "text": "(規模集)在規模集上啟用預留超額預配。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "此選項隔離容錯域。在維護期間,當一個容錯域更新時,VM 實例在其他容錯域中可用。",
+ "guid": "07b6117e-18f8-4df2-9816-9bba2f028219",
+ "service": "Virtual Machines",
+ "text": "(規模集)允許靈活業務流程將 VM 實例分佈在盡可能多的容錯域中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "VM 實例預配在每個 Azure 區域中物理上獨立的位置,這些位置可以容忍本地故障。 請記住,根據資源可用性,區域之間的實例數量可能會不均勻。區域均衡通過確保如果一個區域關閉,其他區域具有足夠的實例來支援可用性。 每個區域中的兩個實例在升級期間提供緩衝區。",
+ "guid": "056b1e06-a521-4662-9c87-19371260efe6",
+ "service": "Virtual Machines",
+ "text": "(規模集)在規模集上跨可用性區域進行部署。在每個區域中至少設置兩個實例。區域均衡將實例平均分佈在各個區域中。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "容量預留供您使用,並在適用的 SLA 範圍內可用。當您不再需要容量預留時,您可以刪除它們,並且計費基於使用量。",
+ "guid": "2554bcd7-c6b8-4461-aaaa-071092d5483f",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)利用容量預留功能。",
+ "type": "recommendation",
+ "waf": "可靠性"
+ },
+ {
+ "description": "",
+ "guid": "fa5e017f-a99c-4fcc-883b-e16427f4e05d",
+ "service": "Virtual Machines",
+ "text": "查看 Linux 和 Windows VM 以及虛擬機規模集的安全基線。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "63866f61-ef77-4793-9257-dfc53e87a550",
+ "service": "Virtual Machines",
+ "text": "確保及時、自動化的安全補丁和升級。確保使用明確定義的流程自動推出和驗證更新。使用 Azure 自動化等解決方案來管理 OS 更新,並通過進行關鍵更新來維護安全合規性。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "5bc85e31-f7fa-4102-8e43-6fbe7add0d89",
+ "service": "Virtual Machines",
+ "text": "確定保持狀態的 VM。請確保根據組織提供的敏感度標籤對數據進行分類。通過使用安全控制來保護數據,例如適當級別的靜態加密和傳輸中加密。如果有高敏感度要求,請考慮使用雙重加密和 Azure 機密計算等高安全性控制來保護使用中的數據。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "d5320544-6d25-46c7-ab46-e81e5d85d9b3",
+ "service": "Virtual Machines",
+ "text": "通過設置網路邊界和訪問控制,為 VM 和規模集提供分段。將 VM 放置在共用相同生命週期的資源組中。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "becd6031-a256-4186-995e-75817fc7783c",
+ "service": "Virtual Machines",
+ "text": "將訪問控制應用於嘗試訪問 VM 的標識以及訪問其他資源的 VM。使用 Microsoft Entra ID 滿足身份驗證和授權需求。為 VM 及其依賴項(如機密)設置強密碼、多重身份驗證和基於角色的訪問控制 (RBAC),以允許允許的身份僅執行其角色預期的操作。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "cc96d188-8a1f-4b48-9525-d6f3f867f322",
+ "service": "Virtual Machines",
+ "text": "使用網路控制來限制入口和出口流量。隔離 Azure 虛擬網路中的 VM 和規模集,並定義網路安全組以篩選流量。防範分散式拒絕服務 (DDoS) 攻擊。使用負載均衡器和防火牆規則來防止惡意流量和數據外洩攻擊。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "66e5f683-0d57-4ed1-b2bd-68e4549631bc",
+ "service": "Virtual Machines",
+ "text": "通過強化OS映像並刪除未使用的元件來減少攻擊面。使用較小的映像並刪除運行工作負載不需要的二進位檔。通過刪除不需要的功能(如預設帳戶和埠)來收緊 VM 配置。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "961b264a-fddf-43d4-b137-a132429c2874",
+ "service": "Virtual Machines",
+ "text": "保護機密資訊,例如用於保護傳輸中的數據所需的證書。請考慮使用適用於 Windows 或 Linux 的 Azure Key Vault 擴展,該擴展會自動刷新存儲在密鑰保管庫中的證書。當它檢測到證書中的更改時,擴展將檢索並安裝相應的證書。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "39b32108-5423-42aa-beaa-1601df1971f6",
+ "service": "Virtual Machines",
+ "text": "威脅檢測。監視 VM 是否存在威脅和配置錯誤。使用 Defender for Servers 捕獲 VM 和 OS 更改,並維護訪問、新帳戶和許可權更改的審核跟蹤。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "fb9921a8-884c-40df-a588-a554143809f2",
+ "service": "Virtual Machines",
+ "text": "威脅預防。通過實施防火牆、防病毒軟體和入侵檢測系統等安全控制措施,防範惡意軟體攻擊和惡意行為者。確定是否需要可信執行環境 (TEE)。",
+ "type": "checklist",
+ "waf": "安全"
+ },
+ {
+ "description": "當 VM 與其他資源通信時,它們會跨越信任邊界。規模集和 VM 應先驗證其身份,然後才能允許通信。Microsoft Entra ID 使用託管標識處理該身份驗證。",
+ "guid": "21e2209a-6217-464b-9886-1914124b0721",
+ "service": "Virtual Machines",
+ "text": "(規模集)將託管標識分配給規模集。規模集中的所有 VM 都通過指定的 VM 配置檔獲取相同的標識。 (虛擬機)還可以在創建單個 VM 時將託管標識分配給它們,然後根據需要將其添加到規模集。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "Azure 提供的功能基於在許多租戶中捕獲的信號,與自定義控件相比,它可以更好地保護資源。您還可以使用策略來實施這些控制。",
+ "guid": "f13132ec-ac80-4a27-a14e-b7b357523df1",
+ "service": "Virtual Machines",
+ "text": "(規模集)選擇具有安全功能的 VM SKU。例如,某些 SKU 支援 BitLocker 加密,機密計算提供對使用中的數據的加密。 查看功能以瞭解限制。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "標記是分割和組織資源的常用方法,在事件管理過程中可能至關重要。有關詳細資訊,請參閱命名和標記的目的。",
+ "guid": "944802d9-671c-479f-b973-fd6111a18486",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在預置的資源中應用組織推薦的標籤。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "創建 VM 時,將自動啟用安全設定檔中的功能。 有關詳細資訊,請參閱虛擬機規模集的 Azure 安全基線。",
+ "guid": "a6b12603-c2e3-43fd-9a79-6e6317817278",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)使用要在 VM 設定中啟用的安全功能設置安全設定檔。 例如,在配置檔中指定主機加密時,存儲在 VM 主機上的數據將靜態加密,流將加密到存儲服務。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "您可以在網路設定檔中設定分段控制。 攻擊者掃描公共IP位址,這使得VM容易受到威脅。",
+ "guid": "3c83a4bb-2b58-4fae-9a65-37490fecaf1c",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)為 VM 的網路設定檔選擇安全網路選項。 請勿將公共IP位址直接關聯到VM,也不要啟用IP轉發。 確保所有虛擬網路介面都具有關聯的網路安全組。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "禁用公共網路訪問有助於防止未經授權訪問您的數據和資源。",
+ "guid": "fe1df647-99c3-43ea-b8ed-507b23f120e0",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)為 VM 的儲存設定檔選擇安全儲存選項。 默認情況下,啟用磁碟加密和靜態數據加密。禁用對 VM 磁碟的公用網路訪問。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "這些擴展用於使用正確的軟體引導 VM,以保護對 VM 的訪問和從 VM 的訪問。 Microsoft 提供的擴展會經常更新,以跟上不斷發展的安全標準。",
+ "guid": "06c4068a-2562-4cc4-9269-8bdb6b349c3a",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在 VM 中包含可抵禦威脅的擴展。 例如, - 適用於 Windows 和 Linux 的 Key Vault 擴展 - Microsoft Entra ID 身份驗證 - 適用於 Azure 雲服務和虛擬機的 Microsoft 反惡意軟體 - 適用於 Windows 和 Linux 的 Azure 磁碟加密擴展。",
+ "type": "recommendation",
+ "waf": "安全"
+ },
+ {
+ "description": "",
+ "guid": "3e760d37-8430-4da5-833d-95bff2d43e4f",
+ "service": "Virtual Machines",
+ "text": "估算實際成本。使用定價計算機估算 VM 的成本。使用 VM 選擇器確定最適合工作負載的 VM。有關詳細資訊,請參閱Linux和 Windows 定價。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "284bc1f9-59a6-491e-8070-d05e31e29ee7",
+ "service": "Virtual Machines",
+ "text": "實施成本護欄。使用治理策略來限制資源類型、配置和位置。使用 RBAC 阻止可能導致超支的操作。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "353f0d7a-b104-43c3-b3e9-926af6458844",
+ "service": "Virtual Machines",
+ "text": "選擇正確的資源。所選的 VM 計劃大小和 SKU 會直接影響總體成本。根據工作負載特徵選擇 VM。工作負載 CPU 是否密集,還是運行可中斷的進程?每個 SKU 都有關聯的磁碟選項,這些選項會影響總體成本。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "dff9f383-b459-4359-907e-bd33a92d4bd6",
+ "service": "Virtual Machines",
+ "text": "為依賴資源選擇正確的功能。通過使用具有預留容量的 Azure 備份存儲,可以節省保管庫標準層的備份存儲成本。當您承諾預訂一年或三年時,它會提供折扣。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "24cfa2c5-9e77-48e8-82ad-c5e98c636a69",
+ "service": "Virtual Machines",
+ "text": "選擇正確的計費模式。評估基於承諾的計算模型是否根據工作負載的業務需求優化成本。請考慮以下 Azure 選項:",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "046215f1-13ee-4fbf-893d-eeafa28ab76b",
+ "service": "Virtual Machines",
+ "text": "監視使用方式。持續監控使用模式並檢測未使用或未充分利用的虛擬機。對於這些實例,請在不使用時關閉 VM 實例。監控是卓越運營的關鍵方法。有關詳細資訊,請參閱卓越運營中的建議。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "877c04dd-441f-4202-9b87-9eeb3c60b564",
+ "service": "Virtual Machines",
+ "text": "尋找優化方法。一些策略包括在增加現有系統中的資源或縱向擴展,以及添加該系統的更多實例或橫向擴展之間選擇最具成本效益的方法。您可以通過將需求分配給其他資源來卸載需求,也可以通過實施優先順序佇列、閘道卸載、緩衝和速率限制來減少需求。有關詳細資訊,請參閱性能效率中的建議。",
+ "type": "checklist",
+ "waf": "成本"
+ },
+ {
+ "description": "SKU 根據其提供的功能進行定價。如果您不需要高級功能,請不要在 SKU 上超支。 現成虛擬機以較低的成本利用 Azure 中的剩餘容量。",
+ "guid": "90700d86-70f6-433f-b995-b9ad8cfdec84",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)選擇正確的 VM 計劃大小和 SKU。確定工作負載的最佳 VM 大小。 使用 VM 選擇器確定最適合您的工作負載的 VM。請參閱 Windows 和 Linux 定價。 對於可以容忍某些中斷的高度並行批處理作業等工作負載,請考慮使用 Azure 現成虛擬機。現成虛擬機非常適合試驗、開發和測試大規模解決方案。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "一些高性能磁碟類型提供額外的成本優化功能和策略。 高級 SSD v2 磁碟的調整功能可以降低成本,因為它提供高性能,而不會過度預配,否則可能會導致資源未得到充分利用。",
+ "guid": "14211a5a-ea48-4aa1-9f24-e46689328dda",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)評估與 VM 的 SKU 關聯的磁碟選項。 確定您的性能需求,同時牢記您的儲存容量需求,並考慮波動的工作負載模式。 例如,使用 Azure 高級 SSD v2 磁碟,可以不受磁碟大小的影響,精細調整性能。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "通過應用現成虛擬機的大幅折扣來降低計算基礎設施成本。",
+ "guid": "38d3a88b-a84f-46f3-95ce-76a4e245027b",
+ "service": "Virtual Machines",
+ "text": "(規模集)將常規 VM 與現成虛擬機混合使用。 通過靈活的編排,您可以根據指定的百分比分配現成虛擬機。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "在不使用資源時縮減或停止資源可以減少規模集中運行的 VM 數量,從而節省成本。 啟動/停止功能是一種低成本的自動化選項。",
+ "guid": "eccee9b1-70f3-4c96-8223-35e24d842201",
+ "service": "Virtual Machines",
+ "text": "(規模集)當需求減少時,減少 VM 實例的數量。根據條件設置縮減策略。 在空閒時間停止 VM。可以使用 Azure 自動化啟動/停止功能,並根據業務需求進行配置。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "您可以最大限度地利用本地許可證,同時獲得雲的優勢。",
+ "guid": "3c34c3e4-5715-472e-953e-2d5030bf18a0",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)使用 Azure 混合權益來利用許可證行動性。VM 具有許可選項,允許將自己的本地 Windows Server OS 許可證引入 Azure。 Azure 混合權益還允許將某些 Linux 訂閱引入 Azure。",
+ "type": "recommendation",
+ "waf": "成本"
+ },
+ {
+ "description": "",
+ "guid": "fc1734b9-fefe-403d-bfc9-c2beca6f12a2",
+ "service": "Virtual Machines",
+ "text": "監視 VM 實例。從虛擬機實例收集日誌和指標,以監控資源使用方式並衡量實例的運行狀況。一些常見的指標包括 CPU 使用率、請求數和輸入 /輸出 (I/O) 延遲。設置 Azure Monitor 警報,以接收有關問題的通知,並檢測環境中的配置更改。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "724b847d-caf4-4e90-83e7-f4c71e68c4f7",
+ "service": "Virtual Machines",
+ "text": "監視 VM 及其依賴項的運行狀況。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "f99e71a9-05ee-41c2-81b7-8d794763040b",
+ "service": "Virtual Machines",
+ "text": "創建一個維護計劃,其中包括定期系統修補作為日常操作的一部分。包括允許立即應用補丁的緊急流程。可以使用自定義流程來管理修補,也可以將任務部分委託給 Azure。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "ca34b9c2-69db-4256-a354-c491877f79ac",
+ "service": "Virtual Machines",
+ "text": "自動執行引導、運行腳本和配置 VM 的過程。您可以使用擴展或自訂腳本來自動執行流程。我們建議使用以下選項:",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "821779c7-588f-40af-a740-8dd41fb585fd",
+ "service": "Virtual Machines",
+ "text": "具有安裝自動更新的過程。請考慮使用自動 VM Guest 修補功能及時推出關鍵補丁和安全補丁。使用 Azure Update Manager 管理 Azure 中 Windows 和 Linux 虛擬機的 OS 更新。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "079c8821-00dd-4eaf-9cae-5a3dbfd6fdfa",
+ "service": "Virtual Machines",
+ "text": "構建一個與生產環境緊密匹配的測試環境,以在將更新和更改部署到生產環境之前對其進行測試。制定適當的流程來測試安全更新、性能基線和可靠性故障。利用 Azure Chaos Studio 故障庫來注入和類比錯誤條件。有關詳細資訊,請參閱 Azure Chaos Studio 故障和操作庫。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "77cdbef0-ba18-4ef0-9ef4-088931e331c7",
+ "service": "Virtual Machines",
+ "text": "管理配額。規劃工作負載所需的配額級別,並隨著工作負載的變化定期查看該級別。如果您需要增加或減少配額,請儘早請求這些更改。",
+ "type": "checklist",
+ "waf": "操作"
+ },
+ {
+ "description": "靈活的編排可以大規模管理 VM 實例。處理單個 VM 會增加運營開銷。 例如,當您刪除 VM 實例時,關聯的磁碟和 NIC 也會自動刪除。VM 實例分佈在多個容錯域中,因此更新操作不會中斷服務。",
+ "guid": "3049efb5-d3ae-4e36-a8fa-12f2c4a44144",
+ "service": "Virtual Machines",
+ "text": "(規模集)靈活業務流程模式下的虛擬機規模集有助於簡化工作負載的部署和管理。例如,您可以通過使用自動修復輕鬆管理自我修復。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "安全性是升級的主要原因。實例的安全保證不應隨著時間的推移而衰減。 滾動升級是分批完成的,可確保所有實例不會同時關閉。",
+ "guid": "19de83a6-2f87-49b1-8241-d1d687f46658",
+ "service": "Virtual Machines",
+ "text": "(規模集)通過設置升級策略使 VM 保持最新狀態。我們建議滾動升級。但是,如果您需要精細控制,請選擇手動升級。 對於靈活業務流程,可以使用 Azure Update Manager。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "將創建規模集中的 VM,並預安裝指定的應用,從而簡化管理。",
+ "guid": "65c832e8-2882-45ed-b239-0e68f74975aa",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)通過在配置檔中定義應用程式,自動部署 Azure Compute Gallery 中的 VM 應用程式。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "擴展可以幫助簡化大規模的軟體安裝,而無需在每個 VM 上手動安裝、配置或升級它。",
+ "guid": "40266c61-9685-4ee1-8cb6-a899a6b573f2",
+ "service": "Virtual Machines",
+ "text": "在引導過程中將預構建的軟體元件作為擴展進行安裝。 Azure 支援許多擴展,這些擴展可用於為 VM 配置、監視、保護和提供實用工具應用程式。 在擴展上啟用自動升級。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "監控數據是事件解決的核心。全面的監控堆疊提供有關虛擬機的性能及其運行狀況的資訊。通過持續監控實例,您可以為性能過載和可靠性問題等故障做好準備或防止故障。",
+ "guid": "72e210dc-5abb-4569-b650-ec27003bb1cf",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)監視和測量 VM 實例的運行狀況。 將 Monitor 代理擴展部署到 VM,以使用特定於 OS 的數據收集規則從來賓 OS 收集監視數據。 啟用 VM 見解以監視運行狀況和性能,並查看收集的數據中的趨勢。使用啟動診斷在 VM 啟動時獲取資訊。啟動診斷還會診斷啟動失敗。",
+ "type": "recommendation",
+ "waf": "操作"
+ },
+ {
+ "description": "",
+ "guid": "0303e75c-321d-42b0-9226-b05f43633d50",
+ "service": "Virtual Machines",
+ "text": "定義性能目標。確定要跟蹤和衡量的 VM 指標,以及回應時間、CPU 利用率和記憶體利用率等性能指標,以及每秒事務數、併發用戶數以及可用性和運行狀況等工作負載指標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "f2c0ba97-9170-43ab-90b5-b30f159913ba",
+ "service": "Virtual Machines",
+ "text": "在容量規劃中考慮 VM、規模集和磁碟配置的性能配置檔。每個 SKU 都有不同的記憶體和 CPU 配置檔,並且根據工作負載類型而行為不同。進行試點和概念驗證,以瞭解特定工作負載下的性能行為。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "ffee7b2f-b57c-40cc-a8ab-9044dead9dc7",
+ "service": "Virtual Machines",
+ "text": "VM 性能調優。根據工作負載的需要,利用性能優化和增強功能。例如,使用本地連接的非易失性記憶體 Express (NVMe) 實現高性能用例和加速網路,並使用高級 SSD v2 獲得更好的性能和可擴充性。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "75cf3a03-3d7c-4199-8138-45ff62b1f7a5",
+ "service": "Virtual Machines",
+ "text": "將依賴服務考慮在內。與 VM 交互的工作負載依賴關係(如緩存、網路流量和內容分發網路)可能會影響性能。此外,還要考慮地理分佈,例如區域和區域,這可能會增加延遲。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "739525ea-4d0a-4965-baef-ab0325fbed67",
+ "service": "Virtual Machines",
+ "text": "收集性能數據。遵循卓越運營最佳實踐進行監視,並部署適當的擴展,以查看跟蹤性能指標的指標。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "",
+ "guid": "39acd43b-a405-439b-83c9-b9d79d9cdba6",
+ "service": "Virtual Machines",
+ "text": "鄰近放置組。在需要低延遲的工作負載中使用鄰近放置組,以確保 VM 在物理上彼此靠近。",
+ "type": "checklist",
+ "waf": "性能"
+ },
+ {
+ "description": "合理調整 VM 大小是一項基本決策,會顯著影響工作負載的性能。如果沒有正確的 VM 集,您可能會遇到性能問題併產生不必要的成本。",
+ "guid": "67cc04db-4b74-40f4-9bf6-0ba5f758b45e",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)為 VM 選擇符合容量規劃的 SKU。充分瞭解工作負載要求,包括核心數、記憶體、存儲和網路頻寬,以便篩選出不合適的SKU。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "鄰近放置組可縮短 Azure 計算資源之間的物理距離,從而提高性能並減少獨立 VM、多個可用性集中的 VM 或多個規模集中的 VM 之間的網路延遲。",
+ "guid": "ef3de2ad-d5b6-4931-9fc7-28249d9300c0",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)在鄰近放置組中部署對延遲敏感的工作負載 VM。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "高級 SSD 提供高性能和低延遲的磁碟支援,可處理 I/O 密集型工作負載。 高級 SSD v2 不需要調整磁碟大小,從而在不過度預留空間的情況下實現高性能,並最大限度地降低未使用容量的成本。 如果在 VM SKU 上可用,本地連接的 NVMe 或類似設備可以提供高性能,尤其是對於需要每秒輸入/輸出操作數 (IOPS) 和低延遲的用例。",
+ "guid": "a91aae92-2b2c-4c88-b268-2c70b995a952",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集) 通過分析現有工作負載的磁碟性能和 VM SKU 來設置存儲配置檔。 將高級 SSD 用於生產 VM。 使用進階 SSD v2 調整磁碟的效能。使用本地連接的NVMe設備。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "它支援對 VM 的單根 I/O 虛擬化 (SR-IOV),從而大大提高了其網路性能。",
+ "guid": "57e446da-1b2e-4bdc-abc9-3e978a11e940",
+ "service": "Virtual Machines",
+ "text": "(虛擬機)請考慮啟用加速網路。",
+ "type": "recommendation",
+ "waf": "性能"
+ },
+ {
+ "description": "如果應用程式需求增加,則規模集中的 VM 實例上的負載也會增加。自動縮放規則可確保你有足夠的資源來滿足需求。",
+ "guid": "785858b0-2f0b-476d-9f1e-af92b57314c9",
+ "service": "Virtual Machines",
+ "text": "(VM、規模集)設置自動縮放規則,根據需求增加或減少規模集中的 VM 實例數。",
+ "type": "recommendation",
+ "waf": "性能"
+ }
+ ],
+ "metadata": {
+ "name": "WAF Service Guides",
+ "state": "preview",
+ "timestamp": "August 05, 2024",
+ "waf": "all"
+ },
+ "status": [
+ {
+ "description": "此檢查尚未查看",
+ "name": "未驗證"
+ },
+ {
+ "description": "有一個與此檢查關聯的操作項",
+ "name": "打開"
+ },
+ {
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
+ "name": "實現"
+ },
+ {
+ "description": "不適用於當前設計",
+ "name": "N/A"
+ },
+ {
+ "description": "不需要",
+ "name": "不需要"
+ }
+ ],
+ "waf": [
+ {
+ "name": "安全"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "成本"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "可靠性"
+ },
+ {
+ "name": "安全"
+ },
+ {
+ "name": "性能"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "操作"
+ },
+ {
+ "name": "性能"
+ }
+ ],
+ "yesno": [
+ {
+ "name": "是的"
+ },
+ {
+ "name": "不"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/checklists/alz_checklist.en.json b/checklists/alz_checklist.en.json
index e679d68a5..238ef66ca 100644
--- a/checklists/alz_checklist.en.json
+++ b/checklists/alz_checklist.en.json
@@ -9,7 +9,8 @@
"guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
"id": "A01.01",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
+ "training": "https://learn.microsoft.com/training/modules/deploy-resources-scopes-bicep/2-understand-deployment-scopes"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -20,7 +21,8 @@
"guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
"id": "A01.02",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "training": "https://learn.microsoft.com/entra/architecture/multi-tenant-user-management-introduction/"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -43,7 +45,8 @@
"guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
"id": "A02.01",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "training": "https://learn.microsoft.com/azure/lighthouse/how-to/onboard-customer"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -63,7 +66,8 @@
"guid": "32952499-58c8-4e6f-ada5-972e67893d55",
"id": "A02.03",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -83,7 +87,8 @@
"guid": "12cd499f-96e2-4e41-a243-231fb3245a1c",
"id": "A03.02",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/manage/understand-ea-roles"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -104,7 +109,8 @@
"guid": "5cf9f485-2784-49b3-9824-75d9b8bdb57b",
"id": "A03.05",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "training": "https://learn.microsoft.com/azure/devtest/offer/how-to-manage-monitor-devtest"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -114,7 +120,8 @@
"guid": "6ad5c3dd-e5ea-4ff1-81a4-7886ff87845c",
"id": "A04.01",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-setup-account"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -124,7 +131,8 @@
"guid": "90e87802-602f-4dfb-acea-67c60689f1d7",
"id": "A04.02",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice"
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/understand/mca-overview#billing-profiles"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -134,7 +142,8 @@
"guid": "e81a73f0-84c4-4641-b406-14db3b4d1f50",
"id": "A04.03",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "training": "https://learn.microsoft.com/azure/devtest/offer/overview-what-is-devtest-offer-visual-studio"
},
{
"category": "Azure Billing and Microsoft Entra ID Tenants",
@@ -144,7 +153,8 @@
"guid": "ae757485-92a4-482a-8bc9-eefe6f5b5ec3",
"id": "A04.04",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/manage/understand-mca-roles"
},
{
"category": "Identity and Access Management",
@@ -155,8 +165,8 @@
"guid": "348ef254-c27d-442e-abba-c7571559ab91",
"id": "B03.01",
"severity": "High",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview"
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/"
},
{
"category": "Identity and Access Management",
@@ -166,8 +176,8 @@
"guid": "4348bf81-7573-4512-8f46-9061cc198fea",
"id": "B03.02",
"severity": "High",
- "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator",
+ "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview"
},
{
"category": "Identity and Access Management",
@@ -272,7 +282,7 @@
"id": "B03.11",
"severity": "Medium",
"training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview"
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/overview"
},
{
"category": "Identity and Access Management",
@@ -283,7 +293,8 @@
"guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
"id": "B03.12",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor"
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
+ "training": "https://learn.microsoft.com/entra/identity/monitoring-health/howto-integrate-activity-logs-with-azure-monitor-logs"
},
{
"category": "Identity and Access Management",
@@ -301,12 +312,13 @@
{
"category": "Identity and Access Management",
"subcategory": "Microsoft Entra ID",
- "text": "When deploying an Microsoft Entra Connect, use a staging sever for high availability / Disaster recovery.",
+ "text": "When deploying Microsoft Entra Connect, use a staging sever for high availability/disaster recovery.",
"waf": "Reliability",
"guid": "cd163e39-84a5-4b39-97b7-6973abd70d94",
"id": "B03.14",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server"
+ "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server",
+ "training": "https://learn.microsoft.com/entra/identity/hybrid/connect/plan-connect-topologies"
},
{
"category": "Identity and Access Management",
@@ -362,7 +374,8 @@
"guid": "d505ebcb-79b1-4274-9c0d-a27c8bea489c",
"id": "B04.03",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-create-roles-and-resource-roles-review"
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-create-roles-and-resource-roles-review",
+ "training": "https://learn.microsoft.com/entra/id-governance/privileged-identity-management/pim-perform-roles-and-resource-roles-review"
},
{
"category": "Resource Organization",
@@ -491,8 +504,8 @@
"id": "C02.11",
"ammp": true,
"severity": "Medium",
- "training": "https://learn.microsoft.com/en-gb/training/modules/visualize-data-workbooks/",
- "link": "https://learn.microsoft.com/en-us/azure/azure-portal/azure-portal-dashboards"
+ "training": "https://learn.microsoft.com/training/modules/visualize-data-workbooks/",
+ "link": "https://learn.microsoft.com/azure/azure-portal/azure-portal-dashboards"
},
{
"category": "Resource Organization",
@@ -602,7 +615,8 @@
"guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
"id": "D01.02",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/"
},
{
"category": "Network Topology and Connectivity",
@@ -636,7 +650,8 @@
"guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
"id": "D01.04",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn"
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-route-server/"
},
{
"category": "Network Topology and Connectivity",
@@ -648,7 +663,8 @@
"id": "D01.05",
"severity": "Low",
"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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1"
+ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-route-server/"
},
{
"category": "Network Topology and Connectivity",
@@ -684,7 +700,8 @@
"id": "D01.08",
"severity": "Medium",
"graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "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"
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/"
},
{
"category": "Network Topology and Connectivity",
@@ -696,7 +713,8 @@
"id": "D01.09",
"severity": "Medium",
"graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "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"
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/"
},
{
"category": "Network Topology and Connectivity",
@@ -708,7 +726,8 @@
"id": "D01.10",
"severity": "High",
"graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering"
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/"
},
{
"category": "Network Topology and Connectivity",
@@ -719,7 +738,8 @@
"guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
"id": "D02.01",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec"
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-azure-expressroute/"
},
{
"category": "Network Topology and Connectivity",
@@ -816,7 +836,8 @@
"guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
"id": "D03.07",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances"
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
+ "training": "https://learn.microsoft.com/training/courses/az-700t00"
},
{
"category": "Network Topology and Connectivity",
@@ -839,7 +860,8 @@
"guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
"id": "D05.01",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview"
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-bastion/"
},
{
"category": "Network Topology and Connectivity",
@@ -851,7 +873,8 @@
"id": "D05.02",
"severity": "Medium",
"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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet"
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
+ "training":"https://learn.microsoft.com/training/modules/intro-to-azure-bastion/"
},
{
"category": "Network Topology and Connectivity",
@@ -910,7 +933,8 @@
"guid": "b034c01e-110b-463a-b36e-e3346e57f225",
"id": "D05.07",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access"
+ "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
+ "training":"https://learn.microsoft.com/training/modules/configure-virtual-networks/"
},
{
"category": "Network Topology and Connectivity",
@@ -933,7 +957,8 @@
"guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
"id": "D05.08",
"severity": "High",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp"
+ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-policy/"
},
{
"category": "Network Topology and Connectivity",
@@ -983,7 +1008,8 @@
"id": "D06.04",
"severity": "High",
"graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost"
+ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-azure-expressroute/"
},
{
"category": "Network Topology and Connectivity",
@@ -995,7 +1021,8 @@
"id": "D06.05",
"severity": "High",
"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",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local"
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-azure-expressroute/"
},
{
"category": "Network Topology and Connectivity",
@@ -1129,7 +1156,8 @@
"guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
"id": "D06.16",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager"
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-azure-expressroute/"
},
{
"category": "Network Topology and Connectivity",
@@ -1152,7 +1180,8 @@
"guid": "d581a947-69a2-4783-942e-9df3664324c8",
"id": "D06.18",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections"
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-azure-expressroute/"
},
{
"category": "Network Topology and Connectivity",
@@ -1271,7 +1300,8 @@
"id": "D07.04",
"severity": "High",
"graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules"
+ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/"
},
{
"category": "Network Topology and Connectivity",
@@ -1283,7 +1313,8 @@
"id": "D07.05",
"severity": "High",
"graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features"
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-firewall/"
},
{
"category": "Network Topology and Connectivity",
@@ -1307,7 +1338,8 @@
"id": "D07.07",
"severity": "High",
"graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps"
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-firewall/"
},
{
"category": "Network Topology and Connectivity",
@@ -1355,7 +1387,8 @@
"id": "D07.11",
"severity": "High",
"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",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size"
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-firewall/"
},
{
"category": "Network Topology and Connectivity",
@@ -1366,7 +1399,8 @@
"guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
"id": "D07.12",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy"
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-firewall-manager/"
},
{
"category": "Network Topology and Connectivity",
@@ -1388,7 +1422,8 @@
"guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
"id": "D07.13",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat"
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "training": "https://learn.microsoft.com/training/modules/introduction-to-azure-virtual-networks/"
},
{
"category": "Network Topology and Connectivity",
@@ -1399,7 +1434,8 @@
"guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
"id": "D07.14",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway"
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "training": "https://learn.microsoft.com/training/modules/introduction-to-azure-virtual-networks/"
},
{
"category": "Network Topology and Connectivity",
@@ -1432,7 +1468,8 @@
"guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
"id": "D07.17",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall"
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-application-gateway/"
},
{
"category": "Network Topology and Connectivity",
@@ -1443,7 +1480,8 @@
"guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
"id": "D07.18",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details"
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "training": "https://learn.microsoft.com/training/courses/az-700t00/"
},
{
"category": "Network Topology and Connectivity",
@@ -1454,7 +1492,8 @@
"guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
"id": "D07.19",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics"
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "training": "https://learn.microsoft.com/training/courses/az-700t00/"
},
{
"category": "Network Topology and Connectivity",
@@ -1465,7 +1504,8 @@
"guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
"id": "D07.20",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall"
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "training": "https://learn.microsoft.com/training/courses/az-104t00/"
},
{
"category": "Network Topology and Connectivity",
@@ -1632,7 +1672,8 @@
"guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
"id": "D10.02",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1656,7 +1697,8 @@
"guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
"id": "D10.04",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1667,7 +1709,8 @@
"guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
"id": "D10.05",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1678,7 +1721,8 @@
"guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
"id": "D10.06",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1689,7 +1733,8 @@
"guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
"id": "D10.07",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1700,7 +1745,8 @@
"guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
"id": "D10.08",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Network Topology and Connectivity",
@@ -1711,7 +1757,8 @@
"guid": "9c75dfef-573c-461c-a698-68598595581a",
"id": "D10.09",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation"
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/"
},
{
"category": "Governance",
@@ -2484,7 +2531,8 @@
"guid": "e85f4226-bf06-4e35-8a8b-7aee4d2d633a",
"id": "H01.01",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/platform-automation-devops"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/platform-automation-devops",
+ "training": "https://learn.microsoft.com/training/modules/choose-an-agile-approach/"
},
{
"category": "Platform Automation and DevOps",
@@ -2494,7 +2542,8 @@
"guid": "634146bf-7085-4419-a7b5-f96d2726f6da",
"id": "H01.02",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations",
+ "training": "https://learn.microsoft.com/training/paths/az-400-work-git-for-enterprise-devops/"
},
{
"category": "Platform Automation and DevOps",
@@ -2504,7 +2553,8 @@
"guid": "a9e65070-c59e-4112-8bf6-c11364d4a2a5",
"id": "H01.03",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations",
+ "training": "https://learn.microsoft.com/training/paths/az-400-work-git-for-enterprise-devops/"
},
{
"category": "Platform Automation and DevOps",
@@ -2514,7 +2564,8 @@
"guid": "165eb5e9-b434-448a-9e24-178632186212",
"id": "H01.04",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
+ "training": "https://learn.microsoft.com/training/modules/manage-multiple-environments-using-bicep-azure-pipelines/"
},
{
"category": "Platform Automation and DevOps",
@@ -2524,7 +2575,8 @@
"guid": "0cadb8c7-8fa5-4fbf-8f39-d1fadb3b0460",
"id": "H01.05",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds",
+ "training": "https://learn.microsoft.com/training/modules/run-quality-tests-build-pipeline/"
},
{
"category": "Platform Automation and DevOps",
@@ -2535,7 +2587,8 @@
"guid": "108d5099-a11d-4445-bd8b-e12a5e95412e",
"id": "H01.06",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds",
+ "training": "https://learn.microsoft.com/en-us/training/modules/implement-azure-key-vault/"
},
{
"category": "Platform Automation and DevOps",
@@ -2555,7 +2608,8 @@
"guid": "cfe363b5-f579-4284-bc56-a42153e4c10b",
"id": "H02.01",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
+ "training": "https://learn.microsoft.com/training/paths/intro-to-vc-git/"
},
{
"category": "Platform Automation and DevOps",
@@ -2565,7 +2619,8 @@
"guid": "c7245dd4-af8a-403a-8bb7-890c1a7cfa9d",
"id": "H02.02",
"severity": "Low",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle",
+ "training": "https://learn.microsoft.com/training/modules/manage-git-branches-workflows/"
},
{
"category": "Platform Automation and DevOps",
@@ -2575,7 +2630,8 @@
"guid": "12aeea20-9165-4b3e-bdf2-6795fcd3cdbe",
"id": "H02.03",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle",
+ "training": "https://learn.microsoft.com/training/modules/review-azure-infrastructure-changes-using-bicep-pull-requests/"
},
{
"category": "Platform Automation and DevOps",
@@ -2585,7 +2641,8 @@
"guid": "2676ae46-65ca-444e-8695-fdddeace4cb1",
"id": "H02.04",
"severity": "Medium",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-platform"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-platform",
+ "training": "https://learn.microsoft.com/training/modules/branch-merge-git/"
},
{
"category": "Platform Automation and DevOps",
@@ -2595,7 +2652,8 @@
"guid": "2cdc9d99-dbcc-4ad4-97f5-e7d358bdfa73",
"id": "H03.01",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
+ "training": "https://learn.microsoft.com/training/modules/introduction-to-infrastructure-as-code-using-bicep/"
},
{
"category": "Platform Automation and DevOps",
@@ -2605,7 +2663,8 @@
"guid": "cc87a3bc-c572-4ad2-92ed-8cabab66160f",
"id": "H04.01",
"severity": "High",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/landing-zone-security#secure"
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/landing-zone-security#secure",
+ "training": "https://learn.microsoft.com/training/paths/az-400-implement-security-validate-code-bases-compliance/"
}
],
"categories": [
@@ -2698,4 +2757,4 @@
"waf": "all",
"timestamp": "July 16, 2024"
}
-}
\ No newline at end of file
+}
diff --git a/checklists/checklist.en.master.json b/checklists/checklist.en.master.json
index 9bbd438c5..9c9631f09 100644
--- a/checklists/checklist.en.master.json
+++ b/checklists/checklist.en.master.json
@@ -1,41410 +1,35559 @@
{
"items": [
{
- "category": "BC and DR",
- "checklist": "Device Update Review",
- "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
- "waf": "Reliability"
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
+ "services": [
+ "APIM",
+ "AzurePolicy"
+ ],
+ "severity": "Medium",
+ "subcategory": "Development best practices",
+ "text": "Implement an error handling policy at the global level",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Device Update Review",
- "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
+ "services": [
+ "APIM",
+ "AzurePolicy"
+ ],
+ "severity": "Medium",
+ "subcategory": "Development best practices",
+ "text": "Ensure all APIs policies include a element.",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Device Update Review",
- "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Device Update for IoT Hub",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
+ "services": [
+ "APIM",
+ "AzurePolicy",
+ "ACR"
+ ],
+ "severity": "Medium",
+ "subcategory": "Development best practices",
+ "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Device Update Review",
- "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Device Update for IoT Hub",
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
"services": [
- "AppSvc"
+ "APIM"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Monetization",
+ "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
+ "waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Microsoft Entra ID Tenants",
- "text": "Use one Entra tenant for managing your Azure resources, unless you have a clear regulatory or business requirement for multi-tenants.",
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
"waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Microsoft Entra ID Tenants",
- "text": "Use Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants.",
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Enable Application Insights for more detailed telemetry",
"waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
+ "category": "Governance",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM",
+ "Monitor"
],
"severity": "High",
- "subcategory": "Microsoft Entra ID Tenants",
- "text": "Use Azure Lighthouse for Multi-Tenant Management with the same IDs.",
- "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "subcategory": "Monitoring",
+ "text": "Configure alerts on the most critical metrics",
"waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
+ "category": "Identity and Access Management",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
"services": [
- "Entra"
+ "Entra",
+ "AKV",
+ "APIM"
],
"severity": "High",
- "subcategory": "Cloud Solution Provider",
- "text": "If you give a partner access to administer your tenant, use Azure Lighthouse.",
- "waf": "Cost"
+ "subcategory": "Data protection",
+ "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
+ "waf": "Security"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "a24d0de3-d4b9-4dfb-8ddd-bbfaf123fa01",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-cloud-solution-provider#design-recommendations",
+ "category": "Identity and Access Management",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"services": [
- "Entra"
+ "Entra",
+ "APIM"
],
- "severity": "Low",
- "subcategory": "Cloud Solution Provider",
- "text": "If you have a CSP partner, define and document your support request and escalation process.",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Identity",
+ "text": "Protect incoming requests to APIs (data plane) with Azure AD",
+ "waf": "Security"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "32952499-58c8-4e6f-ada5-972e67893d55",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "category": "Identity and Access Management",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"services": [
- "Cost",
- "Entra"
+ "Entra",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Cloud Solution Provider",
- "text": "Setup Cost Reporting and Views with Azure Cost Management.",
- "waf": "Cost"
+ "subcategory": "Identity",
+ "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
+ "waf": "Security"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "685cb4f2-ac9c-4b19-9167-993ed0b32415",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "category": "Identity and Access Management",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"services": [
- "LoadBalancer",
- "Entra"
+ "Entra",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Enterprise Agreement",
- "text": "Configure Notification Contacts to a group mailbox.",
- "waf": "Cost"
+ "subcategory": "Privileged access",
+ "text": "Create appropriate groups to control the visibility of the products",
+ "waf": "Security"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"services": [
- "TrafficManager",
- "Entra"
+ "APIM"
],
- "severity": "Low",
- "subcategory": "Enterprise Agreement",
- "text": "Use departments and accounts to map your organization's structure to your enrollment hierarchy which can help with separating billing.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Best practices",
+ "text": "Use Backends feature to eliminate redundant API backend configurations",
+ "waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "ca0fe401-12ad-46fc-8a7e-86293866a9f6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-recommendations",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"services": [
- "Cost",
- "Entra"
+ "APIM",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Enterprise Agreement",
- "text": "Enable both DA View Charges and AO View Charges on your EA Enrollments to allow users with the correct perms review Cost and Billing Data.",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/assign-access-acm-data#enable-access-to-costs-in-the-azure-portal",
- "waf": "Security"
+ "subcategory": "Best practices",
+ "text": "Use Named Values to store common values that can be used in policies",
+ "waf": "Operations"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "Cost",
- "Entra"
+ "ASR",
+ "APIM",
+ "ACR"
],
- "severity": "Low",
- "subcategory": "Enterprise Agreement",
- "text": "Use of Enterprise Dev/Test Subscriptions to reduce costs for non-production workloads.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Business continuity and disaster recovery",
+ "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
+ "waf": "Reliability"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "6ad5c3dd-e5ea-4ff1-81a4-7886ff87845c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
"services": [
- "Entra"
+ "ASR",
+ "APIM"
],
- "severity": "Low",
- "subcategory": "Microsoft Customer Agreement",
- "text": "Configure Agreement billing account notification contact email.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Business continuity and disaster recovery",
+ "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
+ "waf": "Reliability"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "90e87802-602f-4dfb-acea-67c60689f1d7",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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": [
- "Storage",
- "Cost",
- "Entra"
+ "Backup",
+ "APIM",
+ "ASR"
],
- "severity": "Low",
- "subcategory": "Microsoft Customer Agreement",
- "text": "Use Billing Profiles and Invoice sections to structure your agreements billing for effective cost management.",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Business continuity and disaster recovery",
+ "text": "Ensure there is an automated backup routine",
+ "waf": "Reliability"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "guid": "e81a73f0-84c4-4641-b406-14db3b4d1f50",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
"services": [
- "Cost",
- "Entra"
+ "APIM",
+ "AzurePolicy"
],
- "severity": "Low",
- "subcategory": "Microsoft Customer Agreement",
- "text": "Make use of Microsoft Azure plan for dev/test offer to reduce costs for non-production workloads.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Failover and Caching",
+ "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
+ "waf": "Reliability"
},
{
- "category": "Azure Billing and Microsoft Entra ID Tenants",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "f96ddac5-77ec-4fa9-8833-4327f052059e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-cache-external",
"services": [
- "RBAC",
- "Entra"
+ "APIM",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Microsoft Customer Agreement",
- "text": "Define and document a process to periodically audit the agreement billing RBAC role assignments to review who has access to your MCA billing account.",
- "waf": "Cost"
+ "subcategory": "Performance and scalability",
+ "text": "Consider using a external cache policy for APIs that can benefit from caching",
+ "training": "https://learn.microsoft.com/training/modules/improve-api-performance-with-apim-caching-policy/"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "RBAC",
- "ACR",
- "Entra"
+ "EventHubs",
+ "APIM",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Enforce a RBAC model that aligns to your cloud operating model. Scope and Assign across Management Groups and Subscriptions.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Performance and scalability",
+ "text": "If you need to log at high performance levels, consider Event Hubs policy",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "4348bf81-7573-4512-8f46-9061cc198fea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Microsoft Entra ID and Hybrid Identity",
- "text": "Use managed identities instead of service principals for authentication to Azure services. You can check for existing service principals via Entra ID > Sign in Logs > Service principal logins.",
- "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Performance and scalability",
+ "text": "Apply throttling policies to control the number of requests per second",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "Performance"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Only use the authentication type Work or school account for all account types. Avoid using the Microsoft account",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Performance and scalability",
+ "text": "Configure autoscaling to scale out the number of instances when the load increases",
+ "waf": "Performance"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Only use groups to assign permissions. Add on-premises groups to the Entra ID only group if a group management system is already in place.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Security"
+ "subcategory": "Performance and scalability",
+ "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
+ "waf": "Performance"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"services": [
- "Entra",
- "AzurePolicy"
+ "APIM"
],
- "severity": "High",
- "subcategory": "Identity",
- "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"
+ "severity": "Medium",
+ "subcategory": "Premium Tier",
+ "text": "Use the premium tier for production workloads.",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Identity",
- "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"
+ "severity": "Medium",
+ "subcategory": "Request Routing",
+ "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6a83de5-de32-4c19-a248-1607d5d1e4e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"services": [
- "RBAC",
- "Entra"
+ "Entra",
+ "APIM"
],
"severity": "High",
- "subcategory": "Identity",
- "text": "Enforce centralized and delegated responsibilities to manage resources deployed inside the landing zone, based on role and security requirements.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Security"
+ "subcategory": "Resource Limits",
+ "text": "Be aware of APIM's limits",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "category": "Management",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "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"
+ "severity": "High",
+ "subcategory": "Self-Hosted",
+ "text": "Ensure that the self-hosted gateway deployments are resilient.",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "1559ab91-53e8-4908-ae28-c84c33b6b780",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain#vm-recommendations",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
"services": [
- "VM",
- "ACR",
- "Entra"
+ "Entra",
+ "APIM",
+ "FrontDoor"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "When deploying Active Directory Domain Controllers, use a location with Availability Zones and deploy at least two VMs across these zones. If not available, deploy in an Availability Set.",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Connectivity",
+ "text": "Use Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "Performance"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "RBAC",
- "ACR",
- "Entra"
+ "VNet",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Use Azure custom RBAC roles for the following key roles to provide fine-grain access across your ALZ: Azure platform owner, network management, security operations, subscription owner, application owner. Align these roles to teams and responsibilities within your business.",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "subcategory": "Security",
+ "text": "Deploy the service within a Virtual Network (VNet)",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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": [
- "Entra"
+ "Entra",
+ "APIM",
+ "VNet",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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/",
+ "subcategory": "Security",
+ "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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": [
- "Monitor",
- "Entra"
+ "Entra",
+ "APIM",
+ "PrivateLink",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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.",
+ "subcategory": "Security",
+ "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM"
],
"severity": "High",
- "subcategory": "Identity",
- "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/",
+ "subcategory": "Security",
+ "text": "Disable Public Network Access",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "cd163e39-84a5-4b39-97b7-6973abd70d94",
- "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server",
+ "category": "Platform automation and DevOps",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"services": [
- "ASR",
- "Entra"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Microsoft Entra ID",
- "text": "When deploying an Microsoft Entra Connect, use a staging sever for high availability / Disaster recovery.",
- "waf": "Reliability"
+ "subcategory": "Automation",
+ "text": "Simplify management with PowerShell automation scripts",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "category": "Platform automation and DevOps",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"services": [
- "RBAC",
- "Entra"
+ "Entra",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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"
+ "subcategory": "Best practices",
+ "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "category": "Platform automation and DevOps",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
"services": [
- "Entra"
+ "Entra",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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"
+ "subcategory": "Best practices",
+ "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "9cf5418b-1520-4b7b-add7-88eb28f833e8",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator",
+ "category": "Platform automation and DevOps",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
"services": [
- "VNet",
- "Entra"
+ "APIM"
],
- "severity": "High",
- "subcategory": "Landing zones",
- "text": "Configure Identity network segmentation through the use of a virtual Network and peer back to the hub. Providing authentication inside application landing zone (legacy).",
- "training": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "DevOps",
+ "text": "Implement DevOps and CI/CD in your workflow",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
"services": [
- "AKV",
- "ACR",
- "Storage",
- "Entra",
- "RBAC"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Landing zones",
- "text": "Use Azure RBAC to manage data plane access to resources, if possible. E.g. Data Operations across Key Vault, Storage Account and Database Services.",
- "training": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "subcategory": "APIs",
+ "text": "Secure APIs using client certificate authentication",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "d505ebcb-79b1-4274-9c0d-a27c8bea489c",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-create-roles-and-resource-roles-review",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"services": [
- "Entra"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Landing zones",
- "text": "Use Microsoft Entra ID PIM access reviews to periodically validate resource entitlements.",
- "waf": "Security"
- },
- {
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "description": "Consider using the Azure naming tool available at https://aka.ms/azurenamingtool",
- "guid": "cacf55bc-e4e4-46be-96bc-57a5f23a269a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming",
- "services": [],
- "severity": "High",
- "subcategory": "Naming and tagging",
- "text": "Use a well defined naming scheme for resources, such as Microsoft Best Practice Naming Standards.",
+ "subcategory": "APIs",
+ "text": "Secure backend services using client certificate authentication",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "graph": "resourcecontainers| where type == 'microsoft.resources/subscriptions'| extend ManagementGroup = tostring(tags),mgmtChain = properties.managementGroupAncestorsChain| extend compliant =( array_length(mgmtChain) <= 4 and array_length(mgmtChain) > 1)",
- "guid": "2df27ee4-12e7-4f98-9f63-04722dd69c5b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"services": [
- "Subscriptions"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce reasonably flat management group hierarchy with no more than four levels.",
- "training": "https://learn.microsoft.com/learn/modules/azure-architecture-fundamentals/",
+ "subcategory": "APIs",
+ "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "667313b4-f566-44b5-b984-a859c773e7d2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"services": [
- "Subscriptions"
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce a sandbox management group to allow users to immediately experiment with Azure.",
- "training": "https://learn.microsoft.com/learn/paths/enterprise-scale-architecture/",
+ "subcategory": "APIs",
+ "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "61623a76-5a91-47e1-b348-ef254c27d42e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "RBAC",
- "AzurePolicy"
+ "APIM"
],
- "severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce a platform management group under the root management group to support common platform policy and Azure role assignment.",
- "training": "https://learn.microsoft.com/learn/paths/enterprise-scale-architecture/",
+ "severity": "High",
+ "subcategory": "Ciphers",
+ "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "8bbac757-1559-4ab9-853e-8908ae28c84c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "ExpressRoute",
- "DNS",
- "VWAN"
+ "AKV",
+ "APIM"
],
- "severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce a dedicated connectivity subscription in the Connectivity management group to host an Azure Virtual WAN hub, private non-AD Domain Name System (DNS), ExpressRoute circuit, and other networking resources.",
- "training": "https://learn.microsoft.com/learn/paths/enterprise-scale-architecture/",
+ "severity": "High",
+ "subcategory": "Data protection",
+ "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "graph": "resourcecontainers| where type == 'microsoft.resources/subscriptions'| extend ManagementGroup = tostring(tags),mgmtChain = properties.managementGroupAncestorsChain| extend compliant = (array_length(mgmtChain) > 1)",
- "guid": "33b6b780-8b9f-4e5c-9104-9d403a923c34",
- "link": "https://learn.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---default-management-group",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"services": [
- "Subscriptions"
+ "Entra",
+ "APIM"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce no subscriptions are placed under the root management group.",
+ "subcategory": "Identities",
+ "text": "Use managed identities to authenticate to other Azure resources whenever possible",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "74d00018-ac6a-49e0-8e6a-83de5de32c19",
- "link": "https://learn.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization",
+ "category": "Security",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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": [
- "Subscriptions",
- "RBAC"
+ "Entra",
+ "APIM",
+ "AppGW",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce that only privileged users can operate management groups in the tenant by enabling Azure RBAC authorization in the management group hierarchy settings.",
+ "severity": "High",
+ "subcategory": "Network",
+ "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "92481607-d5d1-4e4e-9146-58d3558fd772",
- "link": "https://learn.microsoft.com/azure/governance/management-groups/overview",
- "services": [
- "Subscriptions"
- ],
+ "category": "Application Deployment",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
+ "services": [],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Enforce management groups under the root-level management group to represent the types of workloads, based on their security, compliance, connectivity, and feature needs.",
- "waf": "Security"
+ "subcategory": "DevOps",
+ "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "49b82111-2df2-47ee-912e-7f983f630472",
- "link": "https://learn.microsoft.com/azure/governance/management-groups/overview",
+ "category": "BC and DR",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
"services": [
- "Subscriptions",
- "RBAC",
- "Cost",
- "AzurePolicy"
+ "TrafficManager",
+ "ASR",
+ "FrontDoor"
],
- "severity": "High",
- "subcategory": "Subscriptions",
- "text": "Enforce a process to make resource owners aware of their roles and responsibilities, access review, budget review, policy compliance and remediate when necessary.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Disaster Recovery",
+ "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "2dd69c5b-5c26-422f-94b6-9bad33aad5e8",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "category": "BC and DR",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"services": [
- "Subscriptions"
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Ensure that all subscription owners and IT core team are aware of subscription quotas and the impact they have on provision resources for a given subscription.",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "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.",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "c68e1d76-6673-413b-9f56-64b5e984a859",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/reservations/save-compute-costs-reservations",
- "services": [
- "Subscriptions",
- "Cost"
- ],
- "severity": "High",
- "subcategory": "Subscriptions",
- "text": "Use Reserved Instances where appropriate to optimize cost and ensure available capacity in target regions.",
- "training": "https://learn.microsoft.com/learn/paths/improve-reliability-modern-operations/",
- "waf": "Security"
+ "category": "BC and DR",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "Use more than 1 app instance for your apps",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "c773e7d2-6162-43a7-95a9-17e1f348ef25",
- "link": "https://learn.microsoft.com/en-us/azure/azure-portal/azure-portal-dashboards",
+ "category": "Operations",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
"services": [
- "Storage",
- "Subscriptions",
"Monitor"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Establish dashboards and/or visualizations to monitor compute and storage capacity metrics. (i.e. CPU, memory, disk space)",
- "training": "https://learn.microsoft.com/en-gb/training/modules/visualize-data-workbooks/",
- "waf": "Security"
+ "subcategory": "Monitoring",
+ "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "ae28c84c-33b6-4b78-88b9-fe5c41049d40",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/get-started/manage-costs",
- "services": [
- "Subscriptions",
- "Cost"
- ],
- "severity": "High",
- "subcategory": "Subscriptions",
- "text": "As part of your cloud adoption, implement a detailed cost management plan using the 'Managed cloud costs' process.",
- "training": "https://learn.microsoft.com/learn/paths/control-spending-manage-bills/",
- "waf": "Security"
+ "category": "Operations",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Scalability",
+ "text": "Set up autoscaling in Spring Cloud Gateway",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "3a923c34-74d0-4001-aac6-a9e01e6a83de",
- "link": "https://learn.microsoft.com/azure/governance/management-groups/overview",
- "services": [
- "Subscriptions",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "If servers will be used for Identity services, like domain controllers, establish a dedicated identity subscription in the identity management group, to host these services. Make sure that resources are set to use the domain controllers available in their region.",
- "training": "https://learn.microsoft.com/learn/paths/enterprise-scale-architecture/",
- "waf": "Security"
+ "category": "Operations",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | extend compliant = isnotnull(['tags']) | project name, id, subscriptionId, resourceGroup, tags, compliant",
- "guid": "5de32c19-9248-4160-9d5d-1e4e614658d3",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/track-costs",
- "services": [
- "Subscriptions",
- "Cost"
- ],
+ "category": "Operations",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
+ "services": [],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Ensure tags are used for billing and cost management.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "subcategory": "Support",
+ "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
+ "waf": "Reliability"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "6cc0ea22-42bb-441e-a345-804ab0a09666",
- "link": "https://github.com/Azure/sovereign-landing-zone/blob/main/docs/02-Architecture.md",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"services": [
+ "Entra",
+ "AVS",
"Subscriptions"
],
- "severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "For Sovereign Landing Zone, have a 'confidential corp' and 'confidential online' management group directly under the 'landing zones' MG.",
+ "severity": "High",
+ "subcategory": "Identity",
+ "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
"waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "250d81ce-8bbe-4f85-9051-6a18a8221e50",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/regions",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"services": [
- "Cost"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Regions",
- "text": "Select the right Azure region/s for your deployment. Azure is a global-scale cloud platform that provide global coverage through many regions and geographies. Different Azure regions have different characteristics, access and availability models, costs, capacity, and services offered, then it is important to consider all criteria and requirements.",
- "training": "https://learn.microsoft.com/learn/modules/azure-architecture-fundamentals/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure",
+ "waf": "Security"
},
{
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "19ca3f89-397d-44b1-b5b6-5e18661372ac",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/regions#operate-in-multiple-geographic-regions",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
"services": [
- "ASR"
+ "Entra",
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Regions",
- "text": "Deploy your Azure landing zone in a multi-region deployment. Depending on customer size, locations, and users presence, operating in multiple regions can be a common choice to deliver services and run applications closer to them. Using a multi-region deployment is also important to provide geo disaster recovery capabilities, to eliminate the dependency from a single region capacity and diminish the risk of a temporary and localized resource capacity constraint.",
- "training": "https://learn.microsoft.com/learn/modules/azure-architecture-fundamentals/",
- "waf": "Reliability"
- },
- {
- "category": "Resource Organization",
- "checklist": "Azure Landing Zone Review",
- "guid": "4c27d42e-8bba-4c75-9155-9ab9153e8908",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
- "services": [],
- "severity": "Medium",
- "subcategory": "Regions",
- "text": "Ensure required services and features are available within the chosen deployment regions.",
- "training": "https://learn.microsoft.com/learn/modules/azure-architecture-fundamentals/",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Identity",
+ "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "373f482f-3e39-4d39-8aa4-7e566f6082b6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-app-delivery",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"services": [
- "AppGW",
- "FrontDoor"
+ "Entra",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "App delivery",
- "text": "Document a standard for securing the delivery application content from your Workload spokes using Application Gateway and Azure Front Door. You can use the Application Delivery checklist to for recommendations.",
- "waf": "Operations"
+ "subcategory": "Identity",
+ "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"services": [
- "VNet"
+ "Entra",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Hub and spoke",
- "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/",
+ "subcategory": "Identity",
+ "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
"services": [
- "DNS",
- "VNet",
- "VPN",
- "Firewall",
- "ExpressRoute",
"Entra",
- "NVA"
+ "AVS"
],
"severity": "High",
- "subcategory": "Hub and spoke",
- "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"
+ "subcategory": "Identity",
+ "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"services": [
- "DDoS"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "High",
- "subcategory": "App delivery",
- "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/",
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Has an RBAC model been created for use within VMware vSphere",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"services": [
- "NVA"
+ "Entra",
+ "RBAC",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Hub and spoke",
- "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance.",
- "waf": "Reliability"
+ "subcategory": "Identity",
+ "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"services": [
- "ExpressRoute",
- "ARS",
- "VPN"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "Low",
- "subcategory": "Hub and spoke",
- "text": "If you need transit between ExpressRoute and VPN gateways in hub and spoke scenarios, use Azure Route Server.",
+ "severity": "High",
+ "subcategory": "Identity",
+ "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
"services": [
- "VNet",
- "ARS"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "Low",
- "subcategory": "Hub and spoke",
- "text": "If using Route Server, use a /27 prefix for the Route Server subnet.",
+ "severity": "High",
+ "subcategory": "Identity",
+ "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"services": [
- "VNet",
- "ACR"
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Hub and spoke",
- "text": "For network architectures with multiple hub-and-spoke topologies across Azure regions, use global virtual network peerings between the hub VNets to connect the regions to each other.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
"services": [
- "Monitor"
+ "NetworkWatcher",
+ "AVS",
+ "VPN",
+ "Monitor",
+ "ExpressRoute"
],
- "severity": "Medium",
- "subcategory": "Hub and spoke",
- "text": "Use Azure Monitor for Networks to monitor the end-to-end state of the networks on Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"services": [
- "VNet",
+ "NetworkWatcher",
+ "AVS",
+ "VM",
+ "Monitor",
"ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Hub and spoke",
- "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"
+ "subcategory": "Monitoring",
+ "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",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"services": [
- "Storage"
+ "Monitor",
+ "AVS",
+ "VM",
+ "NetworkWatcher"
],
"severity": "Medium",
- "subcategory": "Hub and spoke",
- "text": "Limit the number of routes per route table to 400.",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "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",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
"services": [
- "VNet"
+ "ARS",
+ "AVS"
],
"severity": "High",
- "subcategory": "Hub and spoke",
- "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings.",
- "waf": "Reliability"
+ "subcategory": "Routing",
+ "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).",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Encryption",
- "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.",
+ "severity": "High",
+ "subcategory": "Security (identity)",
+ "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
"services": [
- "ExpressRoute",
- "VPN"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Encryption",
- "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/",
+ "severity": "High",
+ "subcategory": "Security (identity)",
+ "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"services": [
- "VNet",
- "ACR"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "IP plan",
- "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/",
+ "severity": "Medium",
+ "subcategory": "Security (identity)",
+ "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)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"services": [
- "VNet"
+ "Entra",
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "IP plan",
- "text": "Use IP addresses from the address allocation ranges for private internets (RFC 1918).",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "severity": "High",
+ "subcategory": "Security (identity)",
+ "text": "Limit use of CloudAdmin account to emergency access only",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
"services": [
- "VNet"
+ "Entra",
+ "RBAC",
+ "AVS"
],
- "severity": "High",
- "subcategory": "IP plan",
- "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"
+ "severity": "Medium",
+ "subcategory": "Security (identity)",
+ "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"services": [
- "ASR",
- "VNet"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "IP plan",
- "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"
+ "severity": "Medium",
+ "subcategory": "Security (identity)",
+ "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"services": [
- "VNet",
- "DNS"
+ "Entra",
+ "AVS",
+ "VM"
],
- "severity": "Medium",
- "subcategory": "IP plan",
- "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').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Security (identity)",
+ "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"services": [
- "VNet",
- "DNS",
- "ACR"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "IP plan",
- "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/",
+ "subcategory": "Security (network)",
+ "text": "Is East-West traffic filtering implemented within NSX-T",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"services": [
- "VNet",
- "DNS"
+ "AVS",
+ "AppGW",
+ "Firewall"
],
- "severity": "Low",
- "subcategory": "IP plan",
- "text": "Special workloads that require and deploy their own DNS (such as Red Hat OpenShift) should use their preferred DNS solution.",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Security (network)",
+ "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",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"services": [
- "VM",
- "VNet",
- "DNS"
+ "AVS"
],
"severity": "High",
- "subcategory": "IP plan",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operations"
+ "subcategory": "Security (network)",
+ "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"services": [
- "Bastion"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Use Azure Bastion to securely connect to your network.",
+ "subcategory": "Security (network)",
+ "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"services": [
- "Bastion",
+ "DDoS",
+ "AVS",
+ "VPN",
+ "ExpressRoute",
"VNet"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Use Azure Bastion in a subnet /26 or larger.",
+ "subcategory": "Security (network)",
+ "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
"services": [
- "WAF",
- "FrontDoor",
- "ACR",
- "AzurePolicy"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "subcategory": "Security (network)",
+ "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"services": [
- "WAF",
- "AppGW",
- "FrontDoor",
- "AzurePolicy"
+ "AVS",
+ "Defender"
],
- "severity": "Low",
- "subcategory": "Internet",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "Medium",
+ "subcategory": "Security (guest/VM)",
+ "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
"services": [
- "WAF",
- "VNet"
+ "AVS",
+ "Arc"
],
- "severity": "High",
- "subcategory": "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/",
+ "severity": "Medium",
+ "subcategory": "Security (guest/VM)",
+ "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)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
"services": [
- "VNet",
- "DDoS"
+ "AVS",
+ "SQL"
],
- "severity": "High",
- "subcategory": "Internet",
- "text": "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "severity": "Low",
+ "subcategory": "Security (guest/VM)",
+ "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)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
- "services": [],
- "severity": "High",
- "subcategory": "Internet",
- "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"
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
+ "services": [
+ "AKV",
+ "AVS"
+ ],
+ "severity": "Low",
+ "subcategory": "Security (guest/VM)",
+ "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"services": [
- "DDoS"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Internet",
- "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/",
+ "severity": "Medium",
+ "subcategory": "Security (guest/VM)",
+ "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"services": [
- "VM",
- "AzurePolicy"
+ "AVS"
],
"severity": "High",
- "subcategory": "Internet",
- "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"
+ "subcategory": "Governance (platform)",
+ "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
"services": [
- "Backup",
- "ExpressRoute",
- "VPN"
+ "AVS",
+ "AzurePolicy",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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"
+ "severity": "High",
+ "subcategory": "Governance (platform)",
+ "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "description": "You can use AS-path prepending and connection weights to influence traffic from Azure to on-premises, and the full range of BGP attributes in your own routers to influence traffic from on-premises to Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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/",
+ "severity": "High",
+ "subcategory": "Governance (platform)",
+ "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
"services": [
- "ExpressRoute",
- "VPN"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "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"
+ "subcategory": "Governance (platform)",
+ "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"services": [
- "Cost",
- "ExpressRoute"
+ "AVS",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Hybrid",
- "text": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Governance (platform)",
+ "text": "Ensure that you have a policy around ESXi host density and efficiency, keeping in mind the lead time for requesting new nodes",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"services": [
- "Cost",
- "ExpressRoute"
+ "AVS",
+ "Cost"
],
- "severity": "High",
- "subcategory": "Hybrid",
- "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.",
+ "severity": "Medium",
+ "subcategory": "Governance (platform)",
+ "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
"waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Governance (platform)",
+ "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "For scenarios that require bandwidth higher than 10 Gbps or dedicated 10/100-Gbps ports, use ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "subcategory": "Governance (platform)",
+ "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "severity": "High",
+ "subcategory": "Governance (platform)",
+ "text": "Ensure all required resource reside within the same Azure availability zone(s)",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"services": [
- "VPN"
+ "AVS",
+ "VM",
+ "Defender"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "Reliability"
+ "subcategory": "Governance (guest/VM)",
+ "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"services": [
- "VPN"
+ "AVS",
+ "VM",
+ "Arc"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Use redundant VPN appliances on-premises (active/active or active/passive).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "Reliability"
+ "subcategory": "Governance (guest/VM)",
+ "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
"services": [
- "Cost",
- "ExpressRoute"
+ "AVS"
],
"severity": "High",
- "subcategory": "Hybrid",
- "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"
+ "subcategory": "Governance (guest/VM)",
+ "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS",
+ "VM",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Security"
+ "subcategory": "Governance (guest/VM)",
+ "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"services": [
- "Monitor",
- "ExpressRoute"
+ "VM",
+ "AVS",
+ "Backup",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Monitor ExpressRoute availability and utilization using built-in Express Route Insights.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "subcategory": "Governance (guest/VM)",
+ "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"services": [
- "NetworkWatcher",
- "Monitor",
- "ACR"
+ "AVS",
+ "Defender",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Use Connection Monitor for connectivity monitoring across the network, especially between on-premises and Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "subcategory": "Compliance",
+ "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS",
+ "Defender"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Use ExpressRoute circuits from different peering locations for redundancy.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
- "services": [
- "ExpressRoute",
- "VPN"
- ],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Use site-to-site VPN as failover of ExpressRoute, if only using a single ExpressRoute circuit.",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"services": [
- "Storage",
- "VNet"
+ "AVS"
],
"severity": "High",
- "subcategory": "Hybrid",
- "text": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated.",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"services": [
- "ExpressRoute",
- "ACR"
+ "AVS"
],
"severity": "High",
- "subcategory": "Hybrid",
- "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.",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Are data processing implications (service provider / service consumer model) clear and documented",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
+ "category": "Governance",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Ensure the two physical links of your ExpressRoute circuit are connected to two distinct edge devices in your network.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "services": [],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Ensure Bidirectional Forwarding Detection (BFD) is enabled and configured on customer or provider edge routing devices.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
"services": [
- "ExpressRoute"
+ "AVS",
+ "Monitor"
],
"severity": "High",
- "subcategory": "Hybrid",
- "text": "Connect the ExpressRoute Gateway to two or more circuits from different peering locations for higher resiliency.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
"services": [
- "VNet",
- "ExpressRoute",
+ "AVS",
"Monitor"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Configure diagnostic logs and alerts for ExpressRoute virtual network gateway.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
- "services": [
- "VNet",
- "ExpressRoute"
- ],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Do not use ExpressRoute circuits for VNet-to-VNet communication.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
"services": [
- "ACR"
+ "AVS",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Hybrid",
- "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"
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS",
+ "Monitor"
],
"severity": "High",
- "subcategory": "Firewall",
- "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"
+ "subcategory": "Monitoring",
+ "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"services": [
- "Firewall",
- "RBAC",
- "ACR",
- "AzurePolicy"
+ "Monitor",
+ "AVS",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Firewall",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "subcategory": "Monitoring",
+ "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS",
+ "Monitor"
],
"severity": "Low",
- "subcategory": "Firewall",
- "text": "Configure supported partner SaaS security providers within Firewall Manager if the organization wants to use such solutions to help protect outbound connections.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "subcategory": "Monitoring",
+ "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
"services": [
- "Firewall",
- "DNS"
+ "AVS",
+ "VM",
+ "AzurePolicy",
+ "Storage"
],
"severity": "High",
- "subcategory": "Firewall",
- "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"
+ "subcategory": "Operations",
+ "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Firewall",
- "text": "Use Azure Firewall Premium to enable additional security features.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS",
+ "Backup",
+ "Storage"
],
- "severity": "High",
- "subcategory": "Firewall",
- "text": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS",
+ "Arc"
],
- "severity": "High",
- "subcategory": "Firewall",
- "text": "Configure Azure Firewall IDPS mode to Deny for additional protection.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Ensure workloads running on Azure VMware Solution are hybrid managed using Azure Arc for Servers (Arc for Azure VMware Solution is in preview)",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
"services": [
- "VWAN",
- "Storage",
- "VNet",
- "Firewall",
- "NVA"
+ "AVS",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Firewall",
- "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"
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"services": [
- "Storage",
- "Firewall"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Firewall",
- "text": "Add diagnostic settings to save logs, using the Resource Specific destination table, for all Azure Firewall deployments.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "subcategory": "Operations",
+ "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"services": [
- "Firewall",
- "AzurePolicy"
+ "AVS",
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "Important",
- "subcategory": "Firewall",
- "text": "Migrate from Azure Firewall Classic rules (if exist) to Firewall Policy.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"services": [
- "Firewall",
- "VNet"
+ "AVS",
+ "Defender"
],
- "severity": "High",
- "subcategory": "Segmentation",
- "text": "Use a /26 prefix for your Azure Firewall subnets.",
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
"services": [
- "AzurePolicy"
+ "AVS",
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Firewall",
- "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use.",
- "waf": "Performance"
+ "subcategory": "Backup",
+ "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"services": [
- "Storage"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Firewall",
- "text": "Use IP Groups or IP prefixes to reduce number of IP table rules.",
- "waf": "Performance"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
- "services": [],
- "severity": "Medium",
- "subcategory": "Firewall",
- "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"
+ "subcategory": "Disaster Recovery",
+ "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"services": [
- "Monitor"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Firewall",
- "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.",
- "waf": "Performance"
+ "subcategory": "Disaster Recovery",
+ "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
"services": [
- "Firewall"
+ "AVS",
+ "ASR"
],
"severity": "High",
- "subcategory": "Firewall",
- "text": "If you are using Azure Firewall Premium, enable TLS Inspection.",
- "waf": "Performance"
+ "subcategory": "Disaster Recovery",
+ "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"services": [
- "ServiceBus"
+ "AVS",
+ "ASR"
],
- "severity": "Low",
- "subcategory": "Firewall",
- "text": "Use web categories to allow or deny outbound access to specific topics.",
- "waf": "Performance"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
- "services": [],
"severity": "Medium",
- "subcategory": "Firewall",
- "text": "As part of your TLS inspection, plan for receiving traffic from Azure App Gateways for inspection.",
- "waf": "Performance"
+ "subcategory": "Disaster Recovery",
+ "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
"services": [
- "Firewall",
- "DNS"
+ "AVS",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Firewall",
- "text": "Enable Azure Firewall DNS proxy configuration.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"services": [
- "Firewall",
- "Monitor"
+ "AVS",
+ "ASR",
+ "NVA",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Firewall",
- "text": "Integrate Azure Firewall with Azure Monitor and enable diagnostic logging to store and analyze firewall logs.",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Disaster Recovery",
+ "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?",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"services": [
+ "AVS",
"Backup"
],
- "severity": "Low",
- "subcategory": "Firewall",
- "text": "Implement backups for your firewall rules",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Business Continuity",
+ "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"services": [
- "VNet"
+ "AVS",
+ "Backup"
],
- "severity": "High",
- "subcategory": "PaaS",
- "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"
+ "severity": "Medium",
+ "subcategory": "Business Continuity",
+ "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "e43a58a9-c229-49c4-b7b5-7d0c655562f2",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"services": [
- "PrivateLink"
+ "AVS",
+ "Backup"
],
"severity": "Medium",
- "subcategory": "PaaS",
- "text": "Use Private Link, where available, for shared Azure PaaS services.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "subcategory": "Business Continuity",
+ "text": "Deploy your backup solution outside of vSan, on Azure native components",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
"services": [
- "ExpressRoute",
- "PrivateLink"
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "PaaS",
- "text": "Access Azure PaaS services from on-premises via private endpoints and ExpressRoute private peering. This method avoids transiting over the public internet.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Business Continuity",
+ "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
"services": [
- "VNet"
+ "AVS"
],
- "severity": "High",
- "subcategory": "PaaS",
- "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"
+ "severity": "Low",
+ "subcategory": "Deployment strategy",
+ "text": "For manual deployments, all configuration and deployments must be documented",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
"services": [
- "Firewall",
- "DNS",
- "NVA",
- "PrivateLink"
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "PaaS",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Deployment strategy",
+ "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
"services": [
- "VNet",
- "ExpressRoute",
- "VPN"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Segmentation",
- "text": "Use at least a /27 prefix for your Gateway subnets.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Automated Deployment",
+ "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
"services": [
- "VNet"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Segmentation",
- "text": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Automated Deployment",
+ "text": "For automated deployments, request or reserve quota prior to starting the deployment",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2447ec6-6138-4a72-80f1-ce16ed301d6e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
"services": [
- "VNet"
+ "AVS",
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Segmentation",
- "text": "Delegate subnet creation to the landing zone owner.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Automated Deployment",
+ "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
- "services": [
- "VNet",
- "ACR"
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "services": [
+ "AKV",
+ "AVS"
+ ],
+ "severity": "Low",
+ "subcategory": "Automated Connectivity",
+ "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "waf": "Operations"
+ },
+ {
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "services": [
+ "AKV",
+ "AVS",
+ "ExpressRoute"
+ ],
+ "severity": "Low",
+ "subcategory": "Automated Connectivity",
+ "text": "Use Key vault to store secrets and authorization keys when separate Service Principles are used for deploying Azure VMware Solution and ExpressRoute",
+ "waf": "Operations"
+ },
+ {
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "services": [
+ "AVS"
+ ],
+ "severity": "Low",
+ "subcategory": "Automated Connectivity",
+ "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.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "services": [
+ "AVS"
+ ],
+ "severity": "Low",
+ "subcategory": "Automated Connectivity",
+ "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "waf": "Operations"
+ },
+ {
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
+ "services": [
+ "AVS",
+ "Subscriptions"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "text": "Use NSGs to help protect traffic across subnets, as well as east/west traffic across the platform (traffic between landing zones).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Security"
+ "subcategory": "Automated Scale",
+ "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",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
"services": [
- "VNet",
- "NVA",
- "Entra"
+ "AVS",
+ "AzurePolicy",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Security"
+ "subcategory": "Automated Scale",
+ "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
"services": [
- "NetworkWatcher",
- "VNet"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "text": "Enable VNet Flow Logs and feed them into Traffic Analytics to gain insights into internal and external traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Security"
+ "subcategory": "Automated Scale",
+ "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"services": [
- "VNet"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "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"
+ "subcategory": "Automated Scale",
+ "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
"services": [
- "VWAN"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "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/",
+ "subcategory": "Automated Scale",
+ "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "waf": "Performance"
+ },
+ {
+ "category": "Platform Automation",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
+ "services": [
+ "AVS",
+ "Monitor"
+ ],
+ "severity": "Medium",
+ "subcategory": "Automated Scale",
+ "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
"waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "category": "Migration",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"services": [
- "ACR",
- "VWAN"
+ "AVS",
+ "VM"
+ ],
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Migration",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
+ "services": [
+ "AVS"
+ ],
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Migration",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
+ "services": [
+ "VPN",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "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.",
+ "subcategory": "Networking",
+ "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "category": "Migration",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"services": [
- "Firewall",
- "VWAN"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "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"
+ "subcategory": "Networking",
+ "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
+ "category": "Migration",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"services": [
- "VWAN"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Ensure that your virtual WAN network architecture aligns to an identified architecture scenario.",
+ "subcategory": "Process",
+ "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "category": "Data Storage",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"services": [
- "Monitor",
- "VWAN"
+ "AVS",
+ "VM",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Use Azure Monitor Insights for Virtual WAN to monitor the end-to-end topology of the Virtual WAN, status, and key metrics.",
- "waf": "Operations"
+ "subcategory": "Architecture",
+ "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.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "category": "Data Storage",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"services": [
- "VWAN"
+ "AVS",
+ "ExpressRoute",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Do not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.",
+ "subcategory": "Architecture",
+ "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "category": "Data Storage",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"services": [
- "VWAN",
+ "AVS",
"ExpressRoute",
- "VPN"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Use AS-Path as hub routing preference, since it is more flexible than ExpressRoute or VPN.",
+ "subcategory": "Architecture",
+ "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
+ "category": "Stretched Cluster",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
"services": [
- "VWAN"
+ "AVS",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Configure label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.",
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "category": "Stretched Cluster",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"services": [
- "VWAN"
+ "AVS"
],
"severity": "High",
- "subcategory": "Virtual WAN",
- "text": "Assign at least a /23 prefix to virtual hubs to ensure enough IP space is available.",
+ "subcategory": "Architecture",
+ "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
"waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Stretched Cluster",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
"services": [
- "AzurePolicy"
+ "AVS",
+ "ExpressRoute"
],
"severity": "High",
- "subcategory": "Governance",
- "text": "Leverage Azure Policy strategically, define controls for your environment, using Policy Initiatives to group related policies.",
- "waf": "Security"
+ "subcategory": "Architecture",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Stretched Cluster",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
"services": [
- "RBAC",
- "AzurePolicy"
+ "AVS",
+ "ExpressRoute"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "Map regulatory and compliance requirements to Azure Policy definitions and Azure role assignments.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Stretched Cluster",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
"services": [
- "Subscriptions",
- "AzurePolicy"
+ "AVS"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Architecture",
+ "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
+ "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
+ "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
+ "service": "ACR",
"services": [
- "AzurePolicy"
+ "ACR"
],
"severity": "High",
- "subcategory": "Governance",
- "text": "Manage policy assignments at the highest appropriate level with exclusions at bottom levels, if required.",
+ "subcategory": "Data Protection",
+ "text": "Disable Azure Container Registry image export",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
+ "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
+ "service": "ACR",
"services": [
- "Subscriptions",
- "AzurePolicy"
+ "AzurePolicy",
+ "ACR"
],
- "severity": "Low",
- "subcategory": "Governance",
- "text": "Use Azure Policy to control which services users can provision at the subscription/management group level.",
+ "severity": "High",
+ "subcategory": "Data Protection",
+ "text": "Enable Azure Policies for Azure Container Registry",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
+ "guid": "d345293c-7639-4637-a551-c5c04e401955",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
+ "service": "ACR",
"services": [
- "AzurePolicy"
+ "AKV",
+ "ACR"
],
"severity": "High",
- "subcategory": "Governance",
- "text": "Use built-in policies where possible to minimize operational overhead.",
+ "subcategory": "Data Protection",
+ "text": "Sign and Verify containers with notation (Notary v2)",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "description": "Assigning the Resource Policy Contributor role to specific scopes allows you to delegate policy management to relevant teams. For instance, a central IT team may oversee management group-level policies, while application teams handle policies for their subscriptions, enabling distributed governance with adherence to organizational standards.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
+ "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
+ "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
+ "service": "ACR",
"services": [
- "Subscriptions",
- "RBAC",
- "Entra",
- "AzurePolicy"
+ "AKV",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Governance",
- "text": "Assign the built-in Resource Policy Contributor role at a particular scope to enable application-level governance.",
+ "subcategory": "Data Protection",
+ "text": "Encrypt registry with a customer managed key",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
+ "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"services": [
- "Subscriptions",
- "AzurePolicy"
+ "Entra",
+ "RBAC",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "Limit the number of Azure Policy assignments made at the root management group scope to avoid managing through exclusions at inherited scopes.",
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Use Managed Identities to connect instead of Service Principals",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
+ "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"services": [
- "AzurePolicy"
+ "Entra",
+ "RBAC",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "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/",
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Disable local authentication for management plane access",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
+ "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
+ "service": "ACR",
"services": [
- "Subscriptions",
- "AzurePolicy"
+ "Entra",
+ "RBAC",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "For Sovereign Landing Zone, deploy sovereignty policy baseline and assign at correct management group level.",
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable anonymous pull/push access",
+ "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
+ "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
+ "service": "ACR",
"services": [
- "AzurePolicy"
+ "Entra",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Governance",
- "text": "For Sovereign Landing Zone, document Sovereign Control objectives to policy mapping.",
+ "subcategory": "Identity and Access Control",
+ "text": "Disable Anonymous pull access",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
+ "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
+ "service": "ACR",
"services": [
- "AzurePolicy"
+ "Entra",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "For Sovereign Landing Zone, ensure process is in place for management of 'Sovereign Control objectives to policy mapping'.",
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Disable repository-scoped access tokens",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
+ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
+ "service": "ACR",
"services": [
- "Monitor",
- "TrafficManager",
- "Cost"
+ "Entra",
+ "EventHubs",
+ "PrivateLink",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Optimize your cloud investment",
- "text": "Configure 'Actual' and 'Forecasted' Budget Alerts.",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Deploy images from a trusted environment",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
+ "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
+ "service": "ACR",
"services": [
- "RBAC",
- "AzurePolicy",
"Entra",
- "Monitor"
+ "AzurePolicy",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Operations"
+ "subcategory": "Identity and Access Control",
+ "text": "Disable Azure ARM audience tokens for authentication",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
+ "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
+ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
+ "service": "ACR",
"services": [
- "Storage",
+ "Entra",
"Monitor",
- "ARS",
- "AzurePolicy"
+ "ACR"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "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"
+ "severity": "Medium",
+ "subcategory": "Logging and Monitoring",
+ "text": "Enable diagnostics logging",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
+ "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "service": "ACR",
"services": [
- "VM",
- "Monitor",
- "AzurePolicy"
+ "PrivateLink",
+ "VNet",
+ "Firewall",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "subcategory": "Network Security",
+ "text": "Control inbound network access with Private Link",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable public network access if inbound network access is secured using Private Link",
+ "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
+ "service": "ACR",
"services": [
- "VM"
+ "PrivateLink",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Operational compliance",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs in Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "subcategory": "Network Security",
+ "text": "Disable Public Network access",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only the ACR Premium SKU supports Private Link access",
+ "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
+ "service": "ACR",
"services": [
- "VM"
+ "PrivateLink",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Operational compliance",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs outside of Azure using Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "subcategory": "Network Security",
+ "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
+ "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "service": "ACR",
"services": [
- "NetworkWatcher",
- "Monitor"
+ "Defender",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use Network Watcher to proactively monitor traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Network Security",
+ "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "541acdce-9793-477b-adb3-751ab2ab13ad",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
+ "service": "ACR",
"services": [
- "Monitor"
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use resource locks to prevent accidental deletion of critical shared services.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "subcategory": "Vulnerability Management",
+ "text": "Deploy validated container images",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "a6e55d7d-8a2a-4db1-87d6-326af625ca44",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "category": "Security",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
+ "service": "ACR",
"services": [
- "RBAC",
- "Monitor",
- "AzurePolicy"
+ "ACR"
],
- "severity": "Low",
- "subcategory": "Monitoring",
- "text": "Use deny policies to supplement Azure role assignments. The combination of deny policies and Azure role assignments ensures the appropriate guardrails are in place to enforce who can deploy and configure resources and what resources they can deploy and configure.",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Vulnerability Management",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5695f22-23ac-4e8c-a123-08ca5017f154",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "guid": "976f32a7-30d1-6caa-c2a0-207fdc26571b",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
"services": [
- "Monitor"
+ "AVS",
+ "Backup",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Include service and resource health events as part of the overall platform monitoring solution. Tracking service and resource health from the platform perspective is an important component of resource management in Azure.",
- "waf": "Operations"
+ "subcategory": "Backup",
+ "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "d5f345bf-97ab-41a7-819c-6104baa7d48c",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Microsoft backup service",
+ "guid": "fc8af7a1-c724-e255-c18d-4ca22a6f27f0",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
"services": [
- "Monitor"
+ "AVS",
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Include alerts and action groups as part of the Azure Service Health platform to ensure that alerts or issues can be actioned.",
- "waf": "Operations"
+ "subcategory": "Business Continuity",
+ "text": "Use MABS as your backup solution",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "e3ab3693-829e-47e3-8618-3687a0477a20",
- "link": "https://learn.microsoft.com/azure/sentinel/quickstart-onboard",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Best practice - this is Backup, not disaster recovery",
+ "guid": "be28860f-3d29-a79a-1a0e-36f1b23b36ae",
+ "link": "Best practice to deploy backup in the same region as your AVS deployment",
"services": [
- "Monitor"
+ "AVS",
+ "Backup",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Don't send raw log entries back to on-premises monitoring systems. Instead, adopt a principle that data born in Azure stays in Azure. If on-premises SIEM integration is required, then send critical alerts instead of logs.",
- "waf": "Operations"
+ "subcategory": "Business Continuity",
+ "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Best practice - in case AVS is unavailable",
+ "guid": "4d2f79a5-4ccf-0dfc-557c-49619b99a540",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
"services": [
- "Monitor"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use Azure Monitor Logs for insights and reporting.",
- "waf": "Operations"
+ "subcategory": "Business Continuity",
+ "text": "Preferably deploy MABS outside of the SDDC as native Azure IaaS",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "619e8a13-f988-4795-85d6-26886d70ba6c",
- "link": "https://learn.microsoft.com/azure/azure-monitor/agents/diagnostics-extension-overview",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "guid": "ff431c40-962c-5182-d536-0c2f0c4ce9e0",
+ "link": "Will Disaster Recovery Site Recovery, HCX Disaster Recovery, SRM or back tools be used?",
"services": [
- "Storage",
- "Monitor"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "When necessary, use shared storage accounts within the landing zone for Azure diagnostic extension log storage.",
- "waf": "Operations"
+ "subcategory": "Business Continuity",
+ "text": "Escalation process with Microsoft in the event of a regional DR",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Compare SRM with HCX",
+ "guid": "f379436d-3051-daa0-01fb-dc4e0e04d677",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/disaster-recovery-using-vmware-site-recovery-manager",
"services": [
- "Monitor"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use Azure Monitor alerts for the generation of operational alerts.",
- "waf": "Operations"
+ "subcategory": "Disaster Recovery",
+ "text": "Use VMware Site Recovery Manager when both sites are Azure VMware Solution",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "859c3900-4514-41eb-b010-475d695abd74",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Recovery into Azure instead of Vmware solution",
+ "guid": "367f71d8-3cf6-51a0-91a5-3db3d570cc19",
+ "link": "https://docs.microsoft.com/azure/site-recovery/avs-tutorial-prepare-azure",
"services": [
- "Monitor"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Ensure that monitoring requirements have been assessed and that appropriate data collection and alerting configurations are applied.",
- "waf": "Operations"
+ "subcategory": "Disaster Recovery",
+ "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Avoid manual tasks as much as possible",
+ "guid": "ee02ada0-1887-bb3a-b84c-423f45a09ef9",
+ "link": "https://docs.microsoft.com/azure/site-recovery/avs-tutorial-prepare-azure",
"services": [
- "Monitor"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "waf": "Operations"
+ "subcategory": "Disaster Recovery",
+ "text": "Use Automated recovery plans with either of the Disaster solutions,",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "aa45be6a-8f2d-4896-b0e3-775e6e94e610",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-monitor",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Any other datacenter in the same region",
+ "guid": "0c2b74e5-9c28-780d-1df3-12d3de4aaa76",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/connect-multiple-private-clouds-same-region",
"services": [
- "Monitor",
- "AzurePolicy"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Deploy AMBA to establish monitoring for platform components of your landing zone - AMBA is a framework solution that is available and provides an easy way to scale alerting by using Azure Policy.",
- "training": "https://azure.github.io/azure-monitor-baseline-alerts/patterns/alz/",
- "waf": "Operations"
- },
- {
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "7ea02e1c-7166-45a3-bdf5-098891367fcb",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "services": [],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enable cross-region replication in Azure for BCDR with paired regions.",
+ "subcategory": "Disaster Recovery",
+ "text": "Configure a secondary disaster recovery environment",
"waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
+ "guid": "c2a34ec4-2933-4e6c-dc36-e20e67abbe3f",
+ "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"services": [
- "Backup"
+ "AVS",
+ "ASR"
],
- "severity": "Low",
- "subcategory": "Data Protection",
- "text": "When using Azure Backup, use the correct backup types (GRS, ZRS & LRS) for your backup, as the default setting is GRS.",
+ "severity": "Medium",
+ "subcategory": "Disaster Recovery",
+ "text": "Assign IP ranges unique to each region",
"waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
+ "category": "BCDR",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "ExpressRoute Global Reach can be used for connectivity between the primary and secondary Azure VMware Solution Private Clouds or routing must be done through network virtual appliances?",
+ "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": [
- "VM",
- "AzurePolicy"
+ "AVS",
+ "ASR",
+ "NVA",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Operational compliance",
- "text": "Use Azure guest policies to automatically deploy software configurations through VM extensions and enforce a compliant baseline VM configuration.",
- "waf": "Security"
+ "subcategory": "Disaster Recovery",
+ "text": "Use Global Reach between DR regions",
+ "waf": "Reliability"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "An ExR Global Reach connection will be established to the ExR circuit, no other connections",
+ "guid": "a2c12df2-07fa-3edd-2cec-fda0b55fb952",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-expressroute-global-reach-private-cloud",
"services": [
- "VM",
- "Monitor",
- "AzurePolicy"
+ "AVS",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Operational compliance",
- "text": "Monitor VM security configuration drift via Azure Policy.",
- "waf": "Security"
+ "subcategory": "Direct (no vWAN, no H&S)",
+ "text": "Global Reach to ExR circuit - no Azure resources",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use ExR to connect on-premises (other) location to Azure",
+ "guid": "f62ce162-ba5a-429d-674e-fafa1af5f706",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-expressroute-global-reach-private-cloud",
"services": [
- "VM",
- "ASR",
- "ACR"
+ "AVS",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Protect and Recover",
- "text": "Use Azure Site Recovery for Azure-to-Azure Virtual Machines disaster recovery scenarios. This enables you to replicate workloads across regions.",
- "waf": "Operations"
+ "subcategory": "ExpressRoute",
+ "text": "Connect to Azure using ExR",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "b2ab13ad-a6e5-45d7-b8a2-adb117d6326a",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use the migration assesment tool and timeline to determine bandwidth required",
+ "guid": "cf01c73b-1247-0a7a-740c-e1ea29bda340",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-introduction",
"services": [
- "ASR"
+ "AVS",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Protect and Recover",
- "text": "Use native PaaS service disaster recovery capabilities. Perform failover testing with these capabilities.",
- "waf": "Operations"
+ "subcategory": "ExpressRoute",
+ "text": "Bandwidth sizing",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "What traffic is routed through a firewall, what goes directly into Azure",
+ "guid": "aab216ee-8941-315e-eada-c7e1f2243bd1",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
"services": [
- "Backup"
+ "AVS",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Protect and Recover",
- "text": "Use Azure-native backup capabilities, or an Azure-compatible, 3rd-party backup solution.",
- "waf": "Operations"
+ "subcategory": "ExpressRoute",
+ "text": "Traffic routing ",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "AVS to ExR circuit, no traffic inspection",
+ "guid": "1f956e45-f62d-5c95-3a95-3bab718907f8",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
"services": [
- "WAF",
- "AppGW",
- "FrontDoor"
+ "AVS",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "App delivery",
- "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.",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "ExpressRoute",
+ "text": "Global Reach ",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Name of the vNet and a unique address space /24 minimum",
+ "guid": "91f7a87b-21ac-d712-959c-8df2ba034253",
+ "link": "https://learn.microsoft.com/azure/virtual-network/quick-create-portal",
"services": [
- "Sentinel",
- "WAF",
- "AppGW",
- "FrontDoor"
+ "AVS",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "App delivery",
- "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"
- },
- {
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "b86ad884-08e3-4727-94b8-75ba18f20459",
- "link": "https://learn.microsoft.com/security/benchmark/azure/security-control-incident-response",
- "services": [],
- "severity": "Medium",
- "subcategory": "Access control",
- "text": "Determine the incident response plan for Azure services before allowing it into production.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "01365d38-e43f-49cc-ad86-8266abca264f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/security-zero-trust",
- "services": [],
- "severity": "Medium",
- "subcategory": "Access control",
- "text": "Apply a zero-trust approach for access to the Azure platform.",
- "waf": "Security"
+ "subcategory": "Hub & Spoke",
+ "text": "VNet name & address space",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Subnet must be called GatewaySubnet",
+ "guid": "58a027e2-f37f-b540-45d5-e44843aba26b",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
"services": [
- "AKV"
+ "VPN",
+ "AVS",
+ "VNet",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Encryption and keys",
- "text": "Use Azure Key Vault to store your secrets and credentials.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Hub & Spoke",
+ "text": "Gateway subnet",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Create a VPN gateway on the hub Gateway subnet",
+ "guid": "d4806549-0913-3e79-b580-ac2d3706e65a",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
"services": [
- "AKV"
+ "VPN",
+ "AVS",
+ "VNet",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Use different Azure Key Vaults for different applications and regions to avoid transaction scale limits and restrict access to secrets.",
- "waf": "Security"
+ "subcategory": "Hub & Spoke",
+ "text": "VPN Gateway",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Create an ExR Gateway in the hub Gateway subnet.",
+ "guid": "864d7a8b-7016-c769-a717-61af6bfb73d2",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
"services": [
- "AKV",
- "AzurePolicy"
+ "VPN",
+ "AVS",
+ "VNet",
+ "ExpressRoute"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "waf": "Security"
+ "subcategory": "Hub & Spoke",
+ "text": "ExR Gateway",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "How will Internet traffic be routes, Az Firewall, NVA, Secure Hub, On-Premises firewall?",
+ "guid": "cc2e11b9-7911-7da1-458c-d7fcef794aad",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/enable-public-internet-access",
"services": [
- "AKV",
- "RBAC",
- "Entra"
+ "AVS",
+ "NVA"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Follow a least privilege model by limiting authorization to permanently delete keys, secrets, and certificates to specialized custom Microsoft Entra ID roles.",
- "waf": "Security"
+ "subcategory": "Internet",
+ "text": "Egress point",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Allow remote connectivity to AVS via the portal, specifically to vCenter, NSX-T and HCX",
+ "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": [
- "AKV"
+ "Bastion",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Automate the certificate management and renewal process with public certificate authorities to ease administration.",
- "waf": "Security"
+ "subcategory": "Jumpbox & Bastion",
+ "text": "Remote connectivity to AVS",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Name the jumpbox and identify the subnet where it will be hosted",
+ "guid": "6f8e93a2-44b1-bb1d-28a1-4d5b3c2ea857",
+ "link": "https://learn.microsoft.com/azure/bastion/tutorial-create-host-portal",
"services": [
- "AKV"
+ "Bastion",
+ "AVS",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Establish an automated process for key and certificate rotation.",
- "waf": "Security"
+ "subcategory": "Jumpbox & Bastion",
+ "text": "Configure a jumbox and Azure Bastion",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Provides secure / seamless RDP/SSH connectivity to your vm's directly through the portal.",
+ "guid": "ba430d58-4541-085c-3641-068c00be9bc5",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview",
"services": [
- "AKV",
- "VNet",
- "PrivateLink"
+ "Bastion",
+ "AVS",
+ "VM"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Enable firewall and virtual network service endpoint or private endpoint on the vault to control access to the key vault.",
- "waf": "Security"
+ "subcategory": "Jumpbox & Bastion",
+ "text": "Security measure allowing RDP access via the portal",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Using a VPN to connect to Azure to enable VMware communications (HCX) (not recommended)",
+ "guid": "9988598f-2a9f-6b12-9b46-488415ceb325",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/configure-site-to-site-vpn-gateway",
"services": [
- "AKV",
- "Monitor",
- "Entra"
+ "VPN",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Use the platform-central Azure Monitor Log Analytics workspace to audit key, certificate, and secret usage within each instance of Key Vault.",
- "waf": "Security"
+ "subcategory": "VPN",
+ "text": "Connect to Azure using a VPN",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use the migration assesment tool and timeline to determine bandwidth required (eg 3rd party tool in link)",
+ "guid": "956ce5e9-a862-fe2b-a50d-a22923569357",
+ "link": "https://www.omnicalculator.com/other/data-transfer#:~:text=To%20calculate%20the%20data%20transfer%20speed%3A%201%20Download,measured%20time%20to%20find%20the%20data%20transfer%20speed.",
"services": [
- "AKV",
- "AzurePolicy"
+ "VPN",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Delegate Key Vault instantiation and privileged access and use Azure Policy to enforce a consistent compliant configuration.",
- "waf": "Security"
+ "subcategory": "VPN",
+ "text": "Bandwidth sizing",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "16183687-a047-47a2-8994-5bda43334f24",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/encryption-atrest",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "What traffic is routed through a firewall, what goes directly into Azure",
+ "guid": "e095116f-0bdc-4b51-4d71-b9e469d56f59",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
"services": [
- "AKV"
+ "VPN",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
- "waf": "Security"
+ "subcategory": "VPN",
+ "text": "Traffic routing ",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Name and unique address space for the vWAN, name for the vWAN hub",
+ "guid": "4dc480ac-cecd-39c4-fdc6-680b300716ab",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-site-to-site-portal#openvwan",
"services": [
- "AKV"
+ "AVS",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "waf": "Security"
+ "subcategory": "vWAN hub",
+ "text": "vWAN name, hub name and address space",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Select either boh or the appropriate connection type.",
+ "guid": "51d6affd-8e02-6aea-d3d4-0baf618b3076",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-point-to-site-portal",
"services": [
- "AKV",
- "ASR",
- "ACR"
+ "VPN",
+ "AVS",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "If you want to bring your own keys, this might not be supported across all considered services. Implement relevant mitigation so that inconsistencies don't hinder desired outcomes. Choose appropriate region pairs and disaster recovery regions that minimize latency.",
- "waf": "Security"
+ "subcategory": "vWAN hub",
+ "text": "ExR and/or VPN gateway provisioned",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "category": "Connectivity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Add Azure firewall to vWAN (recommended)",
+ "guid": "e32a4c67-3dc0-c134-1c12-52d46dcbab5b",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-expressroute-portal",
"services": [
- "AKV"
+ "AVS",
+ "Firewall",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Encryption and keys",
- "text": "For Sovereign Landing Zone, use Azure Key Vault managed HSM to store your secrets and credentials.",
+ "subcategory": "vWAN hub",
+ "text": "Secure vWAN",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Active directory or other identity provider servers",
+ "guid": "fbc47fbf-bc96-fa93-ed5d-8c9be63cd5c3",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter",
"services": [
- "Entra"
+ "Entra",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Use Microsoft Entra ID reporting capabilities to generate access control audit reports.",
+ "subcategory": "Access",
+ "text": "External Identity (user accounts)",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "4e3ab369-3829-4e7e-9161-83687a0477a2",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/logs-data-export?tabs=portal",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Not required for LDAPS, required for Kerberos",
+ "guid": "b5db7975-f6bb-8ba3-ee5f-e3e805887997",
+ "link": "https://learn.microsoft.com/windows-server/identity/ad-ds/plan/understanding-active-directory-site-topology",
"services": [
- "Storage",
- "Monitor",
- "ARS"
+ "Entra",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Export Azure activity logs to Azure Monitor Logs for long-term data retention. Export to Azure Storage for long-term storage beyond two years, if necessary.",
+ "subcategory": "Access",
+ "text": "If using AD domain, ensure Sites & Services has been configured",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Authentication for users, must be secure.",
+ "guid": "c30749c4-e2af-558c-2eb9-0b6ae84881d1",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter",
"services": [
- "Subscriptions",
- "Defender"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Operations",
- "text": "Enable Defender Cloud Security Posture Management for all subscriptions.",
+ "severity": "Medium",
+ "subcategory": "Access",
+ "text": "Use LDAPS not ldap ( vCenter)",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Authentication for users, must be secure.",
+ "guid": "64cb9b5c-9edd-787e-1dd8-2b2338e51635",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/configure-external-identity-source-nsx-t",
"services": [
- "Subscriptions",
- "Defender"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Operations",
- "text": "Enable a Defender Cloud Workload Protection Plan for Servers on all subscriptions.",
+ "severity": "Medium",
+ "subcategory": "Access",
+ "text": "Use LDAPS not ldap (NSX-T)",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "CN or SAN names, no wildcards, contains private key - CER or PFX",
+ "guid": "bec285ab-037e-d629-81d1-f61dac23cd4c",
+ "link": "https://youtu.be/4jvfbsrhnEs",
"services": [
- "Subscriptions",
- "Defender"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Operations",
- "text": "Enable Defender Cloud Workload Protection Plans for Azure Resources on all subscriptions.",
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Security certificate installed on LDAPS servers ",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "services": [],
- "severity": "High",
- "subcategory": "Operations",
- "text": "Enable Endpoint Protection on IaaS Servers.",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Standard Azure Roles Based Access Controls",
+ "guid": "4ba394a2-3c33-104c-8e34-2dadaba9cc73",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity",
+ "services": [
+ "Entra",
+ "RBAC",
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "RBAC applied to Azure roles",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Create roles in vCenter required to meet minimum viable access guidelines",
+ "guid": "b04ca129-83a9-3494-7512-347dd2d766db",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity#view-the-vcenter-server-privileges",
"services": [
- "Monitor",
- "Defender"
+ "Entra",
+ "RBAC",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Monitor base operating system patching drift via Azure Monitor Logs and Defender for Cloud.",
+ "subcategory": "Security",
+ "text": "RBAC model in vCenter",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
+ "guid": "8e477d2f-8004-3dd0-93d6-0aece9e1b2fb",
+ "link": "Best practice",
"services": [
- "Monitor",
- "Entra"
+ "Entra",
+ "RBAC",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Connect default resource configurations to a centralized Azure Monitor Log Analytics workspace.",
+ "subcategory": "Security",
+ "text": "CloudAdmin role usage",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "For roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
+ "guid": "00e0b729-f9be-f600-8c32-5ec0e8f2ed63",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
"services": [
- "Entra"
+ "Entra",
+ "RBAC",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "For Sovereign Landing Zone, enable transparancy logs on the Entra ID tenant.",
+ "subcategory": "Security ",
+ "text": "Is Privileged Identity Management implemented",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "For the Azure VMware Solution PIM roles",
+ "guid": "0842d45f-41a8-8274-1155-2f6ed554d315",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
"services": [
- "Entra"
+ "Entra",
+ "RBAC",
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "For Sovereign Landing Zone, enable customer Lockbox on the Entra ID tenant.",
+ "subcategory": "Security ",
+ "text": "Is Privileged Identity Management audit reporting implemented",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "874a748b-662d-46d1-9051-2a66498f6dfe",
- "link": "https://learn.microsoft.com/azure/event-grid/set-alerts",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Best practice, also see Monitoring/Alerts",
+ "guid": "915cbcd7-0640-eb7c-4162-9f33775de559",
+ "link": "Best practice",
"services": [
+ "Entra",
+ "AVS",
"Monitor"
],
- "severity": "Low",
- "subcategory": "Operations",
- "text": "Use an Azure Event Grid-based solution for log-oriented, real-time alerts.",
+ "severity": "Medium",
+ "subcategory": "Security ",
+ "text": "Limit use of CloudAdmin account to emergency access only",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
+ "category": "Identity",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Operational procedure",
+ "guid": "7effa0c0-9172-e8e4-726a-67dbea8be40a",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/rotate-cloudadmin-credentials?tabs=azure-portal",
"services": [
- "Storage"
+ "Entra",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Overview",
- "text": "Enable secure transfer to storage accounts.",
+ "severity": "Medium",
+ "subcategory": "Security ",
+ "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "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)",
+ "guid": "8f426fd0-d73b-d398-1f6f-df0cbe262a82",
+ "link": "https://learn.microsoft.com/azure/azure-arc/vmware-vsphere/overview",
"services": [
- "Storage"
+ "AVS",
+ "VM",
+ "Arc"
],
- "severity": "High",
- "subcategory": "Overview",
- "text": "Enable container soft delete for the storage account to recover a deleted container and its contents.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "AVS VM Management (Azure Arc)",
+ "waf": "Operations"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "6f704104-85c1-441f-96d3-c9819911645e",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-planning",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
+ "guid": "11dbe773-e380-9191-1418-e886fa7a6fd0",
+ "link": "https://docs.microsoft.com/azure/governance/policy/overview",
"services": [
- "Entra"
+ "AVS",
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Secure privileged access",
- "text": "Separate privileged admin accounts for Azure administrative tasks.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "9a19bf39-c95d-444c-9c89-19ca1f6d5215",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/service-enablement-framework",
- "services": [],
"severity": "Medium",
- "subcategory": "Service enablement framework",
- "text": "Plan how new azure services will be implemented.",
- "waf": "Security"
+ "subcategory": "Operations",
+ "text": "Azure policy",
+ "waf": "Operations"
},
{
- "category": "Security",
- "checklist": "Azure Landing Zone Review",
- "guid": "ae514b93-3d45-485e-8112-9bd7ba012f7b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/service-enablement-framework",
- "services": [],
+ "category": "Management",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
+ "guid": "1e59c639-9b7e-a60b-5e93-3798c1aff5db",
+ "link": "https://docs.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json#configure-locks",
+ "services": [
+ "AVS"
+ ],
"severity": "Medium",
- "subcategory": "Service enablement framework",
- "text": "Plan how service request will be fulfilled for Azure services.",
- "waf": "Security"
+ "subcategory": "Operations",
+ "text": "Resource locks",
+ "waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "e85f4226-bf06-4e35-8a8b-7aee4d2d633a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/platform-automation-devops",
- "services": [],
- "severity": "High",
- "subcategory": "DevOps Team Topologies",
- "text": "Ensure you have a cross functional DevOps Platform Team to build, manage and maintain your Azure Landing Zone architecture.",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "For manual deployments, all configuration and deployments must be documented",
+ "guid": "8f2c46aa-ca1b-cad3-3ac9-213dfc0a265e",
+ "link": "Make sure to create your own runbook on the deployment of AVS.",
+ "services": [
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Run books",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "634146bf-7085-4419-a7b5-f96d2726f6da",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations",
- "services": [],
- "severity": "Low",
- "subcategory": "DevOps Team Topologies",
- "text": "Aim to define functions for Azure Landing Zone Platform team.",
+ "category": "Management",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "guid": "86b314f9-1f1e-317a-4dfb-cf510ad4a030",
+ "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations",
+ "services": [
+ "AKV",
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Operations",
+ "text": "Naming conventions for auth keys",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "a9e65070-c59e-4112-8bf6-c11364d4a2a5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/devops-teams-topologies#design-recommendations",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "For automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
+ "guid": "e22a2d99-eb71-7d7c-07af-6d4cdb1d4443",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
"services": [
- "RBAC"
+ "AVS",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "DevOps Team Topologies",
- "text": "Aim to define functions for application workload teams to be self-sufficient and not require DevOps Platform Team support. Achieve this through the use of custom RBAC role.",
+ "severity": "Medium",
+ "subcategory": "Alerts",
+ "text": "Create warning alerts for critical thresholds ",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "165eb5e9-b434-448a-9e24-178632186212",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
- "services": [],
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
+ "guid": "6d02f159-627d-79bf-a931-fab6d947eda2",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
+ "services": [
+ "AVS",
+ "Monitor"
+ ],
"severity": "Medium",
- "subcategory": "DevOps Team Topologies",
- "text": "Use a CI/CD pipeline to deploy IaC artifacts and ensure the quality of your deployment and Azure environments.",
+ "subcategory": "Alerts",
+ "text": "Create critical alert vSAN consumption",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "0cadb8c7-8fa5-4fbf-8f39-d1fadb3b0460",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds",
- "services": [],
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Provides platform alerts (generated by Microsoft)",
+ "guid": "1cc97b39-2c7e-246f-6d73-789cfebfe951",
+ "link": "https://www.virtualworkloads.com/2021/04/azure-vmware-solution-azure-service-health/",
+ "services": [
+ "AVS",
+ "Monitor"
+ ],
"severity": "Medium",
- "subcategory": "DevOps Team Topologies",
- "text": "Include unit tests for IaC and application code as part of your build process.",
+ "subcategory": "Alerts",
+ "text": "Configured for Azure Service Health alerts and notifications",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
+ "guid": "0962606c-e3b4-62a9-5661-e4ffd62a4509",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
"services": [
+ "Backup",
+ "AVS",
"VM",
- "AKV"
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "DevOps Team Topologies",
- "text": "Use Key Vault secrets to avoid hard-coding sensitive information such as credentials (virtual machines user passwords), certificates or keys.",
+ "severity": "Medium",
+ "subcategory": "Backup",
+ "text": "Backup policy",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "a52e0c98-76b9-4a09-a1c9-6b2babf22ac4",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/subscription-vending",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Keep in mind the lead time for requesting new nodes",
+ "guid": "4ec7ccfb-795e-897e-4a84-fd31c04eadc6",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
"services": [
- "Subscriptions"
+ "AVS",
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "DevOps Team Topologies",
- "text": "Implement automation for new landing zone for applications and workloads through subscription vending.",
+ "severity": "Medium",
+ "subcategory": "Capacity",
+ "text": "Policy around ESXi host density and efficiency",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "cfe363b5-f579-4284-bc56-a42153e4c10b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
- "services": [],
- "severity": "High",
- "subcategory": "Development Lifecycle",
- "text": "Ensure a version control system is used for source code of applications and IaC developed. Microsoft recommends Git.",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Azure Cost Management can be used - one option, put AVS in it's own Subscription. ",
+ "guid": "7f8f175d-13f4-5298-9e61-0bc7e9fcc279",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/govern",
+ "services": [
+ "AVS",
+ "Cost",
+ "Subscriptions",
+ "Monitor"
+ ],
+ "severity": "Medium",
+ "subcategory": "Costs",
+ "text": "Ensure a good cost management process is in place for Azure VMware Solution - ",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "c7245dd4-af8a-403a-8bb7-890c1a7cfa9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle",
- "services": [],
- "severity": "Low",
- "subcategory": "Development Lifecycle",
- "text": "Follow a branching strategy to allow teams to collaborate better and efficiently manage version control of IaC and application Code. Review options such as Github Flow.",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Create dashboards to enable core Azure VMware Solution monitoring insights",
+ "guid": "01e689e0-7c6c-b58f-37bd-4d6b9b1b9c74",
+ "link": "https://docs.microsoft.com/azure/azure-portal/azure-portal-dashboards",
+ "services": [
+ "Monitor",
+ "AVS",
+ "NetworkWatcher"
+ ],
+ "severity": "Medium",
+ "subcategory": "Dashboard",
+ "text": "Connection monitor dashboard",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "12aeea20-9165-4b3e-bdf2-6795fcd3cdbe",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle",
- "services": [],
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Send to an Azure Storage account or Azure EventHub for processing (direct to Log Analytics is pending)",
+ "guid": "f9afdcc9-649d-d840-9fb5-a3c0edcc697d",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
+ "services": [
+ "AVS",
+ "Storage",
+ "Monitor"
+ ],
"severity": "Medium",
- "subcategory": "Development Lifecycle",
- "text": "Adopt a pull request strategy to help keep control of code changes merged into branches.",
+ "subcategory": "Logs & Metrics",
+ "text": "Configure Azure VMware Solution logging ",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "2676ae46-65ca-444e-8695-fdddeace4cb1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-platform",
- "services": [],
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Must be on-premises, implement if available",
+ "guid": "7cbac8c3-4eda-d5d9-9bda-c6b5abba9fb6",
+ "link": "Is vROPS or vRealize Network Insight going to be used? ",
+ "services": [
+ "AVS",
+ "Monitor"
+ ],
"severity": "Medium",
- "subcategory": "Development Lifecycle",
- "text": "Establish a process for using code to implement quick fixes. Always register quick fixes in your team's backlog so each fix can be reworked at a later point, and you can limit technical debt.",
+ "subcategory": "Logs & Metrics",
+ "text": "vRealize Operations",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "2cdc9d99-dbcc-4ad4-97f5-e7d358bdfa73",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/infrastructure-as-code",
- "services": [],
- "severity": "High",
- "subcategory": "Development Strategy",
- "text": "Leverage Declarative Infrastructure as Code Tools such as Azure Bicep, ARM Templates or Terraform to build and maintain your Azure Landing Zone architecture. Both from a Platform and Application workload perspective.",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
+ "guid": "b243521a-644d-f865-7fb6-21f9019c0dd2",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
+ "services": [
+ "AVS",
+ "VM",
+ "Monitor"
+ ],
+ "severity": "Medium",
+ "subcategory": "Logs & Metrics",
+ "text": "AVS VM logging",
"waf": "Operations"
},
{
- "category": "Platform Automation and DevOps",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc87a3bc-c572-4ad2-92ed-8cabab66160f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/landing-zone-security#secure",
- "services": [],
- "severity": "High",
- "subcategory": "Security",
- "text": "Integrate security into the already combined process of development and operations in DevOps to mitigate risks in the innovation process.",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Between on-premises to Azure are monitored using 'connection monitor'",
+ "guid": "2ca97d91-dd36-7229-b668-01036ccc3cd3",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
+ "services": [
+ "NetworkWatcher",
+ "AVS",
+ "VPN",
+ "Monitor",
+ "ExpressRoute"
+ ],
+ "severity": "Medium",
+ "subcategory": "Network",
+ "text": "Monitor ExpressRoute and/or VPN connections ",
"waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "To monitor the Azure VMware Solution back-end ExpressRoute connection (Azure native to AVS)",
+ "guid": "99209143-60fe-19f0-5633-8b5671277ba5",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
"services": [
- "ACR"
+ "AVS",
+ "ExpressRoute",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "High Availability",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Network",
+ "text": "Monitor from an Azure native resource to an Azure VMware Solution VM",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "To monitor end-to-end, on-premises to AVS workloads",
+ "guid": "b9e5867c-57d3-036f-fb1b-3f0a71664efe",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
"services": [
- "Storage"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
- "waf": "Reliability"
+ "subcategory": "Network",
+ "text": "Monitor from an on-premises resource to an Azure VMware Solution VM",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Track requests to Azure VMware Solution and Azure VMware Solution based workloads",
+ "guid": "4af7c5f7-e5e9-bedf-a8cf-314b81735962",
+ "link": "Firewall logging and alerting rules are configured (Azure Firewall or 3rd party)",
"services": [
- "Storage"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
- "waf": "Reliability"
+ "subcategory": "Security",
+ "text": "Auditing and logging is implemented for inbound internet ",
+ "waf": "Operations"
},
{
- "category": "BC and DR",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
+ "guid": "74be60a3-cfac-f057-eda6-3ee087e805d5",
+ "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
"services": [
- "ASR"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "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.",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "65285269-440c-44be-9d3e-0844276d4bdc",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foudations-playbooks-ADB_v1.docx",
- "services": [],
- "severity": "High",
- "subcategory": "Best Practices",
- "text": "Reference Databricks HA/DR playbook",
- "waf": "Reliability"
+ "subcategory": "Security",
+ "text": "Session monitoring ",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "89d558b9-37d3-4974-b111-2dbd7aaf12e6",
- "link": "https://learn.microsoft.com/azure/databricks/security/secrets/secret-scopes",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "guid": "a434b3b5-f258-0845-cd76-d7df6ef5890e",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
"services": [
- "Backup"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup Your Workspace Configuration including ARM templates and Secret Scopes",
- "waf": "Reliability"
+ "subcategory": "VMWare",
+ "text": "Logging and diagnostics",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "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",
+ "category": "Monitoring",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Monitor AVS workloads (each VM in AVS)",
+ "guid": "fb00b69a-83ec-ce72-446e-6c23a0cab09a",
+ "link": "https://docs.microsoft.com/azure/azure-monitor/agents/agent-windows?tabs=setup-wizard",
"services": [
- "Backup",
- "ACR"
+ "AVS",
+ "VM",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Share MetaData Across different Databricks Workspaces using Hive External Metastore",
- "waf": "Reliability"
+ "subcategory": "VMware",
+ "text": "Log Analytics Agents deployed on Azure VMware Solution guest VM workloads",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "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",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Decision on traffic flow",
+ "guid": "a1354b87-e18e-bf5c-c50b-8ddf0540e971",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-hub-and-spoke",
"services": [
- "Backup",
- "ASR"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Plan Disaster Recovery Strategy in Databricks using the Hive External Metastore",
- "waf": "Reliability"
+ "subcategory": "Hub & Spoke",
+ "text": "North/South routing through Az Firewall or 3rd party ",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "4b1d944a-3598-437e-b79d-6c6d3a364a5b",
- "link": "https://www.databricks.com/blog/2021/04/20/attack-of-the-delta-clones-against-disaster-recovery-availability-complexity.html",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Decision to route Azure to Azure traffic through Firewall, not E/W between AVS workloads (internal to AVS)",
+ "guid": "29a8a499-ec31-f336-3266-0895f035e379",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-hub-and-spoke",
"services": [
- "Backup"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup your data with deep and shallow clones",
- "waf": "Reliability"
+ "subcategory": "Hub & Spoke",
+ "text": "East West (Internal to Azure)",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "description": "Download the blob using Secondary Endpoint in RAGRS Storage Account",
- "guid": "7abae48a-bd54-4cd7-ae2e-86768357c559",
- "link": "https://techcommunity.microsoft.com/t5/azure-paas-blog/download-the-blob-using-secondary-endpoint-in-ragrs-storage/ba-p/2403750",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Requires a 3rd party NVA with Azure Route server - Scenario 2 (see link)",
+ "guid": "ebd3cc3c-ac3d-4293-950d-cecd8445a523",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
"services": [
- "Storage",
- "Backup"
+ "ARS",
+ "AVS",
+ "NVA"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup your data to Azure Storage RA-GRS",
- "waf": "Reliability"
+ "subcategory": "Hub & Spoke",
+ "text": "ExR without Global Reach",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "675c5ee8-5b85-49c7-944c-e3b1a28b875a",
- "link": "https://learn.microsoft.com/azure/databricks/dev-tools/index-ci-cd",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "When route server is used, ensure no more then 200 routes are propagated from route server to ExR gateway to on-premises (ARS limit). Important when using MoN",
+ "guid": "ffb5c5ca-bd89-ff1b-8b73-8a54d503d506",
+ "link": "https://learn.microsoft.com/azure/route-server/route-server-faq",
"services": [
- "Backup"
+ "ARS",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Backup",
- "text": "Backup your code with DevOps",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Hub & Spoke",
+ "text": "Route server ",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "a1bf1038-9f03-4a4d-8ce4-63dbbbc8682a",
- "link": "https://learn.microsoft.com/azure/databricks/administration-guide/disaster-recovery",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Via on-premises, Az Firewall, 3rd Party, NSX-T pubic IP",
+ "guid": "a4070dad-3def-818d-e9f7-be440d10e7de",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-design-public-internet-access",
"services": [
- "ASR"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Plan for Disaster recovery using Active/Active or Active/Passive Configuration",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Internet",
+ "text": "Egress point(s)",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "description": "Migration package to log all Databricks resources for backup and/or migrating to another Databricks workspace",
- "guid": "5abc92a4-eda1-4dae-8cc8-5c47c6b781cc",
- "link": "https://github.com/databrickslabs/migrate",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Az Firewall, 3rd party NVA, Application Gateway, Azure Frontdoor ",
+ "guid": "e942c03d-beaa-3d9f-0526-9b26cd5e9937",
+ "link": "Research and choose optimal solution for each application",
"services": [
- "Backup"
+ "AVS",
+ "AppGW",
+ "NVA",
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Migration",
- "text": "Use Databricks Migration tools",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "DataBricks Review Checklist",
- "guid": "a0e6c465-89d5-458b-a37d-3974d1112dbd",
- "link": "https://github.com/databrickslabs/databricks-sync",
- "services": [],
- "severity": "Low",
- "subcategory": "Migration",
- "text": "Use Databricks Sync",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
- "waf": "Reliability"
+ "subcategory": "Internet",
+ "text": "Internet facing applications",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
- "services": [],
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure no more then 200 routes are propagated from route server to ExR gateway to on-premises (ARS limit). Important when using MoN",
+ "guid": "e778a2ec-b4d7-1d27-574c-14476b167d37",
+ "link": "https://docs.microsoft.com/azure/route-server/route-server-faq#route-server-limits",
+ "services": [
+ "ARS",
+ "AVS"
+ ],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Learn how to trigger a manual failover.",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Learn how to fail back after a failover.",
- "waf": "Reliability"
+ "subcategory": "Routing",
+ "text": "When route server Route limit understood? ",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "(VPN Gateway, AppGW, FrontDoor, Load balancer, VMs (etc) (Remove: enabled on ExR/VPN Gateway subnet in Azure)",
+ "guid": "66c97b30-81b9-139a-cc76-dd1d94aef42a",
+ "link": "https://docs.microsoft.com/azure/ddos-protection/manage-ddos-protection",
"services": [
- "AppSvc"
+ "AppGW",
+ "DDoS",
+ "AVS",
+ "VM",
+ "VPN",
+ "LoadBalancer",
+ "FrontDoor",
+ "ExpressRoute",
+ "VNet"
],
- "severity": "Low",
- "subcategory": "High Availability",
- "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Is DDoS standard protection of public facing IP addresses? ",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "To manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
+ "guid": "d43da920-4ecc-a4e9-dd45-a2986ce81d32",
+ "link": "Best practice: Bastion or 3rd party tool",
"services": [
- "Backup",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
- "waf": "Reliability"
+ "subcategory": "Security",
+ "text": "Use a dedicated privileged access workstation (PAW)",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use NSX-T for inter-vmware-traffic inspection",
+ "guid": "a2dac74f-5380-6e39-25e6-f13b99ece51f",
+ "link": "https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.2/administration/GUID-F6685367-7AA1-4771-927E-ED77727CFDA3.html",
"services": [
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Traffic Inspection",
+ "text": "East West (Internal to AVS)",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Decision on whether or not to use Secure hub for E/W and Internet traffic - requires Global Reach",
+ "guid": "3f621543-dfac-c471-54a6-7b2849b6909a",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
"services": [
- "Monitor",
- "AppSvc"
+ "AVS",
+ "Firewall",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Implement health checks",
- "waf": "Reliability"
+ "subcategory": "Virtual WAN",
+ "text": "Use Secure Hub (Azure Firewall or 3rd party)",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
+ "category": "Networking",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Decision to route Azure to Azure traffic through Firewall, not E/W between AVS workloads (internal to AVS)",
+ "guid": "d7af5670-1b39-d95d-6da2-8d660dfbe16b",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/secure-cloud-network",
"services": [
- "Backup",
- "AppSvc"
+ "AVS",
+ "VWAN"
],
- "severity": "High",
- "subcategory": "Multi-tenant service",
- "text": "Refer to backup and restore best practices for Azure App Service",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Virtual WAN",
+ "text": "East West (Internal to Azure)",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "When intending to use automated scale-out, be sure to apply for sufficient Azure VMware Solution quota for the subscriptions running Azure VMware Solution",
+ "guid": "7d049005-eb35-4a93-50a5-3b31a9f61161",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-nsx-network-components-azure-portal",
"services": [
- "AppSvc"
+ "AVS",
+ "Subscriptions"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Implement Azure App Service reliability best practices",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Automated Scale",
+ "text": "Scale out operations planning",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "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": [
- "AppSvc"
+ "AVS",
+ "AzurePolicy",
+ "Storage"
],
- "severity": "Low",
- "subcategory": "High Availability",
- "text": "Familiarize with how to move an App Service app to another region During a disaster",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Automated Scale",
+ "text": "Scale in operations planning",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "guid": "3233e49e-62ce-97f3-8737-8230e771b694",
+ "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-platform-automation-and-devops#automated-scale",
"services": [
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Familiarize with reliability support in Azure App Service",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Automated Scale",
+ "text": "Scale serialized operations planning",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "guid": "68161d66-5707-319b-e77d-9217da892593",
+ "link": "Best practice (testing)",
"services": [
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
- "waf": "Reliability"
+ "subcategory": "Automated Scale",
+ "text": "Scale rd operations planning",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "guid": "c32cb953-e860-f204-957a-c79d61202669",
+ "link": "Operational planning - understand workload requirements",
"services": [
- "Monitor",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Monitor App Service instances using Health checks",
- "waf": "Reliability"
+ "subcategory": "Automated Scale",
+ "text": "Scale maximum operations planning",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
+ "guid": "7bd65a5e-7b5d-652d-dbea-fc6f73a42857",
+ "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring",
"services": [
- "Monitor",
- "AppSvc"
+ "AVS",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "subcategory": "Automated Scale",
+ "text": "Monitor scaling operations ",
+ "waf": "Performance"
+ },
+ {
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "guid": "95e374af-8a2a-2672-7ab7-b4a1be43ada7",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "services": [
+ "PrivateLink",
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Private link",
+ "waf": "Performance"
+ },
+ {
+ "category": "Other Services/Operations",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "guid": "71eff90d-5ad7-ac60-6244-2a6f7d3c51f2",
+ "link": "Best practice",
+ "services": [
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Provisioning Vmware VLANs",
+ "waf": "Performance"
+ },
+ {
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "In which region will AVS be deployed",
+ "guid": "04e3a2f9-83b7-968a-1044-2811811a924b",
+ "link": "https://learn.microsoft.com/windows-server/identity/ad-ds/plan/understanding-active-directory-site-topology",
+ "services": [
+ "AVS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Region selected",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Are there regulatory or compliance policies in play",
+ "guid": "e52d1615-9cc6-565c-deb6-743ed7e90f4b",
+ "link": "Internal policy or regulatory compliance",
"services": [
- "Monitor",
- "AppSvc"
+ "AVS",
+ "AzurePolicy"
],
- "severity": "Low",
- "subcategory": "Monitoring",
- "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Data residency compliant with selected regions",
"waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Request through the support blade",
+ "guid": "92bd5ad6-441f-a983-7aa9-05dd669d760b",
+ "link": "https://learn.microsoft.com/azure/migrate/concepts-azure-vmware-solution-assessment-calculation",
"services": [
- "AKV",
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Use Key Vault to store secrets",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Request for number of AVS hosts submitted ",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "PG approval for deployment",
+ "guid": "28370f63-1cb8-2e35-907f-c5516b6954fa",
+ "link": "Support request through portal or get help from Account Team",
"services": [
- "AKV",
- "Entra",
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Use Managed Identity to connect to Key Vault",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Region and number of AVS nodes approved",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Store the App Service TLS certificate in Key Vault.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Portal/subscription/resource providers/ Microsoft.AVS",
+ "guid": "96c76997-30a6-bb92-024d-f4f93f5f57fa",
+ "link": "Done through the subscription/resource providers/ AVS register in the portal",
"services": [
- "AKV",
- "AppSvc"
+ "AVS",
+ "Subscriptions"
],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Use Key Vault to store TLS certificate.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Resource provider for AVS registered",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Connectivity, subscription & governanace model",
+ "guid": "5898e3ff-5e6b-bee1-6f85-22fee261ce63",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/enterprise-scale-landing-zone",
"services": [
- "Subscriptions",
- "AppSvc"
+ "AVS",
+ "Subscriptions"
],
"severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Isolate systems that process sensitive information",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Landing zone architecture",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "The name of the RG where AVS will exist",
+ "guid": "d0181fb8-9cb8-bf4b-f5e5-b5f9bf7ae4ea",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/manage-resource-groups-portal",
"services": [
- "TrafficManager",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Do not store sensitive data on local disk",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Resource group name selected",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Each resource created as part of the deployment will also utilize this prefix in the name",
+ "guid": "0f0d20c2-5a19-726c-de20-0984e070d9d6",
+ "link": "Best practice - naming standards",
"services": [
- "Entra",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Identity and Access Control",
- "text": "Use an established Identity Provider for authentication",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Deployment prefix selected",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "/22 unique non-overlapping IPv4 address space",
+ "guid": "7fbf2ab7-a36c-5957-c27a-67038557af2a",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-network-checklist#routing-and-subnet-considerations",
"services": [
- "Entra",
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Deploy from a trusted environment",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Network space for AVS management layer",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "vNets used by workloads running in AVS (non-stretched)",
+ "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": [
- "Entra",
- "AppSvc"
+ "AVS",
+ "VNet"
],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Disable basic authentication",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Network space for AVS NSX-T segments",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Choose AV36, AV36P, AV52, AV36T (AV36T = Trial)",
+ "guid": "946c8966-f902-6f53-4f37-00847e8895c2",
+ "link": "https://azure.microsoft.com/pricing/details/azure-vmware/",
"services": [
- "AKV",
- "Entra",
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Use Managed Identity to connect to resources",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "AVS SKU (region dependent)",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use the Azure migration assessment tool to determine the minimum number of nodes required (consider BCDR as well)",
+ "guid": "31833808-26ba-9c31-416f-d54a89a17f5d",
+ "link": "https://learn.microsoft.com/azure/migrate/how-to-assess",
"services": [
- "ACR",
- "Entra",
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Pull containers using a Managed Identity",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "Number of hosts to be deployed",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Understand how and if you should be using reserved instances (cost control)",
+ "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": [
- "Monitor",
- "Entra",
- "AppSvc"
+ "AVS",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Logging and Monitoring",
- "text": "Send App Service runtime logs to Log Analytics",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Reserverd Instances",
+ "waf": "Cost"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
+ "guid": "94ac48ab-ade5-3fa7-f800-263feeb97070",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
"services": [
- "Monitor",
- "Entra",
- "AppSvc"
+ "AVS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Logging and Monitoring",
- "text": "Send App Service activity logs to Log Analytics",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Capacity ",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Identify which of the networking scenarios make ",
+ "guid": "1f9d4bd5-14b8-928c-b4cb-eb211f9b8de5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
"services": [
- "AppSvc",
- "VNet",
- "Firewall",
- "Monitor",
- "NVA"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Network Security",
- "text": "Outbound network access should be controlled",
- "waf": "Security"
+ "subcategory": "Pre-deployment",
+ "text": "Networking & Connectivity See docs describing scenrario 1 through 5",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
+ "category": "Planning",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "guid": "070db19b-8a2a-fd6a-c39b-4488d8780da9",
+ "link": "Please Check Partner Ecosystem",
"services": [
- "PrivateLink",
- "Storage",
- "AppSvc",
- "VNet",
- "Firewall",
- "NVA"
+ "AVS"
],
- "severity": "Low",
- "subcategory": "Network Security",
- "text": "Ensure a stable IP for outbound communications towards internet addresses",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Pre-deployment",
+ "text": "3rd party application compatibility ",
+ "waf": "Reliability"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
+ "guid": "70cfbddc-d3d4-9188-77c8-1cabaefef646",
+ "link": "General recommendation for storing encryption keys.",
"services": [
- "PrivateLink",
- "AppSvc"
+ "AKV",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Inbound network access should be controlled",
+ "severity": "Medium",
+ "subcategory": "Encryption",
+ "text": "Use Azure Key Vault with in-guest encryption ",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "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)",
+ "guid": "c1a81638-18df-0ce9-a73a-4b9a8a8dd392",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/concepts-storage#data-at-rest-encryption",
"services": [
- "AppSvc",
- "AppGW",
- "WAF",
- "Monitor",
- "FrontDoor"
+ "AVS",
+ "SQL"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Use a WAF in front of App Service",
+ "severity": "Medium",
+ "subcategory": "Encryption",
+ "text": "Use in-guest encryption",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use Key vault to store secrets and authorization keys when separate Service Principles are used for deploying Azure VMware Solution and ExpressRoute",
+ "guid": "8d0a8f51-8d35-19cd-c2fe-4e3512fb467e",
+ "link": "https://docs.microsoft.com/azure/key-vault/general/authentication",
"services": [
- "WAF",
- "PrivateLink",
- "AppSvc"
+ "AKV",
+ "AVS",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Avoid for WAF to be bypassed",
+ "severity": "Medium",
+ "subcategory": "Encryption",
+ "text": "Keyvault use for secrets",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Older OS security patching configured for workloads running on Azure VMware Solution are eligible for ESU",
+ "guid": "4f8b20e9-a2a1-f80f-af9b-8aa3b26dca08",
+ "link": "https://docs.microsoft.com/windows-server/get-started/extended-security-updates-deploy",
"services": [
- "AzurePolicy",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Network Security",
- "text": "Set minimum TLS policy to 1.2",
+ "subcategory": "Extended support",
+ "text": "Ensure extended security update support ",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Use a SIEM/SOAR",
+ "guid": "9bb22fec-4d00-3b95-7136-e225d0f5c63a",
+ "link": "https://learn.microsoft.com/azure/sentinel/overview",
"services": [
- "WAF",
- "AppSvc"
+ "Sentinel",
+ "AVS"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Use HTTPS only",
+ "severity": "Medium",
+ "subcategory": "Investigation",
+ "text": "Enable Azure Sentinel or 3rd party SIEM ",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "MS Defender For Cloud, for workloads running on Azure VMware Solution",
+ "guid": "f42b0b09-c591-238a-1580-2de3c485ebd2",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/azure-security-integration#prerequisites",
"services": [
- "Storage",
- "AppSvc"
+ "AVS",
+ "Defender"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Wildcards must not be used for CORS",
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Enable Advanced Threat Detection ",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Are the applicable policies enabled (compliance baselines added to MDfC)",
+ "guid": "bcdd2348-3d0e-c6bb-1092-aa4cd1a66d6b",
+ "link": "https://docs.microsoft.com/azure/azure-vmware/azure-security-integration",
"services": [
- "AppSvc"
+ "AVS",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Network Security",
- "text": "Turn off remote debugging",
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Policy & Regulatory Compliance",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Azure to Azure (E/W), Azure to On-premises), AVS to Internet, AVS to Azure",
+ "guid": "607c1ca9-da92-ae19-5a4c-eb1e876acbe7",
+ "link": "https://techcommunity.microsoft.com/t5/azure-migration-and/firewall-integration-in-azure-vmware-solution/ba-p/2254961#:~:text=Azure%20VMware%20Solution%20customers%20have%20multiple%20security%20options,the%20box%20to%20provide%20East-West%20and%20North-South%20firewalling.",
"services": [
- "Defender",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Network Security",
- "text": "Enable Defender for Cloud - Defender for App Service",
+ "subcategory": "Firewalls",
+ "text": "Azure / 3rd party firewall",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "To allow HCX appliance to connect/sync",
+ "guid": "1d87925c-c02b-7fde-a425-7e95ad846a27",
+ "link": "https://docs.vmware.com/en/VMware-Cloud-on-AWS/services/com.vmware.vmc-aws-networking-security/GUID-2CFE1654-9CC9-4EDB-A625-21317299E559.html",
"services": [
- "EventHubs",
- "DDoS",
- "AppSvc",
- "VNet",
- "AppGW",
- "WAF",
- "NVA"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Network Security",
- "text": "Enable DDOS Protection Standard on the WAF VNet",
+ "subcategory": "Firewalls",
+ "text": "Firewalls allow for East/West traffic inside AVS",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Decision on which tool to use (SRM requires additional license - enables automation & other features)",
+ "guid": "468b3495-2f6e-b65a-38ef-3ba631bcaa46",
+ "link": "https://docs.vmware.com/en/VMware-HCX/4.2/hcx-user-guide/GUID-B842696B-89EF-4183-9C73-B77157F56055.html",
"services": [
- "VNet",
- "PrivateLink",
- "ACR",
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Network Security",
- "text": "Pull containers over a Virtual Network",
- "waf": "Security"
+ "subcategory": "Networking",
+ "text": "HCX and/or SRM",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Read up on requirements for Service Mesh requirements and how HCX ",
+ "guid": "be2ced52-da08-d366-cf7c-044c19e29509",
+ "link": "https://docs.vmware.com/en/VMware-HCX/4.6/hcx-user-guide/GUID-76BCD059-A31A-4041-9105-ACFB56213E7C.html",
"services": [
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Penetration Testing",
- "text": "Conduct a penetration test",
- "waf": "Security"
+ "subcategory": "Networking",
+ "text": "Configuring and Managing the HCX Interconnect",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "If you are planning on using stretch networks ensure that your on-premises environment requirements",
+ "guid": "7dcac579-fc5c-5c9c-f1f7-9b1149ff2c37",
+ "link": "https://docs.vmware.com/en/VMware-HCX/4.2/hcx-user-guide/GUID-DBDB4D1B-60B6-4D16-936B-4AC632606909.html",
"services": [
- "AppSvc"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Vulnerability Management",
- "text": "Deploy validated code",
- "waf": "Security"
+ "subcategory": "Networking",
+ "text": "Restrictions and limitations for network extensions",
+ "waf": "Performance"
},
{
- "category": "Security",
- "checklist": "Azure App Service Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Do workloads require MoN?",
+ "guid": "cf45c0b9-6c4b-3bfb-86c5-62fe54061c73",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/vmware-hcx-mon-guidance",
"services": [
- "AppSvc"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Vulnerability Management",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Mobility optimized networking",
+ "waf": "Performance"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Operating system level of Vmware environment",
+ "guid": "b7cf11f3-b12e-5189-991a-06df5250d2ca",
+ "link": "https://learn.microsoft.com/azure/site-recovery/vmware-physical-azure-support-matrix",
"services": [
- "AVS",
- "Subscriptions",
- "Entra"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "On-premises pre-requisites",
+ "text": "Support matrix (OS versions etc).",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Required that all switches are dynamic",
+ "guid": "45fe9252-aa1b-4e30-45c6-bc02f3b76acf",
+ "link": "https://docs.vmware.com/en/VMware-vSphere/7.0/vsan-network-design-guide/GUID-91E1CD6F-33A6-4AC6-BC22-3E4807296F86.html#:~:text=Migrate%20Management%20Network%201%20Add%20hosts%20to%20the,each%20host.%20...%204%20Finish%20the%20configuration.%20",
"services": [
- "AVS",
- "Entra"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure",
- "waf": "Security"
+ "subcategory": "On-premises pre-requisites",
+ "text": "Standard switches converted to dynamic switches",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "See sections on sizing and capacity in the link.",
+ "guid": "e9f6d736-ee44-e2ac-e7f9-e361f8c857f3",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/plan-private-cloud-deployment",
"services": [
- "AVS",
- "Entra"
+ "AVS"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "On-premises pre-requisites",
+ "text": "Capacity for HCX appliance",
+ "waf": "Performance"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Check hardware restrictions to ensure compatibility with AVS/OS ",
+ "guid": "1be2cdd6-15a7-9a33-aea7-113859035ce9",
+ "link": "https://kb.vmware.com/s/article/2007240#:~:text=ESXi%2FESX%20hosts%20and%20compatible%20virtual%20machine%20hardware%20versions,%20Not%20Supported%20%204%20more%20rows",
"services": [
- "AVS",
- "Entra"
+ "AVS"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
- "waf": "Security"
+ "subcategory": "On-premises pre-requisites",
+ "text": "Hardware compatibility",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Need to be converted",
+ "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": [
"AVS",
- "Entra"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
- "waf": "Security"
+ "subcategory": "Storage",
+ "text": "VSAN RDM disks are converted - not supported.",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Need to be converted",
+ "guid": "eb2f9313-afb2-ab35-aa24-6d97a3cb0611",
+ "link": "3rd-Party tools",
"services": [
"AVS",
- "Entra"
+ "VM",
+ "Storage"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "VM with SCSI shared bus are not supported",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Remove Direct IO before migration",
+ "guid": "3f2a5cff-c8a6-634a-1f1b-53ef9d321381",
+ "link": "Contact VMware",
"services": [
"AVS",
- "RBAC",
- "Entra"
+ "VM",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Has an RBAC model been created for use within VMware vSphere",
- "waf": "Security"
+ "subcategory": "Storage",
+ "text": "VM with Direct IO require removing DirectPath device",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Cannot migrate clusters ",
+ "guid": "efc8a311-74f8-0252-c6a0-4bac7610e266",
+ "link": "Contact VMware",
"services": [
"AVS",
- "RBAC",
- "Entra"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
- "waf": "Security"
+ "subcategory": "Storage",
+ "text": "Shared VMDK files are not supported",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Convert to a different format",
+ "guid": "ab6c89cd-a26f-b894-fe59-61863975458e",
+ "link": "Contact VMware",
"services": [
"AVS",
- "RBAC",
- "Entra"
+ "Storage"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "RDM with 'physical compatibility mode' are not supported.",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning 'RAID-1 FTT-1' is default with Thin Provisioning",
+ "guid": "7628d446-6b10-9678-9cec-f407d990de43",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
"services": [
"AVS",
- "RBAC",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
- "waf": "Security"
- },
- {
- "category": "Networking",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "services": [
- "AVS"
+ "VM",
+ "AzurePolicy",
+ "Storage"
],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
- "waf": "Performance"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Default storage policy",
+ "waf": "Operations"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "The default storage policy is set to RAID-1 (Mirroring) FTT-1, with Object Space Reservation set to Thin provisioning.",
+ "guid": "37fef358-7ab9-43a9-542c-22673955200e",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/configure-storage-policy",
"services": [
- "VPN",
- "NetworkWatcher",
"AVS",
- "Monitor",
- "ExpressRoute"
+ "VM",
+ "AzurePolicy",
+ "Storage"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Ensure that the appropriate VM template storage policy is used",
"waf": "Operations"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
+ "guid": "ebebd109-9f9d-d85e-1b2f-d302012843b7",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
"services": [
- "NetworkWatcher",
"AVS",
- "Monitor",
- "ExpressRoute",
- "VM"
+ "AzurePolicy",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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",
+ "subcategory": "Storage",
+ "text": "Failure to tolerate policy",
"waf": "Operations"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "category": "VMware",
+ "checklist": "Azure VMware Solution Implementation Checklist",
+ "description": "ANF can be used to extend storage for Azure VMware Solution,",
+ "guid": "1be821bd-4f37-216a-3e3d-2a5ac6996863",
+ "link": "https://learn.microsoft.com/azure/azure-vmware/netapp-files-with-azure-vmware-solution",
"services": [
- "NetworkWatcher",
"AVS",
- "Monitor",
- "VM"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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",
+ "subcategory": "Storage",
+ "text": "Use ANF for external storage",
"waf": "Operations"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
- "services": [
- "AVS",
- "ARS"
- ],
- "severity": "High",
- "subcategory": "Routing",
- "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).",
- "waf": "Operations"
+ "category": "Operations management",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availablity",
+ "text": "Follow reliability support recommendations in Azure Bot Service",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
- "services": [
- "AVS",
- "RBAC",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Security (identity)",
- "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availablity",
+ "text": "Deploying bots with local data residency and regional compliance",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
- "services": [
- "AVS",
- "RBAC",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Security (identity)",
- "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availablity",
+ "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "974a759c-763e-47d2-9161-3a7649907e0e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ASB_v1.docx",
"services": [
- "AVS",
- "Entra"
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Security (identity)",
- "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)",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Leverage FTA Handbook",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "description": "This will be turned on automatically for a new SB namespace created from the portal with the Premium SKUs in a zone-enabled region. Both the Service Bus metadata and the messages data are replicated across datacenters in the availability zones configuration",
+ "guid": "338ee253-c17d-432e-aaaa-b7571549ab81",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#availability-zones",
"services": [
- "AVS",
- "Entra"
+ "ServiceBus",
+ "ACR"
],
"severity": "High",
- "subcategory": "Security (identity)",
- "text": "Limit use of CloudAdmin account to emergency access only",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Leverage Availability Zones if regionally applicable",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "description": "If enabled, Implements namespace metadata replication to a secondary region. Does not replicate queue/topic message data. Premium sku only.",
+ "guid": "53d89f89-d17b-484b-93b5-a67f7b9ed5b3",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#geo-disaster-recovery",
"services": [
- "AVS",
- "RBAC",
- "Entra"
+ "ServiceBus",
+ "ASR",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security (identity)",
- "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
- "waf": "Security"
+ "subcategory": "Geo-Disaster Recovery",
+ "text": "Plan for Metadata replication during regional failure",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "description": "If an outage cannot be tolerated, do not use the build-in metadata replication option. Leverage a replication pattern to replicate Service Bus messages across two or more sets of cross-region namespaces",
+ "guid": "1f38c403-a822-4c24-93cf-0f18ac699ef1",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-federation-overview",
"services": [
- "AVS",
- "Entra"
+ "ServiceBus",
+ "ASR",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Security (identity)",
- "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
- "waf": "Security"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
- "services": [
- "AVS",
- "VM",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Security (identity)",
- "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
- "waf": "Security"
+ "subcategory": "Geo-Disaster Recovery",
+ "text": "Plan for Message replication during regional failure",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus uses a message broker to handle messages that are sent to a Service Bus queue or topic. By default, all messages that are sent to a queue or topic are handled by the same message broker process. This architecture can place a limitation on the overall throughput of the message queue. However, you can also partition a queue or topic when it is created",
+ "guid": "d5a83de4-de32-4c18-a147-0607c5c0e4e6",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/data-partitioning-strategies#partitioning-azure-service-bus",
"services": [
- "AVS"
+ "ServiceBus",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security (network)",
- "text": "Is East-West traffic filtering implemented within NSX-T",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "For applications which require high throughput, use Patritioning ",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "14658d24-58ed-4671-99b8-21102df26ee4",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters",
"services": [
- "AVS",
- "AppGW",
- "Firewall"
+ "ServiceBus"
],
- "severity": "High",
- "subcategory": "Security (network)",
- "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",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Best Practices",
+ "text": "Evaluate Premier-tier benefits of Azure Service Bus",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "11e6f883-e52f-4472-8dd6-8c5b5c2521e5",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-messaging-exceptions",
"services": [
- "AVS"
+ "ServiceBus"
],
"severity": "High",
- "subcategory": "Security (network)",
- "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Ensure that Service Bus Messaging Exceptions are handled properly",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "4a69b9d3-39ac-44e7-a68d-1d75657202b4",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "AVS",
- "Monitor"
+ "PrivateLink",
+ "ServiceBus",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security (network)",
- "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Connect to Service Bus with the Advanced Messaging Queue Protocol (AMQP) and use Service Endpoints or Private Endpoints when possible.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "f4564b4d-974a-4759-a763-e7d261613a76",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-performance-improvements?tabs=net-standard-sdk-2",
"services": [
- "DDoS",
- "VNet",
- "VPN",
- "AVS",
- "ExpressRoute"
+ "ServiceBus"
],
- "severity": "Medium",
- "subcategory": "Security (network)",
- "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Best Practices",
+ "text": "Review the Best Practices for performance improvements using Service Bus Messaging",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "49907e0e-338e-4e25-9c17-d32e8aaab757",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/operational-excellence",
"services": [
- "AVS"
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Security (network)",
- "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Implement geo-replication on the sender and receiver side to protect against outages and disasters",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "1549ab81-53d8-49f8-ad17-b84b33b5a67f",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "AVS",
- "Defender"
+ "ServiceBus",
+ "ASR",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security (guest/VM)",
- "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "If you need mission-critical messaging with queues and topics, Service Bus Premium is recommended with Geo-Disaster Recovery.",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "7b9ed5b3-1f38-4c40-9a82-2c2463cf0f18",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "AVS",
- "Arc"
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Security (guest/VM)",
- "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)",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Implement high availability for the Service Bus namespace",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "ac699ef1-d5a8-43de-9de3-2c1881470607",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "SQL",
- "AVS"
+ "ServiceBus"
],
- "severity": "Low",
- "subcategory": "Security (guest/VM)",
- "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)",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Best Practices",
+ "text": "Ensure related messages are delivered in guaranteed order",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "c5c0e4e6-1465-48d2-958e-d67139b82110",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "AVS",
- "AKV"
+ "ServiceBus"
],
"severity": "Low",
- "subcategory": "Security (guest/VM)",
- "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
- "waf": "Security"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Medium",
- "subcategory": "Security (guest/VM)",
- "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Evaluate different Java Messaging Service (JMS) features through the JMS API",
+ "waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "2df26ee4-11e6-4f88-9e52-f4722dd68c5b",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "AVS"
+ "ServiceBus"
],
- "severity": "High",
- "subcategory": "Governance (platform)",
- "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
+ "severity": "Low",
+ "subcategory": "Best Practices",
+ "text": "Use .NET Nuget packages to communicate with Service Bus messaging entities",
"waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "category": "Operations Management",
+ "checklist": "Service Bus Review Checklist",
+ "guid": "5c2521e5-4a69-4b9d-939a-c4e7c68d1d75",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
"services": [
- "Storage",
- "AVS",
- "AzurePolicy"
+ "ServiceBus"
],
- "severity": "High",
- "subcategory": "Governance (platform)",
- "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
+ "severity": "Medium",
+ "subcategory": "Best Practices",
+ "text": "Implement resilience for transient fault handling when sending or receiving messages",
"waf": "Reliability"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
+ "service": "Service Bus",
"services": [
- "AVS",
- "ASR"
+ "ServiceBus"
],
- "severity": "High",
- "subcategory": "Governance (platform)",
- "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Data Protection",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
+ "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
+ "service": "Service Bus",
"services": [
- "AVS"
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Governance (platform)",
- "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
- "waf": "Operations"
+ "subcategory": "Data Protection",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
+ "service": "Service Bus",
"services": [
- "AVS",
- "AzurePolicy"
+ "Entra",
+ "AzurePolicy",
+ "TrafficManager",
+ "RBAC",
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Governance (platform)",
- "text": "Ensure that you have a policy around ESXi host density and efficiency, keeping in mind the lead time for requesting new nodes",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
+ "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
+ "service": "Service Bus",
"services": [
- "AVS",
- "Cost"
+ "Entra",
+ "AKV",
+ "Storage",
+ "VM",
+ "AppSvc",
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Governance (platform)",
- "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
- "waf": "Cost"
+ "subcategory": "Identity and Access Management",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
+ "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
+ "service": "Service Bus",
"services": [
- "AVS",
- "Cost"
+ "Entra",
+ "Storage",
+ "RBAC",
+ "Subscriptions",
+ "ServiceBus"
],
- "severity": "Low",
- "subcategory": "Governance (platform)",
- "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
+ "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
+ "service": "Service Bus",
"services": [
- "AVS"
+ "ServiceBus",
+ "VNet",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Governance (platform)",
- "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "subcategory": "Monitoring",
+ "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "High",
- "subcategory": "Governance (platform)",
- "text": "Ensure all required resource reside within the same Azure availability zone(s)",
- "waf": "Performance"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
+ "service": "Service Bus",
"services": [
- "AVS",
- "VM",
- "Defender"
+ "PrivateLink",
+ "ServiceBus",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "Governance (guest/VM)",
- "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
+ "subcategory": "Networking",
+ "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "category": "Security",
+ "checklist": "Service Bus Review Checklist",
+ "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
+ "service": "Service Bus",
"services": [
- "AVS",
- "VM",
- "Arc"
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Governance (guest/VM)",
- "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
+ "subcategory": "Networking",
+ "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Security"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Implement branching policy in Azure DevOps",
+ "guid": "eda1dae2-cc85-4c47-a6b7-81cca0e6c465",
+ "link": "https://learn.microsoft.com/azure/devops/repos/git/branch-policies-overview?view=azure-devops",
"services": [
- "AVS"
+ "AzurePolicy"
],
"severity": "High",
- "subcategory": "Governance (guest/VM)",
- "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "subcategory": "Branching Policy",
+ "text": "Branch Policies",
"waf": "Operations"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Governance (guest/VM)",
- "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Understand branch strategy such as GitFlow or GitHub Flow",
+ "guid": "bc288bec-6a16-4ca7-8444-51e1add34529",
+ "link": "https://learn.microsoft.com/azure/devops/repos/git/git-branching-guidance?view=azure-devops",
"services": [
- "AVS",
- "Backup",
- "VM",
"AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Governance (guest/VM)",
- "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
+ "severity": "High",
+ "subcategory": "Branching Policy",
+ "text": "Branching strategy",
"waf": "Operations"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
- "waf": "Security"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
- "services": [
- "AVS",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
- "waf": "Security"
- },
- {
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Understand how teams work with git",
+ "guid": "ec723823-7a15-41c5-ab4e-401914387e5c",
+ "link": "https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow",
"services": [
- "AVS"
+ "AzurePolicy"
],
"severity": "High",
- "subcategory": "Compliance",
- "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
- "waf": "Security"
+ "subcategory": "Branching Policy",
+ "text": "Understand GitFlow Branch Strategy",
+ "waf": "Operations"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Merge into higher branches after two or more reviewers in a PR",
+ "guid": "a9c26c9c-32ab-45bd-8c69-98a246e33899",
+ "link": "https://learn.microsoft.com/azure/devops/repos/git/review-pull-requests?view=azure-devops&tabs=browser",
"services": [
- "AVS"
+ "AzurePolicy"
],
"severity": "High",
- "subcategory": "Compliance",
- "text": "Are data processing implications (service provider / service consumer model) clear and documented",
- "waf": "Security"
+ "subcategory": "Branching Policy",
+ "text": "Pull Request Review",
+ "waf": "Operations"
},
{
- "category": "Governance",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Implement access control to the branches",
+ "guid": "7e41c77d-68cb-46a2-8ac1-9f916d697d8e",
+ "link": "https://learn.microsoft.com/azure/devops/repos/git/branch-permissions?view=azure-devops",
"services": [
- "AVS"
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Compliance",
- "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
- "waf": "Security"
+ "subcategory": "Branching Policy",
+ "text": "Access Control to the Branch",
+ "waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Perform SAST code scan",
+ "guid": "adfd27bd-e187-401a-a252-baa9b68a088c",
+ "link": "https://devblogs.microsoft.com/devops/integrate-security-into-your-developer-workflow-with-github-advanced-security-for-azure-devops/",
+ "services": [],
"severity": "High",
- "subcategory": "Monitoring",
- "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
- "waf": "Operations"
+ "subcategory": "Security",
+ "text": "Code Scan",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Understand TFVC as Code Repo",
+ "guid": "9a8f822b-8eb9-4d1b-a77f-26e5e6beba8e",
+ "link": "https://learn.microsoft.com/azure/devops/repos/tfvc/what-is-tfvc?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Practice",
+ "text": "TFVC as Code Repository",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
+ "category": "Version Control",
+ "checklist": "Azure DevOps",
+ "description": "Compare Git vs TFVC for your project",
+ "guid": "d4f3437b-c336-4d71-9f27-a71eee0b9b5d",
+ "link": "https://learn.microsoft.com/azure/devops/repos/tfvc/comparison-git-tfvc?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Practice",
+ "text": "Choose Right version control",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Set up your team management",
+ "guid": "8defd5d7-21d4-41d2-900c-807bf9eab40f",
+ "link": "https://learn.microsoft.com/azure/devops/organizations/settings/manage-teams?view=azure-devops",
+ "services": [],
"severity": "High",
- "subcategory": "Monitoring",
- "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
+ "subcategory": "Team Planning",
+ "text": "Configure your teams",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "Monitor"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Start scheduling sprints",
+ "guid": "9ed5b354-78d4-447a-a26c-2863c00f1cac",
+ "link": "https://learn.microsoft.com/azure/devops/boards/sprints/define-sprints?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
+ "subcategory": "Team Planning",
+ "text": "Configure your sprints",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Set up your work item heirarchy",
+ "guid": "699ef1d5-a83d-4e5d-b36c-1c81870a0bc5",
+ "link": "https://learn.microsoft.com/azure/devops/organizations/settings/work/customize-process-work-item-type?view=azure-devops",
+ "services": [],
"severity": "Low",
- "subcategory": "Monitoring",
- "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
+ "subcategory": "Team Planning",
+ "text": "Choose Work Item types",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "VM",
- "AzurePolicy"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "WIT Processes available in Azure DevOps",
+ "guid": "c1e43a18-658d-4285-aed6-7179b825546d",
+ "link": "https://learn.microsoft.com/azure/devops/boards/work-items/guidance/choose-process?view=azure-devops&tabs=agile-process",
+ "services": [],
"severity": "High",
- "subcategory": "Operations",
- "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "subcategory": "Team Planning",
+ "text": "Select a WIT Process",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Medium",
- "subcategory": "Operations",
- "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Use Azure Boards with GitHub",
+ "guid": "f2aee455-3afc-4833-a248-726dd68c5b5c",
+ "link": "https://learn.microsoft.com/azure/devops/cross-service/github-integration?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Tool Integration",
+ "text": "GitHub Integration",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "Backup"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Understand the methologies",
+ "guid": "2925394b-69b9-4d37-aac4-3bc68d1d7665",
+ "link": "https://www.atlassian.com/agile/scrum/agile-vs-scrum",
+ "services": [],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "subcategory": "Process Planning",
+ "text": "Understand Agile Vs Scrum",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
- "services": [
- "AVS",
- "Arc"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Create Dashboard and PowerBI reports",
+ "guid": "7246b448-564b-44dd-94a7-59c7633bd2a1",
+ "link": "https://learn.microsoft.com/azure/devops/report/dashboards/overview?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Ensure workloads running on Azure VMware Solution are hybrid managed using Azure Arc for Servers (Arc for Azure VMware Solution is in preview)",
+ "subcategory": "Reporting",
+ "text": "Dashboard",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Set up backlog",
+ "guid": "a27a764a-90be-40e3-98ee-293c1bd363ca",
+ "link": "https://learn.microsoft.com/azure/devops/boards/backlogs/set-up-your-backlog?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
+ "subcategory": "Reporting",
+ "text": "Refine your backlog",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "Azure Boards",
+ "checklist": "Azure DevOps",
+ "description": "Link your work items",
+ "guid": "aab75719-49ab-4919-9dc9-fc9d1bb84b37",
+ "link": "https://learn.microsoft.com/azure/devops/boards/queries/link-work-items-support-traceability?view=azure-devops&tabs=browser",
+ "services": [],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
+ "subcategory": "Reporting",
+ "text": "Visualize Relationships",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Operations",
- "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "View the velocity report",
+ "guid": "b5a67fcb-9ed5-4b35-978d-447a826c2863",
+ "link": "https://learn.microsoft.com/azure/devops/report/dashboards/team-velocity?view=azure-devops&tabs=in-context",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Reporting",
+ "text": "Review Team Velocity",
"waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
- "services": [
- "AVS",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
- "waf": "Security"
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Create your first pipeline",
+ "guid": "c00f1cac-699e-4f1d-9a83-de5de36c1c81",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/create-first-pipeline?view=azure-devops&tabs=java%2Ctfs-2018-2%2Cbrowser",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Continuous Integration",
+ "text": "Set up pipeline",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
- "services": [
- "AVS",
- "Backup"
- ],
- "severity": "Medium",
- "subcategory": "Backup",
- "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
- "waf": "Reliability"
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Specify events that trigger pipelines",
+ "guid": "870a0bc5-c1e4-43a1-a658-d2858ed67179",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/build/triggers?view=azure-devops",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Continuous Integration",
+ "text": "Set Build triggers",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Use YAML to create build pipeline",
+ "guid": "b825546d-f2ae-4e45-93af-c8339248726d",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/customize-pipeline?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Continuous Integration",
+ "text": "Customize YAML Pipeline",
+ "waf": "Operations"
+ },
+ {
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Use classic GUI editor to set up pipeline",
+ "guid": "d68c5b5c-2925-4394-a69b-9d379ac43bc6",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-devops&source=recommendations#define-pipelines-using-the-classic-interface",
+ "services": [],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
- "waf": "Reliability"
+ "subcategory": "Continuous Integration",
+ "text": "Use GUI for pipeline",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set up templates, parameters and expressions",
+ "guid": "8d1d7665-7246-4b44-a564-b4dd74a759c7",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes",
+ "services": [],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
- "waf": "Reliability"
+ "subcategory": "Continuous Integration",
+ "text": "Configure Templates",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set up jobs, stages and dependencies",
+ "guid": "633bd2a1-a27a-4764-a90b-e0e378ee293c",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml",
+ "services": [],
"severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
- "waf": "Reliability"
+ "subcategory": "Continuous Integration",
+ "text": "Jobs",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set up conditions and Demands",
+ "guid": "1bd363ca-aab7-4571-a49a-b9193dc9fc9d",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml%2Cstages",
+ "services": [],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
- "waf": "Reliability"
+ "subcategory": "Continuous Integration",
+ "text": "Conditions and Demands",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Define Variables",
+ "guid": "1bb84b37-b5a6-47fc-a9ed-5b35478d447a",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch",
+ "services": [],
"severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
- "waf": "Reliability"
+ "subcategory": "Continuous Integration",
+ "text": "Variables",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR",
- "ExpressRoute",
- "NVA"
- ],
- "severity": "Medium",
- "subcategory": "Disaster Recovery",
- "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?",
- "waf": "Reliability"
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set up your deployment pipeline",
+ "guid": "826c2863-c00f-41ca-a699-ef1d5a83de5d",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/create-multistage-pipeline?view=azure-devops",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Continuous Deployment",
+ "text": "Deployment Pipeline",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
- "services": [
- "AVS",
- "Backup"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Select correct branches to deploy from",
+ "guid": "e36c1c81-870a-40bc-9c1e-43a18658d285",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/release/deploy-multiple-branches?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]",
- "waf": "Reliability"
+ "subcategory": "Continuous Deployment",
+ "text": "Release branch",
+ "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
- "services": [
- "AVS",
- "Backup"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "use relevant template to deploy to azure",
+ "guid": "8ed67179-b825-4546-bf2a-ee4553afc833",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/overview-azure?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
- "waf": "Reliability"
+ "subcategory": "Continuous Deployment",
+ "text": "Deploy to Azure",
+ "waf": "Operations"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
- "services": [
- "AVS",
- "Backup"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Define Release Approvals and pre deployment checks",
+ "guid": "9248726d-d68c-45b5-a292-5394b69b9d37",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass",
+ "services": [],
"severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Deploy your backup solution outside of vSan, on Azure native components",
- "waf": "Reliability"
- },
- {
- "category": "BCDR",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Low",
- "subcategory": "Business Continuity",
- "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
- "waf": "Reliability"
+ "subcategory": "Continuous Deployment",
+ "text": "Approvals and Checks",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Low",
- "subcategory": "Deployment strategy",
- "text": "For manual deployments, all configuration and deployments must be documented",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Define Gates and post deployment checks",
+ "guid": "9ac43bc6-8d1d-4766-9724-6b448564b4dd",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/release/approvals/?view=azure-devops&tabs=yaml",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Continuous Deployment",
+ "text": "Gates",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Define Azure Function and REST API Checks",
+ "guid": "74a759c7-633b-4d2a-8a27-a764a90be0e3",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/process/invoke-checks?view=azure-devops",
+ "services": [],
"severity": "Low",
- "subcategory": "Deployment strategy",
- "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
+ "subcategory": "Continuous Deployment",
+ "text": "Azure Function Checks",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Low",
- "subcategory": "Automated Deployment",
- "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Review pipeline reports",
+ "guid": "78ee293c-1bd3-463c-aaab-7571949ab919",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/reports/pipelinereport?view=azure-devops",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Continuous Deployment",
+ "text": "Pipline Reports",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Low",
- "subcategory": "Automated Deployment",
- "text": "For automated deployments, request or reserve quota prior to starting the deployment",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "configure Trend Result widget",
+ "guid": "3dc9fc9d-1bb8-44b3-9b5a-67fcb9ed5b35",
+ "link": "https://learn.microsoft.com/azure/devops/report/dashboards/analytics-widgets?toc=%2Fazure%2Fdevops%2Fpipelines%2Ftoc.json&view=azure-devops#test-results-trend-advanced",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Analytics",
+ "text": "Pipeline Result Trend",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "services": [
- "AVS",
- "AzurePolicy"
- ],
- "severity": "Low",
- "subcategory": "Automated Deployment",
- "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Connect with WIT to visualize work",
+ "guid": "478d447a-826c-4286-9c00-f1cac699ef1d",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/integrations/configure-pipelines-work-tracking?view=azure-devops&tabs=yaml",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Analytics",
+ "text": "Work Tracking with Pipeline",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "services": [
- "AVS",
- "AKV"
- ],
- "severity": "Low",
- "subcategory": "Automated Connectivity",
- "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Understand agent pools",
+ "guid": "5a83de5d-e36c-41c8-8870-a0bc5c1e43a1",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/agents/agents?view=azure-devops&tabs=yaml%2Cbrowser",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Continuous Deployment",
+ "text": " Agents and agent pools",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "services": [
- "AVS",
- "ExpressRoute",
- "AKV"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Understand and provision Deployment Groups when required",
+ "guid": "8658d285-8ed6-4717-ab82-5546df2aee45",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/release/deployment-groups/?view=azure-devops",
+ "services": [],
"severity": "Low",
- "subcategory": "Automated Connectivity",
- "text": "Use Key vault to store secrets and authorization keys when separate Service Principles are used for deploying Azure VMware Solution and ExpressRoute",
+ "subcategory": "Continuous Deployment",
+ "text": "Deployment Groups",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Understand Kubernetes Deployment",
+ "guid": "53afc833-9248-4726-bd68-c5b5c2925394",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/ecosystems/kubernetes/deploy?view=azure-devops",
"services": [
- "AVS"
+ "AKS"
],
"severity": "Low",
- "subcategory": "Automated Connectivity",
- "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.",
+ "subcategory": "Continuous Deployment",
+ "text": "Deploy to Kubernetes",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Low",
- "subcategory": "Automated Connectivity",
- "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
- "waf": "Operations"
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Perform Dynamic Security Testing",
+ "guid": "b69b9d37-9ac4-43bc-98d1-d76657246b44",
+ "link": "https://devblogs.microsoft.com/premier-developer/azure-devops-pipelines-leveraging-owasp-zap-in-the-release-pipeline/",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "DAST Scan",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "waf": "Security"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
- "services": [
- "AVS",
- "Subscriptions"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Manage Service Connections",
+ "guid": "8564b4dd-74a7-459c-9633-bd2a1a27a764",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml",
+ "services": [],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "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",
- "waf": "Performance"
+ "subcategory": "Security",
+ "text": "Service Connections",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "Security"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set data retention policies for CI and CD",
+ "guid": "a90be0e3-78ee-4293-a1bd-363caaab7571",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/retention?view=azure-devops&tabs=yaml",
"services": [
- "Storage",
- "AVS",
"AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
- "waf": "Performance"
+ "subcategory": "Security",
+ "text": "Retention Policies",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "waf": "Security"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
- "waf": "Performance"
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set up and pay for concurrent pipelines",
+ "guid": "949ab919-3dc9-4fc9-b1bb-84b37b5a67fc",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/licensing/concurrent-jobs?view=azure-devops&tabs=ms-hosted",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Administration",
+ "text": "Parallel Pipelines",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Set pipeline permissions",
+ "guid": "b9ed5b35-478d-4447-a826-c2863c00f1ca",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/permissions?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
- "waf": "Performance"
+ "subcategory": "Security",
+ "text": "Pipeline Permissions",
+ "training": "https://learn.microsoft.com/learn/paths/implement-windows-server-iaas-virtual-machine-identity/",
+ "waf": "Security"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "Azure Pipelines",
+ "checklist": "Azure DevOps",
+ "description": "Add users to pipeline",
+ "guid": "c699ef1d-5a83-4de5-be36-c1c81870a0bc",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/set-permissions?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "Pipeline Users",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Security"
+ },
+ {
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Configure Artifacts",
+ "guid": "5c1e43a1-8658-4d28-98ed-67179b825546",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/artifacts-overview?view=azure-devops&tabs=nuget",
+ "services": [],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
- "waf": "Performance"
+ "subcategory": "Configuration",
+ "text": "Artifact In Pipeline",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "waf": "Operations"
},
{
- "category": "Platform Automation",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
- "services": [
- "AVS",
- "Monitor"
- ],
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Publish and consume artifact in pipeline",
+ "guid": "df2aee45-53af-4c83-9924-8726dd68c5b5",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops&tabs=yaml",
+ "services": [],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
+ "subcategory": "Configuration",
+ "text": "Publish and download Artifact",
+ "training": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain",
"waf": "Operations"
},
{
- "category": "Migration",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
- "services": [
- "AVS",
- "VM"
- ],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Reliability"
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Publish NuGet packages with artifacts",
+ "guid": "c2925394-b69b-49d3-99ac-43bc68d1d766",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/nuget?view=azure-devops&tabs=yaml",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Configuration",
+ "text": "NuGet",
+ "training": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "waf": "Operations"
},
{
- "category": "Migration",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Reliability"
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Publish Maven packages with artifacts",
+ "guid": "57246b44-8564-4b4d-b74a-759c7633bd2a",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/publish-maven-artifacts?view=azure-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Configuration",
+ "text": "Maven",
+ "waf": "Operations"
},
{
- "category": "Migration",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
- "services": [
- "AVS",
- "VPN"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
- "waf": "Performance"
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Publish NPM packages with artifacts",
+ "guid": "1a27a764-a90b-4e0e-978e-e293c1bd363c",
+ "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/npm?view=azure-devops&tabs=yaml",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Configuration",
+ "text": "NPM",
+ "waf": "Operations"
},
{
- "category": "Migration",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "Azure Artifact",
+ "checklist": "Azure DevOps",
+ "description": "Best Practices to work with Azure Artifact",
+ "guid": "aaab7571-949a-4b91-a3dc-9fc9d1bb84b3",
+ "link": "https://learn.microsoft.com/azure/devops/artifacts/concepts/best-practices?view=azure-devops",
+ "services": [],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
- "waf": "Performance"
+ "subcategory": "Configuration",
+ "text": "Best Practices",
+ "waf": "Operations"
},
{
- "category": "Migration",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "What is monitoring?",
+ "guid": "7b5a67fc-b9ed-45b3-9478-d447a826c286",
+ "link": "https://learn.microsoft.com/devops/operate/what-is-monitoring",
"services": [
- "AVS"
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Process",
- "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
- "waf": "Reliability"
- },
- {
- "category": "Data Storage",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Architecture",
- "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Practice",
+ "text": "What to monitor?",
+ "waf": "Operations"
},
{
- "category": "Data Storage",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "ExpressRoute"
- ],
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Progressive Exposure Strategy",
+ "guid": "3c00f1ca-c699-4ef1-b5a8-3de5de36c1c8",
+ "link": "https://learn.microsoft.com/devops/operate/safe-deployment-practices",
+ "services": [],
"severity": "Medium",
- "subcategory": "Architecture",
- "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
- "waf": "Reliability"
+ "subcategory": "Practice",
+ "text": "Safe Deployment Practices",
+ "waf": "Operations"
},
{
- "category": "Data Storage",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
- "services": [
- "Storage",
- "AVS",
- "ExpressRoute"
- ],
- "severity": "Medium",
- "subcategory": "Architecture",
- "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
- "waf": "Reliability"
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Microsoft runs reliable systems with DevOps",
+ "guid": "1870a0bc-5c1e-443a-8865-8d2858ed6717",
+ "link": "https://learn.microsoft.com/devops/operate/how-microsoft-operates-devops",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Practice",
+ "text": "Case Study",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "waf": "Operations"
},
{
- "category": "Stretched Cluster",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "services": [
- "AVS",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
- "waf": "Reliability"
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Security in DevOps",
+ "guid": "9b825546-df2a-4ee4-953a-fc8339248726",
+ "link": "https://learn.microsoft.com/devops/operate/security-in-devops",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Practice",
+ "text": "DevSecOps",
+ "waf": "Security"
},
{
- "category": "Stretched Cluster",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "services": [
- "AVS"
- ],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
- "waf": "Reliability"
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Enable DevSecops with Azure And GitHub",
+ "guid": "dd68c5b5-c292-4539-9b69-b9d379ac43bc",
+ "link": "https://learn.microsoft.com/devops/devsecops/enable-devsecops-azure-github",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Practice",
+ "text": "DevSecops",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Security"
},
{
- "category": "Stretched Cluster",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Mirror RBAC in DevOps",
+ "guid": "68d1d766-5724-46b4-9856-4b4dd74a759c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/secure/best-practices/end-to-end-governance",
"services": [
- "AVS",
- "ExpressRoute"
+ "RBAC"
],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Practice",
+ "text": "Secure DevOps Govenance",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Security"
},
{
- "category": "Stretched Cluster",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "services": [
- "AVS",
- "ExpressRoute"
- ],
- "severity": "High",
- "subcategory": "Architecture",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
- "waf": "Reliability"
+ "category": "DevOps Practice",
+ "checklist": "Azure DevOps",
+ "description": "Governance when using CI/CD",
+ "guid": "7633bd2a-1a27-4a76-9a90-be0e378ee293",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/governance/end-to-end-governance-in-azure",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Practice",
+ "text": "Azure DevOps Governance",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
},
{
- "category": "Stretched Cluster",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "services": [
- "AVS"
- ],
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
+ "services": [],
"severity": "High",
- "subcategory": "Architecture",
- "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
+ "subcategory": "High Availability",
+ "text": "Select the right Function hosting plan based on your business & SLO requirements",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Stream Analytics Review Checklist",
- "guid": "32e52e36-11c8-418b-8a0b-c511e43a18a9",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-stream_analytics_v1.docx",
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"services": [],
"severity": "High",
- "subcategory": "High Availablity ",
- "text": "Leverage FTA Resiliency Handbook for Stream Analytics",
+ "subcategory": "High Availability",
+ "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Stream Analytics Review Checklist",
- "description": "Azure Stream Analytics provides high availability (99.9% SLA) for jobs and clusters within a region, the details of which are transparent to the end customer. If failures occur within the service, per the documentation �Azure Stream Analytics guarantees exactly once event processing and at-least-once delivery of events, so events are never lost.�",
- "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
- "link": "https://azure.microsoft.com/en-in/products/stream-analytics",
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
"services": [],
"severity": "Medium",
- "subcategory": "High Availablity ",
- "text": "Understand High Availability 99% SLA and use it to plan your DR strategy",
+ "subcategory": "High Availability",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Stream Analytics Review Checklist",
- "description": "Azure Stream Analytics resources (jobs, clusters, etc.) are regional and do not provide automatic geo-failover. However, you can achieve geo-redundancy by deploying identical Stream Analytics jobs in multiple Azure regions. Each job connects to local input and output sources. It is the responsibility of your application to both send input data into the two regional inputs and reconcile between the two regional outputs.",
- "guid": "fc833934-8b26-42d6-ac5f-512925498e6d",
- "link": "https://learn.microsoft.com/azure/stream-analytics/geo-redundancy",
- "services": [],
- "severity": "Medium",
- "subcategory": "Geo Redundancy",
- "text": "Plan for Geo Redudancy of the service",
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
+ "services": [
+ "AppSvc"
+ ],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Stream Analytics Review Checklist",
- "guid": "b9d37dac-43bc-46cd-8d7a-a9b24604489a",
- "link": "https://learn.microsoft.com/azure/stream-analytics/geo-redundancy",
- "services": [],
- "severity": "Medium",
- "subcategory": "Geo Redundancy",
- "text": "Depending on your availablity requirement, configure Active/Active configuration or Active/Passive configuration ",
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
+ "services": [
+ "AppSvc"
+ ],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "services": [],
- "severity": "High",
- "subcategory": "High Availablity",
- "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "category": "BC and DR",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
+ "services": [
+ "Storage"
+ ],
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "category": "Application Deployment",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"services": [],
"severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
- "waf": "Reliability"
+ "subcategory": "CI/CD",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "waf": "Operations"
},
{
"category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
+ "service": "Cognitive Services",
"services": [],
- "severity": "High",
- "subcategory": "High Availablity",
- "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "severity": "Medium",
+ "subcategory": "Best Practice",
+ "text": "Leverage FTA HandBook for Cognitive Services",
"waf": "Reliability"
},
{
"category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
+ "service": "Cognitive Services",
"services": [
- "ACR"
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Georeplication",
- "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",
+ "subcategory": "Backup",
+ "text": "Backup Your Prompts",
"waf": "Reliability"
},
{
"category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
+ "service": "Cognitive Services",
"services": [
- "ACR"
+ "Backup",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Georeplication",
- "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",
+ "severity": "High",
+ "subcategory": "Backup",
+ "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
"waf": "Reliability"
},
{
"category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
+ "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
+ "service": "Cognitive Services",
"services": [
- "TrafficManager"
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Georeplication",
- "text": "Use Azure Traffic Manager to coordinate requests",
+ "subcategory": "Backup",
+ "text": "Backup Your ChatGPT conversations",
"waf": "Reliability"
},
{
"category": "Operations Management",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
- "services": [
- "Storage",
- "Backup",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
+ "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
+ "service": "Cognitive Services",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "DevOps",
+ "text": "CI/CD for custom speech",
"waf": "Reliability"
},
{
"category": "Operations Management",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "3687a046-7a1f-4893-9bda-43324f248116",
+ "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
+ "service": "Cognitive Services",
"services": [],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
+ "severity": "Low",
+ "subcategory": "QnA Service",
+ "text": "Move a knowledge base using export-import",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "services": [],
- "severity": "High",
- "subcategory": "Availablity Zone",
- "text": "Use zone redundant pipelines in regions that support Availability Zones",
+ "category": "BC and DR",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "services": [
+ "AppSvc"
+ ],
+ "severity": "Low",
+ "subcategory": "High Availability",
+ "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
+ "category": "BC and DR",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"services": [
+ "AppSvc",
"Backup"
],
"severity": "Medium",
- "subcategory": "DevOps Integration",
- "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
+ "subcategory": "High Availability",
+ "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "category": "BC and DR",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
"services": [
- "VM"
+ "AppSvc"
],
- "severity": "Medium",
- "subcategory": "Network",
- "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "category": "Operations",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"services": [
- "VNet"
+ "AppSvc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Network",
- "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
+ "subcategory": "Monitoring",
+ "text": "Implement health checks",
"waf": "Reliability"
},
{
- "category": "Governance and Security",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
+ "category": "Operations",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
"services": [
- "AKV"
+ "AppSvc",
+ "Backup"
],
- "severity": "Low",
- "subcategory": "Integration",
- "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "severity": "High",
+ "subcategory": "Multi-tenant service",
+ "text": "Refer to backup and restore best practices for Azure App Service",
"waf": "Reliability"
},
{
"category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
- "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
- "service": "Azure Data Explorer",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
"services": [
- "Storage",
- "Cost"
+ "AppSvc"
],
- "subcategory": "Replication",
- "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Implement Azure App Service reliability best practices",
"waf": "Reliability"
},
{
"category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
- "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
- "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
- "service": "Azure Data Explorer",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
"services": [
- "Storage"
+ "AppSvc"
],
- "subcategory": "Replication",
- "text": "To share data, explore Leader-follower cluster configuration",
+ "severity": "Low",
+ "subcategory": "High Availability",
+ "text": "Familiarize with how to move an App Service app to another region During a disaster",
"waf": "Reliability"
},
{
"category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
- "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
- "service": "Azure Data Explorer",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
"services": [
- "ASR"
+ "AppSvc"
],
- "subcategory": "Replication",
- "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Familiarize with reliability support in Azure App Service",
"waf": "Reliability"
},
{
"category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
- "service": "Azure Data Explorer",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"services": [
- "Storage",
- "RBAC"
+ "AppSvc"
],
- "subcategory": "Replication",
- "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
- "service": "Azure Data Explorer",
- "services": [],
- "subcategory": "Replication",
- "text": "Ingest data into each cluster in parallel",
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
- "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
- "service": "Azure Data Explorer",
+ "category": "Operations",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"services": [
- "ACR"
+ "AppSvc",
+ "Monitor"
],
- "subcategory": "DR Configuration",
- "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Monitor App Service instances using Health checks",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
- "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
- "service": "Azure Data Explorer",
+ "category": "Operations",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"services": [
- "ACR"
+ "AppSvc",
+ "Monitor"
],
- "subcategory": "DR Configuration",
- "text": "For critical applications, create Active-Active configuration in two paired regions",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
- "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
- "service": "Azure Data Explorer",
- "services": [],
- "subcategory": "DR Configuration",
- "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
- "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
- "service": "Azure Data Explorer",
+ "category": "Operations",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
"services": [
- "Storage",
- "ASR",
- "Cost",
- "AzurePolicy"
+ "AppSvc",
+ "Monitor"
],
- "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",
+ "severity": "Low",
+ "subcategory": "Monitoring",
+ "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
- "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"services": [
- "AzurePolicy"
+ "AppSvc",
+ "AKV"
],
- "subcategory": "IaC",
- "text": "Wrap DevOps and source control around all your code",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Data Protection",
+ "text": "Use Key Vault to store secrets",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
- "services": [],
- "subcategory": "IaC",
- "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
- "waf": "Reliability"
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "services": [
+ "Entra",
+ "AppSvc",
+ "AKV"
+ ],
+ "severity": "High",
+ "subcategory": "Data Protection",
+ "text": "Use Managed Identity to connect to Key Vault",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
- "services": [],
- "subcategory": "IaC",
- "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Reliability"
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Store the App Service TLS certificate in Key Vault.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
+ "services": [
+ "AppSvc",
+ "AKV"
+ ],
+ "severity": "High",
+ "subcategory": "Data Protection",
+ "text": "Use Key Vault to store TLS certificate.",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
- "guid": "976f32a7-30d1-6caa-c2a0-207fdc26571b",
- "link": "https://learn.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"services": [
- "Storage",
- "AVS",
- "Backup"
+ "AppSvc",
+ "Subscriptions"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
- "waf": "Reliability"
+ "subcategory": "Data Protection",
+ "text": "Isolate systems that process sensitive information",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Microsoft backup service",
- "guid": "fc8af7a1-c724-e255-c18d-4ca22a6f27f0",
- "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"services": [
- "AVS",
- "Backup"
+ "AppSvc",
+ "TrafficManager"
],
"severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Use MABS as your backup solution",
- "waf": "Reliability"
+ "subcategory": "Data Protection",
+ "text": "Do not store sensitive data on local disk",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Best practice - this is Backup, not disaster recovery",
- "guid": "be28860f-3d29-a79a-1a0e-36f1b23b36ae",
- "link": "Best practice to deploy backup in the same region as your AVS deployment",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"services": [
- "AVS",
- "Backup",
- "ASR"
+ "Entra",
+ "AppSvc"
],
"severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
- "waf": "Reliability"
+ "subcategory": "Identity and Access Control",
+ "text": "Use an established Identity Provider for authentication",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Best practice - in case AVS is unavailable",
- "guid": "4d2f79a5-4ccf-0dfc-557c-49619b99a540",
- "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
"services": [
- "AVS"
+ "Entra",
+ "AppSvc"
],
- "severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Preferably deploy MABS outside of the SDDC as native Azure IaaS",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Deploy from a trusted environment",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
- "guid": "ff431c40-962c-5182-d536-0c2f0c4ce9e0",
- "link": "Will Disaster Recovery Site Recovery, HCX Disaster Recovery, SRM or back tools be used?",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"services": [
- "AVS"
+ "Entra",
+ "AppSvc"
],
- "severity": "Medium",
- "subcategory": "Business Continuity",
- "text": "Escalation process with Microsoft in the event of a regional DR",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Disable basic authentication",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Compare SRM with HCX",
- "guid": "f379436d-3051-daa0-01fb-dc4e0e04d677",
- "link": "https://docs.microsoft.com/azure/azure-vmware/disaster-recovery-using-vmware-site-recovery-manager",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
"services": [
- "AVS",
- "ASR"
+ "Entra",
+ "AppSvc",
+ "AKV"
],
- "severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use VMware Site Recovery Manager when both sites are Azure VMware Solution",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Use Managed Identity to connect to resources",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Recovery into Azure instead of Vmware solution",
- "guid": "367f71d8-3cf6-51a0-91a5-3db3d570cc19",
- "link": "https://docs.microsoft.com/azure/site-recovery/avs-tutorial-prepare-azure",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "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": [
- "AVS",
- "ASR"
+ "Entra",
+ "AppSvc",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Identity and Access Control",
+ "text": "Pull containers using a Managed Identity",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Avoid manual tasks as much as possible",
- "guid": "ee02ada0-1887-bb3a-b84c-423f45a09ef9",
- "link": "https://docs.microsoft.com/azure/site-recovery/avs-tutorial-prepare-azure",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"services": [
- "AVS",
- "ASR"
+ "Entra",
+ "AppSvc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use Automated recovery plans with either of the Disaster solutions,",
- "waf": "Reliability"
+ "subcategory": "Logging and Monitoring",
+ "text": "Send App Service runtime logs to Log Analytics",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Any other datacenter in the same region",
- "guid": "0c2b74e5-9c28-780d-1df3-12d3de4aaa76",
- "link": "https://docs.microsoft.com/azure/azure-vmware/connect-multiple-private-clouds-same-region",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"services": [
- "AVS",
- "ASR"
+ "Entra",
+ "AppSvc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Configure a secondary disaster recovery environment",
- "waf": "Reliability"
+ "subcategory": "Logging and Monitoring",
+ "text": "Send App Service activity logs to Log Analytics",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
- "guid": "c2a34ec4-2933-4e6c-dc36-e20e67abbe3f",
- "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"services": [
- "AVS",
- "ASR"
+ "NVA",
+ "Monitor",
+ "AppSvc",
+ "VNet",
+ "Firewall"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Assign IP ranges unique to each region",
- "waf": "Reliability"
+ "subcategory": "Network Security",
+ "text": "Outbound network access should be controlled",
+ "waf": "Security"
},
{
- "category": "BCDR",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "ExpressRoute Global Reach can be used for connectivity between the primary and secondary Azure VMware Solution Private Clouds or routing must be done through network virtual appliances?",
- "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.",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
"services": [
- "AVS",
- "ASR",
- "ExpressRoute",
- "NVA"
+ "PrivateLink",
+ "Storage",
+ "NVA",
+ "AppSvc",
+ "VNet",
+ "Firewall"
],
- "severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Use Global Reach between DR regions",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Network Security",
+ "text": "Ensure a stable IP for outbound communications towards internet addresses",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "An ExR Global Reach connection will be established to the ExR circuit, no other connections",
- "guid": "a2c12df2-07fa-3edd-2cec-fda0b55fb952",
- "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-expressroute-global-reach-private-cloud",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"services": [
- "AVS",
- "VWAN"
+ "PrivateLink",
+ "AppSvc"
],
- "severity": "Medium",
- "subcategory": "Direct (no vWAN, no H&S)",
- "text": "Global Reach to ExR circuit - no Azure resources",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Inbound network access should be controlled",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use ExR to connect on-premises (other) location to Azure",
- "guid": "f62ce162-ba5a-429d-674e-fafa1af5f706",
- "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-expressroute-global-reach-private-cloud",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
"services": [
- "AVS",
- "ExpressRoute"
+ "AppGW",
+ "FrontDoor",
+ "Monitor",
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "Connect to Azure using ExR",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Use a WAF in front of App Service",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use the migration assesment tool and timeline to determine bandwidth required",
- "guid": "cf01c73b-1247-0a7a-740c-e1ea29bda340",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-introduction",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"services": [
- "AVS",
- "ExpressRoute"
+ "PrivateLink",
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "Bandwidth sizing",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Avoid for WAF to be bypassed",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "What traffic is routed through a firewall, what goes directly into Azure",
- "guid": "aab216ee-8941-315e-eada-c7e1f2243bd1",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
"services": [
- "AVS",
- "ExpressRoute"
+ "AppSvc",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "Traffic routing ",
- "waf": "Performance"
+ "subcategory": "Network Security",
+ "text": "Set minimum TLS policy to 1.2",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "AVS to ExR circuit, no traffic inspection",
- "guid": "1f956e45-f62d-5c95-3a95-3bab718907f8",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
"services": [
- "AVS",
- "ExpressRoute"
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "Global Reach ",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Use HTTPS only",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Name of the vNet and a unique address space /24 minimum",
- "guid": "91f7a87b-21ac-d712-959c-8df2ba034253",
- "link": "https://learn.microsoft.com/azure/virtual-network/quick-create-portal",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
"services": [
- "AVS",
- "VNet"
+ "AppSvc",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "VNet name & address space",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Wildcards must not be used for CORS",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Subnet must be called GatewaySubnet",
- "guid": "58a027e2-f37f-b540-45d5-e44843aba26b",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
"services": [
- "AVS",
- "VNet",
- "ExpressRoute",
- "VPN"
+ "AppSvc"
+ ],
+ "severity": "High",
+ "subcategory": "Network Security",
+ "text": "Turn off remote debugging",
+ "waf": "Security"
+ },
+ {
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
+ "services": [
+ "AppSvc",
+ "Defender"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "Gateway subnet",
- "waf": "Performance"
+ "subcategory": "Network Security",
+ "text": "Enable Defender for Cloud - Defender for App Service",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Create a VPN gateway on the hub Gateway subnet",
- "guid": "d4806549-0913-3e79-b580-ac2d3706e65a",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"services": [
- "AVS",
+ "AppGW",
+ "DDoS",
+ "EventHubs",
+ "NVA",
+ "AppSvc",
"VNet",
- "ExpressRoute",
- "VPN"
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "VPN Gateway",
- "waf": "Performance"
+ "subcategory": "Network Security",
+ "text": "Enable DDOS Protection Standard on the WAF VNet",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Create an ExR Gateway in the hub Gateway subnet.",
- "guid": "864d7a8b-7016-c769-a717-61af6bfb73d2",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
"services": [
- "AVS",
+ "PrivateLink",
+ "AppSvc",
"VNet",
- "ExpressRoute",
- "VPN"
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "ExR Gateway",
- "waf": "Performance"
+ "subcategory": "Network Security",
+ "text": "Pull containers over a Virtual Network",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "How will Internet traffic be routes, Az Firewall, NVA, Secure Hub, On-Premises firewall?",
- "guid": "cc2e11b9-7911-7da1-458c-d7fcef794aad",
- "link": "https://learn.microsoft.com/azure/azure-vmware/enable-public-internet-access",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
"services": [
- "AVS",
- "NVA"
+ "AppSvc"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Egress point",
- "waf": "Performance"
+ "subcategory": "Penetration Testing",
+ "text": "Conduct a penetration test",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Allow remote connectivity to AVS via the portal, specifically to vCenter, NSX-T and HCX",
- "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",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"services": [
- "AVS",
- "Bastion"
+ "AppSvc"
],
"severity": "Medium",
- "subcategory": "Jumpbox & Bastion",
- "text": "Remote connectivity to AVS",
- "waf": "Performance"
+ "subcategory": "Vulnerability Management",
+ "text": "Deploy validated code",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Name the jumpbox and identify the subnet where it will be hosted",
- "guid": "6f8e93a2-44b1-bb1d-28a1-4d5b3c2ea857",
- "link": "https://learn.microsoft.com/azure/bastion/tutorial-create-host-portal",
+ "category": "Security",
+ "checklist": "Azure App Service Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
"services": [
- "AVS",
- "VNet",
- "Bastion"
+ "AppSvc"
],
- "severity": "Medium",
- "subcategory": "Jumpbox & Bastion",
- "text": "Configure a jumbox and Azure Bastion",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Vulnerability Management",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Provides secure / seamless RDP/SSH connectivity to your vm's directly through the portal.",
- "guid": "ba430d58-4541-085c-3641-068c00be9bc5",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Bastion",
- "VM"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Jumpbox & Bastion",
- "text": "Security measure allowing RDP access via the portal",
- "waf": "Performance"
+ "subcategory": " Overview",
+ "text": "Consider the 'Azure security baseline for storage'",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Using a VPN to connect to Azure to enable VMware communications (HCX) (not recommended)",
- "guid": "9988598f-2a9f-6b12-9b46-488415ceb325",
- "link": "https://learn.microsoft.com/azure/azure-vmware/configure-site-to-site-vpn-gateway",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VPN"
+ "PrivateLink",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "VPN",
- "text": "Connect to Azure using a VPN",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Networking",
+ "text": "Consider using private endpoints for Azure Storage",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use the migration assesment tool and timeline to determine bandwidth required (eg 3rd party tool in link)",
- "guid": "956ce5e9-a862-fe2b-a50d-a22923569357",
- "link": "https://www.omnicalculator.com/other/data-transfer#:~:text=To%20calculate%20the%20data%20transfer%20speed%3A%201%20Download,measured%20time%20to%20find%20the%20data%20transfer%20speed.",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VPN"
+ "RBAC",
+ "Storage",
+ "Subscriptions"
],
"severity": "Medium",
- "subcategory": "VPN",
- "text": "Bandwidth sizing",
- "waf": "Performance"
+ "subcategory": "Governance",
+ "text": "Ensure older storage accounts are not using 'classic deployment model'",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "What traffic is routed through a firewall, what goes directly into Azure",
- "guid": "e095116f-0bdc-4b51-4d71-b9e469d56f59",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-networking",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VPN"
+ "Storage",
+ "Defender"
],
- "severity": "Medium",
- "subcategory": "VPN",
- "text": "Traffic routing ",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Governance",
+ "text": "Enable Microsoft Defender for all of your storage accounts",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Name and unique address space for the vWAN, name for the vWAN hub",
- "guid": "4dc480ac-cecd-39c4-fdc6-680b300716ab",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-site-to-site-portal#openvwan",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VWAN"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "vWAN hub",
- "text": "vWAN name, hub name and address space",
- "waf": "Performance"
+ "subcategory": "Data Availability",
+ "text": "Enable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Select either boh or the appropriate connection type.",
- "guid": "51d6affd-8e02-6aea-d3d4-0baf618b3076",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-point-to-site-portal",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VWAN",
- "VPN"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "vWAN hub",
- "text": "ExR and/or VPN gateway provisioned",
- "waf": "Performance"
+ "subcategory": "Confidentiality",
+ "text": "Disable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "category": "Connectivity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Add Azure firewall to vWAN (recommended)",
- "guid": "e32a4c67-3dc0-c134-1c12-52d46dcbab5b",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-expressroute-portal",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Firewall",
- "VWAN"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "vWAN hub",
- "text": "Secure vWAN",
+ "severity": "High",
+ "subcategory": "Data Availability",
+ "text": "Enable 'soft delete' for containers",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Active directory or other identity provider servers",
- "guid": "fbc47fbf-bc96-fa93-ed5d-8c9be63cd5c3",
- "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Access",
- "text": "External Identity (user accounts)",
+ "subcategory": "Confidentiality",
+ "text": "Disable 'soft delete' for containers",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Not required for LDAPS, required for Kerberos",
- "guid": "b5db7975-f6bb-8ba3-ee5f-e3e805887997",
- "link": "https://learn.microsoft.com/windows-server/identity/ad-ds/plan/understanding-active-directory-site-topology",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Access",
- "text": "If using AD domain, ensure Sites & Services has been configured",
+ "severity": "High",
+ "subcategory": "Data Availability",
+ "text": "Enable resource locks on storage accounts",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Authentication for users, must be secure.",
- "guid": "c30749c4-e2af-558c-2eb9-0b6ae84881d1",
- "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Storage",
+ "Subscriptions",
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Access",
- "text": "Use LDAPS not ldap ( vCenter)",
+ "severity": "High",
+ "subcategory": "Data Availability, Compliance",
+ "text": "Consider immutable blobs",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Authentication for users, must be secure.",
- "guid": "64cb9b5c-9edd-787e-1dd8-2b2338e51635",
- "link": "https://learn.microsoft.com/azure/azure-vmware/configure-external-identity-source-nsx-t",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Access",
- "text": "Use LDAPS not ldap (NSX-T)",
+ "severity": "High",
+ "subcategory": "Networking",
+ "text": "Require HTTPS, i.e. disable port 80 on the storage account",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "CN or SAN names, no wildcards, contains private key - CER or PFX",
- "guid": "bec285ab-037e-d629-81d1-f61dac23cd4c",
- "link": "https://youtu.be/4jvfbsrhnEs",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Security certificate installed on LDAPS servers ",
+ "severity": "High",
+ "subcategory": "Networking",
+ "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Standard Azure Roles Based Access Controls",
- "guid": "4ba394a2-3c33-104c-8e34-2dadaba9cc73",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "RBAC",
- "Entra"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "RBAC applied to Azure roles",
+ "subcategory": "Networking",
+ "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Create roles in vCenter required to meet minimum viable access guidelines",
- "guid": "b04ca129-83a9-3494-7512-347dd2d766db",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity#view-the-vcenter-server-privileges",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "AAD tokens should be favored over shared access signatures, wherever possible",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "RBAC",
- "Entra"
+ "Entra",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "RBAC model in vCenter",
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
- "guid": "8e477d2f-8004-3dd0-93d6-0aece9e1b2fb",
- "link": "Best practice",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"services": [
- "AVS",
+ "Entra",
"RBAC",
- "Entra"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "CloudAdmin role usage",
+ "subcategory": "Identity and Access Management",
+ "text": "Least privilege in IaM permissions",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "For roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
- "guid": "00e0b729-f9be-f600-8c32-5ec0e8f2ed63",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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": [
- "AVS",
- "RBAC",
- "Entra"
+ "Entra",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Security ",
- "text": "Is Privileged Identity Management implemented",
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "For the Azure VMware Solution PIM roles",
- "guid": "0842d45f-41a8-8274-1155-2f6ed554d315",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "RBAC",
- "Entra"
+ "Entra",
+ "AKV",
+ "Storage",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Security ",
- "text": "Is Privileged Identity Management audit reporting implemented",
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Best practice, also see Monitoring/Alerts",
- "guid": "915cbcd7-0640-eb7c-4162-9f33775de559",
- "link": "Best practice",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor",
- "Entra"
+ "AKV",
+ "Storage",
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Security ",
- "text": "Limit use of CloudAdmin account to emergency access only",
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Operational procedure",
- "guid": "7effa0c0-9172-e8e4-726a-67dbea8be40a",
- "link": "https://learn.microsoft.com/azure/azure-vmware/rotate-cloudadmin-credentials?tabs=azure-portal",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Entra"
+ "Entra",
+ "AKV",
+ "Storage",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Security ",
- "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
+ "subcategory": "Identity and Access Management",
+ "text": "When using storage account keys, consider enabling a 'key expiration policy'",
"waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "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)",
- "guid": "8f426fd0-d73b-d398-1f6f-df0cbe262a82",
- "link": "https://learn.microsoft.com/azure/azure-arc/vmware-vsphere/overview",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "VM",
- "Arc"
+ "Entra",
+ "Storage",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "AVS VM Management (Azure Arc)",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "Consider configuring an SAS expiration policy",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
- "guid": "11dbe773-e380-9191-1418-e886fa7a6fd0",
- "link": "https://docs.microsoft.com/azure/governance/policy/overview",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor",
+ "Entra",
+ "AKV",
+ "Storage",
"AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Azure policy",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "Consider linking SAS to a stored access policy",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
- "guid": "1e59c639-9b7e-a60b-5e93-3798c1aff5db",
- "link": "https://docs.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json#configure-locks",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"services": [
- "AVS"
+ "AKV",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Resource locks",
- "waf": "Operations"
+ "subcategory": "CI/CD",
+ "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "For manual deployments, all configuration and deployments must be documented",
- "guid": "8f2c46aa-ca1b-cad3-3ac9-213dfc0a265e",
- "link": "Make sure to create your own runbook on the deployment of AVS.",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"services": [
- "AVS"
+ "Entra",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Operations",
- "text": "Run books",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
- "guid": "86b314f9-1f1e-317a-4dfb-cf510ad4a030",
- "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "AKV"
+ "Entra",
+ "Storage",
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Operations",
- "text": "Naming conventions for auth keys",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Strive for short validity periods for ad-hoc SAS",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "For automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
- "guid": "e22a2d99-eb71-7d7c-07af-6d4cdb1d4443",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Entra",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Alerts",
- "text": "Create warning alerts for critical thresholds ",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "Apply a narrow scope to a SAS",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
- "guid": "6d02f159-627d-79bf-a931-fab6d947eda2",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Entra",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Alerts",
- "text": "Create critical alert vSAN consumption",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "Consider scoping SAS to a specific client IP address, wherever possible",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Provides platform alerts (generated by Microsoft)",
- "guid": "1cc97b39-2c7e-246f-6d73-789cfebfe951",
- "link": "https://www.virtualworkloads.com/2021/04/azure-vmware-solution-azure-service-health/",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Entra",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Alerts",
- "text": "Configured for Azure Service Health alerts and notifications",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Identity and Access Management",
+ "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
- "guid": "0962606c-e3b4-62a9-5661-e4ffd62a4509",
- "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"services": [
- "AzurePolicy",
- "AVS",
- "Backup",
- "Monitor",
- "VM"
+ "Entra",
+ "RBAC",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup policy",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Keep in mind the lead time for requesting new nodes",
- "guid": "4ec7ccfb-795e-897e-4a84-fd31c04eadc6",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor",
- "AzurePolicy"
+ "Entra",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Capacity",
- "text": "Policy around ESXi host density and efficiency",
- "waf": "Operations"
+ "subcategory": "Identity and Access Management",
+ "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Azure Cost Management can be used - one option, put AVS in it's own Subscription. ",
- "guid": "7f8f175d-13f4-5298-9e61-0bc7e9fcc279",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/govern",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor",
- "Subscriptions",
- "Cost"
+ "Storage",
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Costs",
- "text": "Ensure a good cost management process is in place for Azure VMware Solution - ",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Networking",
+ "text": "Avoid overly broad CORS policies",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Create dashboards to enable core Azure VMware Solution monitoring insights",
- "guid": "01e689e0-7c6c-b58f-37bd-4d6b9b1b9c74",
- "link": "https://docs.microsoft.com/azure/azure-portal/azure-portal-dashboards",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
"services": [
- "NetworkWatcher",
- "AVS",
- "Monitor"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Dashboard",
- "text": "Connection monitor dashboard",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Confidentiality and Encryption",
+ "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Send to an Azure Storage account or Azure EventHub for processing (direct to Log Analytics is pending)",
- "guid": "f9afdcc9-649d-d840-9fb5-a3c0edcc697d",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"services": [
- "Storage",
- "AVS",
- "Monitor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Logs & Metrics",
- "text": "Configure Azure VMware Solution logging ",
- "waf": "Operations"
+ "subcategory": "Confidentiality and Encryption",
+ "text": "Determine which/if platform encryption should be used.",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Must be on-premises, implement if available",
- "guid": "7cbac8c3-4eda-d5d9-9bda-c6b5abba9fb6",
- "link": "Is vROPS or vRealize Network Insight going to be used? ",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Logs & Metrics",
- "text": "vRealize Operations",
- "waf": "Operations"
+ "subcategory": "Confidentiality and Encryption",
+ "text": "Determine which/if client-side encryption should be used.",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
- "guid": "b243521a-644d-f865-7fb6-21f9019c0dd2",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
+ "category": "Security",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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": [
- "AVS",
- "Monitor",
- "VM"
+ "Entra",
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Logs & Metrics",
- "text": "AVS VM logging",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Between on-premises to Azure are monitored using 'connection monitor'",
- "guid": "2ca97d91-dd36-7229-b668-01036ccc3cd3",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
+ "category": "Operations Management",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
+ "service": "Azure Storage",
"services": [
- "VPN",
- "NetworkWatcher",
- "AVS",
- "Monitor",
- "ExpressRoute"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Network",
- "text": "Monitor ExpressRoute and/or VPN connections ",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Platform Version",
+ "text": "Leverage a storagev2 account type for better performance and reliability",
+ "waf": "Reliability"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "To monitor the Azure VMware Solution back-end ExpressRoute connection (Azure native to AVS)",
- "guid": "99209143-60fe-19f0-5633-8b5671277ba5",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
+ "category": "BC and DR",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor",
- "ExpressRoute"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "Network",
- "text": "Monitor from an Azure native resource to an Azure VMware Solution VM",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Availablity",
+ "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
+ "waf": "Reliability"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "To monitor end-to-end, on-premises to AVS workloads",
- "guid": "b9e5867c-57d3-036f-fb1b-3f0a71664efe",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal",
+ "category": "BC and DR",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Network",
- "text": "Monitor from an on-premises resource to an Azure VMware Solution VM",
- "waf": "Operations"
+ "subcategory": "Failover",
+ "text": "For write operation after failover, use customer-Managed Failover ",
+ "waf": "Reliability"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Track requests to Azure VMware Solution and Azure VMware Solution based workloads",
- "guid": "4af7c5f7-e5e9-bedf-a8cf-314b81735962",
- "link": "Firewall logging and alerting rules are configured (Azure Firewall or 3rd party)",
+ "category": "Operations Management",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Auditing and logging is implemented for inbound internet ",
- "waf": "Operations"
+ "subcategory": "Failover",
+ "text": "Understand Microsoft-Managed Failover details",
+ "waf": "Reliability"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
- "guid": "74be60a3-cfac-f057-eda6-3ee087e805d5",
- "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
+ "category": "Operations Management",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
+ "service": "Azure Storage",
"services": [
- "AVS",
- "Monitor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Session monitoring ",
- "waf": "Operations"
+ "subcategory": "Data Protection",
+ "text": "Enable Soft Delete",
+ "waf": "Reliability"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Enable Diagnostic and metric logging on Azure VMware Solution",
- "guid": "a434b3b5-f258-0845-cd76-d7df6ef5890e",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "Monitor"
+ "EventHubs"
],
- "severity": "Medium",
- "subcategory": "VMWare",
- "text": "Logging and diagnostics",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Data Protection",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Security"
},
{
- "category": "Monitoring",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Monitor AVS workloads (each VM in AVS)",
- "guid": "fb00b69a-83ec-ce72-446e-6c23a0cab09a",
- "link": "https://docs.microsoft.com/azure/azure-monitor/agents/agent-windows?tabs=setup-wizard",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "Monitor",
- "VM"
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "VMware",
- "text": "Log Analytics Agents deployed on Azure VMware Solution guest VM workloads",
- "waf": "Operations"
+ "subcategory": "Data Protection",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Decision on traffic flow",
- "guid": "a1354b87-e18e-bf5c-c50b-8ddf0540e971",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-hub-and-spoke",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"services": [
- "AVS"
+ "Entra",
+ "AzurePolicy",
+ "RBAC",
+ "TrafficManager",
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "North/South routing through Az Firewall or 3rd party ",
+ "subcategory": "Identity and Access Management",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Decision to route Azure to Azure traffic through Firewall, not E/W between AVS workloads (internal to AVS)",
- "guid": "29a8a499-ec31-f336-3266-0895f035e379",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-hub-and-spoke",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
"services": [
- "AVS"
+ "Entra",
+ "AKV",
+ "Storage",
+ "VM",
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "East West (Internal to Azure)",
+ "subcategory": "Identity and Access Management",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Requires a 3rd party NVA with Azure Route server - Scenario 2 (see link)",
- "guid": "ebd3cc3c-ac3d-4293-950d-cecd8445a523",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "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": [
- "AVS",
- "ARS",
- "NVA"
+ "Entra",
+ "EventHubs",
+ "RBAC"
],
- "severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "ExR without Global Reach",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Identity and Access Management",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "When route server is used, ensure no more then 200 routes are propagated from route server to ExR gateway to on-premises (ARS limit). Important when using MoN",
- "guid": "ffb5c5ca-bd89-ff1b-8b73-8a54d503d506",
- "link": "https://learn.microsoft.com/azure/route-server/route-server-faq",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "ARS"
+ "EventHubs",
+ "VNet",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Hub & Spoke",
- "text": "Route server ",
- "waf": "Operations"
+ "subcategory": "Monitoring",
+ "text": "Enable logging for security investigation. Use Azure Monitor to captured metrics and logs such as resource logs, runtime audit logs and Kafka logs",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Via on-premises, Az Firewall, 3rd Party, NSX-T pubic IP",
- "guid": "a4070dad-3def-818d-e9f7-be440d10e7de",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-design-public-internet-access",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
"services": [
- "AVS"
+ "PrivateLink",
+ "EventHubs",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Egress point(s)",
+ "subcategory": "Networking",
+ "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Az Firewall, 3rd party NVA, Application Gateway, Azure Frontdoor ",
- "guid": "e942c03d-beaa-3d9f-0526-9b26cd5e9937",
- "link": "Research and choose optimal solution for each application",
+ "category": "Security",
+ "checklist": "Azure Event Hub Review",
+ "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "AppGW",
- "FrontDoor",
- "NVA"
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Internet",
- "text": "Internet facing applications",
+ "subcategory": "Networking",
+ "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Security"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure no more then 200 routes are propagated from route server to ExR gateway to on-premises (ARS limit). Important when using MoN",
- "guid": "e778a2ec-b4d7-1d27-574c-14476b167d37",
- "link": "https://docs.microsoft.com/azure/route-server/route-server-faq#route-server-limits",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "ARS"
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Routing",
- "text": "When route server Route limit understood? ",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Leverage FTA Resillency HandBook",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "(VPN Gateway, AppGW, FrontDoor, Load balancer, VMs (etc) (Remove: enabled on ExR/VPN Gateway subnet in Azure)",
- "guid": "66c97b30-81b9-139a-cc76-dd1d94aef42a",
- "link": "https://docs.microsoft.com/azure/ddos-protection/manage-ddos-protection",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"services": [
- "DDoS",
- "LoadBalancer",
- "VNet",
- "AppGW",
- "VPN",
- "AVS",
- "ExpressRoute",
- "VM",
- "FrontDoor"
+ "EventHubs",
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Is DDoS standard protection of public facing IP addresses? ",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Zone Redudancy",
+ "text": "Leverage Availability Zones if regionally applicable",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "To manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
- "guid": "d43da920-4ecc-a4e9-dd45-a2986ce81d32",
- "link": "Best practice: Bastion or 3rd party tool",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
"services": [
- "AVS"
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Use a dedicated privileged access workstation (PAW)",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Use the Premium or Dedicated SKUs for predicable performance",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use NSX-T for inter-vmware-traffic inspection",
- "guid": "a2dac74f-5380-6e39-25e6-f13b99ece51f",
- "link": "https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.2/administration/GUID-F6685367-7AA1-4771-927E-ED77727CFDA3.html",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
"services": [
- "AVS"
+ "EventHubs",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Traffic Inspection",
- "text": "East West (Internal to AVS)",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Geo Redudancy",
+ "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Decision on whether or not to use Secure hub for E/W and Internet traffic - requires Global Reach",
- "guid": "3f621543-dfac-c471-54a6-7b2849b6909a",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "Firewall",
- "VWAN"
+ "EventHubs",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "Use Secure Hub (Azure Firewall or 3rd party)",
- "waf": "Security"
+ "subcategory": "Geo Redudancy",
+ "text": "For Business Critical Applications, use Active Active configuration",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Decision to route Azure to Azure traffic through Firewall, not E/W between AVS workloads (internal to AVS)",
- "guid": "d7af5670-1b39-d95d-6da2-8d660dfbe16b",
- "link": "https://learn.microsoft.com/azure/firewall-manager/secure-cloud-network",
+ "category": "Operations Management",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"services": [
- "AVS",
- "VWAN"
+ "EventHubs"
],
"severity": "Medium",
- "subcategory": "Virtual WAN",
- "text": "East West (Internal to Azure)",
- "waf": "Security"
+ "subcategory": "Reliability",
+ "text": "Design Resilient Event Hubs",
+ "waf": "Reliability"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "When intending to use automated scale-out, be sure to apply for sufficient Azure VMware Solution quota for the subscriptions running Azure VMware Solution",
- "guid": "7d049005-eb35-4a93-50a5-3b31a9f61161",
- "link": "https://docs.microsoft.com/azure/azure-vmware/configure-nsx-network-components-azure-portal",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"services": [
- "AVS",
- "Subscriptions"
+ "AKV",
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scale out operations planning",
- "waf": "Performance"
+ "subcategory": "Front Door",
+ "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "waf": "Operations"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
- "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": [
- "Storage",
- "AVS",
- "AzurePolicy"
- ],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "services": [],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scale in operations planning",
- "waf": "Performance"
+ "subcategory": "App delivery",
+ "text": "Perform app delivery within landing zones for both internal-facing (corp) and external-facing apps (online).",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
- "guid": "3233e49e-62ce-97f3-8737-8230e771b694",
- "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-platform-automation-and-devops#automated-scale",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scale serialized operations planning",
- "waf": "Performance"
+ "subcategory": "App Gateway",
+ "text": "Ensure you are using Application Gateway v2 SKU",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
- "guid": "68161d66-5707-319b-e77d-9217da892593",
- "link": "Best practice (testing)",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"services": [
- "AVS"
+ "LoadBalancer"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scale rd operations planning",
- "waf": "Performance"
+ "subcategory": "Load Balancer",
+ "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Define and enforce scale in/out maximum limits for your environment in the automations",
- "guid": "c32cb953-e860-f204-957a-c79d61202669",
- "link": "Operational planning - understand workload requirements",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
"services": [
- "AVS"
+ "LoadBalancer"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Scale maximum operations planning",
- "waf": "Performance"
+ "subcategory": "Load Balancer",
+ "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
- "guid": "7bd65a5e-7b5d-652d-dbea-fc6f73a42857",
- "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"services": [
- "AVS",
- "Monitor"
+ "VNet",
+ "AppGW"
],
"severity": "Medium",
- "subcategory": "Automated Scale",
- "text": "Monitor scaling operations ",
- "waf": "Performance"
+ "subcategory": "App Gateway",
+ "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Consider the use of Azure Private-Link when using other Azure Native Services",
- "guid": "95e374af-8a2a-2672-7ab7-b4a1be43ada7",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"services": [
- "AVS",
- "PrivateLink"
+ "Entra",
+ "AppGW",
+ "Subscriptions",
+ "NVA",
+ "VNet",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Private link",
- "waf": "Performance"
+ "subcategory": "App Gateway",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "category": "Other Services/Operations",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
- "guid": "71eff90d-5ad7-ac60-6244-2a6f7d3c51f2",
- "link": "Best practice",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "DDoS"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Provisioning Vmware VLANs",
- "waf": "Performance"
+ "subcategory": "App Gateway",
+ "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "In which region will AVS be deployed",
- "guid": "04e3a2f9-83b7-968a-1044-2811811a924b",
- "link": "https://learn.microsoft.com/windows-server/identity/ad-ds/plan/understanding-active-directory-site-topology",
- "services": [
- "AVS"
- ],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
+ "services": [],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Region selected",
+ "subcategory": "App Gateway",
+ "text": "Configure autoscaling with a minimum amount of instances of two.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Are there regulatory or compliance policies in play",
- "guid": "e52d1615-9cc6-565c-deb6-743ed7e90f4b",
- "link": "Internal policy or regulatory compliance",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"services": [
- "AVS",
- "AzurePolicy"
+ "AppGW",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Data residency compliant with selected regions",
+ "subcategory": "App Gateway",
+ "text": "Deploy Application Gateway across Availability Zones",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Request through the support blade",
- "guid": "92bd5ad6-441f-a983-7aa9-05dd669d760b",
- "link": "https://learn.microsoft.com/azure/migrate/concepts-azure-vmware-solution-assessment-calculation",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
"services": [
- "AVS"
+ "WAF",
+ "AzurePolicy",
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Request for number of AVS hosts submitted ",
- "waf": "Reliability"
+ "subcategory": "Front Door",
+ "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "PG approval for deployment",
- "guid": "28370f63-1cb8-2e35-907f-c5516b6954fa",
- "link": "Support request through portal or get help from Account Team",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"services": [
- "AVS"
+ "AppGW",
+ "WAF",
+ "AzurePolicy",
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Region and number of AVS nodes approved",
- "waf": "Reliability"
+ "subcategory": "App delivery",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Portal/subscription/resource providers/ Microsoft.AVS",
- "guid": "96c76997-30a6-bb92-024d-f4f93f5f57fa",
- "link": "Done through the subscription/resource providers/ AVS register in the portal",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"services": [
- "AVS",
- "Subscriptions"
+ "TrafficManager"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Resource provider for AVS registered",
+ "severity": "High",
+ "subcategory": "Traffic Manager",
+ "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Connectivity, subscription & governanace model",
- "guid": "5898e3ff-5e6b-bee1-6f85-22fee261ce63",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/enterprise-scale-landing-zone",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"services": [
- "AVS",
- "Subscriptions"
+ "Entra",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Landing zone architecture",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "App delivery",
+ "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)?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "The name of the RG where AVS will exist",
- "guid": "d0181fb8-9cb8-bf4b-f5e5-b5f9bf7ae4ea",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/manage-resource-groups-portal",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"services": [
- "AVS"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Resource group name selected",
- "waf": "Reliability"
+ "subcategory": "App delivery",
+ "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Each resource created as part of the deployment will also utilize this prefix in the name",
- "guid": "0f0d20c2-5a19-726c-de20-0984e070d9d6",
- "link": "Best practice - naming standards",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"services": [
- "AVS"
+ "WAF",
+ "AzurePolicy",
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Deployment prefix selected",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic.",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "/22 unique non-overlapping IPv4 address space",
- "guid": "7fbf2ab7-a36c-5957-c27a-67038557af2a",
- "link": "https://learn.microsoft.com/azure/azure-vmware/tutorial-network-checklist#routing-and-subnet-considerations",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
"services": [
- "AVS"
+ "TrafficManager",
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Network space for AVS management layer",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "vNets used by workloads running in AVS (non-stretched)",
- "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",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
"services": [
- "AVS",
- "VNet"
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Network space for AVS NSX-T segments",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
+ "waf": "Security"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Choose AV36, AV36P, AV52, AV36T (AV36T = Trial)",
- "guid": "946c8966-f902-6f53-4f37-00847e8895c2",
- "link": "https://azure.microsoft.com/pricing/details/azure-vmware/",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "AVS SKU (region dependent)",
+ "severity": "Low",
+ "subcategory": "Front Door",
+ "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
"waf": "Performance"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use the Azure migration assessment tool to determine the minimum number of nodes required (consider BCDR as well)",
- "guid": "31833808-26ba-9c31-416f-d54a89a17f5d",
- "link": "https://learn.microsoft.com/azure/migrate/how-to-assess",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Number of hosts to be deployed",
- "waf": "Performance"
+ "subcategory": "Front Door",
+ "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
+ "waf": "Reliability"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Understand how and if you should be using reserved instances (cost control)",
- "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",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
"services": [
- "AVS",
- "Cost"
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Reserverd Instances",
- "waf": "Cost"
+ "severity": "Low",
+ "subcategory": "Front Door",
+ "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
+ "waf": "Performance"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
- "guid": "94ac48ab-ade5-3fa7-f800-263feeb97070",
- "link": "https://docs.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"services": [
- "AVS",
- "ASR"
+ "LoadBalancer"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Capacity ",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Load Balancer",
+ "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
+ "waf": "Reliability"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Identify which of the networking scenarios make ",
- "guid": "1f9d4bd5-14b8-928c-b4cb-eb211f9b8de5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
"services": [
- "AVS"
+ "AKV",
+ "Cost",
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "Networking & Connectivity See docs describing scenrario 1 through 5",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
+ "waf": "Operations"
},
{
- "category": "Planning",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
- "guid": "070db19b-8a2a-fd6a-c39b-4488d8780da9",
- "link": "Please Check Partner Ecosystem",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Pre-deployment",
- "text": "3rd party application compatibility ",
- "waf": "Reliability"
+ "subcategory": "Front Door",
+ "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
+ "waf": "Operations"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
- "guid": "70cfbddc-d3d4-9188-77c8-1cabaefef646",
- "link": "General recommendation for storing encryption keys.",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
"services": [
- "AVS",
- "AKV"
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Encryption",
- "text": "Use Azure Key Vault with in-guest encryption ",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "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)",
- "guid": "c1a81638-18df-0ce9-a73a-4b9a8a8dd392",
- "link": "https://docs.microsoft.com/azure/azure-vmware/concepts-storage#data-at-rest-encryption",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"services": [
- "SQL",
- "AVS"
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "Encryption",
- "text": "Use in-guest encryption",
+ "subcategory": "Front Door",
+ "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use Key vault to store secrets and authorization keys when separate Service Principles are used for deploying Azure VMware Solution and ExpressRoute",
- "guid": "8d0a8f51-8d35-19cd-c2fe-4e3512fb467e",
- "link": "https://docs.microsoft.com/azure/key-vault/general/authentication",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
"services": [
- "AVS",
- "ExpressRoute",
- "AKV"
+ "FrontDoor",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Encryption",
- "text": "Keyvault use for secrets",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Older OS security patching configured for workloads running on Azure VMware Solution are eligible for ESU",
- "guid": "4f8b20e9-a2a1-f80f-af9b-8aa3b26dca08",
- "link": "https://docs.microsoft.com/windows-server/get-started/extended-security-updates-deploy",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Extended support",
- "text": "Ensure extended security update support ",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Tune the Azure Front Door WAF for your workload by configuring the WAF in Detection mode to reduce and fix false positive detections.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Use a SIEM/SOAR",
- "guid": "9bb22fec-4d00-3b95-7136-e225d0f5c63a",
- "link": "https://learn.microsoft.com/azure/sentinel/overview",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
"services": [
- "Sentinel",
- "AVS"
+ "WAF",
+ "AzurePolicy",
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Investigation",
- "text": "Enable Azure Sentinel or 3rd party SIEM ",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "MS Defender For Cloud, for workloads running on Azure VMware Solution",
- "guid": "f42b0b09-c591-238a-1580-2de3c485ebd2",
- "link": "https://learn.microsoft.com/azure/azure-vmware/azure-security-integration#prerequisites",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
"services": [
- "AVS",
- "Defender"
+ "FrontDoor",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Enable Advanced Threat Detection ",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Are the applicable policies enabled (compliance baselines added to MDfC)",
- "guid": "bcdd2348-3d0e-c6bb-1092-aa4cd1a66d6b",
- "link": "https://docs.microsoft.com/azure/azure-vmware/azure-security-integration",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
"services": [
- "AVS",
- "AzurePolicy"
+ "FrontDoor",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Policy & Regulatory Compliance",
+ "severity": "High",
+ "subcategory": "Front Door",
+ "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
"waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Azure to Azure (E/W), Azure to On-premises), AVS to Internet, AVS to Azure",
- "guid": "607c1ca9-da92-ae19-5a4c-eb1e876acbe7",
- "link": "https://techcommunity.microsoft.com/t5/azure-migration-and/firewall-integration-in-azure-vmware-solution/ba-p/2254961#:~:text=Azure%20VMware%20Solution%20customers%20have%20multiple%20security%20options,the%20box%20to%20provide%20East-West%20and%20North-South%20firewalling.",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Firewalls",
- "text": "Azure / 3rd party firewall",
+ "subcategory": "Front Door",
+ "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
"waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "To allow HCX appliance to connect/sync",
- "guid": "1d87925c-c02b-7fde-a425-7e95ad846a27",
- "link": "https://docs.vmware.com/en/VMware-Cloud-on-AWS/services/com.vmware.vmc-aws-networking-security/GUID-2CFE1654-9CC9-4EDB-A625-21317299E559.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Firewalls",
- "text": "Firewalls allow for East/West traffic inside AVS",
+ "subcategory": "Front Door",
+ "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
"waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Decision on which tool to use (SRM requires additional license - enables automation & other features)",
- "guid": "468b3495-2f6e-b65a-38ef-3ba631bcaa46",
- "link": "https://docs.vmware.com/en/VMware-HCX/4.2/hcx-user-guide/GUID-B842696B-89EF-4183-9C73-B77157F56055.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "HCX and/or SRM",
- "waf": "Reliability"
+ "subcategory": "Front Door",
+ "text": "Use a high threshold for Azure Front Door 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. ",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Read up on requirements for Service Mesh requirements and how HCX ",
- "guid": "be2ced52-da08-d366-cf7c-044c19e29509",
- "link": "https://docs.vmware.com/en/VMware-HCX/4.6/hcx-user-guide/GUID-76BCD059-A31A-4041-9105-ACFB56213E7C.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor"
],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Configuring and Managing the HCX Interconnect",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Front Door",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "If you are planning on using stretch networks ensure that your on-premises environment requirements",
- "guid": "7dcac579-fc5c-5c9c-f1f7-9b1149ff2c37",
- "link": "https://docs.vmware.com/en/VMware-HCX/4.2/hcx-user-guide/GUID-DBDB4D1B-60B6-4D16-936B-4AC632606909.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"services": [
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Restrictions and limitations for network extensions",
- "waf": "Performance"
+ "subcategory": "Front Door",
+ "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Do workloads require MoN?",
- "guid": "cf45c0b9-6c4b-3bfb-86c5-62fe54061c73",
- "link": "https://learn.microsoft.com/azure/azure-vmware/vmware-hcx-mon-guidance",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Mobility optimized networking",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "Enable the Azure Application Gateway WAF bot protection rule set. The bot rules detect good and bad bots.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Operating system level of Vmware environment",
- "guid": "b7cf11f3-b12e-5189-991a-06df5250d2ca",
- "link": "https://learn.microsoft.com/azure/site-recovery/vmware-physical-azure-support-matrix",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "On-premises pre-requisites",
- "text": "Support matrix (OS versions etc).",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Required that all switches are dynamic",
- "guid": "45fe9252-aa1b-4e30-45c6-bc02f3b76acf",
- "link": "https://docs.vmware.com/en/VMware-vSphere/7.0/vsan-network-design-guide/GUID-91E1CD6F-33A6-4AC6-BC22-3E4807296F86.html#:~:text=Migrate%20Management%20Network%201%20Add%20hosts%20to%20the,each%20host.%20...%204%20Finish%20the%20configuration.%20",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "On-premises pre-requisites",
- "text": "Standard switches converted to dynamic switches",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "Tune the Azure Application Gateway WAF in detection mode for your workload. Reduce false positive detections.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "See sections on sizing and capacity in the link.",
- "guid": "e9f6d736-ee44-e2ac-e7f9-e361f8c857f3",
- "link": "https://learn.microsoft.com/azure/azure-vmware/plan-private-cloud-deployment",
+ "ammp": true,
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "On-premises pre-requisites",
- "text": "Capacity for HCX appliance",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Check hardware restrictions to ensure compatibility with AVS/OS ",
- "guid": "1be2cdd6-15a7-9a33-aea7-113859035ce9",
- "link": "https://kb.vmware.com/s/article/2007240#:~:text=ESXi%2FESX%20hosts%20and%20compatible%20virtual%20machine%20hardware%20versions,%20Not%20Supported%20%204%20more%20rows",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
"services": [
- "AVS"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "On-premises pre-requisites",
- "text": "Hardware compatibility",
- "waf": "Operations"
+ "subcategory": "App Gateway",
+ "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.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Need to be converted",
- "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",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "VSAN RDM disks are converted - not supported.",
- "waf": "Operations"
+ "subcategory": "App Gateway",
+ "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. ",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Need to be converted",
- "guid": "eb2f9313-afb2-ab35-aa24-6d97a3cb0611",
- "link": "3rd-Party tools",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "App Gateway",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
+ "waf": "Security"
+ },
+ {
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS",
- "VM"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "VM with SCSI shared bus are not supported",
- "waf": "Operations"
+ "subcategory": "App Gateway",
+ "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.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Remove Direct IO before migration",
- "guid": "3f2a5cff-c8a6-634a-1f1b-53ef9d321381",
- "link": "Contact VMware",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS",
- "VM"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "VM with Direct IO require removing DirectPath device",
- "waf": "Operations"
+ "subcategory": "App Gateway",
+ "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.",
+ "waf": "Security"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Cannot migrate clusters ",
- "guid": "efc8a311-74f8-0252-c6a0-4bac7610e266",
- "link": "Contact VMware",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Shared VMDK files are not supported",
+ "subcategory": "App Gateway",
+ "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
"waf": "Operations"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Convert to a different format",
- "guid": "ab6c89cd-a26f-b894-fe59-61863975458e",
- "link": "Contact VMware",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
"services": [
- "Storage",
- "AVS"
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "RDM with 'physical compatibility mode' are not supported.",
+ "subcategory": "Front Door",
+ "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
"waf": "Operations"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning 'RAID-1 FTT-1' is default with Thin Provisioning",
- "guid": "7628d446-6b10-9678-9cec-f407d990de43",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS",
- "VM",
- "AzurePolicy"
+ "Sentinel",
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Default storage policy",
+ "subcategory": "App Gateway",
+ "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
"waf": "Operations"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "The default storage policy is set to RAID-1 (Mirroring) FTT-1, with Object Space Reservation set to Thin provisioning.",
- "guid": "37fef358-7ab9-43a9-542c-22673955200e",
- "link": "https://learn.microsoft.com/azure/azure-vmware/configure-storage-policy",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"services": [
- "Storage",
- "AVS",
- "VM",
- "AzurePolicy"
+ "Sentinel",
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Ensure that the appropriate VM template storage policy is used",
+ "subcategory": "Front Door",
+ "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
"waf": "Operations"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
- "guid": "ebebd109-9f9d-d85e-1b2f-d302012843b7",
- "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS",
- "AzurePolicy"
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Failure to tolerate policy",
+ "subcategory": "App Gateway",
+ "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.",
"waf": "Operations"
},
{
- "category": "VMware",
- "checklist": "Azure VMware Solution Implementation Checklist",
- "description": "ANF can be used to extend storage for Azure VMware Solution,",
- "guid": "1be821bd-4f37-216a-3e3d-2a5ac6996863",
- "link": "https://learn.microsoft.com/azure/azure-vmware/netapp-files-with-azure-vmware-solution",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
- "AVS"
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Use ANF for external storage",
+ "subcategory": "App Gateway",
+ "text": "Use WAF Policies instead of the legacy WAF configuration.",
"waf": "Operations"
},
{
- "category": "Governance",
- "checklist": "Azure Key Vault",
- "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
"services": [
- "AKV",
- "Backup"
+ "VPN",
+ "VNet",
+ "AppGW",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Deployment best practices",
- "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure Key Vault",
- "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Key Vault",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"services": [
- "AKV",
- "ACR"
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
- "waf": "Reliability"
+ "subcategory": "Front Door",
+ "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure Key Vault",
- "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
- "service": "Key Vault",
- "services": [
- "AKV"
- ],
- "severity": "Medium",
- "subcategory": "High Availability",
- "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
- "waf": "Reliability"
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "You should encrypt traffic to the backend servers.",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Azure Key Vault",
- "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
- "service": "Key Vault",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
"services": [
- "AKV",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "High Availability",
- "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "You should use a Web Application Firewall.",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
- "service": "Key Vault",
- "services": [
- "AKV",
- "Subscriptions",
- "ASR",
- "Storage",
- "Backup"
- ],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
+ "services": [],
"severity": "Medium",
- "subcategory": "Business continuity and disaster recovery",
- "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.",
- "waf": "Reliability"
+ "subcategory": "App Gateway",
+ "text": "Redirect HTTP to HTTPS",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
- "services": [
- "AKV",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "Business continuity and disaster recovery",
- "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
- "waf": "Reliability"
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
+ "waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
- "services": [
- "AKV",
- "ASR"
- ],
- "severity": "Low",
- "subcategory": "Business continuity and disaster recovery",
- "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
- "waf": "Reliability"
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "High",
+ "subcategory": "App Gateway",
+ "text": "Enable connection draining during planned service updates to prevent connection loss to existing members of the backend pool",
+ "waf": "Security"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
- "services": [
- "AKV",
- "Backup",
- "ASR"
- ],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "services": [],
"severity": "Low",
- "subcategory": "Business continuity and disaster recovery",
- "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.",
- "waf": "Reliability"
+ "subcategory": "App Gateway",
+ "text": "Create custom error pages to display a personalized user experience",
+ "waf": "Operations"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
+ "waf": "Security"
+ },
+ {
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
"services": [
- "AKV",
- "Backup",
- "ASR"
+ "FrontDoor"
],
- "severity": "Low",
- "subcategory": "Business continuity and disaster recovery",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "waf": "Performance"
},
{
- "category": "Management",
- "checklist": "Azure Key Vault",
- "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
- "service": "Key Vault",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Use transport layer load balancing",
+ "waf": "Performance"
+ },
+ {
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "App Gateway",
+ "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
+ "waf": "Security"
+ },
+ {
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"services": [
- "EventHubs",
- "AKV",
- "ASR"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "Business continuity and disaster recovery",
- "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.",
- "waf": "Reliability"
+ "subcategory": "App Gateway",
+ "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
+ "waf": "Security"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "41177955-fe8f-430b-ae72-20dc5b6880da",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/overview",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
"services": [
- "Entra"
+ "AppGW"
],
+ "severity": "Low",
+ "subcategory": "App Gateway",
+ "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
+ "waf": "Security"
+ },
+ {
+ "category": "BC and DR",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
+ "services": [],
"severity": "High",
- "subcategory": "Business",
- "text": "Understand what kind of solution you're creating, such as business-to-business (B2B), business-to-consumer (B2C), or your enterprise software, and how tenants are different from users.",
- "waf": "Operations"
+ "subcategory": "High Availability",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "2d33d1b7-697c-49f9-b944-afbeac0b2c8f",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "category": "BC and DR",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
"services": [],
"severity": "High",
- "subcategory": "Business",
- "text": "Define your tenants. Understand how many tenants you will support initially, and your growth plans.",
- "waf": "Operations"
+ "subcategory": "High Availability",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "a2111b8b-cc66-4aa2-9da6-c09fa23851b6",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/pricing-models",
+ "category": "BC and DR",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
"services": [],
"severity": "High",
- "subcategory": "Business",
- "text": "Define your pricing model and ensure it aligns with your tenants' consumption of Azure resources.",
- "waf": "Cost"
+ "subcategory": "High Availability",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "331e84a6-2d65-4359-92ff-a1870b062995",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/pricing-models",
+ "category": "BC and DR",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
+ "services": [
+ "AppSvc"
+ ],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Application Deployment",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"services": [],
"severity": "Medium",
- "subcategory": "Business",
- "text": "Understand whether you need to separate your tenants into different tiers. Tiers might have different pricing, features, performance promises, geographic locations, and so forth.",
+ "subcategory": "CI/CD",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
"waf": "Operations"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "90516b37-aab1-46ca-95bb-cc14a6a1608b",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "65285269-440c-44be-9d3e-0844276d4bdc",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foudations-playbooks-ADB_v1.docx",
"services": [],
- "severity": "Medium",
- "subcategory": "Business",
- "text": "Based on your customers' requirements, decide on the tenancy models that are appropriate for various parts of your solution.",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Best Practices",
+ "text": "Reference Databricks HA/DR playbook",
+ "waf": "Reliability"
},
{
- "category": "Business",
- "checklist": "Multitenant architecture",
- "guid": "f5d76ae1-7048-4ff5-abba-f1ca799578b9",
- "link": "https://learn.microsoft.com/azure/marketplace/plan-saas-offer",
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "89d558b9-37d3-4974-b111-2dbd7aaf12e6",
+ "link": "https://learn.microsoft.com/azure/databricks/security/secrets/secret-scopes",
"services": [
- "Entra"
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Business",
- "text": "When you're ready, sell your B2B multitenant solution using the Microsoft Commercial Marketplace.",
- "waf": "Operations"
+ "subcategory": "Backup",
+ "text": "Backup Your Workspace Configuration including ARM templates and Secret Scopes",
+ "waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "9e7cedd9-1e05-4aeb-a7b3-01fe695a394c",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/design-checklist",
- "services": [],
- "severity": "High",
- "subcategory": "Reliability",
- "text": "Review the Azure Well-Architected Reliability checklist, which is applicable to all workloads.",
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "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": [
+ "Backup",
+ "ACR"
+ ],
+ "severity": "Medium",
+ "subcategory": "Backup",
+ "text": "Share MetaData Across different Databricks Workspaces using Hive External Metastore",
"waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "e9521a55-2a7c-425c-8f3e-c38fd0c4df75",
- "link": "https://learn.microsoft.com/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor",
- "services": [],
- "severity": "High",
- "subcategory": "Reliability",
- "text": "Understand the Noisy Neighbor antipattern. Prevent individual tenants from impacting the system's availability for other tenants.",
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "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"
+ ],
+ "severity": "Medium",
+ "subcategory": "Backup",
+ "text": "Plan Disaster Recovery Strategy in Databricks using the Hive External Metastore",
"waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "2b99cb00-9abb-49b6-b11c-f2af9692f09e",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/overview",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "4b1d944a-3598-437e-b79d-6c6d3a364a5b",
+ "link": "https://www.databricks.com/blog/2021/04/20/attack-of-the-delta-clones-against-disaster-recovery-availability-complexity.html",
+ "services": [
+ "Backup"
+ ],
"severity": "Medium",
- "subcategory": "Reliability",
- "text": "Design your multitenant solution for the level of growth that you expect. But don't overengineer for unrealistic growth.",
+ "subcategory": "Backup",
+ "text": "Backup your data with deep and shallow clones",
"waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "7a634a0e-1c9d-42b1-aac2-5a5378f103f1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/business-metrics",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "description": "Download the blob using Secondary Endpoint in RAGRS Storage Account",
+ "guid": "7abae48a-bd54-4cd7-ae2e-86768357c559",
+ "link": "https://techcommunity.microsoft.com/t5/azure-paas-blog/download-the-blob-using-secondary-endpoint-in-ragrs-storage/ba-p/2403750",
+ "services": [
+ "Storage",
+ "Backup"
+ ],
"severity": "Medium",
- "subcategory": "Reliability",
- "text": "Define service-level objectives (SLOs) and optionally service-level agreements (SLAs) for your solution. SLAs and SLOs should be based on the requirements of your tenants, as well as the composite SLA of the Azure resources in your architecture.",
+ "subcategory": "Backup",
+ "text": "Backup your data to Azure Storage RA-GRS",
"waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "45beeeaf-fc59-4079-8fca-65d5724abaa7",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "675c5ee8-5b85-49c7-944c-e3b1a28b875a",
+ "link": "https://learn.microsoft.com/azure/databricks/dev-tools/index-ci-cd",
+ "services": [
+ "Backup"
+ ],
"severity": "High",
- "subcategory": "Reliability",
- "text": "Test the scale of your solution. Ensure that it performs well under all levels of load, and that it scales correctly as the number of tenants increases.",
+ "subcategory": "Backup",
+ "text": "Backup your code with DevOps",
"waf": "Reliability"
},
{
- "category": "Reliability",
- "checklist": "Multitenant architecture",
- "guid": "2ff55551-984b-4606-95eb-bfb9c8b36761",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "a1bf1038-9f03-4a4d-8ce4-63dbbbc8682a",
+ "link": "https://learn.microsoft.com/azure/databricks/administration-guide/disaster-recovery",
+ "services": [
+ "ASR"
+ ],
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Plan for Disaster recovery using Active/Active or Active/Passive Configuration",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "description": "Migration package to log all Databricks resources for backup and/or migrating to another Databricks workspace",
+ "guid": "5abc92a4-eda1-4dae-8cc8-5c47c6b781cc",
+ "link": "https://github.com/databrickslabs/migrate",
+ "services": [
+ "Backup"
+ ],
"severity": "Medium",
- "subcategory": "Reliability",
- "text": "Apply chaos engineering principles to test the reliability of your solution.",
+ "subcategory": "Migration",
+ "text": "Use Databricks Migration tools",
"waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "8238c038-8eb2-4a02-8bd5-4908c9442c1c",
- "link": "https://learn.microsoft.com/security/zero-trust",
+ "category": "Operations Management",
+ "checklist": "DataBricks Review Checklist",
+ "guid": "a0e6c465-89d5-458b-a37d-3974d1112dbd",
+ "link": "https://github.com/databrickslabs/databricks-sync",
"services": [],
+ "severity": "Low",
+ "subcategory": "Migration",
+ "text": "Use Databricks Sync",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "d7e47431-76c8-4bdb-b55b-ce619e8a03f9",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-create-service-principal?pivots=aro-azurecli",
+ "services": [
+ "Entra",
+ "RBAC"
+ ],
"severity": "High",
- "subcategory": "Security",
- "text": "Apply the Zero Trust and least privilege principles in all layers of your solution.",
+ "subcategory": "Identity",
+ "text": "Create a service principal and its role assignments before creating the ARO clusters.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "92160e00-6894-4102-97e0-615d4ed93c01",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/map-requests",
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "7879424d-6267-486d-90b9-6c97be985190",
+ "link": "https://learn.microsoft.com/azure/openshift/configure-azure-ad-ui",
"services": [
"Entra"
],
"severity": "High",
- "subcategory": "Security",
- "text": "Ensure that you can correctly map user requests to tenants. Consider including the tenant context as part of the identity system, or by using another means, like application-level tenant authorization.",
+ "subcategory": "Identity",
+ "text": "Use AAD to authenticate users in your ARO cluster.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "3c1538b4-5676-4b85-b451-432befb37b4f",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "services": [],
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "adfec5f9-a82d-46e9-a8d1-5a0c7fed5d15",
+ "link": "https://docs.openshift.com/container-platform/4.14/authentication/remove-kubeadmin.html",
+ "services": [
+ "Entra"
+ ],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Perform ongoing penetration testing and security code reviews.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "5fca45ce-cf2d-42c0-a62c-aac92ba31498",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/governance-compliance",
- "services": [],
- "severity": "High",
- "subcategory": "Security",
- "text": "Understand your tenants' compliance requirements, including data residency and any compliance or regulatory standards that they require you to meet.",
+ "subcategory": "Identity",
+ "text": "When using AAD authentication, remove kubeadmin user from the cluster.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "30adb90d-83d4-4a2e-986e-327ffe04e7a5",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/domain-names",
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "483835c9-86bb-4291-8155-a11475e39f54",
+ "link": "https://docs.openshift.com/container-platform/4.13/applications/projects/working-with-projects.html",
"services": [
- "DNS"
+ "Entra",
+ "RBAC"
],
"severity": "High",
- "subcategory": "Security",
- "text": "Correctly manage domain names and avoid vulnerabilities like dangling DNS and subdomain takeover attacks.",
+ "subcategory": "Identity",
+ "text": "Define OpenShift projects to restrict RBAC privilege and isolate workloads in your cluster.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Multitenant architecture",
- "guid": "72ded36d-c633-4e0d-bd41-799a29da3481",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/service/overview",
- "services": [],
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "0acccd97-9376-4bcd-a375-0ab2ab039da6",
+ "link": "https://docs.openshift.com/container-platform/4.13/authentication/using-rbac.html",
+ "services": [
+ "Entra",
+ "RBAC"
+ ],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Follow service-specific guidance for multitenancy.",
+ "subcategory": "Identity",
+ "text": "Define the required RBAC roles in OpenShift are scoped to either a project or a cluster.",
"waf": "Security"
},
{
- "category": "Cost Optimization",
- "checklist": "Multitenant architecture",
- "guid": "db30a9fc-9b1d-40f3-ab90-01f6a3e87fc8",
- "link": "https://learn.microsoft.com/azure/architecture/framework/cost/design-checklist",
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "d54d7c89-29db-4107-b532-5ae625ca44e4",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
"services": [
- "Cost"
+ "Entra",
+ "AKV"
],
"severity": "Medium",
- "subcategory": "Cost Optimization",
- "text": "Review the Azure Well-Architected Operational Excellence checklist, which is applicable to all workloads.",
- "waf": "Cost"
+ "subcategory": "Identity",
+ "text": "Minimize the number of users who have administrator rights and secrets access.",
+ "waf": "Security"
},
{
- "category": "Cost Optimization",
- "checklist": "Multitenant architecture",
- "guid": "8533af39-52f6-45b6-a9c3-81b2a54a31e0",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/measure-consumption",
+ "category": "Identity and Access Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "685e2223-ace8-4bb1-8307-ca5f16f154e3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
"services": [
- "Cost"
+ "Entra",
+ "RBAC"
],
- "severity": "High",
- "subcategory": "Cost Optimization",
- "text": "Ensure you can adequately measure per-tenant consumption and correlate it with your infrastructure costs.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Use Privileged Identity Management in AAD for ARO users with privileged roles.",
+ "waf": "Security"
},
{
- "category": "Cost Optimization",
- "checklist": "Multitenant architecture",
- "guid": "c851fd44-7cf1-459c-95a4-f6455d75a981",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/cost-management-allocation",
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "aa369282-9e7e-4216-8836-87af467a1f89",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"services": [
- "Monitor",
- "Cost"
+ "Entra",
+ "DDoS",
+ "Subscriptions",
+ "VNet",
+ "Firewall",
+ "WAF"
],
- "severity": "Medium",
- "subcategory": "Cost Optimization",
- "text": "Avoid antipatterns. Antipatterns include failing to track costs, tracking costs with unnecessary precision, real-time measurement, and using monitoring tools for billing.",
- "waf": "Cost"
+ "severity": "Low",
+ "subcategory": "DDoS",
+ "text": "Use Azure DDoS Network/IP Protection to protect the virtual network you use for the ARO cluster unless you use Azure Firewall or WAF in a centralized subscription",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "0d475a5a-2c0f-47ab-b1e1-701da68d3407",
- "link": "https://learn.microsoft.com/azure/architecture/checklist/data-ops",
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "35bda433-24f1-4481-8533-182aa5174269",
+ "link": "https://docs.openshift.com/container-platform/4.13/networking/routes/secured-routes.html",
"services": [],
"severity": "High",
- "subcategory": "Operational Excellence",
- "text": "Review the Azure Well-Architected Operational Excellence checklist, which is applicable to all workloads.",
- "waf": "Operations"
+ "subcategory": "Encryption",
+ "text": "All web applications you configure to use an ingress should use TLS encryption and shouldn't allow access over unencrypted HTTP.",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "9f7fa7a9-47fc-4f04-81f6-9f9e87571ed3",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenant-lifecycle",
- "services": [],
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "44008ae7-d7e4-4743-876c-8bdbf55bce61",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "services": [
+ "FrontDoor",
+ "WAF"
+ ],
"severity": "Medium",
- "subcategory": "Operational Excellence",
- "text": "Use automation to manage the tenant lifecycle, such as onboarding, deployment, provisioning, and configuration.",
- "waf": "Operations"
+ "subcategory": "Internet",
+ "text": "Use Azure Front Door with WAF to securely publish ARO applications to the internet, especially in multi-region environments.",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "e0bfceed-4f4e-492d-b9f5-898815faa363",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/updates",
- "services": [],
- "severity": "Medium",
- "subcategory": "Operational Excellence",
- "text": "Find the right balance for deploying service updates. Consider both your tenants' requirements and your own operational requirements.",
- "waf": "Operations"
- },
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "9e8a03f9-7879-4424-b626-786d60b96c97",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-secure-openshift-with-front-door",
+ "services": [
+ "PrivateLink",
+ "FrontDoor"
+ ],
+ "severity": "Medium",
+ "subcategory": "Internet",
+ "text": "If exposing an app on ARO with Azure Front Door, use private link to connect Front Door with the ARO router.",
+ "waf": "Security"
+ },
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "a3f80518-d428-4c02-b2cc-dfaef47db7e2",
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "be985190-4838-435c-a86b-b2912155a114",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-restrict-egress",
"services": [
- "Monitor"
+ "AzurePolicy",
+ "NVA",
+ "Firewall"
+ ],
+ "severity": "Medium",
+ "subcategory": "Internet",
+ "text": "If your security policy requires you to inspect all outbound internet traffic that's generated in the ARO cluster, secure egress network traffic by using Azure Firewall or an NVA.",
+ "waf": "Security"
+ },
+ {
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "75e39f54-0acc-4cd9-9937-6bcda3750ab2",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-create-private-cluster-4x",
+ "services": [
+ "AzurePolicy"
],
"severity": "High",
- "subcategory": "Operational Excellence",
- "text": "Monitor the health of the overall system, as well as each tenant.",
- "waf": "Operations"
+ "subcategory": "Private access",
+ "text": "If your security policy requires you to use a private IP address for the OpenShift API, deploy a private ARO cluster.",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "dfb42da5-f871-4953-9e5c-da6fda3f1411",
+ "category": "Network topology and connectivity",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "ab039da6-d54d-47c8-a29d-b107d5325ae6",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
"services": [
- "Monitor"
+ "PrivateLink",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Operational Excellence",
- "text": "Configure and test alerts to notify you when specific tenants are experiencing issues or are exceeding their consumption limits.",
- "waf": "Operations"
+ "subcategory": "Private access",
+ "text": "Use Azure Private Link to secure network connections to managed Azure services, including to Azure Container Registry.",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "c0c72a1b-e34d-4b3d-b808-2e49f51ce47e",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/resource-organization",
- "services": [],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "25ca44e4-685e-4222-9ace-8bb12307ca5f",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-enable-arc-enabled-clusters",
+ "services": [
+ "Monitor"
+ ],
"severity": "High",
- "subcategory": "Operational Excellence",
- "text": "Organize your Azure resources for isolation and scale.",
+ "subcategory": "Operations",
+ "text": "Establish a monitoring process using the inbuilt Prometheus, OpenShift Logging or Container Insights integration.",
"waf": "Operations"
},
{
- "category": "Operational Excellence",
- "checklist": "Multitenant architecture",
- "guid": "c5c5e22d-4b51-4cac-a980-f7aac1a4b427",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/deployment-configuration",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "16f154e3-aa36-4928-89e7-e216183687af",
+ "link": "https://docs.openshift.com/container-platform/4.13/cicd/pipelines/understanding-openshift-pipelines.html",
"services": [],
"severity": "Medium",
- "subcategory": "Operational Excellence",
- "text": "Avoid deployment and configuration antipatterns. Antipatterns include running separate versions of the solution for each tenant, hardcoding tenant-specific configurations or logic, and manual deployments.",
+ "subcategory": "Operations",
+ "text": "Automate the application delivery process through DevOps practices and CI/CD solutions, such as Pipelines/GitOps provided by OpenShift.",
"waf": "Operations"
},
{
- "category": "Performance Efficiency",
- "checklist": "Multitenant architecture",
- "guid": "f0b1fbd8-689c-4ab3-be1d-ad7607d2fbfd",
- "link": "https://learn.microsoft.com/azure/architecture/framework/scalability/performance-efficiency",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "467a1f89-35bd-4a43-924f-14811533182a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/design-principles/managed-services",
"services": [],
- "severity": "High",
- "subcategory": "Performance Efficiency",
- "text": "Review the Azure Well-Architected Performance Efficiency checklist, which is applicable to all workloads.",
- "waf": "Performance"
+ "severity": "Low",
+ "subcategory": "Operations",
+ "text": "Whenever possible, remove the service state from inside containers. Instead, use an Azure platform as a service (PaaS) that supports multiregion replication.",
+ "waf": "Operations"
},
{
- "category": "Performance Efficiency",
- "checklist": "Multitenant architecture",
- "guid": "18911c4c-934c-49a8-839a-60c092afce30",
- "link": "https://learn.microsoft.com/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "1b7da8cf-aa66-4e15-b4d5-ada97dc3e232",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-storageclass",
+ "services": [
+ "Storage"
+ ],
+ "severity": "Low",
+ "subcategory": "Operations",
+ "text": "Use RWX storage with inbuilt Azure Files storage class.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "6bb235c7-05e1-4696-bded-fa8a4c8cdec4",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/clusters/nodes-cluster-limit-ranges.html",
"services": [],
- "severity": "High",
- "subcategory": "Performance Efficiency",
- "text": "If you use shared infrastructure, plan for how you'll mitigate Noisy Neighbor concerns. Ensure that one tenant can't reduce the performance of the system for other tenants.",
+ "severity": "Medium",
+ "subcategory": "Performance",
+ "text": "Use pod requests and limits to manage the compute resources within a cluster.",
"waf": "Performance"
},
{
- "category": "Performance Efficiency",
- "checklist": "Multitenant architecture",
- "guid": "6acf7eb5-24a3-47c7-ae87-1196cd96048e",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
- "services": [
- "Storage"
- ],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "c620c30c-14ee-4b7f-9ae8-d9b3fec228e7",
+ "link": "https://docs.openshift.com/container-platform/4.13/applications/quotas/quotas-setting-per-project.html",
+ "services": [],
"severity": "Medium",
- "subcategory": "Performance Efficiency",
- "text": "Determine how you'll scale your compute, storage, networking, and other Azure resources to match the demands of your tenants.",
+ "subcategory": "Performance",
+ "text": "Enforce resource quotas on projects.",
"waf": "Performance"
},
{
- "category": "Performance Efficiency",
- "checklist": "Multitenant architecture",
- "guid": "ea55400d-f97d-45aa-b71b-34224bf91ed4",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/resource-organization",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "87ab177a-db59-4f6b-a613-334fd09dc234",
+ "link": "https://docs.openshift.com/container-platform/4.13/machine_management/applying-autoscaling.html",
"services": [],
"severity": "High",
- "subcategory": "Performance Efficiency",
- "text": "Consider each Azure resource's scale limits. Organize your resources appropriately, in order to avoid resource organization antipatterns. For example, don't over-architect your solution to work within unrealistic scale requirements.",
+ "subcategory": "Performance",
+ "text": "Define ClusterAutoScaler and MachineAutoScaler to scale machines when your cluster runs out of resources to support more deployments.",
"waf": "Performance"
},
{
- "category": "Operations Management",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "19db6128-1269-4040-a4ba-4d3e0804276d",
+ "link": "https://learn.microsoft.com/azure/openshift/support-policies-v4#supported-virtual-machine-sizes",
"services": [
- "SQL"
+ "VM"
],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage Flexible Server",
+ "severity": "High",
+ "subcategory": "Reliability",
+ "text": "Use virtual machine sizes that are large enough to contain multiple container instances so you get the benefits of increased density, but not so large that your cluster can't handle the workload of a failing node.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
- "services": [
- "SQL"
- ],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "4b98b15c-8b31-4aa5-aceb-58889135e227",
+ "link": "https://docs.openshift.com/container-platform/4.13/machine_management/deploying-machine-health-checks.html",
+ "services": [],
"severity": "High",
- "subcategory": "Best Practices",
- "text": "Leverage Availability Zones where regionally applicable",
+ "subcategory": "Reliability",
+ "text": "Deploy machine health checks to automatically repair damaged machines in a machine pool.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "896d31b6-6c67-4ba5-a119-c08e8f5d587c",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-metric-alerts",
"services": [
- "SQL"
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage Data-in replication for cross-region DR scenarios",
+ "severity": "High",
+ "subcategory": "Reliability",
+ "text": "Use an alerting system to provide notifications when things need direct action: Container Insights metric alerts or in-built Alerting UI.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "a96b96ad-8840-48f3-9273-4c876ba28021",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-resiliency",
- "services": [
- "VNet",
- "DNS"
- ],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "7e9ced16-acd1-476e-b9b2-41a998a57ae7",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview#availability-zones",
+ "services": [],
"severity": "High",
- "subcategory": "Azure Private DNS",
- "text": "Verify that Zones are linked to Vnets in multiple regions",
+ "subcategory": "Reliability",
+ "text": "Ensure that the cluster is created in a region that supports AZs and create a machine set for each AZ.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "45901465-d38e-453f-accb-d969266acca2",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-resiliency",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "7b997e71-1b7d-4a8c-baa6-6e15d4d5ada9",
+ "link": "https://docs.openshift.com/container-platform/4.13/machine_management/creating-infrastructure-machinesets.html",
"services": [
- "DNS"
+ "AKS"
],
- "severity": "High",
- "subcategory": "Azure Private DNS",
- "text": "If different Zones are used between regions, verify a plan for making sure that Zones are up to date in a DR failover situation",
+ "severity": "Low",
+ "subcategory": "Reliability",
+ "text": "Create infrastructure machine sets to hold infrastructure components. Apply specific Kubernetes labels to these machines and then update the infrastructure components to run on only those machines.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "74faa19b-f39d-495d-94c7-c8919ca1f6d5",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-traffic-manager?toc=%2Fazure%2Fdns%2Ftoc.json",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "7dc3e232-6bb2-435c-905e-1696fdedfa8a",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-backup#create-a-backup-with-velero-to-include-snapshots",
"services": [
- "ASR",
- "TrafficManager",
- "DNS"
+ "Backup"
],
"severity": "Medium",
- "subcategory": "Azure DNS",
- "text": "Plan for disaster recovery with Azure DNS and Traffic Manager",
+ "subcategory": "Reliability",
+ "text": "Create application backup and plan for restore and include persistent volumes in the backup.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "315ae524-ba34-4d45-a5e1-2139bd7bb012",
- "link": "https://learn.microsoft.com/azure/dns/private-resolver-reliability#availability-zones",
- "services": [
- "DNS"
- ],
- "severity": "Medium",
- "subcategory": "Azure DNS Resolver",
- "text": "Enable availability zones with Private Resolver",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "81c12318-1a64-4174-8583-3fb4ae3c2df7",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-priority.html",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Reliability",
+ "text": "Use pod priorities, so that in case of limited resources the most critical pods will run.",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "f7b95e06-e154-4e2a-a359-2828e6e20517",
- "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "43166c3b-cbe0-45bb-b209-d4a0da577784",
+ "link": "https://docs.openshift.com/container-platform/4.13/architecture/admission-plug-ins.html",
"services": [
- "ASR",
- "DNS"
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Azure DNS Resolver",
- "text": "Plan for failover with Private Resolvers in a Disaster Recovery",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "Regulate cluster functions using admission plug-ins, which are commonly used to enforce security policy, resource limitations, or configuration requirements.",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "2676ae46-691e-4883-9ad9-42223e138105",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-virtual-machines?toc=%2Fazure%2Fvirtual-machines%2Ftoc.json&bc=%2Fazure%2Fvirtual-machines%2Fbreadcrumb%2Ftoc.json&tabs=graph",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "24d21678-5d2f-4a56-a56a-d48408fe8273",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
"services": [
- "VM",
- "DNS"
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "VM Based DNS Service",
- "text": "Follow VM Guidance for resillency of VM",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "Store your container images in Azure Container Registry and geo-replicate the registry to each region.",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "DNS Review Checklist",
- "guid": "23081a94-1741-4583-9ff7-ad7c6d373316",
- "link": "https://www.windows-active-directory.com/azure-ad-dns-for-custom-domain-names-with-advanced-dns-settings.html",
- "services": [
- "VM",
- "DNS",
- "Entra"
- ],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "4c486ba2-80dc-4059-8cf7-5ee8e1309ccc",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-vertical-autoscaler.html",
+ "services": [],
"severity": "Medium",
- "subcategory": "VM Based DNS Service",
- "text": "IF AD based DNS, follow the Identity -> Windows Server AD path",
- "waf": "Reliability"
+ "subcategory": "Workload",
+ "text": "Optimize the CPU and memory request values, and maximize the efficiency of the cluster resources using vertical pod autoscaler.",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "d579366b-cda2-4750-aa1a-bfe9d55d14c3",
+ "link": "https://docs.openshift.com/container-platform/4.13/applications/application-health.html",
"services": [
- "AKV",
- "FrontDoor"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
- "waf": "Operations"
+ "subcategory": "Workload",
+ "text": "Add health probes to your pods to monitor application health. Make sure pods contain livenessProbe and readinessProbe. Use Startup probes to determine the point at which the application has started up.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "c4929cb1-b3d1-4325-ae12-4ba34d0685ed",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-autoscaling.html",
"services": [],
"severity": "Medium",
- "subcategory": "App delivery",
- "text": "Perform app delivery within landing zones for both internal-facing (corp) and external-facing apps (online).",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "subcategory": "Workload",
+ "text": "Scale pods to meet demand using horizontal pod autoscaler.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "dce9be3b-b0dd-4b3b-95fb-2ec14eeaa359",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-configuring.html#nodes-pods-pod-distruption-about_nodes-pods-configuring",
"services": [
- "AppGW"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Ensure you are using Application Gateway v2 SKU",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "subcategory": "Workload",
+ "text": "Use disruption budgets to ensure the required number of pod replicas exist to handle expected application load.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
- "services": [
- "LoadBalancer"
- ],
+ "category": "Operations management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "2829e2ed-b217-4367-9aff-6791b4935ada",
+ "link": "https://docs.openshift.com/container-platform/4.13/nodes/scheduling/nodes-scheduler-pod-topology-spread-constraints.html",
+ "services": [],
"severity": "Medium",
- "subcategory": "Load Balancer",
- "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
- "waf": "Security"
+ "subcategory": "Workload",
+ "text": "Use pod topology constraints to automatically schedule pods on nodes throughout the cluster.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
- "services": [
- "LoadBalancer"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "fea1dbf3-dd95-4d48-a7c8-91dcb1f7d575",
+ "link": "https://learn.microsoft.com/azure/openshift/intro-openshift#service-level-agreement",
+ "services": [],
"severity": "Medium",
- "subcategory": "Load Balancer",
- "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
- "waf": "Security"
+ "subcategory": "Availablity",
+ "text": "Leverage Current ARO SLA - 99.95 into BCDR planning",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "b95e06e1-58e2-4ea3-a92c-2de6e2065b3a",
+ "link": "https://www.redhat.com/rhdc/managed-files/pa-getting-started-azure-openshift-ebook-f20686-201911-en_0.pdf",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Cluster Design",
+ "text": "Run user workloads on the worker nodes, not the control plane nodes",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "description": "Create infrastructure machine sets to hold infrastructure components. Apply specific Kubernetes labels to these machines and then update the infrastructure components to run on only those machines",
+ "guid": "76af4a69-1e88-439a-ba46-667e13c10567",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-segregate-machinesets",
"services": [
"VNet",
- "AppGW"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "subcategory": "Cluster Design",
+ "text": "Isolate workloads into worker nodes running in individual subnets as needed",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "785c6fe9-6c96-4ad8-a44c-f3b2b38c886b",
+ "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-backup",
"services": [
- "Subscriptions",
- "VNet",
- "AppGW",
- "WAF",
- "Entra",
- "NVA"
+ "Backup"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "subcategory": "Backup",
+ "text": "Backup a cluster state for stateful workload scenarios to a paired region",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "a2c02149-9014-4a5d-9ce5-74dccbd9792a",
+ "link": "https://access.redhat.com/documentation/red_hat_openshift_container_storage/4.4/html/deploying_and_managing_openshift_container_storage_on_microsoft_azure/deploying-openshift-container-storage-on-microsoft-azure_rhocs",
"services": [
- "DDoS"
+ "Storage",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "subcategory": "Data Store",
+ "text": "If container storage is required, ensure availability across regions if needed: Using RWX storage with inbuilt Azure Files storage class. Using CSI Drivers for storage provisioning",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
+ "category": "Operations Management",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "6bcca2b4-fea1-4dbf-9dd9-5d48c7c891dc",
+ "link": "https://docs.openshift.com/aro/3/dev_guide/persistent_volumes.html",
"services": [],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Configure autoscaling with a minimum amount of instances of two.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "subcategory": "Data Store",
+ "text": "Whenever possible, move state out of containers and into external databases that support multi-region replication. Avoid Persistent Volumes",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
- "services": [
- "AppGW",
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Deploy Application Gateway across Availability Zones",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "category": "Platform Automation",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "42324ece-81c1-4231-a1a6-417415833fb4",
+ "link": "https://docs.openshift.com/container-platform/4.13/applications/deployments/route-based-deployment-strategies.html",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Workload",
+ "text": "Consider blue/green or canary strategies to deploy new releases of application.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Front Door",
- "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "category": "Platform Automation",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "ae3c2df7-4316-46c3-acbe-05bbe209d4a0",
+ "link": "https://docs.openshift.com/container-platform/4.13/cicd/gitops/understanding-openshift-gitops.html",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Workload",
+ "text": "Consider using Red Hat OpenShift GitOps. Red Hat OpenShift GitOps uses Argo CD to maintain cluster resources and support application CI/CD.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
- "services": [
- "WAF",
- "AppGW",
- "FrontDoor",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "App delivery",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "da577784-24d2-4167-a5d2-fa56c56ad484",
+ "link": "https://learn.microsoft.com/azure/openshift/support-lifecycle",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Control plane",
+ "text": "Keep your clusters on the latest OpenShift version to avoid potential security or upgrade issues.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "08fe8273-4c48-46ba-880d-c0591cf75ee8",
+ "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/quickstart-connect-cluster",
"services": [
- "TrafficManager"
+ "Arc",
+ "AKS"
],
"severity": "High",
- "subcategory": "Traffic Manager",
- "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Reliability"
+ "subcategory": "Control plane",
+ "text": "Connect Azure Red Hat OpenShift clusters to Azure Arc-enabled Kubernetes.",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "services": [
- "AVD",
- "Entra"
- ],
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "e1309ccc-d579-4366-acda-2750aa1abfe9",
+ "link": "https://docs.openshift.com/container-platform/4.10/security/encrypting-etcd.html",
+ "services": [],
"severity": "Low",
- "subcategory": "App delivery",
- "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)?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "subcategory": "Encryption",
+ "text": "For Azure Red Hat OpenShift 4 clusters, etcd data isn't encrypted by default, but it's recommended to enable etcd encryption to provide another layer of data security.",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "d55d14c3-c492-49cb-8b3d-1325ae124ba3",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
"services": [
- "Entra"
+ "Arc",
+ "Defender",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "App delivery",
- "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "subcategory": "Posture",
+ "text": "Use Microsoft Defender for Containers supported via Arc-enabled Kubernetes to secure clusters, containers, and applications.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "4d0685ed-dce9-4be3-ab0d-db3b55fb2ec1",
+ "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/tutorial-akv-secrets-provider",
"services": [
- "WAF",
- "FrontDoor",
- "AzurePolicy"
+ "AKV",
+ "Arc",
+ "AKS"
],
- "severity": "High",
- "subcategory": "Front Door",
- "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
+ "severity": "Medium",
+ "subcategory": "Secrets",
+ "text": "For applications that require access to sensitive information, use a service principal and the AKV Secrets Provider with the extension for Arc-enabled Kubernetes clusters.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "4eeaa359-2829-4e2e-bb21-73676aff6791",
+ "link": "https://learn.microsoft.com/azure/aks/developer-best-practices-pod-security#secure-pod-access-to-resources",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Workload",
+ "text": "Secure pod access to resources. Provide the least number of permissions, and avoid using root or privileged escalation.",
+ "waf": "Security"
+ },
+ {
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "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": [
- "TrafficManager",
- "FrontDoor"
+ "AzurePolicy",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Front Door",
- "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
+ "severity": "Medium",
+ "subcategory": "Workload",
+ "text": "Monitor and enforce configuration by using the Azure Policy Extension.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "15833fb4-ae3c-42df-9431-66c3bcbe05bb",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
"services": [
- "FrontDoor"
+ "Defender"
],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
+ "subcategory": "Workload",
+ "text": "Scan your images for vulnerabilities with Microsoft Defender or any other image scanning solution.",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Azure Red Hat OpenShift",
+ "guid": "e209d4a0-da57-4778-924d-216785d2fa56",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
"services": [
- "FrontDoor"
+ "Subscriptions",
+ "ACR"
],
"severity": "Low",
- "subcategory": "Front Door",
- "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
- "waf": "Performance"
+ "subcategory": "Workload",
+ "text": "Deploy a dedicated and private instance of Azure Container Registry to each landing zone subscription.",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "41177955-fe8f-430b-ae72-20dc5b6880da",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/overview",
"services": [
- "FrontDoor"
+ "Entra"
],
+ "severity": "High",
+ "subcategory": "Business",
+ "text": "Understand what kind of solution you're creating, such as business-to-business (B2B), business-to-consumer (B2C), or your enterprise software, and how tenants are different from users.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "2d33d1b7-697c-49f9-b944-afbeac0b2c8f",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Business",
+ "text": "Define your tenants. Understand how many tenants you will support initially, and your growth plans.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "a2111b8b-cc66-4aa2-9da6-c09fa23851b6",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/pricing-models",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Business",
+ "text": "Define your pricing model and ensure it aligns with your tenants' consumption of Azure resources.",
+ "waf": "Cost"
+ },
+ {
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "331e84a6-2d65-4359-92ff-a1870b062995",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/pricing-models",
+ "services": [],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
- "waf": "Reliability"
+ "subcategory": "Business",
+ "text": "Understand whether you need to separate your tenants into different tiers. Tiers might have different pricing, features, performance promises, geographic locations, and so forth.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
- "services": [
- "FrontDoor"
- ],
- "severity": "Low",
- "subcategory": "Front Door",
- "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
- "waf": "Performance"
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "90516b37-aab1-46ca-95bb-cc14a6a1608b",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Business",
+ "text": "Based on your customers' requirements, decide on the tenancy models that are appropriate for various parts of your solution.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
+ "category": "Business",
+ "checklist": "Multitenant architecture",
+ "guid": "f5d76ae1-7048-4ff5-abba-f1ca799578b9",
+ "link": "https://learn.microsoft.com/azure/marketplace/plan-saas-offer",
"services": [
- "LoadBalancer"
+ "Entra"
],
+ "severity": "Medium",
+ "subcategory": "Business",
+ "text": "When you're ready, sell your B2B multitenant solution using the Microsoft Commercial Marketplace.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "9e7cedd9-1e05-4aeb-a7b3-01fe695a394c",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/design-checklist",
+ "services": [],
"severity": "High",
- "subcategory": "Load Balancer",
- "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
+ "subcategory": "Reliability",
+ "text": "Review the Azure Well-Architected Reliability checklist, which is applicable to all workloads.",
"waf": "Reliability"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "services": [
- "AKV",
- "Cost",
- "FrontDoor"
- ],
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "e9521a55-2a7c-425c-8f3e-c38fd0c4df75",
+ "link": "https://learn.microsoft.com/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor",
+ "services": [],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
- "waf": "Operations"
+ "subcategory": "Reliability",
+ "text": "Understand the Noisy Neighbor antipattern. Prevent individual tenants from impacting the system's availability for other tenants.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor"
- ],
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "2b99cb00-9abb-49b6-b11c-f2af9692f09e",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/overview",
+ "services": [],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
- "waf": "Operations"
+ "subcategory": "Reliability",
+ "text": "Design your multitenant solution for the level of growth that you expect. But don't overengineer for unrealistic growth.",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "services": [
- "FrontDoor"
- ],
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "7a634a0e-1c9d-42b1-aac2-5a5378f103f1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/business-metrics",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Reliability",
+ "text": "Define service-level objectives (SLOs) and optionally service-level agreements (SLAs) for your solution. SLAs and SLOs should be based on the requirements of your tenants, as well as the composite SLA of the Azure resources in your architecture.",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "45beeeaf-fc59-4079-8fca-65d5724abaa7",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
+ "services": [],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
- "waf": "Security"
+ "subcategory": "Reliability",
+ "text": "Test the scale of your solution. Ensure that it performs well under all levels of load, and that it scales correctly as the number of tenants increases.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
- "services": [
- "FrontDoor"
- ],
+ "category": "Reliability",
+ "checklist": "Multitenant architecture",
+ "guid": "2ff55551-984b-4606-95eb-bfb9c8b36761",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
+ "services": [],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
- "waf": "Security"
+ "subcategory": "Reliability",
+ "text": "Apply chaos engineering principles to test the reliability of your solution.",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor"
- ],
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "8238c038-8eb2-4a02-8bd5-4908c9442c1c",
+ "link": "https://learn.microsoft.com/security/zero-trust",
+ "services": [],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
+ "subcategory": "Security",
+ "text": "Apply the Zero Trust and least privilege principles in all layers of your solution.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "92160e00-6894-4102-97e0-615d4ed93c01",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/map-requests",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra"
],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
+ "subcategory": "Security",
+ "text": "Ensure that you can correctly map user requests to tenants. Consider including the tenant context as part of the identity system, or by using another means, like application-level tenant authorization.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Front Door",
- "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "3c1538b4-5676-4b85-b451-432befb37b4f",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Perform ongoing penetration testing and security code reviews.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor"
- ],
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "5fca45ce-cf2d-42c0-a62c-aac92ba31498",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/governance-compliance",
+ "services": [],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
+ "subcategory": "Security",
+ "text": "Understand your tenants' compliance requirements, including data residency and any compliance or regulatory standards that they require you to meet.",
"waf": "Security"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "30adb90d-83d4-4a2e-986e-327ffe04e7a5",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/domain-names",
"services": [
- "WAF",
- "FrontDoor"
+ "DNS"
],
"severity": "High",
- "subcategory": "Front Door",
- "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
+ "subcategory": "Security",
+ "text": "Correctly manage domain names and avoid vulnerabilities like dangling DNS and subdomain takeover attacks.",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor"
- ],
+ "category": "Security",
+ "checklist": "Multitenant architecture",
+ "guid": "72ded36d-c633-4e0d-bd41-799a29da3481",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/service/overview",
+ "services": [],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
+ "subcategory": "Security",
+ "text": "Follow service-specific guidance for multitenancy.",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
+ "category": "Cost Optimization",
+ "checklist": "Multitenant architecture",
+ "guid": "db30a9fc-9b1d-40f3-ab90-01f6a3e87fc8",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/cost/design-checklist",
"services": [
- "WAF",
- "FrontDoor"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
- "waf": "Security"
+ "subcategory": "Cost Optimization",
+ "text": "Review the Azure Well-Architected Operational Excellence checklist, which is applicable to all workloads.",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "category": "Cost Optimization",
+ "checklist": "Multitenant architecture",
+ "guid": "8533af39-52f6-45b6-a9c3-81b2a54a31e0",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/measure-consumption",
"services": [
- "WAF",
- "FrontDoor"
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Front Door",
- "text": "Use a high threshold for Azure Front Door 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. ",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Cost Optimization",
+ "text": "Ensure you can adequately measure per-tenant consumption and correlate it with your infrastructure costs.",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
+ "category": "Cost Optimization",
+ "checklist": "Multitenant architecture",
+ "guid": "c851fd44-7cf1-459c-95a4-f6455d75a981",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/cost-management-allocation",
"services": [
- "FrontDoor"
+ "Cost",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Front Door",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Cost Optimization",
+ "text": "Avoid antipatterns. Antipatterns include failing to track costs, tracking costs with unnecessary precision, real-time measurement, and using monitoring tools for billing.",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
- "services": [
- "WAF",
- "FrontDoor"
- ],
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "0d475a5a-2c0f-47ab-b1e1-701da68d3407",
+ "link": "https://learn.microsoft.com/azure/architecture/checklist/data-ops",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Operational Excellence",
+ "text": "Review the Azure Well-Architected Operational Excellence checklist, which is applicable to all workloads.",
+ "waf": "Operations"
+ },
+ {
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "9f7fa7a9-47fc-4f04-81f6-9f9e87571ed3",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenant-lifecycle",
+ "services": [],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
- "waf": "Security"
+ "subcategory": "Operational Excellence",
+ "text": "Use automation to manage the tenant lifecycle, such as onboarding, deployment, provisioning, and configuration.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "services": [
- "WAF",
- "AppGW"
- ],
- "severity": "High",
- "subcategory": "App Gateway",
- "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
- "waf": "Security"
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "e0bfceed-4f4e-492d-b9f5-898815faa363",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/updates",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Operational Excellence",
+ "text": "Find the right balance for deploying service updates. Consider both your tenants' requirements and your own operational requirements.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "a3f80518-d428-4c02-b2cc-dfaef47db7e2",
"services": [
- "WAF",
- "AppGW",
- "AzurePolicy"
+ "Monitor"
],
"severity": "High",
- "subcategory": "App Gateway",
- "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
- "waf": "Security"
+ "subcategory": "Operational Excellence",
+ "text": "Monitor the health of the overall system, as well as each tenant.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "dfb42da5-f871-4953-9e5c-da6fda3f1411",
"services": [
- "WAF",
- "AppGW"
+ "Monitor"
],
- "severity": "High",
- "subcategory": "App Gateway",
- "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Operational Excellence",
+ "text": "Configure and test alerts to notify you when specific tenants are experiencing issues or are exceeding their consumption limits.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
- "services": [
- "WAF",
- "AppGW",
- "AzurePolicy"
- ],
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "c0c72a1b-e34d-4b3d-b808-2e49f51ce47e",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/resource-organization",
+ "services": [],
"severity": "High",
- "subcategory": "App Gateway",
- "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
- "waf": "Security"
+ "subcategory": "Operational Excellence",
+ "text": "Organize your Azure resources for isolation and scale.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
- "services": [
- "WAF",
- "AppGW"
- ],
+ "category": "Operational Excellence",
+ "checklist": "Multitenant architecture",
+ "guid": "c5c5e22d-4b51-4cac-a980-f7aac1a4b427",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/deployment-configuration",
+ "services": [],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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.",
- "waf": "Security"
+ "subcategory": "Operational Excellence",
+ "text": "Avoid deployment and configuration antipatterns. Antipatterns include running separate versions of the solution for each tenant, hardcoding tenant-specific configurations or logic, and manual deployments.",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
+ "category": "Performance Efficiency",
+ "checklist": "Multitenant architecture",
+ "guid": "f0b1fbd8-689c-4ab3-be1d-ad7607d2fbfd",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/scalability/performance-efficiency",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Performance Efficiency",
+ "text": "Review the Azure Well-Architected Performance Efficiency checklist, which is applicable to all workloads.",
+ "waf": "Performance"
+ },
+ {
+ "category": "Performance Efficiency",
+ "checklist": "Multitenant architecture",
+ "guid": "18911c4c-934c-49a8-839a-60c092afce30",
+ "link": "https://learn.microsoft.com/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Performance Efficiency",
+ "text": "If you use shared infrastructure, plan for how you'll mitigate Noisy Neighbor concerns. Ensure that one tenant can't reduce the performance of the system for other tenants.",
+ "waf": "Performance"
+ },
+ {
+ "category": "Performance Efficiency",
+ "checklist": "Multitenant architecture",
+ "guid": "6acf7eb5-24a3-47c7-ae87-1196cd96048e",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/compute",
"services": [
- "WAF",
- "AppGW"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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. ",
- "waf": "Security"
+ "subcategory": "Performance Efficiency",
+ "text": "Determine how you'll scale your compute, storage, networking, and other Azure resources to match the demands of your tenants.",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
+ "category": "Performance Efficiency",
+ "checklist": "Multitenant architecture",
+ "guid": "ea55400d-f97d-45aa-b71b-34224bf91ed4",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/resource-organization",
"services": [],
- "severity": "Low",
- "subcategory": "App Gateway",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Performance Efficiency",
+ "text": "Consider each Azure resource's scale limits. Organize your resources appropriately, in order to avoid resource organization antipatterns. For example, don't over-architect your solution to work within unrealistic scale requirements.",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "9f519499-5820-4060-88fe-cab4538c9dd0",
+ "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements",
"services": [
- "WAF",
- "AppGW"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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.",
- "waf": "Security"
+ "subcategory": "Physical",
+ "text": "All planned storage pools should use direct-attached storage (SATA, SAS, NVMe)",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "f7c015e0-7d97-4283-b006-567afeb2b5ca",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/drive-symmetry-considerations#understand-capacity-imbalance",
"services": [
- "WAF",
- "AppGW"
+ "Storage",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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.",
- "waf": "Security"
+ "subcategory": "Physical",
+ "text": "Disks are symmetrical across all nodes",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "f785b143-2c1e-4466-9baa-dde8ba4c7aaa",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/fault-tolerance#parity",
"services": [
- "WAF",
- "AppGW"
+ "Backup",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
- "waf": "Operations"
+ "subcategory": "S2D",
+ "text": "Parity type disk redundancy should only be used for low I/O volumes (backup/archive)",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8a705965-9840-43cc-93b3-06d089406bb4",
+ "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements#physical-deployments",
"services": [
- "WAF",
- "FrontDoor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
- "waf": "Operations"
+ "subcategory": "S2D",
+ "text": "Ensure there at least 2 capacity disks with available capacity in the Storage Pool",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "2a4f629a-d623-4610-a8e3-d6fd66057d8e",
+ "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/delimit-volume-allocation",
"services": [
- "Sentinel",
- "WAF",
- "AppGW"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "S2D",
+ "text": "'Delimited allocation' has been considered to improve volume resiliency in a multi-node failure",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "960eb9be-1f0f-4fc1-9b31-fcf1cf9e34e6",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/plan-volumes#choosing-how-many-volumes-to-create",
"services": [
- "Sentinel",
- "WAF",
- "FrontDoor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "subcategory": "S2D",
+ "text": "CSVs are created in multiples of node count",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "859ba2b9-a3a8-4ca1-bb61-165effbf1c03",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/cache",
"services": [
- "WAF",
- "AppGW"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "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.",
- "waf": "Operations"
+ "subcategory": "S2D",
+ "text": "If a cache tier is implemented, the number of capacity drives is a multiple of the number of cache drives",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "d8a65f05-db06-461d-81dc-7899ad3f8f1e",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/plan-volumes#reserve-capacity",
"services": [
- "WAF",
- "AzurePolicy"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Use WAF Policies instead of the legacy WAF configuration.",
- "waf": "Operations"
+ "subcategory": "S2D",
+ "text": "A minimum of 1 type of each disk type per node has been factored as a reserve disk",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "description": "VMFleet is a tool that can be used to measure the performance of a storage subsystem, best used to baseline performance prior to workload deployment",
+ "guid": "9d138f1d-5363-476e-bbd7-acfa500bdc0c",
+ "link": "https://github.com/microsoft/diskspd/wiki/VMFleet",
"services": [
- "VNet",
- "AppGW",
- "ExpressRoute",
- "VPN"
+ "Storage"
+ ],
+ "severity": "Low",
+ "subcategory": "S2D",
+ "text": "VMFleet has been run prior to workload deployment to baseline storage performance",
+ "waf": "Performance"
+ },
+ {
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "13c12e2a-c938-4dd1-9223-507d5e17f9c5",
+ "services": [
+ "Storage"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
- "waf": "Security"
+ "subcategory": "Host OS",
+ "text": "OS drives use a dedicated storage controller",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
+ "category": "Storage",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "a631e7dc-8879-45bd-b0a7-e5927b805428",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/use-csv-cache",
"services": [
- "FrontDoor"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Front Door",
- "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
- "waf": "Security"
+ "subcategory": "Host OS",
+ "text": "CSV in-memory read caching is enabled and properly configured",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
- "services": [],
- "severity": "High",
- "subcategory": "App Gateway",
- "text": "You should encrypt traffic to the backend servers.",
- "waf": "Security"
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "c062cd9a-f1db-4f83-aab3-9cb03f56c140",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/host-network-requirements#switch-embedded-teaming-set",
+ "services": [
+ "ACR"
+ ],
+ "severity": "Medium",
+ "subcategory": "Host",
+ "text": "NICs are symmetrical across nodes",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "ea8054db-a558-4533-80c8-5d9cf447ba19",
"services": [
- "WAF"
+ "Storage"
],
"severity": "High",
- "subcategory": "App Gateway",
- "text": "You should use a Web Application Firewall.",
- "waf": "Security"
+ "subcategory": "Host",
+ "text": "Storage networking is redundant",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "15d976c5-e267-49a1-8b00-62010bfa5188",
+ "link": "https://learn.microsoft.com/azure-stack/hci/deploy/network-atc",
"services": [],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Redirect HTTP to HTTPS",
- "waf": "Security"
+ "subcategory": "Host",
+ "text": "Host networking configuration is managed by Network ATC and intents are healthy",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "676c53ad-b29a-4de1-9d03-d7d2674405b8",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/network-hud-overview",
"services": [],
- "severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Host",
+ "text": "Network HUD has been configured",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
- "services": [],
- "severity": "High",
- "subcategory": "App Gateway",
- "text": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
- "waf": "Security"
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8f6d58d9-6c1a-4ec1-b2d7-b2c6ba8f3949",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/host-network-requirements",
+ "services": [
+ "Storage",
+ "VNet"
+ ],
+ "severity": "Medium",
+ "subcategory": "Host",
+ "text": "Storage NICs are assigned static IP addresses on separate subnets and VLANs",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "824e53ec-953e-40c2-a6b8-52970b5b0f74",
+ "link": "https://learn.microsoft.com/azure-stack/hci/plan/two-node-switched-converged",
"services": [],
- "severity": "Low",
- "subcategory": "App Gateway",
- "text": "Create custom error pages to display a personalized user experience",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Host",
+ "text": "For switchless designs, dual link full mesh connectivity has been implemented",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
- "services": [],
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "dbc85d0e-0ebd-4589-a789-0fa8ceb1d0f0",
+ "link": "https://learn.microsoft.com/azure-stack/hci/concepts/physical-network-requirements#using-switchless",
+ "services": [
+ "Storage"
+ ],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
- "waf": "Security"
+ "subcategory": "Host",
+ "text": "If the cluster is made up of more than 3 nodes, a switched storage network has been implemented",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "603c6d71-59d2-419c-a312-8edc6e799c6a",
"services": [
- "FrontDoor"
+ "Storage"
],
- "severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "severity": "High",
+ "subcategory": "Host",
+ "text": "RDMA is enabled on the Storage networking",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "9e260eae-bca1-4827-a259-76ee63fda8d6",
+ "link": "https://github.com/microsoft/SDN/blob/master/Diagnostics/Test-Rdma.ps1",
"services": [],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Use transport layer load balancing",
+ "subcategory": "Host",
+ "text": "Test-RDMA.ps1 has been run to validate the RDMA configuration",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
- "services": [],
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "description": "This ensures that Management traffic is not exposed to the VM traffic",
+ "guid": "abc85d0e-0ebd-4589-a777-0fa8ceb1d0f0",
+ "link": "",
+ "services": [
+ "VM"
+ ],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
+ "subcategory": "Host",
+ "text": "If a VMSwitch is shared for Compute and Management traffic, require that Management traffic is tagged with a VLAN ID",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "description": "This ensures you have at least 3 NCs active at all times during NC upgrades.",
+ "guid": "eb36f5f4-0fa7-4a2c-85f3-1b1c7c7817c0",
"services": [
- "Entra"
+ "VM"
],
"severity": "Medium",
- "subcategory": "App Gateway",
- "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
- "waf": "Security"
+ "subcategory": "SDN",
+ "text": "There are at least 3 Network Controller VMs deployed",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8bc78c85-6028-4a43-af2d-082a0a344909",
+ "link": "https://learn.microsoft.com/windows-server/networking/sdn/manage/update-backup-restore",
"services": [
- "AppGW"
+ "Backup"
],
- "severity": "Low",
- "subcategory": "App Gateway",
- "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "SDN",
+ "text": "Backups of SDN infrastructure are configured and tested",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "51eaa4b6-b9a7-43e1-a7dc-634d3107bc6d",
"services": [
- "Entra"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Entra ID",
- "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
- "waf": "Reliability"
+ "subcategory": "Cluster",
+ "text": "SCOM Managed Instance has been considered for more complex monitoring and alerting scenarios",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "831f5aca-99ef-41e7-8263-9509f5093b43",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/setup-hci-system-alerts",
"services": [
- "Entra"
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "AAD B2C",
- "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Cluster",
+ "text": "Alerts have been configured for the cluster, either using Azure Monitor, SCOM, or a third-party solution",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "f95d0e7e-9f61-476d-bf65-59f2454d1d39",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/monitor-hci-single?tabs=22h2-and-later",
"services": [
- "Entra"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "AAD B2C",
- "text": "Custom brand assets should be hosted on a CDN",
- "waf": "Performance"
+ "subcategory": "Cluster",
+ "text": "Insights has been enabled at the cluster level and all nodes are reporting data",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "f4250fcb-ff53-40c9-b304-3560464fd90c",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/monitor-hci-single?tabs=22h2-and-later",
"services": [
- "Entra"
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "AAD B2C",
- "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Cluster",
+ "text": "Azure Monitoring Agent has been deployed to hosts and an appropriate Data Collection Rule has been configured",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "6143af1d-0d1a-4163-b1c9-662f7459bb98",
"services": [
- "VM",
- "Entra"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Windows Server AD",
- "text": "Follow VM rules for high availability on the VM level (premium disks, two or more in a region, in different availability zones)",
- "waf": "Reliability"
+ "subcategory": "Hardware",
+ "text": "Relevant hardware monitoring has been configured",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "9cbdf225-549a-41cf-9c97-794766a6f2b0",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/health-service-overview",
"services": [
- "Entra"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Windows Server AD",
- "text": "Don't replicate! Replication can create issues with directory synchronization",
- "waf": "Reliability"
+ "subcategory": "Hardware",
+ "text": "Relevant hardware alerting has been configured",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "c0da5bbd-0f0d-4a26-98ec-38c9cc42b323",
"services": [
- "Entra"
+ "VM"
],
- "severity": "Medium",
- "subcategory": "Windows Server AD",
- "text": "Have active-active for multi-regions",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "VM Management - Resource Bridge",
+ "text": "The Azure CLI has been installed on every node to enable RB management from WAC",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "a8ecf23c-c048-4fa9-b87b-51ebfb409863",
"services": [
- "Entra"
+ "VM"
],
- "severity": "Medium",
- "subcategory": "Entra Domain Services",
- "text": "Add Azure AD Domain service stamps to additional regions and locations",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "VM Management - Resource Bridge",
+ "text": "DHCP is available in the cluster to support Guest Configuration at VM deployment from Azure",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "category": "Backup and Disaster Recovery",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "074541e3-fe08-458a-8062-32d13dcc10c6",
+ "link": "https://learn.microsoft.com/azure/backup/back-up-azure-stack-hyperconverged-infrastructure-virtual-machines",
"services": [
- "Entra"
+ "Backup",
+ "VM",
+ "ASR"
],
- "severity": "Medium",
- "subcategory": "Entra Domain Services",
- "text": "Use Replica Sets for DR",
+ "severity": "High",
+ "subcategory": "VM",
+ "text": "Backups of HCI VMs have been configured using MABS or a third-party solution",
+ "waf": "Operations"
+ },
+ {
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "48f7ae57-1035-4101-8a38-fbe163d03e8a",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Cluster Configuration",
+ "text": "Cluster configuration or a configuration script has been documented and maintained",
+ "waf": "Operations"
+ },
+ {
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "f2a6a19a-ffe6-444d-badb-cb336c8e7b50",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/witness",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Cluster Configuration",
+ "text": "A cluster witness has been configured for clusters with less than 5 nodes",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "974a759c-763e-47d2-9161-3a7649907e0e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ASB_v1.docx",
- "services": [
- "ServiceBus"
- ],
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "a47339fe-62c5-44a0-bb83-3d46ef16292f",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/update-cluster",
+ "services": [],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage FTA Handbook",
- "waf": "Reliability"
+ "subcategory": "Cluster Configuration",
+ "text": "Cluster-Aware Updating has been configured for Windows and hardware updates (if available)",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "description": "This will be turned on automatically for a new SB namespace created from the portal with the Premium SKUs in a zone-enabled region. Both the Service Bus metadata and the messages data are replicated across datacenters in the availability zones configuration",
- "guid": "338ee253-c17d-432e-aaaa-b7571549ab81",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#availability-zones",
- "services": [
- "ServiceBus",
- "ACR"
- ],
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "7f1d6fe8-3079-44ea-8ea6-14494d1aa470",
+ "link": "https://learn.microsoft.com/azure-stack/hci/deploy/validate",
+ "services": [],
"severity": "High",
- "subcategory": "Best Practices",
- "text": "Leverage Availability Zones if regionally applicable",
+ "subcategory": "Cluster Configuration",
+ "text": "Cluster validation has been run against the configured cluster",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "description": "If enabled, Implements namespace metadata replication to a secondary region. Does not replicate queue/topic message data. Premium sku only.",
- "guid": "53d89f89-d17b-484b-93b5-a67f7b9ed5b3",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#geo-disaster-recovery",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "81693af0-5638-4aa2-a153-1d6189df30a7",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-benefits",
"services": [
- "ServiceBus",
- "ASR",
- "Storage"
+ "VM"
],
"severity": "Medium",
- "subcategory": "Geo-Disaster Recovery",
- "text": "Plan for Metadata replication during regional failure",
- "waf": "Reliability"
+ "subcategory": "Cluster Configuration",
+ "text": "Azure Benefits has been enabled at the cluster and VM levels",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "description": "If an outage cannot be tolerated, do not use the build-in metadata replication option. Leverage a replication pattern to replicate Service Bus messages across two or more sets of cross-region namespaces",
- "guid": "1f38c403-a822-4c24-93cf-0f18ac699ef1",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-federation-overview",
- "services": [
- "ServiceBus",
- "ASR",
- "ACR"
- ],
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8c967ee8-8170-4537-a28d-33431cd3632a",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/use-environment-checker",
+ "services": [],
"severity": "Medium",
- "subcategory": "Geo-Disaster Recovery",
- "text": "Plan for Message replication during regional failure",
+ "subcategory": "Cluster Configuration",
+ "text": "The Environment Checker module has been run to validate the environment",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus uses a message broker to handle messages that are sent to a Service Bus queue or topic. By default, all messages that are sent to a queue or topic are handled by the same message broker process. This architecture can place a limitation on the overall throughput of the message queue. However, you can also partition a queue or topic when it is created",
- "guid": "d5a83de4-de32-4c18-a147-0607c5c0e4e6",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/data-partitioning-strategies#partitioning-azure-service-bus",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "43ffbfab-766e-4950-a102-78b479136e4d",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-benefits",
"services": [
- "ServiceBus",
- "Storage"
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "For applications which require high throughput, use Patritioning ",
+ "subcategory": "Cluster Configuration",
+ "text": "Group Policy inheritance on the HCI cluster and node Active Directory organizational unit has been blocked or applied policies have been evaluated for compatibility issues (usually WinRM and PowerShell execution policy)",
+ "waf": "Operations"
+ },
+ {
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "e6a3f3a7-4a7d-49e2-985a-6e39dd284027",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Cluster Configuration",
+ "text": "WAC is on the latest release and configured to automatically upgrade extensions",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "14658d24-58ed-4671-99b8-21102df26ee4",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "d1caa31f-cc26-42b2-b92f-2b667c0e6020",
+ "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr",
"services": [
- "ServiceBus"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Evaluate Premier-tier benefits of Azure Service Bus",
- "waf": "Reliability"
+ "subcategory": "Stretch Clustering",
+ "text": "There is sub 5ms latency between each site if synchronous replication is being configured AAD",
+ "waf": "Performance"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "11e6f883-e52f-4472-8dd6-8c5b5c2521e5",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-messaging-exceptions",
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "3277558e-3155-4088-b49a-78594cb4ce1a",
"services": [
- "ServiceBus"
+ "Storage",
+ "VNet"
],
"severity": "High",
- "subcategory": "Best Practices",
- "text": "Ensure that Service Bus Messaging Exceptions are handled properly",
+ "subcategory": "Stretch Clustering",
+ "text": "Management, Replication and Storage networks excluded from stretched VLANs configurations, are routed, and in different subnets",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "4a69b9d3-39ac-44e7-a68d-1d75657202b4",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "baed6066-8531-44ba-bd94-38cbabbf4099",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Stretch Clustering",
+ "text": "There is a plan detailed for site failure and recovery",
+ "waf": "Operations"
+ },
+ {
+ "category": "Networking",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b4",
"services": [
- "ServiceBus",
- "Storage",
- "PrivateLink"
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Connect to Service Bus with the Advanced Messaging Queue Protocol (AMQP) and use Service Endpoints or Private Endpoints when possible.",
+ "subcategory": "Stretch Clustering",
+ "text": "Separate vLANs and networks are used for each replication network across both sites",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "f4564b4d-974a-4759-a763-e7d261613a76",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-performance-improvements?tabs=net-standard-sdk-2",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b5",
+ "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr#cost-optimization",
"services": [
- "ServiceBus"
+ "Storage"
],
"severity": "High",
- "subcategory": "Best Practices",
- "text": "Review the Best Practices for performance improvements using Service Bus Messaging",
+ "subcategory": "Stretch Clustering",
+ "text": "Use either a cloud witness or a file share witness in a third site for cluster quorum for clusters with less than 5 nodes",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "49907e0e-338e-4e25-9c17-d32e8aaab757",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/operational-excellence",
- "services": [
- "ServiceBus"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Implement geo-replication on the sender and receiver side to protect against outages and disasters",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b6",
+ "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr#cost-optimization",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Stretch Clustering",
+ "text": "When using data deduplication, only enable it on the primary/source volumes",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "1549ab81-53d8-49f8-ad17-b84b33b5a67f",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
+ "category": "Operations",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "ac527887-f6f4-40a3-b883-e04d704f013b",
+ "link": "https://learn.microsoft.com/windows-server/storage/storage-replica/stretch-cluster-replication-using-shared-storage#provision-operating-system-features-roles-storage-and-network",
"services": [
- "ServiceBus",
- "ASR",
"Storage"
],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "If you need mission-critical messaging with queues and topics, Service Bus Premium is recommended with Geo-Disaster Recovery.",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "7b9ed5b3-1f38-4c40-9a82-2c2463cf0f18",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
- "services": [
- "ServiceBus"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Implement high availability for the Service Bus namespace",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "ac699ef1-d5a8-43de-9de3-2c1881470607",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
- "services": [
- "ServiceBus"
- ],
"severity": "High",
- "subcategory": "Best Practices",
- "text": "Ensure related messages are delivered in guaranteed order",
+ "subcategory": "Stretch Clustering",
+ "text": "Storage backing log volumes must be faster (ideally) or at least as fast as capacity storage",
"waf": "Reliability"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "c5c0e4e6-1465-48d2-958e-d67139b82110",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
+ "category": "Backup and Disaster Recovery",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8ea49f70-1038-4283-b0c4-230165d3eabc",
+ "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-site-recovery",
"services": [
- "ServiceBus"
+ "Backup",
+ "ASR"
],
- "severity": "Low",
- "subcategory": "Best Practices",
- "text": "Evaluate different Java Messaging Service (JMS) features through the JMS API",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Disaster Recovery",
+ "text": "Azure Site Recovery has been considered for DR purposes",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "2df26ee4-11e6-4f88-9e52-f4722dd68c5b",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
- "services": [
- "ServiceBus"
- ],
- "severity": "Low",
- "subcategory": "Best Practices",
- "text": "Use .NET Nuget packages to communicate with Service Bus messaging entities",
- "waf": "Reliability"
+ "category": "Security",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "03e65fdc-2628-4a1a-ba2e-a5174340ba52",
+ "link": "https://learn.microsoft.com/windows/security/operating-system-security/data-protection/bitlocker/protecting-cluster-shared-volumes-and-storage-area-networks-with-bitlocker",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Host",
+ "text": "BitLocker has been enabled on CSVs for volume encryption, where appropriate",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Service Bus Review Checklist",
- "guid": "5c2521e5-4a69-4b9d-939a-c4e7c68d1d75",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist",
- "services": [
- "ServiceBus"
- ],
+ "category": "Security",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "9645d2e6-ba28-453c-b6d5-d9ef29fc34be",
+ "link": "https://learn.microsoft.com/windows-server/storage/file-server/smb-security",
+ "services": [],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Implement resilience for transient fault handling when sending or receiving messages",
- "waf": "Reliability"
+ "subcategory": "Host",
+ "text": "SMB encryption has been enabled, where appropriate",
+ "waf": "Security"
},
{
"category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
- "service": "Service Bus",
+ "checklist": "Azure Stack HCI Review",
+ "guid": "8f03437a-5068-4486-9a78-0402ce771298",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-antivirus-on-windows-server",
"services": [
- "ServiceBus"
+ "Defender"
],
- "severity": "Low",
- "subcategory": "Data Protection",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "severity": "Medium",
+ "subcategory": "Host",
+ "text": "Microsoft Defender Antivirus has been enabled on all nodes",
"waf": "Security"
},
{
"category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
- "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
- "service": "Service Bus",
- "services": [
- "ServiceBus"
- ],
+ "checklist": "Azure Stack HCI Review",
+ "guid": "dba6b211-fc02-43b3-b7c8-f163c188332e",
+ "link": "https://learn.microsoft.com/windows/security/identity-protection/credential-guard/credential-guard-manage",
+ "services": [],
"severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "subcategory": "Host",
+ "text": "Credential Guard has been configured, where appropriate",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
- "service": "Service Bus",
+ "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": [
- "TrafficManager",
- "AzurePolicy",
- "ServiceBus",
"Entra",
- "RBAC"
+ "APIM"
],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Security"
+ "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": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
- "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
- "service": "Service Bus",
+ "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": [
- "AKV",
- "AppSvc",
- "Storage",
- "ServiceBus",
- "Entra",
- "VM"
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Enable monitoring for your AOAI instances",
+ "waf": "Operational Excellence"
},
{
- "category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
- "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
- "service": "Service Bus",
+ "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": [
+ "AKV",
"Subscriptions",
- "Storage",
- "ServiceBus",
- "Entra",
- "RBAC"
+ "Monitor"
],
"severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
+ "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": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
- "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
- "service": "Service Bus",
+ "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": [
- "ServiceBus",
- "Monitor",
- "VNet"
+ "Monitor"
],
- "severity": "Medium",
+ "severity": "High",
"subcategory": "Monitoring",
- "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Security"
+ "text": "Monitor token usage to prevent service disruptions due to capacity",
+ "waf": "Operational Excellence"
},
{
- "category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
- "service": "Service Bus",
+ "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": [
- "ServiceBus",
- "VNet",
- "PrivateLink"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
+ "subcategory": "Observability",
+ "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
+ "waf": "Operational Excellence"
},
{
- "category": "Security",
- "checklist": "Service Bus Review Checklist",
- "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
- "service": "Service Bus",
+ "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": [
- "ServiceBus"
+ "APIM"
],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "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": "BC and DR",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
+ "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": "High Availability",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "subcategory": "Infrastructure Deployment",
+ "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources",
+ "waf": "Operational Excellence"
},
{
- "category": "BC and DR",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "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": "High Availability",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "Reliability"
+ "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 Excellence"
},
{
- "category": "BC and DR",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
+ "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": "High Availability",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "subcategory": "Hosting model",
+ "text": "Evaluate usage of Provisioned throughput model ",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
- "services": [
- "AppSvc"
- ],
+ "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": "High Availability",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "subcategory": "Content Safety",
+ "text": "Review and implement Azure AI content safety",
+ "waf": "Operational Excellence"
},
{
- "category": "Application Deployment",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "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": "Medium",
- "subcategory": "CI/CD",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
- "waf": "Operations"
+ "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": "BCDR",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Ensure that your backups are protected against attacks. This should include encryption of the backups to protect against loss of confidentiality. For regular Azure service backup, backup data is automatically encrypted using Azure platform-managed keys. You can also choose to encrypt the backup using a customer-managed key. In this case, ensure this customer-managed key in the key vault is also in the backup scope.",
- "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": [
- "SQL",
- "AKV",
- "Backup"
- ],
+ "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": "Azure Key Vault",
- "text": "Protect your backup data with encryption and store keys safely in Azure Key Vault",
- "waf": "Security"
+ "subcategory": "Latency improvement",
+ "text": "Improve latency of the system by limiting token sizes, streaming options",
+ "waf": "Performance"
},
{
- "category": "BCDR",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure SQL Database uses SQL Server technology to create full backups every week, differential backup every 12-24 hours, and transaction log backup every 5 to 10 minutes. By default, SQL Database stores data in geo-redundant storage blobs that are replicated to a paired region.",
- "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",
+ "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": [
- "SQL",
- "Backup",
- "Storage"
+ "Storage",
+ "ServiceBus"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Configure Azure SQL Database automated backups",
- "waf": "Security"
+ "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": "BCDR",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "By default, SQL Database stores data in geo-redundant storage blobs that are replicated to a paired region. For SQL Database, the backup storage redundancy can be configured at the time of database creation or can be updated for an existing database; the changes made to an existing database apply to future backups only.",
- "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"
- ],
- "severity": "Low",
- "subcategory": "Backup",
- "text": "Enable geo-redundant backup storage to protect against single region failure and data loss",
- "waf": "Security"
+ "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": "Code",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Malicious code can potentially circumvent security controls. Before deploying custom code to production, it is essential to review what's being deployed. Use a database tool like Azure Data Studio that supports source control. Implement tools and logic for code analysis, vulnerability and credential scanning.",
- "guid": "7ca9f006-d2a9-4652-951c-de8e4ac5e76e",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-create-server",
- "services": [
- "SQL"
- ],
+ "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": "Source Control and Code Review",
- "text": "Use Source Control systems to store, maintain and review application code deployed inside Azure SQLDB Database",
- "waf": "Security"
+ "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": "Data Discovery and Classification",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "In case of classification requirements Purview is the preferred option. Only use SQL Data Discovery & Classification in case Purview is not an option. Discover columns that potentially contain sensitive data. What is considered sensitive data heavily depends on the customer, compliance regulation, etc., and needs to be evaluated by the users in charge of that data. Classify the columns to use advanced sensitivity-based auditing and protection scenarios. Review results of automated discovery and finalize the classification if necessary.",
- "guid": "d401509b-2629-4484-9a7f-af0d29a7778f",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/data-discovery-and-classification-overview?view=azuresql#faq---advanced-classification-capabilities",
- "services": [
- "SQL"
- ],
- "severity": "Low",
- "subcategory": "Data Discovery and Classification",
- "text": "Plan and configure Data Discovery & Classification to protect the sensitive data",
- "waf": "Security"
+ "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": "Data Masking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Usage of this feature is recommended only if column encryption is not an option and there is a specific requirement to preserve data types and formats. Dynamic data masking limits sensitive data exposure by masking it to non-privileged users. Dynamic data masking helps prevent unauthorized access to sensitive data by enabling customers to designate how much of the sensitive data to reveal with minimal impact on the application layer.",
- "guid": "9391fd50-135e-453e-90a7-c1a23f88cc13",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/dynamic-data-masking-overview",
+ "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": [
- "SQL"
+ "ACR"
],
"severity": "Low",
- "subcategory": "Data Masking",
- "text": "Use Data Masking to prevent unauthorized non-admin users data access if no encryption is possible",
- "waf": "Security"
+ "subcategory": "Multi-region architecture",
+ "text": "Deploy multiple OAI instances across regions",
+ "waf": "Reliability"
},
{
- "category": "Defender",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "SQL Advanced Threat Detection (ATP) provides a layer of security that detects potential vulnerabilities and anomalous activity in databases such as SQL injection attacks and unusual behavior patterns. When a potential threat is detected Threat Detection sends an actionable real-time alert by email and in Microsoft Defender for Cloud, which includes clear investigation and remediation steps for the specific threat.",
- "guid": "4e52d73f-5d37-428f-b3a2-e6997e835979",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure",
+ "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": [
- "SQL",
- "EventHubs",
- "Defender"
+ "Entra",
+ "APIM"
],
"severity": "High",
- "subcategory": "Advanced Threat Protection",
- "text": "Review and complete Advanced Threat Protection (ATP) configuration",
- "waf": "Security"
+ "subcategory": "Load balancing",
+ "text": "Implement retry & healthchecks with Gateway pattern like APIM",
+ "waf": "Reliability"
},
{
- "category": "Defender",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Enable Microsoft Defender for Azure SQL at the subscription level to automatically onboard and protect all existing and future servers and databases. When you enable on the subscription level, all databases in Azure SQL Database and Azure SQL Managed Instance are protected. You can then disable them individually if you choose. If you want to manually manage which databases are protected, disable at the subscription level and enable each database that you want protected.",
- "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 ",
+ "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": [
- "SQL",
- "Subscriptions",
- "Defender"
+ "ACR"
],
- "severity": "High",
- "subcategory": "Defender for Azure SQL",
- "text": "Enable Microsoft Defender for Azure SQL",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Load balancing",
+ "text": "Deploy separate fine tuned models across regions if finetuning is employed",
+ "waf": "Reliability"
},
{
- "category": "Defender",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Microsoft Defender for Azure SQL ATP detects anomalous activities indicating unusual and potentially harmful attempts to access or exploit databases. Alerts can be configured and generated and will be reported in the Defender for console.",
- "guid": "ca342fdf-d25a-4427-b105-fcd50ff8a0ea",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure",
+ "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": [
- "SQL",
- "Monitor",
- "Defender"
+ "Backup",
+ "ASR"
],
+ "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": "Defender for Azure SQL",
- "text": "Prepare a security response plan to promptly react to Microsoft Defender for Azure SQL alerts",
+ "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": "Defender",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure SQLDB vulnerability assessment is a service that provides visibility into your security state. Vulnerability assessment includes actionable steps to resolve security issues and enhance your database security. It can help you to monitor a dynamic database environment where changes are difficult to track and improve your SQL security posture.",
- "guid": "a6101ae7-534c-45ab-86fd-b34c55ea21ca",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-overview",
- "services": [
- "SQL",
- "Monitor",
- "Defender"
- ],
+ "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": "Vulnerability Assessment",
- "text": "Configure Vulnerability Assessment (VA) findings and review recommendations",
+ "subcategory": "Encryption at Rest",
+ "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK",
"waf": "Security"
},
{
- "category": "Defender",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Microsoft Defender for Cloud provides vulnerability assessment for your Azure SQL Databases. Vulnerability assessment scans your databases for software vulnerabilities and provides a list of findings. You can use the findings to remediate software vulnerabilities and disable findings.",
- "guid": "c8c5f112-1e50-4f77-9264-8195b4cd61ac",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-find?view=azuresql",
+ "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": [
- "SQL",
- "Defender"
+ "ACR"
],
"severity": "High",
- "subcategory": "Vulnerability Assessment",
- "text": "Regularly review of Vulnerability Assessment (VA) findings and recommendations and prepare a plan to fix",
+ "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": "Encryption",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Always Encrypted with Secure Enclaves expands confidential computing capabilities of Always Encrypted by enabling in-place encryption and richer confidential queries. Always Encrypted with Secure Enclaves addresses these limitations by allowing some computations on plaintext data inside a secure enclave on the server side. Usage of this feature is recommended for the cases where you need to limit administrator access and need your queries to support more than equality matching of encrypted columns.",
- "guid": "65d7e54a-10a6-4094-b673-9ff3809c9277",
- "link": "https://learn.microsoft.com/sql/relational-databases/security/encryption/always-encrypted-enclaves",
+ "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": [
- "SQL"
+ "RBAC"
],
- "severity": "Medium",
- "subcategory": "Always Encrypted",
- "text": "If protecting sensitive PII data from admin users is a key requirement, but Column Encryption limitations cannot be tolerated, consider the adoption of Always Encrypted with Secure Enclaves",
+ "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": "Encryption",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "With Azure SQL Database, you can apply symmetric encryption to a column of data by using Transact-SQL. This approach is called column encryption, because you can use it to encrypt specific columns with different encryption keys. Doing so gives you more granular encryption capability than TDE, which encrypts data in pages. Using Always Encrypted to ensure sensitive data isn't exposed in plaintext in Azure SQL Database or SQL Managed Instance, even in memory/in use. Always Encrypted protects the data from Database Administrators (DBAs) and cloud admins (or bad actors who can impersonate high-privileged but unauthorized users) and gives you more control over who can access your data.",
- "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"
- ],
- "severity": "Low",
- "subcategory": "Column Encryption",
- "text": "To protect sensitive PII data from non-admin users in specific table columns, consider using Column Encryption",
+ "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": "Encryption",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Enabled by default, Transparent data encryption (TDE) helps to protect the database files against information disclosure by performing real-time encryption and decryption of the database, associated backups, and transaction log files 'at rest', without requiring changes to the application.",
- "guid": "c614ac47-bebf-4061-b0a1-43e0c6b5e00d",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-create-server",
+ "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": [
- "SQL",
- "Backup",
- "Storage"
+ "Sentinel",
+ "Defender",
+ "Monitor"
],
"severity": "High",
- "subcategory": "Transparent Data Encryption",
- "text": "Ensure Transparent Data Encryption (TDE) is kept enabled",
+ "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": "Encryption",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "If separation of duties in the management of keys and data within the organization is required, leverage Customer Managed Keys (CMK) for Transparent Data Encryption (TDE) for your Azure SQLDB and use Azure Key Vault to store (refer to its checklist). Leverage this feature when you have strict security requirements which cannot be met by the managed service keys.",
- "guid": "2edb4165-4f54-47cc-a891-5c82c2f21e25",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-overview",
+ "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": [
- "SQL",
- "AKV"
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Transparent Data Encryption",
- "text": "Use customer-managed keys (CMK) in Azure Key Vault (AKV) if you need increased transparency and granular control over the TDE protection",
+ "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": "Encryption",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The minimal Transport Layer Security (TLS) version setting allows customers to choose which version of TLS their SQL database uses. It's possible to change the minimum TLS version by using the Azure portal, Azure PowerShell, and the Azure CLI.",
- "guid": "7754b605-57fd-4bcb-8213-52c39d8e8225",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/connectivity-settings?source=recommendations&view=azuresql&tabs=azure-portal#minimal-tls-version",
- "services": [
- "SQL"
- ],
+ "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": "Transport Layer Security",
- "text": "Enforce minimum TLS version to the latest available",
+ "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": "Identity",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Use Azure Active Directory (Azure AD) authentication for centralized identity management. Use SQL Authentication only if really necessary and document as exceptions.",
- "guid": "c9b8b6bf-2c6b-453d-b400-de9a43a549d7",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/authentication-aad-overview",
- "services": [
- "SQL",
- "Entra"
- ],
+ "category": "Governance and Security",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
+ "services": [],
"severity": "Medium",
- "subcategory": "Azure Active Directory",
- "text": "Leverage Azure AD authentication for connections to Azure SQL Databases",
+ "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": "Identity",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Using Azure AD groups simplifies permission management and both the group owner, and the resource owner can add/remove members to/from the group. Create a separate group for Azure AD administrators for each logical server. Monitor Azure AD group membership changes using Azure AD audit activity reports.",
- "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": [
- "SQL",
- "Monitor",
- "Entra"
- ],
+ "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": "Azure Active Directory",
- "text": "Create a separate Azure AD group with two admin accounts for each Azure SQL Database logical server",
+ "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": "Identity",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Ensure that distinct system and user assigned managed identities, that are dedicated to the function, with least permissions assigned, are used for communication from Azure services and applications to the Azure SQLDB databases.",
- "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",
+ "category": "Governance and Security",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"services": [
- "SQL",
- "Entra"
+ "RBAC",
+ "AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Azure Active Directory",
- "text": "Minimize the use of password-based authentication for applications",
+ "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": "Identity",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "System or User assigned managed identities enable Azure SQLDB to authenticate to other cloud services (e.g. Azure Key Vault) without storing credentials in code. Once enabled, all necessary permissions can be granted via Azure role-based-access-control to the specific Azure SQLDB instance. Do not share user assigned managed identities across multiple services if not strictly required.",
- "guid": "69891194-5074-4e30-8f69-4efc3c580900",
- "link": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
+ "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": [
- "AKV",
- "ACR",
- "SQL",
- "Entra",
"RBAC"
],
- "severity": "Low",
- "subcategory": "Managed Identities",
- "text": "Assign Azure SQL Database a managed identity for outbound resource access",
+ "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": "Identity",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Use an Azure AD integrated authentication that eliminates the use of passwords. Password-based authentication methods are a weaker form of authentication. Credentials can be compromised or mistakenly given away. Use single sign-on authentication using Windows credentials. Federate the on-premises AD domain with Azure AD and use integrated Windows authentication (for domain-joined machines with Azure AD).",
- "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",
+ "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": [
- "SQL",
- "Entra"
+ "PrivateLink"
],
- "severity": "Medium",
- "subcategory": "Passwords",
- "text": "Minimize the use of password-based authentication for users",
+ "severity": "High",
+ "subcategory": "Network security",
+ "text": "Configure private endpoint for AI services to restrict service access within your network",
"waf": "Security"
},
{
- "category": "Ledger",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The hash of the latest block in the database ledger is called the database digest. It represents the state of all ledger tables in the database at the time when the block was generated. Generating a database digest is efficient, because it involves computing only the hashes of the blocks that were recently appended. Azure Confidential Ledger is one of the supported store, it can be used and supports automatic generation and storage of database digests. Azure Ledger provides advanced security features like Blockchain Ledger Proof and Confidential Hardware Enclaves. Use it only if advanced security features are required, otherwise revert to Azure storage.",
- "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",
+ "category": "Governance and Security",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
+ "service": "Azure OpenAI",
"services": [
- "SQL",
- "Storage"
+ "VNet",
+ "Firewall"
],
- "severity": "Medium",
- "subcategory": "Database Digest",
- "text": "Use Azure Confidential Ledger to store database digests only if advanced security features are required",
+ "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": "Ledger",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The hash of the latest block in the database ledger is called the database digest. It represents the state of all ledger tables in the database at the time when the block was generated. Generating a database digest is efficient, because it involves computing only the hashes of the blocks that were recently appended. Azure Blob Storage with Immutable Storage feature can be used and supports automatic generation and storage of database digests. To prevent tampering of your digest files, configure and lock a retention policy for your container.",
- "guid": "afefb2d3-95da-4ac9-acf5-33d18b32ef9a",
- "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-digest-management",
- "services": [
- "SQL",
- "Storage",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Database Digest",
- "text": "If Azure storage account is used to store database digests, ensure security is properly configured",
+ "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": "Ledger",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Ledger provides a form of data integrity called forward integrity, which provides evidence of data tampering on data in your ledger tables. The database verification process takes as input one or more previously generated database digests. It then recomputes the hashes stored in the database ledger based on the current state of the ledger tables. If the computed hashes don't match the input digests, the verification fails. The failure indicates that the data has been tampered with. The verification process reports all inconsistencies that it detects.",
- "guid": "f8d4ffda-8aac-4cc6-b72b-c81cb8625420",
- "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-database-verification",
+ "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": [
- "SQL",
- "Storage"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Integrity",
- "text": "Schedule the Ledger verification process regularly to verify data integrity",
- "waf": "Security"
+ "subcategory": "Token Optimization",
+ "text": "Use prompt compression tools like LLMLingua or gprtrim",
+ "waf": "Cost Optimization"
},
{
- "category": "Ledger",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The Ledger feature provides tamper-evidence capabilities in your database. You can cryptographically attest to other parties, such as auditors or other business parties, that your data hasn't been tampered with. Ledger helps protect data from any attacker or high-privileged user, including database administrators (DBAs), system administrators, and cloud administrators.",
- "guid": "2563f498-e2d3-42ea-9e7b-5517881a06a2",
- "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-overview",
+ "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": [
- "SQL"
+ "Entra",
+ "AKV"
],
- "severity": "Medium",
- "subcategory": "Ledger",
- "text": "If cryptographic proof of data integrity is a critical requirement, Ledger feature should be considered",
+ "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": "Ledger",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Depending on the type of tampering, there are cases where you can repair the ledger without losing data. In the article contained in the --More Info-- column, different scenarios and recovery techniques are described.",
- "guid": "804fc554-6554-4842-91c1-713b32f99902",
- "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-how-to-recover-after-tampering",
- "services": [
- "SQL"
- ],
+ "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": "Recovery",
- "text": "Prepare a response plan to investigate and repair a database after a tampering event",
+ "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure SQL Database Auditing tracks database events and writes them to an audit log in your Azure storage account. Auditing helps you understand database activity and gain insight into discrepancies and anomalies that could indicate business concerns or suspected security violations as well as helps you meet regulatory compliance. By default auditing policy includes all actions (queries, stored procedures and successful and failed logins) against the databases, which may result in high volume of audit logs. It's recommended for customers to configure auditing for different types of actions and action groups using PowerShell.",
- "guid": "4082e31d-35f4-4a49-8507-d3172cc930a6",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
+ "category": "Governance and Security",
+ "checklist": "Azure OpenAI Review",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "Azure OpenAI",
"services": [
- "SQL",
- "Storage",
- "AzurePolicy"
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Auditing",
- "text": "Ensure that Azure SQL Database Auditing is enabled at the server level",
+ "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure SQL Database Auditing logs can be written to external storage accounts, Log Analytics workspace or Event Hub. Be sure to protect the target repository using backups and secured configuration. Use Azure SQL Database Managed Identity to access the storage and set an explicit retention period. Do not grant permissions to administrators to the audit log repository. Use a different target storage for --Enabling Auditing of Microsoft support operations--. ",
- "guid": "9b64bc50-b60f-4035-bf7a-28c4806dfb46",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
- "services": [
- "EventHubs",
- "Storage",
- "SQL",
- "Monitor",
- "Backup",
- "Entra"
- ],
- "severity": "Low",
- "subcategory": "Auditing",
- "text": "Ensure that Azure SQL Database Auditing logs are backed up and secured in the selected repository type",
+ "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The Azure Monitor activity log is a platform log in Azure that provides insight into subscription-level events. The activity log includes information like when a resource is modified. It is recommended to send this activity log to the same external storage repository as the Azure SQL Database Audit Log (storage account, Log Analytics workspace, Event Hub).",
- "guid": "fcd34708-87ac-4efc-aaf6-57a47f76644a",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "services": [
- "EventHubs",
- "Subscriptions",
- "Storage",
- "SQL",
- "Monitor"
- ],
- "severity": "Medium",
- "subcategory": "Auditing",
- "text": "Ensure that Azure SQL Database Activity Log is collected and integrated with Auditing logs",
- "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Forward any logs from Azure SQL to your Security Information and Event Management (SIEM) and Security Orchestration Automation and Response (SOAR). Ensure that you are monitoring different types of Azure assets for potential threats and anomalies. Focus on getting high-quality alerts to reduce false positives for analysts to sort through. Alerts can be sourced from log data, agents, or other data.",
- "guid": "f96e127e-9572-453a-b325-ff89ae9f6b44",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
- "services": [
- "SQL",
- "Monitor"
- ],
- "severity": "Medium",
- "subcategory": "SIEM/SOAR",
- "text": "Ensure that Azure SQL Database Auditing logs are being presented in to your organizations SIEM/SOAR",
- "waf": "Security"
+ "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Forward any logs from Azure SQL to your Security Information and Event Management (SIEM) and Security Orchestration Automation and Response (SOAR), which can be used to set up custom threat detections. Ensure that you are monitoring different types of Azure assets for potential threats and anomalies. Focus on getting high-quality alerts to reduce false positives for analysts to sort through. Alerts can be sourced from log data, agents, or other data.",
- "guid": "41503bf8-73da-4a10-af9f-5f7fceb5456f",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "services": [
- "SQL",
- "Monitor"
- ],
- "severity": "Medium",
- "subcategory": "SIEM/SOAR",
- "text": "Ensure that Azure SQL Database Activity Log data is presented in to your SIEM/SOAR",
- "waf": "Security"
+ "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": "Logging",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Security Operation Center (SOC) team should create an incident response plan (playbooks or manual responses) to investigate and mitigate tampering, malicious activities, and other anomalous behaviors.",
- "guid": "19ec7c97-c563-4e1d-82f0-54d6ec12e754",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "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": [
- "SQL",
- "EventHubs"
+ "Entra"
],
- "severity": "Medium",
- "subcategory": "SIEM/SOAR",
- "text": "Ensure that you have response plans for malicious or aberrant audit logging events",
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "When you create a logical server from the Azure portal for Azure SQL Database, the result is a public endpoint that is visible and reachable over the public network (Public Access). You can then limit connectivity based on firewall rules and Service Endpoint. You can also configure private connectivity only limiting connections to internal networks using Private Endpoint (Private Access). Private Access using Private Endpoint should be the default unless a business case or performance/technical reason applies that cannot support it. Usage of Private Endpoints has performance implications that need to be considered and assessed.",
- "guid": "2c6d356a-1784-475b-a42c-ec187dc8c925",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
+ "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": [
- "SQL",
- "PrivateLink"
+ "Entra",
+ "AKV"
],
"severity": "High",
- "subcategory": "Connectivity",
- "text": "Review Public vs. Private Access connectivity methods and select the appropriate one for the workload",
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "IMPORTANT: Connections to private endpoint only support Proxy as the connection policy. When using private endpoints connections are proxied via the Azure SQL Database gateway to the database nodes. Clients will not have a direct connection.",
- "guid": "557b3ce5-bada-4296-8d52-a2d447bc1718",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/connectivity-architecture",
+ "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": [
- "SQL",
- "PrivateLink",
- "AzurePolicy"
+ "AKV"
],
- "severity": "Low",
- "subcategory": "Connectivity",
- "text": "Keep default Azure SQL Database Connection Policy if not differently required and justified",
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "This option configures the firewall to allow all connections from Azure, including connections from the subscriptions of other customers. If you select this option, make sure that your login and user permissions limit access to authorized users only. If not strictly required, keep this setting to OFF.",
- "guid": "f48efacf-4405-4e8d-9dd0-16c5302ed082",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
+ "category": "Cost Optimization",
+ "checklist": "Azure OpenAI Review",
+ "guid": "adfe27be-e297-401a-a352-baaab79b088d",
+ "link": "https://github.com/openai/tiktoken",
+ "service": "Azure OpenAI",
"services": [
- "SQL",
- "Subscriptions"
+ "Cost"
],
"severity": "High",
- "subcategory": "Connectivity",
- "text": "Ensure Allow Azure Services and Resources to Access this Server setting is disabled in Azure SQL Database firewall",
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure SQL Database has a new built-in feature that allows native integration with external REST endpoints. This means that integration of Azure SQL Database with Azure Functions, Azure Logic Apps, Cognitive Services, Event Hubs, Event Grid, Azure Containers, API Management and in general any REST or even GraphQL endpoint. If not properly restricted, code inside an Azure SQL Database database could leverage this mechanism to exfiltrate data. If not strictly required, it is recommended to block or restrict this feature using Outbound Firewall Rules.",
- "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": [
- "SQL",
- "APIM",
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Outbound Control",
- "text": "Block or restrict outbound REST API calls to external endpoints",
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Outbound firewall rules limit network traffic from the Azure SQL Database logical server to a customer defined list of Azure Storage accounts and Azure SQL Database logical servers. Any attempt to access storage accounts or databases not in this list is denied.",
- "guid": "a566dd3d-314e-4a94-9378-102c42d82b38",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/outbound-firewall-rule-overview",
+ "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": [
- "SQL",
- "Storage"
+ "AzurePolicy"
],
- "severity": "Medium",
- "subcategory": "Outbound Control",
- "text": "If outbound network access is required, it is recommended to configure outbound networking restrictions using built-in Azure SQL Database control feature",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Private Endpoint is created inside a subnet in an Azure Virtual Network. Proper security configuration must be applied also to the containing network environment, including NSG/ASG, UDR, firewall, monitoring and auditing.",
- "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",
+ "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": [
- "PrivateLink",
- "VNet",
- "SQL",
- "Firewall",
- "Monitor"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Private Access",
- "text": "If Private Access connectivity is used, ensure that you are using the Private Endpoint, Azure Virtual Network, Azure Firewall, and Azure Network Security Group checklists",
- "waf": "Security"
+ "subcategory": "Cost familiarization",
+ "text": "Understand difference in cost of base models and fine tuned models and token step sizes",
+ "waf": "Cost Optimization"
},
{
- "category": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "When adding a Private Endpoint connection, public routing to your logical server isn't blocked by default. In the --Firewall and virtual networks-- pane, the setting --Deny public network access-- is not selected by default. To disable public network access, ensure that you select --Deny public network access--.",
- "guid": "3a0808ee-ea7a-47ab-bdce-920a6a2b3881",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/private-endpoint-overview?view=azuresql#disable-public-access-to-your-logical-server",
+ "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": [
- "SQL",
- "VNet",
- "PrivateLink"
+ "Cost"
],
"severity": "High",
- "subcategory": "Private Access",
- "text": "If Private Endpoint (Private Access) is used, consider disabling Public Access connectivity",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Network Security Group (NSG) and Application Security Group (ASG) can be now applied to subnet containing Private Endpoints to restrict connections to Azure SQLDB based on internal source IP ranges.",
- "guid": "8600527e-e8c4-4424-90ef-1f0dca0224f2",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview#network-security-of-private-endpoints",
+ "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": [
- "SQL",
- "VNet",
- "PrivateLink"
+ "Cost",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Private Access",
- "text": "If Private Endpoint (Private Access) is used, apply NSG and eventually ASG to limit incoming source IP address ranges",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "A Managed Instance (SQL MI) can be isolated inside a virtual network to prevent external access. Applications and tools that are in the same or peered virtual network in the same region could access it directly. Applications and tools that are in different region could use virtual-network-to-virtual-network connection or ExpressRoute circuit peering to establish connection. Customer should use Network Security Groups (NSG), and eventually internal firewalls, to restrict access over port 1433 only to resources that require access to a managed instance.",
- "guid": "18123ef4-a0a6-45e3-87fe-7f454f65d975",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connectivity-architecture-overview",
+ "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": [
- "SQL",
- "VNet",
- "ExpressRoute"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Private Access",
- "text": "Apply Network Security Groups (NSG) and firewall rules to restrict access to Azure SQL Managed Instance internal subnet",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Azure Virtual Network Service Endpoint is preferred solution if you want to establish a direct connection to the Azure SQL Database backend nodes using Redirect policy. This will allow access in high performance mode and is the recommended approach from a performance perspective.",
- "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": [
- "SQL",
- "VNet",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Public Access",
- "text": "If Public Access connectivity is used, leverage Service Endpoint to restrict access from selected Azure Virtual Networks",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The Azure SQL Database firewall allows you to specify IP address ranges from which communications are accepted. This approach is fine for stable IP addresses that are outside the Azure private network.",
- "guid": "a73e32da-b3f4-4960-b5ec-2f42a557bf31",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
+ "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": [
- "SQL",
"Storage"
],
"severity": "Medium",
- "subcategory": "Public Access",
- "text": "If Public Access connectivity is used, ensure that only specific known IPs are added to the firewall",
- "waf": "Security"
+ "subcategory": "AI Search Vector Limits",
+ "text": "Plan and manage AI Search Vector storage",
+ "waf": "Operational Excellence"
},
{
- "category": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "We recommend that you use database-level IP firewall rules whenever possible. This practice enhances security and makes your database more portable. Use server-level IP firewall rules for administrators. Also use them when you have many databases that have the same access requirements, and you don't want to configure each database individually.",
- "guid": "e0f31ac9-35c8-4bfd-9865-edb60ffc6768",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/firewall-configure",
- "services": [
- "SQL",
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Public Access",
- "text": "If Public Access connectivity is used and controlled by Azure SQL Database firewall rules, use database-level over server-level IP rules",
- "waf": "Security"
+ "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": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "A Managed Instance (SQL MI) can be isolated inside a virtual network to prevent external access. The Managed Instance public endpoint is not enabled by default, must be explicitly enabled, only if strictly required. If company policy disallows the use of public endpoints, use Azure Policy to prevent enabling public endpoints in the first place.",
- "guid": "b8435656-143e-41a8-9922-61d34edb751a",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview",
+ "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": [
- "SQL",
- "VNet",
- "AzurePolicy"
+ "Cost"
],
"severity": "High",
- "subcategory": "Public Access",
- "text": "Do not enable Azure SQL Managed Instance public endpoint",
- "waf": "Security"
+ "subcategory": "Costing Model",
+ "text": "Evaluate usage of billing models - PAYG vs PTU",
+ "waf": "Cost Optimization"
},
{
- "category": "Networking",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "A Managed Instance (SQL MI) public endpoint is not enabled by default, must be explicitly enabled, only if strictly required. In this case, it is recommended to apply a Network Security Groups (NSG) to restrict access to port 3342 only to trusted source IP addresses.",
- "guid": "057dd298-8726-4aa6-b590-1f81d2e30421",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview",
- "services": [
- "SQL",
- "VNet"
- ],
- "severity": "High",
- "subcategory": "Public Access",
- "text": "Restrict access if Azure SQL Managed Instance public endpoint is required",
- "waf": "Security"
+ "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": "Privileged Access",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Most operations, support, and troubleshooting performed by Microsoft personnel and sub-processors do not require access to customer data. In those rare circumstances where such access is required, Customer Lockbox for Microsoft Azure provides an interface for customers to review and approve or reject customer data access requests. In support scenarios where Microsoft needs to access customer data, Azure SQL Database supports Customer Lockbox to provide an interface for you to review and approve or reject customer data access requests.",
- "guid": "37b6eb0f-553d-488f-8a8a-cb9bf97388ff",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "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": [
- "SQL"
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Lockbox",
- "text": "Review and enable Customer Lockbox for Azure SQL Database access by Microsoft personnel",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Development",
+ "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �",
+ "waf": "Operational Excellence"
},
{
- "category": "Privileged Access",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "The principle of least privilege states that users shouldn't have more privileges than needed to complete their tasks. High-privileged database and server users can perform many configuration and maintenance activities on the database and can also drop databases in Azure SQL instance. Tracking database owners and privileged accounts is important to avoid having excessive permission.",
- "guid": "5fe5281f-f0f9-4842-a682-8baf18bd8316",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/security-best-practice?view=azuresql#implement-principle-of-least-privilege",
- "services": [
- "SQL"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure OpenAI Review",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
+ "service": "Azure OpenAI",
+ "services": [],
"severity": "Medium",
- "subcategory": "Permissions",
- "text": "Ensure that users are assigned the minimum level of access necessarily to complete their job functions",
- "waf": "Security"
+ "subcategory": "Development",
+ "text": "Evaluate your Azure AI Search results based on different search parameters",
+ "waf": "Operational Excellence"
},
{
- "category": "Privileged Access",
- "checklist": "Azure SQLDB Security Checklist (Preview)",
- "description": "Identities (both Users and SPNs) should be scoped to the least amount of access needed to perform the function. A higher number of tightly scoped SPNs should be used, instead of having one SPN with multiple sets of unrelated permissions. For example, if there are three external web applications hosted on-prem that make queries to the Azure SQL Database, they should not all use the same SPN for these activities. Instead, they should each have their own tightly scoped SPN.",
- "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": [
- "SQL",
- "Entra"
- ],
- "severity": "Low",
- "subcategory": "Permissions",
- "text": "Ensure that distinct applications will be assigned different credentials with minimal permissions to access Azure SQL Database",
- "waf": "Security"
+ "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": "Compute",
- "checklist": "Resiliency Review",
- "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
- "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
- "service": "VMSS",
- "services": [
- "VM"
- ],
- "severity": "Low",
- "subcategory": "VM Scale Sets",
- "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
- "waf": "Reliability"
+ "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": "Compute",
- "checklist": "Resiliency Review",
- "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
- "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
- "service": "VM",
- "services": [
- "VM",
- "Backup"
- ],
- "severity": "High",
- "subcategory": "Virtual Machines",
- "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
- "waf": "Reliability"
+ "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": "Compute",
- "checklist": "Resiliency Review",
- "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
- "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "VM",
+ "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": [
- "VM"
+ "Cost"
],
"severity": "High",
- "subcategory": "Virtual Machines",
- "text": "Use Premium or Ultra disks for production VMs",
- "waf": "Reliability"
+ "subcategory": "Quota Management",
+ "text": "Consider Quota management practices",
+ "waf": "Cost Optimization"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
- "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
- "service": "VM",
+ "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": [
- "VM"
+ "Entra",
+ "APIM",
+ "LoadBalancer",
+ "ACR"
],
+ "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": "BC and DR",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
+ "services": [],
"severity": "High",
- "subcategory": "Virtual Machines",
- "text": "Ensure Managed Disks are used for all VMs",
+ "subcategory": "High Availability",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
- "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
- "service": "VM",
- "services": [
- "Storage",
- "VM",
- "SQL"
- ],
+ "category": "BC and DR",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "services": [],
"severity": "Medium",
- "subcategory": "Virtual Machines",
- "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "subcategory": "High Availability",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
- "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "VM",
- "services": [
- "Storage",
- "VM",
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "Virtual Machines",
- "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "category": "BC and DR",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
- "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "VM",
- "services": [
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Virtual Machines",
- "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
+ "category": "BC and DR",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Learn how to trigger a manual failover.",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
- "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "VM",
- "services": [
- "VM",
- "ASR"
- ],
+ "category": "BC and DR",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
+ "services": [],
"severity": "High",
- "subcategory": "Virtual Machines",
- "text": "Avoid running a production workload on a single VM",
+ "subcategory": "High Availability",
+ "text": "Learn how to fail back after a failover.",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
- "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
- "services": [
- "AVS",
- "ASR",
- "VM"
- ],
+ "category": "BC and DR",
+ "checklist": "Container Apps Review",
+ "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
+ "service": "Container Apps",
+ "services": [],
"severity": "High",
- "subcategory": "Virtual Machines",
- "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
+ "subcategory": "High Availability",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
- "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
- "service": "VM",
+ "category": "BC and DR",
+ "checklist": "Container Apps Review",
+ "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
+ "service": "Container Apps",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Use more than one replica and enable Zone Redundancy.",
+ "waf": "Reliability"
+ },
+ {
+ "category": "BC and DR",
+ "checklist": "Container Apps Review",
+ "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
+ "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": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
+ "waf": "Reliability"
+ },
+ {
+ "category": "BC and DR",
+ "checklist": "Container Apps Review",
+ "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
+ "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": [
- "VM"
+ "TrafficManager",
+ "FrontDoor"
],
- "severity": "Low",
- "subcategory": "Virtual Machines",
- "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
- "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
- "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
- "service": "VM",
+ "category": "Operations Management",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
+ "service": "PostgreSQL",
"services": [
- "VM",
- "ASR"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Virtual Machines",
- "text": "Increase quotas in DR region before testing failover with ASR",
+ "subcategory": "Best Practices",
+ "text": "Leverage Flexible Server",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Resiliency Review",
- "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
- "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
- "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
- "service": "VM",
+ "category": "Operations Management",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
+ "service": "PostgreSQL",
"services": [
- "VM"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Virtual Machines",
- "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "severity": "High",
+ "subcategory": "Best Practices",
+ "text": "Leverage Availability Zones where regionally applicable",
"waf": "Reliability"
},
{
- "category": "Data",
- "checklist": "Resiliency Review",
- "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
- "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
+ "category": "Operations Management",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "31b67c67-be59-4519-8083-845d587cb391",
+ "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
+ "service": "PostgreSQL",
"services": [
- "Storage"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Storage Accounts",
- "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
+ "subcategory": "Best Practices",
+ "text": "Leverage cross-region read replicas for BCDR",
"waf": "Reliability"
},
{
- "category": "Data",
- "checklist": "Resiliency Review",
- "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
- "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Storage Accounts",
- "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "category": "Operations Management",
+ "checklist": "Stream Analytics Review Checklist",
+ "guid": "32e52e36-11c8-418b-8a0b-c511e43a18a9",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-stream_analytics_v1.docx",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availablity ",
+ "text": "Leverage FTA Resiliency Handbook for Stream Analytics",
"waf": "Reliability"
},
{
- "category": "Data",
- "checklist": "Resiliency Review",
- "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
- "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Storage Accounts",
- "text": "Enable soft delete for Storage Account Containers",
+ "category": "Operations Management",
+ "checklist": "Stream Analytics Review Checklist",
+ "description": "Azure Stream Analytics provides high availability (99.9% SLA) for jobs and clusters within a region, the details of which are transparent to the end customer. If failures occur within the service, per the documentation �Azure Stream Analytics guarantees exactly once event processing and at-least-once delivery of events, so events are never lost.�",
+ "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
+ "link": "https://azure.microsoft.com/en-in/products/stream-analytics",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availablity ",
+ "text": "Understand High Availability 99% SLA and use it to plan your DR strategy",
"waf": "Reliability"
},
{
- "category": "Data",
- "checklist": "Resiliency Review",
- "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
- "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Storage Accounts",
- "text": "Enable soft delete for blobs",
+ "category": "Operations Management",
+ "checklist": "Stream Analytics Review Checklist",
+ "description": "Azure Stream Analytics resources (jobs, clusters, etc.) are regional and do not provide automatic geo-failover. However, you can achieve geo-redundancy by deploying identical Stream Analytics jobs in multiple Azure regions. Each job connects to local input and output sources. It is the responsibility of your application to both send input data into the two regional inputs and reconcile between the two regional outputs.",
+ "guid": "fc833934-8b26-42d6-ac5f-512925498e6d",
+ "link": "https://learn.microsoft.com/azure/stream-analytics/geo-redundancy",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Geo Redundancy",
+ "text": "Plan for Geo Redudancy of the service",
"waf": "Reliability"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
- "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
- "service": "Azure Backup",
- "services": [
- "Backup"
- ],
+ "category": "Operations Management",
+ "checklist": "Stream Analytics Review Checklist",
+ "guid": "b9d37dac-43bc-46cd-8d7a-a9b24604489a",
+ "link": "https://learn.microsoft.com/azure/stream-analytics/geo-redundancy",
+ "services": [],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
+ "subcategory": "Geo Redundancy",
+ "text": "Depending on your availablity requirement, configure Active/Active configuration or Active/Passive configuration ",
"waf": "Reliability"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
- "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
- "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
- "service": "Azure Backup",
+ "category": "Application Deployment",
+ "checklist": "Azure AKS Review",
+ "guid": "785c2fa5-5b56-4ad4-a408-fe72734c476b",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/containers/aks/secure-baseline-aks",
"services": [
- "Backup"
+ "AKS"
],
- "severity": "Low",
- "subcategory": "Backup",
- "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Development",
+ "text": "Use canary or blue/green deployments",
+ "waf": "Operations"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
- "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
- "service": "Azure Backup",
+ "category": "Application Deployment",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
"services": [
- "Storage",
- "Backup"
+ "AKS"
],
"severity": "Low",
- "subcategory": "Backup",
- "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
+ "subcategory": "Development",
+ "text": "If required for AKS Windows workloads HostProcess containers can be used",
"waf": "Reliability"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Clearly define your organization's business continuity and disaster recovery requirements for your Azure environment. This includes identifying the critical applications, data, and services that need to be protected, as well as specifying the desired recovery objectives and strategies.",
- "guid": "72e52e36-11dd-458c-9a4b-1521e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-business-continuity-disaster-recovery",
+ "category": "Application Deployment",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
"services": [
- "ASR"
+ "AKS"
],
- "severity": "High",
- "subcategory": "Design",
- "text": "Define business continuity and disaster recovery requirements",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Development",
+ "text": "Use KEDA if running event-driven workloads",
+ "waf": "Performance"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Ensure that your Azure architectures are designed with a focus on reliability. Consider implementing fault-tolerant mechanisms, redundancy, and resiliency patterns to minimize the impact of failures and maximize the availability of your applications and services.",
- "guid": "c2399c4d-7b67-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/architecture/reliability/architect",
- "services": [],
- "severity": "High",
- "subcategory": "Design",
- "text": "Implement reliability best practices in Azure architectures",
- "waf": "Reliability"
+ "category": "Application Deployment",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Development",
+ "text": "Use Dapr to ease microservice development",
+ "waf": "Operations"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "IaC configurations can play a role in your disaster recovery plan, particularly in situations where recovery time is not time-sensitive. In the event of infrastructure recreation in a second region, IaC can be used to reproduce the necessary infrastructure.",
- "guid": "fe237de2-43b1-46c3-8d7a-a9b7570449aa",
- "link": "https://learn.microsoft.com/azure/well-architected/devops/automation-infrastructure",
+ "category": "Application Deployment",
+ "checklist": "Azure AKS Review",
+ "guid": "3acbe04b-be20-49d3-afda-47778424d116",
+ "link": "https://learn.microsoft.com/azure/developer/terraform/create-k8s-cluster-with-tf-and-aks",
"services": [
- "RBAC",
- "ASR"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "DevOps",
- "text": "Implement Infrastructure as Code (IaC) for Rapid Infrastructure Recovery",
- "waf": "Reliability"
+ "subcategory": "Infrastructure as Code",
+ "text": "Use automation through ARM/TF to create your Azure resources",
+ "waf": "Operations"
},
{
- "category": "General",
- "checklist": "Resiliency Review",
- "description": "Azure offers region pairs that are geographically separated and can be used for cross-region replication and disaster recovery. These region pairs provide redundancy and protection against regional or large-scale disasters.",
- "guid": "dcb1f7d5-769a-4e56-aba3-8d4a85e2213d",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "36cb45e5-7960-4332-9bdf-8cc23318da61",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/business-continuity-and-disaster-recovery",
"services": [
- "ASR"
+ "ASR",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Multi-region",
- "text": "Plan for cross-region recovery by leveraging region pairs",
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Schedule and perform DR tests regularly",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "By deploying an Application Gateway with a minimum instance count of two, you will have at least two instances available under normal circumstances. In the event that one of the instances encounters a problem, the other instance will handle the traffic while a new instance is being created. This approach significantly reduces the risk of service disruption and ensures a seamless experience for your users.",
- "guid": "93c76286-37a5-451c-9b04-e4f1854387e5",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant#autoscaling-and-high-availability",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "170265f4-bb46-4a39-9af7-f317284797b1",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
"services": [
- "AppGW"
+ "LoadBalancer",
+ "TrafficManager",
+ "FrontDoor",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Application Gateways",
- "text": "Deploy Application Gateways with a minimum instance count of 2 to avoid instance provisioning downtime",
+ "subcategory": "High Availability",
+ "text": "Use Azure Traffic Manager or Azure Front Door as a global load balancer for region failover",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "The v2 SKU offers several advantages and critical new features that enhance the availability and resilience of your application infrastructure. One notable feature supported by the v2 SKU is zone redundancy, which allows an Application Gateway deployment to span multiple Availability Zones.",
- "guid": "ced126cd-032a-4f5b-8fc6-998a535e3378",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "graph": "resources | where type=='microsoft.containerservice/managedclusters' | extend compliant= isnotnull(properties.agentPoolProfiles[0].availabilityZones) | distinct id,compliant",
+ "guid": "578a219a-46be-4b54-9350-24922634292b",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones",
"services": [
- "Storage",
- "AppGW"
+ "AKS"
],
- "severity": "High",
- "subcategory": "Application Gateways",
- "text": "Deploy Azure Application Gateway v2 for zone redundancy support",
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "Use Availability Zones if they are supported in your Azure region",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "Azure Front Door provides automatic failover capabilities, ensuring continuity in the event of a primary region becoming unavailable. However, during the failover process, there may be a brief period (typically 20-60 seconds) when clients cannot reach the application. It is essential to review the Azure Front Door service level agreement (SLA) to determine whether relying solely on Front Door meets your business requirements for high availability. ",
- "guid": "97e31c67-d68c-4f6a-92a1-194956d697dc",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/app-service-web-app/multi-region#azure-front-door",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"services": [
- "FrontDoor"
+ "AKS"
],
- "severity": "Low",
- "subcategory": "Azure Front Door",
- "text": "Consider a redundant traffic management solution in conjunction with Azure Front Door",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Use the SLA-backed AKS offering",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "By implementing Traffic Manager, you can configure it to continuously monitor the health of your application endpoints and automatically redirect traffic to an alternate endpoint when necessary. This automation minimizes downtime and provides a more seamless experience for your users during disaster recovery scenarios.",
- "guid": "8df03a82-2cd4-463c-abbc-8ac299ebc92a",
- "link": "https://learn.microsoft.com/azure/networking/disaster-recovery-dns-traffic-manager",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"services": [
- "Monitor",
- "TrafficManager",
- "ASR",
- "DNS"
+ "Cost",
+ "AKS"
],
"severity": "Low",
- "subcategory": "DNS",
- "text": "Plan for automated failover using Traffic Manager for DNS Traffic",
+ "subcategory": "High Availability",
+ "text": "Use Disruption Budgets in your pod and deployment definitions",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
- "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
- "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
- "service": "DNS",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"services": [
- "ASR",
- "DNS",
- "ACR"
+ "ACR",
+ "AKS"
],
- "severity": "Low",
- "subcategory": "DNS",
- "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "If using a private registry, configure region replication to store images in multiple regions",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
- "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
- "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
- "service": "Data Gateways",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "daa9a260-c3ea-4490-b077-5fc1f2a80cb0",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
"services": [
- "ACR"
+ "Storage",
+ "ASR",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Data Gateways",
- "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Use Zone-Redundant Storage (ZRS) with stateful workloads",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "When using ExpressRoute, it's important to design for high availability by incorporating redundancy in both the partner and customer networks. This can include multiple ExpressRoute circuits, redundant connections from your network to Microsoft, and ensuring your on-premises network equipment has redundant connections.",
- "guid": "c0e7c28d-c936-4657-802b-ff4564b0d934",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "category": "BC and DR",
+ "checklist": "Azure AKS Review",
+ "guid": "bc14aea6-e65d-48d9-a3ad-c218e6436b06",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/business-continuity-and-disaster-recovery",
"services": [
- "ExpressRoute"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "Ensure redundancy within both the partner network and customer network when utilizing ExpressRoute for high availability",
+ "severity": "High",
+ "subcategory": "Requirements",
+ "text": "Define non-functional requirements such as SLAs, RTO (Recovery Time Objective) and RPO (Recovery Point Objective).",
"waf": "Reliability"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "The primary circuit should handle regular traffic while the backup circuit stays ready to take over if the primary circuit fails. Utilize BGP attributes to influence routing and designate your primary and backup circuits effectively.",
- "guid": "a359c373-e7dd-4616-83a3-64a907ebae48",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "category": "Cost Governance",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
"services": [
- "Backup",
- "ExpressRoute"
+ "Cost",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "ExpressRoute",
- "text": "When using multiple ExpressRoute circuits ensure that routing allows for a primary and backup",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Cost",
+ "text": "Use an external application such as kubecost to allocate costs to different users",
+ "waf": "Cost"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "S2S VPN connection can provide a cost-effective, resilient backup solution in the event of an ExpressRoute circuit failure. By using S2S VPN as a failover, you can maintain connectivity to your Azure resources without relying solely on ExpressRoute.",
- "guid": "ead53cc7-de2e-48aa-ab35-71549ab9153d",
- "link": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "category": "Cost Governance",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
"services": [
- "Backup",
"Cost",
- "ExpressRoute",
- "VPN"
+ "AKS"
],
"severity": "Low",
- "subcategory": "ExpressRoute",
- "text": "Consider deploying site-to-site VPN as a backup for your ExpressRoute private peering",
- "waf": "Reliability"
+ "subcategory": "Cost",
+ "text": "Use scale down mode to delete/deallocate nodes",
+ "waf": "Cost"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "Standard Load Balancer SKU offers an SLA of 99.99% and a higher level of service availability compared to the Basic Load Balancer SKU.",
- "guid": "778468d5-5a78-45d6-be96-c96ad8844cf3",
- "link": "https://learn.microsoft.com/azure/load-balancer/skus",
+ "category": "Cost Governance",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"services": [
- "LoadBalancer"
+ "Cost",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Load Balancers",
- "text": "Leverage the Standard SKU for Load Balancers that handle traffic to production applications",
- "waf": "Reliability"
+ "subcategory": "Cost",
+ "text": "When required use multi-instance partitioning GPU on AKS Clusters",
+ "waf": "Cost"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "By configuring the load balancer with a zone-redundant frontend, it can serve zonal resources in any zone with a single IP address. As long as at least one zone remains healthy within the region, the IP address associated with the frontend can survive one or more zone failures. It is recommended to have multiple zonal resources, such as virtual machines from different zones, in the backend pool of the load balancer. ",
- "guid": "b2b38c88-6ba2-4c02-8499-114a5d3ce574",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "category": "Cost Governance",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
"services": [
- "LoadBalancer",
- "VM"
+ "Cost",
+ "AKS"
],
"severity": "Low",
- "subcategory": "Load Balancers",
- "text": "For load balancers, consider using a zone-redundant frontend with multiple zonal resources in the backend",
- "waf": "Reliability"
+ "subcategory": "Cost",
+ "text": "If running a Dev/Test cluster use NodePool Start/Stop",
+ "waf": "Cost"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "When designing health probes for your Azure Load Balancer, it is important to follow best practices to ensure reliable and accurate monitoring of your backend instances.",
- "guid": "dccbd979-2a6b-4cca-8b5f-ea1ebf3dd95d",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-custom-probe-overview#design-guidance",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
"services": [
- "LoadBalancer",
- "Monitor"
+ "AzurePolicy",
+ "AKS"
],
- "severity": "Low",
- "subcategory": "Load Balancers",
- "text": "Select the right protocol, appropriate intervals and timeouts, representative paths and probe responses when defining Load Balancer Health Probes",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Compliance",
+ "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
+ "waf": "Security"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
- "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"services": [
- "NVA"
+ "AKS"
],
- "severity": "High",
- "subcategory": "NVAs",
- "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Compliance",
+ "text": "Separate applications from the control plane with user/system node pools",
+ "waf": "Security"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "By deploying VPN Gateways in an active-active mode, you can distribute VPN traffic across multiple gateways, improving reliability and ensuring continuous connectivity in case of failures or maintenance.",
- "guid": "927139b8-2110-42db-b6ea-f11e6f843e53",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"services": [
- "ACR",
- "VPN"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "VPN Gateways",
- "text": "Deploy Azure VPN Gateways in an active-active mode to ensure high availability and redundancy for your VPN connections.",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Add taint to your system nodepool to make it dedicated",
+ "waf": "Security"
},
{
- "category": "Network",
- "checklist": "Resiliency Review",
- "description": "Zone-redundant SKUs ensure that your VPN gateways are physically and logically separated within a region, providing resiliency and scalability. This deployment configuration safeguards your on-premises network connectivity to Azure from zone-level failures.",
- "guid": "f4722d92-8c1b-41cd-921f-54b29b9de39a",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"services": [
- "VPN"
+ "ACR",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "VPN Gateways",
- "text": "Use zone-redundant SKUs when deploying VPN Gateways to enhance resilience and protect against zone-level failures",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Use a private registry for your images, such as ACR",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"services": [
- "CosmosDB"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "FTA Resiliency Playbook",
- "waf": "Reliability"
+ "subcategory": "Compliance",
+ "text": "Scan your images for vulnerabilities",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "cc639637-a652-42ac-89e8-06965388e9de",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
"services": [
- "CosmosDB"
+ "Defender",
+ "AKS"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Compliance",
+ "text": "Use Azure Security Center to detect security posture vulnerabilities",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "42d4aefe-2383-470e-b019-c30df24996b2",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool",
"services": [
- "CosmosDB"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "High Availability",
- "text": "Run multiple replicas of the database (>1 ) in Prod",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "If required configure FIPS",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
- "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"services": [
- "CosmosDB",
- "ACR"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "High Availability",
- "text": "Leverage Multi-Region Writes",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Compliance",
+ "text": "Define app separation requirements (namespace/nodepool/cluster)",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Span Cosmos account across two or more regions with multi-region writes",
- "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"services": [
- "CosmosDB",
- "ACR"
+ "AKV",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Distribute your data globally",
- "waf": "Reliability"
+ "subcategory": "Secrets",
+ "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
- "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
- "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"services": [
- "CosmosDB"
+ "AKV",
+ "AKS"
],
"severity": "High",
- "subcategory": "High Availability",
- "text": "Choose from several well-defined consistency models",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
- "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
- "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
- "service": "CosmosDB",
- "services": [
- "CosmosDB"
- ],
- "severity": "Medium",
- "subcategory": "High Availability",
- "text": "Enable Service managed failover",
- "waf": "Reliability"
+ "subcategory": "Secrets",
+ "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
- "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
- "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"services": [
- "Storage",
- "Backup",
- "CosmosDB"
+ "AKV",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Backup Strategy",
- "text": "Enable Automatic Backups",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Reliability"
+ "subcategory": "Secrets",
+ "text": "If required add Key Management Service etcd encryption",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
- "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
- "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
"services": [
- "Backup",
- "CosmosDB"
+ "AKV",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Backup Strategy",
- "text": "Perform Periodic Backups",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Secrets",
+ "text": "If required consider using Confidential Compute for AKS",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "CosmosDB Review Checklist",
- "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
- "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
- "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
- "service": "CosmosDB",
+ "category": "Governance and Security",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"services": [
- "Backup",
- "CosmosDB"
+ "AKV",
+ "Defender",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Backup Strategy",
- "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Reliability"
+ "subcategory": "Secrets",
+ "text": "Consider using Defender for Containers",
+ "waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "d7e47431-76c8-4bdb-b55b-ce619e8a03f9",
- "link": "https://learn.microsoft.com/azure/openshift/howto-create-service-principal?pivots=aro-azurecli",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"services": [
- "RBAC",
- "Entra"
+ "Entra",
+ "AKS"
],
"severity": "High",
"subcategory": "Identity",
- "text": "Create a service principal and its role assignments before creating the ARO clusters.",
+ "text": "Use managed identities instead of Service Principals",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "7879424d-6267-486d-90b9-6c97be985190",
- "link": "https://learn.microsoft.com/azure/openshift/configure-azure-ad-ui",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"services": [
- "Entra"
+ "Entra",
+ "AKS"
],
- "severity": "High",
+ "severity": "Medium",
"subcategory": "Identity",
- "text": "Use AAD to authenticate users in your ARO cluster.",
+ "text": "Integrate authentication with AAD (using the managed integration)",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "adfec5f9-a82d-46e9-a8d1-5a0c7fed5d15",
- "link": "https://docs.openshift.com/container-platform/4.14/authentication/remove-kubeadmin.html",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"services": [
- "Entra"
+ "Entra",
+ "AKS"
],
"severity": "Medium",
"subcategory": "Identity",
- "text": "When using AAD authentication, remove kubeadmin user from the cluster.",
+ "text": "Limit access to admin kubeconfig (get-credentials --admin)",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "483835c9-86bb-4291-8155-a11475e39f54",
- "link": "https://docs.openshift.com/container-platform/4.13/applications/projects/working-with-projects.html",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"services": [
+ "Entra",
"RBAC",
- "Entra"
+ "AKS"
],
- "severity": "High",
+ "severity": "Medium",
"subcategory": "Identity",
- "text": "Define OpenShift projects to restrict RBAC privilege and isolate workloads in your cluster.",
+ "text": "Integrate authorization with AAD RBAC",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "0acccd97-9376-4bcd-a375-0ab2ab039da6",
- "link": "https://docs.openshift.com/container-platform/4.13/authentication/using-rbac.html",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"services": [
+ "Entra",
"RBAC",
- "Entra"
+ "AKS"
],
- "severity": "Medium",
+ "severity": "High",
"subcategory": "Identity",
- "text": "Define the required RBAC roles in OpenShift are scoped to either a project or a cluster.",
+ "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "d54d7c89-29db-4107-b532-5ae625ca44e4",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
"services": [
- "AKV",
- "Entra"
+ "Entra",
+ "AKS"
],
"severity": "Medium",
"subcategory": "Identity",
- "text": "Minimize the number of users who have administrator rights and secrets access.",
+ "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
"waf": "Security"
},
{
"category": "Identity and Access Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "685e2223-ace8-4bb1-8307-ca5f16f154e3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
"services": [
- "RBAC",
- "Entra"
+ "Entra",
+ "AKS"
],
"severity": "Medium",
"subcategory": "Identity",
- "text": "Use Privileged Identity Management in AAD for ARO users with privileged roles.",
+ "text": "For AKS non-interactive logins use kubelogin (preview)",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "aa369282-9e7e-4216-8836-87af467a1f89",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "category": "Identity and Access Management",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
"services": [
- "Subscriptions",
- "DDoS",
- "VNet",
- "Firewall",
- "WAF",
- "Entra"
+ "Entra",
+ "AKS"
],
- "severity": "Low",
- "subcategory": "DDoS",
- "text": "Use Azure DDoS Network/IP Protection to protect the virtual network you use for the ARO cluster unless you use Azure Firewall or WAF in a centralized subscription",
- "waf": "Security"
- },
- {
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "35bda433-24f1-4481-8533-182aa5174269",
- "link": "https://docs.openshift.com/container-platform/4.13/networking/routes/secured-routes.html",
- "services": [],
- "severity": "High",
- "subcategory": "Encryption",
- "text": "All web applications you configure to use an ingress should use TLS encryption and shouldn't allow access over unencrypted HTTP.",
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Disable AKS local accounts",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "44008ae7-d7e4-4743-876c-8bdbf55bce61",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "category": "Identity and Access Management",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "text": "Use Azure Front Door with WAF to securely publish ARO applications to the internet, especially in multi-region environments.",
+ "severity": "Low",
+ "subcategory": "Identity",
+ "text": "Configure if required Just-in-time cluster access",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "9e8a03f9-7879-4424-b626-786d60b96c97",
- "link": "https://learn.microsoft.com/azure/openshift/howto-secure-openshift-with-front-door",
+ "category": "Identity and Access Management",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
"services": [
- "FrontDoor",
- "PrivateLink"
+ "Entra",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "text": "If exposing an app on ARO with Azure Front Door, use private link to connect Front Door with the ARO router.",
+ "severity": "Low",
+ "subcategory": "Identity",
+ "text": "Configure if required AAD conditional access for AKS",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "be985190-4838-435c-a86b-b2912155a114",
- "link": "https://learn.microsoft.com/azure/openshift/howto-restrict-egress",
+ "category": "Identity and Access Management",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
"services": [
- "Firewall",
- "NVA",
- "AzurePolicy"
+ "Entra",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "text": "If your security policy requires you to inspect all outbound internet traffic that's generated in the ARO cluster, secure egress network traffic by using Azure Firewall or an NVA.",
+ "severity": "Low",
+ "subcategory": "Identity",
+ "text": "If required for Windows AKS workloads configure gMSA ",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "75e39f54-0acc-4cd9-9937-6bcda3750ab2",
- "link": "https://learn.microsoft.com/azure/openshift/howto-create-private-cluster-4x",
+ "category": "Identity and Access Management",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"services": [
- "AzurePolicy"
+ "Entra",
+ "AKS"
],
- "severity": "High",
- "subcategory": "Private access",
- "text": "If your security policy requires you to use a private IP address for the OpenShift API, deploy a private ARO cluster.",
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "For finer control consider using a managed Kubelet Identity",
"waf": "Security"
},
{
- "category": "Network topology and connectivity",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "ab039da6-d54d-47c8-a29d-b107d5325ae6",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"services": [
"ACR",
- "PrivateLink"
+ "AppGW",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Private access",
- "text": "Use Azure Private Link to secure network connections to managed Azure services, including to Azure Container Registry.",
- "waf": "Security"
+ "subcategory": "Best practices",
+ "text": "If using AGIC, do not share an AppGW across clusters",
+ "waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "25ca44e4-685e-4222-9ace-8bb12307ca5f",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-enable-arc-enabled-clusters",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
"services": [
- "Monitor"
+ "AKS"
],
"severity": "High",
- "subcategory": "Operations",
- "text": "Establish a monitoring process using the inbuilt Prometheus, OpenShift Logging or Container Insights integration.",
- "waf": "Operations"
+ "subcategory": "Best practices",
+ "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
+ "waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "16f154e3-aa36-4928-89e7-e216183687af",
- "link": "https://docs.openshift.com/container-platform/4.13/cicd/pipelines/understanding-openshift-pipelines.html",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"severity": "Medium",
- "subcategory": "Operations",
- "text": "Automate the application delivery process through DevOps practices and CI/CD solutions, such as Pipelines/GitOps provided by OpenShift.",
- "waf": "Operations"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "467a1f89-35bd-4a43-924f-14811533182a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/design-principles/managed-services",
- "services": [],
- "severity": "Low",
- "subcategory": "Operations",
- "text": "Whenever possible, remove the service state from inside containers. Instead, use an Azure platform as a service (PaaS) that supports multiregion replication.",
- "waf": "Operations"
+ "subcategory": "Best practices",
+ "text": "For Windows workloads use Accelerated Networking",
+ "waf": "Performance"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "1b7da8cf-aa66-4e15-b4d5-ada97dc3e232",
- "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-storageclass",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"services": [
- "Storage"
+ "LoadBalancer",
+ "AKS"
],
- "severity": "Low",
- "subcategory": "Operations",
- "text": "Use RWX storage with inbuilt Azure Files storage class.",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Best practices",
+ "text": "Use the standard ALB (as opposed to the basic one)",
+ "waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "6bb235c7-05e1-4696-bded-fa8a4c8cdec4",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/clusters/nodes-cluster-limit-ranges.html",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
+ "services": [
+ "VNet",
+ "AKS"
+ ],
"severity": "Medium",
- "subcategory": "Performance",
- "text": "Use pod requests and limits to manage the compute resources within a cluster.",
- "waf": "Performance"
+ "subcategory": "Best practices",
+ "text": "If using Azure CNI, consider using different Subnets for NodePools",
+ "waf": "Security"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "c620c30c-14ee-4b7f-9ae8-d9b3fec228e7",
- "link": "https://docs.openshift.com/container-platform/4.13/applications/quotas/quotas-setting-per-project.html",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
+ "services": [
+ "PrivateLink",
+ "VNet",
+ "Cost",
+ "AKS"
+ ],
"severity": "Medium",
- "subcategory": "Performance",
- "text": "Enforce resource quotas on projects.",
- "waf": "Performance"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "87ab177a-db59-4f6b-a613-334fd09dc234",
- "link": "https://docs.openshift.com/container-platform/4.13/machine_management/applying-autoscaling.html",
- "services": [],
- "severity": "High",
- "subcategory": "Performance",
- "text": "Define ClusterAutoScaler and MachineAutoScaler to scale machines when your cluster runs out of resources to support more deployments.",
- "waf": "Performance"
+ "subcategory": "Cost",
+ "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
+ "waf": "Security"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "19db6128-1269-4040-a4ba-4d3e0804276d",
- "link": "https://learn.microsoft.com/azure/openshift/support-policies-v4#supported-virtual-machine-sizes",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "e8a03f97-8794-468d-96a7-86d60f96c97b",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
"services": [
- "VM"
+ "VPN",
+ "AKS"
],
- "severity": "High",
- "subcategory": "Reliability",
- "text": "Use virtual machine sizes that are large enough to contain multiple container instances so you get the benefits of increased density, but not so large that your cluster can't handle the workload of a failing node.",
+ "severity": "Medium",
+ "subcategory": "HA",
+ "text": "If hybrid connectivity is required, use 2xER or ER+VPN for better availability",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "4b98b15c-8b31-4aa5-aceb-58889135e227",
- "link": "https://docs.openshift.com/container-platform/4.13/machine_management/deploying-machine-health-checks.html",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"severity": "High",
- "subcategory": "Reliability",
- "text": "Deploy machine health checks to automatically repair damaged machines in a machine pool.",
+ "subcategory": "IPAM",
+ "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "896d31b6-6c67-4ba5-a119-c08e8f5d587c",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-metric-alerts",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"services": [
- "Monitor"
+ "VNet",
+ "AKS"
],
"severity": "High",
- "subcategory": "Reliability",
- "text": "Use an alerting system to provide notifications when things need direct action: Container Insights metric alerts or in-built Alerting UI.",
- "waf": "Reliability"
+ "subcategory": "IPAM",
+ "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
+ "waf": "Performance"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "7e9ced16-acd1-476e-b9b2-41a998a57ae7",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview#availability-zones",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"severity": "High",
- "subcategory": "Reliability",
- "text": "Ensure that the cluster is created in a region that supports AZs and create a machine set for each AZ.",
- "waf": "Reliability"
+ "subcategory": "IPAM",
+ "text": "If using Azure CNI, check the maximum pods/node (default 30)",
+ "waf": "Performance"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "7b997e71-1b7d-4a8c-baa6-6e15d4d5ada9",
- "link": "https://docs.openshift.com/container-platform/4.13/machine_management/creating-infrastructure-machinesets.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
"services": [
+ "VNet",
"AKS"
],
"severity": "Low",
- "subcategory": "Reliability",
- "text": "Create infrastructure machine sets to hold infrastructure components. Apply specific Kubernetes labels to these machines and then update the infrastructure components to run on only those machines.",
- "waf": "Reliability"
+ "subcategory": "IPAM",
+ "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
+ "waf": "Security"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "7dc3e232-6bb2-435c-905e-1696fdedfa8a",
- "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-backup#create-a-backup-with-velero-to-include-snapshots",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"services": [
- "Backup"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Reliability",
- "text": "Create application backup and plan for restore and include persistent volumes in the backup.",
- "waf": "Reliability"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "81c12318-1a64-4174-8583-3fb4ae3c2df7",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-priority.html",
- "services": [],
- "severity": "Low",
- "subcategory": "Reliability",
- "text": "Use pod priorities, so that in case of limited resources the most critical pods will run.",
+ "severity": "High",
+ "subcategory": "IPAM",
+ "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "43166c3b-cbe0-45bb-b209-d4a0da577784",
- "link": "https://docs.openshift.com/container-platform/4.13/architecture/admission-plug-ins.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
"services": [
- "AzurePolicy"
+ "AKS"
],
"severity": "Low",
- "subcategory": "Security",
- "text": "Regulate cluster functions using admission plug-ins, which are commonly used to enforce security policy, resource limitations, or configuration requirements.",
+ "subcategory": "Operations",
+ "text": "If required add your own CNI plugin",
"waf": "Security"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "24d21678-5d2f-4a56-a56a-d48408fe8273",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
"services": [
- "ACR"
+ "AKS"
],
"severity": "Low",
- "subcategory": "Security",
- "text": "Store your container images in Azure Container Registry and geo-replicate the registry to each region.",
- "waf": "Security"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "4c486ba2-80dc-4059-8cf7-5ee8e1309ccc",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-vertical-autoscaler.html",
- "services": [],
- "severity": "Medium",
- "subcategory": "Workload",
- "text": "Optimize the CPU and memory request values, and maximize the efficiency of the cluster resources using vertical pod autoscaler.",
+ "subcategory": "Operations",
+ "text": "If required configure Public IP per node in AKS",
"waf": "Performance"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "d579366b-cda2-4750-aa1a-bfe9d55d14c3",
- "link": "https://docs.openshift.com/container-platform/4.13/applications/application-health.html",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"services": [
- "Monitor"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Workload",
- "text": "Add health probes to your pods to monitor application health. Make sure pods contain livenessProbe and readinessProbe. Use Startup probes to determine the point at which the application has started up.",
+ "subcategory": "Scalability",
+ "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "c4929cb1-b3d1-4325-ae12-4ba34d0685ed",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-autoscaling.html",
- "services": [],
- "severity": "Medium",
- "subcategory": "Workload",
- "text": "Scale pods to meet demand using horizontal pod autoscaler.",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "dce9be3b-b0dd-4b3b-95fb-2ec14eeaa359",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/pods/nodes-pods-configuring.html#nodes-pods-pod-distruption-about_nodes-pods-configuring",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
"services": [
- "Cost"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Workload",
- "text": "Use disruption budgets to ensure the required number of pod replicas exist to handle expected application load.",
+ "subcategory": "Scalability",
+ "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
"waf": "Reliability"
},
{
- "category": "Operations management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "2829e2ed-b217-4367-9aff-6791b4935ada",
- "link": "https://docs.openshift.com/container-platform/4.13/nodes/scheduling/nodes-scheduler-pod-topology-spread-constraints.html",
- "services": [],
- "severity": "Medium",
- "subcategory": "Workload",
- "text": "Use pod topology constraints to automatically schedule pods on nodes throughout the cluster.",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "fea1dbf3-dd95-4d48-a7c8-91dcb1f7d575",
- "link": "https://learn.microsoft.com/azure/openshift/intro-openshift#service-level-agreement",
- "services": [],
- "severity": "Medium",
- "subcategory": "Availablity",
- "text": "Leverage Current ARO SLA - 99.95 into BCDR planning",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "b95e06e1-58e2-4ea3-a92c-2de6e2065b3a",
- "link": "https://www.redhat.com/rhdc/managed-files/pa-getting-started-azure-openshift-ebook-f20686-201911-en_0.pdf",
- "services": [],
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
+ "services": [
+ "NVA",
+ "AKS"
+ ],
"severity": "High",
- "subcategory": "Cluster Design",
- "text": "Run user workloads on the worker nodes, not the control plane nodes",
- "waf": "Reliability"
+ "subcategory": "Security",
+ "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "description": "Create infrastructure machine sets to hold infrastructure components. Apply specific Kubernetes labels to these machines and then update the infrastructure components to run on only those machines",
- "guid": "76af4a69-1e88-439a-ba46-667e13c10567",
- "link": "https://learn.microsoft.com/azure/openshift/howto-segregate-machinesets",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
"services": [
- "AKS",
- "VNet"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Cluster Design",
- "text": "Isolate workloads into worker nodes running in individual subnets as needed",
- "waf": "Reliability"
+ "subcategory": "Security",
+ "text": "If using a public API endpoint, restrict the IP addresses that can access it",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "785c6fe9-6c96-4ad8-a44c-f3b2b38c886b",
- "link": "https://learn.microsoft.com/azure/openshift/howto-create-a-backup",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"services": [
- "Backup"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup a cluster state for stateful workload scenarios to a paired region",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Security",
+ "text": "Use private clusters if your requirements mandate it",
+ "waf": "Security"
},
{
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "a2c02149-9014-4a5d-9ce5-74dccbd9792a",
- "link": "https://access.redhat.com/documentation/red_hat_openshift_container_storage/4.4/html/deploying_and_managing_openshift_container_storage_on_microsoft_azure/deploying-openshift-container-storage-on-microsoft-azure_rhocs",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"services": [
- "Storage",
- "ACR"
+ "AzurePolicy",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Data Store",
- "text": "If container storage is required, ensure availability across regions if needed: Using RWX storage with inbuilt Azure Files storage class. Using CSI Drivers for storage provisioning",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "6bcca2b4-fea1-4dbf-9dd9-5d48c7c891dc",
- "link": "https://docs.openshift.com/aro/3/dev_guide/persistent_volumes.html",
- "services": [],
- "severity": "Medium",
- "subcategory": "Data Store",
- "text": "Whenever possible, move state out of containers and into external databases that support multi-region replication. Avoid Persistent Volumes",
- "waf": "Reliability"
- },
- {
- "category": "Platform Automation",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "42324ece-81c1-4231-a1a6-417415833fb4",
- "link": "https://docs.openshift.com/container-platform/4.13/applications/deployments/route-based-deployment-strategies.html",
- "services": [],
- "severity": "Low",
- "subcategory": "Workload",
- "text": "Consider blue/green or canary strategies to deploy new releases of application.",
- "waf": "Operations"
- },
- {
- "category": "Platform Automation",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "ae3c2df7-4316-46c3-acbe-05bbe209d4a0",
- "link": "https://docs.openshift.com/container-platform/4.13/cicd/gitops/understanding-openshift-gitops.html",
- "services": [],
- "severity": "Low",
- "subcategory": "Workload",
- "text": "Consider using Red Hat OpenShift GitOps. Red Hat OpenShift GitOps uses Argo CD to maintain cluster resources and support application CI/CD.",
- "waf": "Operations"
- },
- {
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "da577784-24d2-4167-a5d2-fa56c56ad484",
- "link": "https://learn.microsoft.com/azure/openshift/support-lifecycle",
- "services": [],
- "severity": "High",
- "subcategory": "Control plane",
- "text": "Keep your clusters on the latest OpenShift version to avoid potential security or upgrade issues.",
+ "subcategory": "Security",
+ "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "08fe8273-4c48-46ba-880d-c0591cf75ee8",
- "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/quickstart-connect-cluster",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"services": [
- "AKS",
- "Arc"
+ "AzurePolicy",
+ "AKS"
],
"severity": "High",
- "subcategory": "Control plane",
- "text": "Connect Azure Red Hat OpenShift clusters to Azure Arc-enabled Kubernetes.",
+ "subcategory": "Security",
+ "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "e1309ccc-d579-4366-acda-2750aa1abfe9",
- "link": "https://docs.openshift.com/container-platform/4.10/security/encrypting-etcd.html",
- "services": [],
- "severity": "Low",
- "subcategory": "Encryption",
- "text": "For Azure Red Hat OpenShift 4 clusters, etcd data isn't encrypted by default, but it's recommended to enable etcd encryption to provide another layer of data security.",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "services": [
+ "AzurePolicy",
+ "AKS"
+ ],
+ "severity": "High",
+ "subcategory": "Security",
+ "text": "Use Kubernetes network policies to increase intra-cluster security",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "d55d14c3-c492-49cb-8b3d-1325ae124ba3",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"services": [
- "AKS",
- "Defender",
- "Arc"
+ "WAF",
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Posture",
- "text": "Use Microsoft Defender for Containers supported via Arc-enabled Kubernetes to secure clusters, containers, and applications.",
+ "severity": "High",
+ "subcategory": "Security",
+ "text": "Use a WAF for web workloads (UIs or APIs)",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "4d0685ed-dce9-4be3-ab0d-db3b55fb2ec1",
- "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/tutorial-akv-secrets-provider",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
"services": [
- "AKS",
- "AKV",
- "Arc"
+ "VNet",
+ "DDoS",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Secrets",
- "text": "For applications that require access to sensitive information, use a service principal and the AKV Secrets Provider with the extension for Arc-enabled Kubernetes clusters.",
+ "subcategory": "Security",
+ "text": "Use DDoS Standard in the AKS Virtual Network",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "4eeaa359-2829-4e2e-bb21-73676aff6791",
- "link": "https://learn.microsoft.com/azure/aks/developer-best-practices-pod-security#secure-pod-access-to-resources",
- "services": [],
- "severity": "Medium",
- "subcategory": "Workload",
- "text": "Secure pod access to resources. Provide the least number of permissions, and avoid using root or privileged escalation.",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "If required add company HTTP Proxy",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "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",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"services": [
- "Monitor",
- "AzurePolicy"
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Workload",
- "text": "Monitor and enforce configuration by using the Azure Policy Extension.",
+ "subcategory": "Security",
+ "text": "Consider using a service mesh for advanced microservice communication management",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "15833fb4-ae3c-42df-9431-66c3bcbe05bb",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
"services": [
- "Defender"
+ "Monitor",
+ "AKS"
],
"severity": "High",
- "subcategory": "Workload",
- "text": "Scan your images for vulnerabilities with Microsoft Defender or any other image scanning solution.",
- "waf": "Security"
+ "subcategory": "Alerting",
+ "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
+ "waf": "Operations"
},
{
- "category": "Security",
- "checklist": "Azure Red Hat OpenShift",
- "guid": "e209d4a0-da57-4778-924d-216785d2fa56",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
"services": [
- "Subscriptions",
- "ACR"
+ "Entra",
+ "AKS"
],
"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"
+ "subcategory": "Compliance",
+ "text": "Check regularly Azure Advisor for recommendations on your cluster",
+ "waf": "Operations"
},
{
- "category": "Operations Management",
- "checklist": "Azure OpenAI Review",
- "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1",
- "link": "https://github.com/Azure-Samples/AI-Gateway",
- "service": "Azure OpenAI",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
"services": [
- "APIM",
- "Entra"
+ "AKS"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Enable AKS auto-certificate rotation",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
"services": [
- "Monitor"
+ "AKS"
],
"severity": "High",
- "subcategory": "Monitoring",
- "text": "Enable monitoring for your AOAI instances",
- "waf": "Operational Excellence"
+ "subcategory": "Compliance",
+ "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
"services": [
- "AKV",
- "Monitor",
- "Subscriptions"
+ "AKS"
],
"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"
+ "subcategory": "Compliance",
+ "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
"services": [
- "Monitor"
+ "AKS"
],
"severity": "High",
- "subcategory": "Monitoring",
- "text": "Monitor token usage to prevent service disruptions due to capacity",
- "waf": "Operational Excellence"
+ "subcategory": "Compliance",
+ "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
"services": [
- "Monitor"
+ "AKS"
],
- "severity": "Medium",
- "subcategory": "Observability",
- "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
- "waf": "Operational Excellence"
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
"services": [
- "APIM"
+ "AKS"
],
"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"
+ "subcategory": "Compliance",
+ "text": "Consider using AKS command invoke on private clusters",
+ "waf": "Operations"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "For planned events consider using Node Auto Drain",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
"services": [
- "Entra"
+ "AKS"
],
"severity": "High",
- "subcategory": "Authentication",
- "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key",
- "waf": "Security"
+ "subcategory": "Compliance",
+ "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
+ "waf": "Operations"
},
{
- "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 Excellence"
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Use custom Node RG (aka 'Infra RG') name",
+ "waf": "Operations"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Compliance",
+ "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
+ "waf": "Operations"
},
{
- "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",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Taint Windows nodes",
+ "waf": "Operations"
},
{
- "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",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Keep windows containers patch level in sync with host patch level",
+ "waf": "Operations"
},
{
- "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",
+ "checklist": "Azure AKS Review",
+ "description": "Via Diagnostic Settings at the cluster level",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "services": [
+ "Monitor",
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
"services": [
- "Storage",
- "ServiceBus"
+ "AKS"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Compliance",
+ "text": "If required use nodePool snapshots",
+ "waf": "Cost"
},
{
- "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",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "services": [
+ "Cost",
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Cost",
+ "text": "Consider spot node pools for non time-sensitive workloads",
+ "waf": "Operations"
},
{
- "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",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "services": [
+ "Cost",
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Cost",
+ "text": "Consider AKS virtual node for quick bursting",
+ "waf": "Operations"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "services": [
+ "Monitor",
+ "AKS"
+ ],
"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"
+ "subcategory": "Monitoring",
+ "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"services": [
- "ACR"
+ "Monitor",
+ "AKS"
],
- "severity": "Low",
- "subcategory": "Multi-region architecture",
- "text": "Deploy multiple OAI instances across regions",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
"services": [
- "APIM",
- "Entra"
+ "Monitor",
+ "AKS"
],
- "severity": "High",
- "subcategory": "Load balancing",
- "text": "Implement retry & healthchecks with Gateway pattern like APIM",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Monitor CPU and memory utilization of the nodes",
+ "waf": "Operations"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "services": [
+ "Monitor",
+ "AKS"
+ ],
"severity": "Medium",
- "subcategory": "Quotas",
- "text": "Ensure having adequate quotas of TPM & RPM for the workload",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
+ "waf": "Operations"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
+ "services": [
+ "Storage",
+ "Monitor",
+ "EventHubs",
+ "ServiceBus",
+ "AKS"
+ ],
"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"
+ "subcategory": "Monitoring",
+ "text": "Monitor OS disk queue depth in nodes",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"services": [
- "ACR"
+ "LoadBalancer",
+ "Monitor",
+ "NVA",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Load balancing",
- "text": "Deploy separate fine tuned models across regions if finetuning is employed",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"services": [
- "Backup",
- "ASR"
+ "Monitor",
+ "AKS"
],
"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"
+ "subcategory": "Monitoring",
+ "text": "Subscribe to resource health notifications for your AKS cluster",
+ "waf": "Operations"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"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"
+ "subcategory": "Resources",
+ "text": "Configure requests and limits in your pod specs",
+ "waf": "Operations"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Resources",
+ "text": "Enforce resource quotas for namespaces",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
"services": [
- "ACR"
+ "Subscriptions",
+ "AKS"
],
"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"
+ "subcategory": "Resources",
+ "text": "Ensure your subscription has enough quota to scale out your nodepools",
+ "waf": "Operations"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
+ "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
+ "service": "AKS",
"services": [
- "RBAC"
+ "AKS"
],
"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"
+ "subcategory": "Resources",
+ "text": "Configure Liveness and Readiness probes for all deployments",
+ "waf": "Operations"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"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"
+ "subcategory": "Scalability",
+ "text": "Use the Cluster Autoscaler",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
"services": [
- "Sentinel",
- "Monitor",
- "Defender"
+ "AKS"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "Customize node configuration for AKS node pools",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"services": [
- "AzurePolicy"
+ "AKS"
],
"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"
+ "subcategory": "Scalability",
+ "text": "Use the Horizontal Pod Autoscaler when required",
+ "waf": "Performance"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
"severity": "High",
- "subcategory": "Jail break Safety",
- "text": "Implement Prompt shields and groundedness detection using Content Safety ",
- "waf": "Operational Excellence"
+ "subcategory": "Scalability",
+ "text": "Consider an appropriate node size, not too large or too small",
+ "waf": "Performance"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
+ "waf": "Performance"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
+ "services": [
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "Consider subscribing to EventGrid Events for AKS automation",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
"services": [
- "RBAC",
- "AzurePolicy"
+ "AKS"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "For long running operation on an AKS cluster consider event termination",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
"services": [
- "RBAC"
+ "AKS"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Scalability",
+ "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
"services": [
- "PrivateLink"
+ "Storage",
+ "AKS"
],
"severity": "High",
- "subcategory": "Network security",
- "text": "Configure private endpoint for AI services to restrict service access within your network",
- "waf": "Security"
+ "subcategory": "Storage",
+ "text": "Use ephemeral OS disks",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
"services": [
- "Firewall",
- "VNet"
+ "Storage",
+ "AKS"
],
"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"
+ "subcategory": "Storage",
+ "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
+ "waf": "Performance"
},
{
- "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": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "services": [
+ "Storage",
+ "AKS"
+ ],
+ "severity": "Low",
+ "subcategory": "Storage",
+ "text": "For hyper performance storage option use Ultra Disks on AKS",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
"services": [
- "Cost"
+ "Storage",
+ "SQL",
+ "AKS"
],
"severity": "Medium",
- "subcategory": "Token Optimization",
- "text": "Use prompt compression tools like LLMLingua or gprtrim",
- "waf": "Cost Optimization"
+ "subcategory": "Storage",
+ "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
+ "waf": "Performance"
},
{
- "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",
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
"services": [
- "AKV",
- "Entra"
+ "Storage",
+ "AKS"
],
- "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"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
+ "waf": "Performance"
},
{
- "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": [],
+ "category": "Operations",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
+ "services": [
+ "Storage",
+ "AKS"
+ ],
"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"
+ "subcategory": "Storage",
+ "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure OpenAI Review",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
"services": [
+ "Cost",
"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"
+ "subcategory": "Azure Monitor - enforce data collection rules",
+ "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
- "category": "Governance and Security",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
- "services": [],
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "services": [
+ "Backup",
+ "Cost"
+ ],
"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"
+ "subcategory": "Backup",
+ "text": "check backup instances with the underlying datasource not found",
+ "waf": "Cost"
},
{
- "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": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Delete/archive",
+ "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
+ "waf": "Cost"
},
{
- "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": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "659d3958-fd77-4289-a835-556df2bfe456",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Delete/archive",
+ "text": "Consider snooze and stop technique (snooze a service after x days, stop after 2x, delete/deallocate after 3x)",
+ "waf": "Cost"
},
{
- "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": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3b0d834a-3487-426d-b69c-6b5c2a26494b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "services": [
+ "Backup",
+ "Storage",
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Delete/archive",
+ "text": "Delete or archive unused resources (old backups, logs, storage accounts, etc...)",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "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": [
- "Entra"
+ "Backup",
+ "Storage",
+ "Cost",
+ "ASR"
],
- "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"
+ "severity": "Medium",
+ "subcategory": "Delete/archive",
+ "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
"services": [
- "AKV",
- "Entra"
+ "Cost",
+ "Monitor"
],
- "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"
+ "severity": "Medium",
+ "subcategory": "Log Analytics retention for workspaces",
+ "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 ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
"services": [
- "AKV"
+ "Storage",
+ "Cost",
+ "AzurePolicy"
],
- "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"
+ "severity": "Medium",
+ "subcategory": "Policy",
+ "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Cost"
},
{
- "category": "Cost Optimization",
- "checklist": "Azure OpenAI Review",
- "guid": "adfe27be-e297-401a-a352-baaab79b088d",
- "link": "https://github.com/openai/tiktoken",
- "service": "Azure OpenAI",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "59bb91a3-ed90-4cae-8cc8-4c37b6b780cb",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
"services": [
"Cost"
],
- "severity": "High",
- "subcategory": "Token Optimization",
- "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode",
- "waf": "Cost Optimization"
+ "severity": "Medium",
+ "subcategory": "Run orphaned resources workbook - delete or snooze ghost items",
+ "text": "https://github.com/dolevshor/azure-orphan-resources",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-acm-create-budgets",
+ "waf": "Cost"
},
{
- "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": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9fe5c464-89d4-457a-a27c-3874d0102cac",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Shutdown/deallocate",
+ "text": "Shutdown underutilized instances",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/understand/analyze-unexpected-charges",
+ "waf": "Cost"
},
{
- "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": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "services": [
+ "VM",
+ "Backup",
+ "Storage",
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "stopped/deallocated VMs: check disks",
+ "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
"services": [
+ "Storage",
+ "Cost",
"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"
+ "severity": "Medium",
+ "subcategory": "storage accounts lifecycle policy",
+ "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Cleanup",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "f2bfe456-3b0d-4834-a348-726de69c6b5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
"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"
+ "subcategory": "Tagging",
+ "text": "Use specific tags for temporary items with 'delete by DATE' format - and automate monthly cleanup",
+ "waf": "Cost"
},
{
- "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",
+ "category": "DB/App tuning",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a26494b-69ba-4d37-aad5-3cc78e1d7666",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice",
"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"
+ "severity": "Medium",
+ "subcategory": "DB optimization",
+ "text": "Plan for db optimization with the intent of downsizing the related services (and improve performance)",
+ "waf": "Cost"
},
{
- "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",
+ "category": "DB/APP tuning",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7357c449-674b-45ed-a5a8-59c7733be2a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
"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"
+ "subcategory": "App modernization",
+ "text": "Modernizing the app towards a microservices architecture will have the effect of letting the app scale according to the single service and not the entire stack",
+ "waf": "Cost"
},
{
- "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",
+ "category": "DB/APP tuning",
+ "checklist": "Cost Optimization Checklist",
+ "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": [
+ "VM",
+ "Storage",
"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"
+ "subcategory": "DB optimization",
+ "text": "optimizing the DB queries will increase performance and allow better right-sizing of storage and VMs",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "DB/APP tuning",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "bac75819-59bb-491a-9ed9-0cae2cc84c37",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "AI Search Reliability",
- "text": "Review the guidance provided on setting up AI search for Reliability",
- "waf": "Operational Excellence"
+ "subcategory": "Demand shaping",
+ "text": "Using demand shaping on PaaS services will optimize costs and performances",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b6b780cb-9fe5-4c46-989d-457a927c3874",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging",
"services": [
- "Storage"
+ "Entra",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "AI Search Vector Limits",
- "text": "Plan and manage AI Search Vector storage",
- "waf": "Operational Excellence"
+ "subcategory": "Advisor",
+ "text": "Start from the Azure Advisor page suggestions.",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "services": [
+ "VM",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "DevOps",
- "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications",
- "waf": "Operational Excellence"
+ "subcategory": "Advisor",
+ "text": "Make sure advisor is configured for VM right sizing ",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "881a1bd5-d1e4-44a1-a659-d3958fd77289",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
"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"
+ "subcategory": "Automation",
+ "text": "Consider implementing IaC scripts or devops pipelines to match the cost governance process",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b835556d-f2bf-4e45-93b0-d834a348726d",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
"services": [
+ "Cost",
"Monitor"
],
"severity": "Medium",
- "subcategory": "Development",
- "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �",
- "waf": "Operational Excellence"
+ "subcategory": "Automation",
+ "text": "Set up cost alerts for applications that have variable costs (ideally for all of them)",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure OpenAI Review",
- "guid": "294798b1-578b-4219-a46c-eb5443513592",
- "service": "Azure OpenAI",
- "services": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e69c6b5c-2a26-4494-a69b-ad37aad53cc7",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Development",
- "text": "Evaluate your Azure AI Search results based on different search parameters",
- "waf": "Operational Excellence"
+ "subcategory": "Automation",
+ "text": "Use Azure Automation: Automate repetitive tasks can help you save time and resources, reducing costs in the process. ",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8e1d7666-7357-4c44-a674-b5ed85a859c7",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "services": [
+ "Cost"
+ ],
"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"
+ "subcategory": "Automation",
+ "text": "Run orphaned resources workbook",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "733be2a1-a27b-4765-a91b-e1f388ef394c",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "services": [
+ "Storage",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Development",
- "text": "Use prompt engineering techniques to improve the accuracy of LLM responses",
- "waf": "Operational Excellence"
+ "subcategory": "Baseline",
+ "text": "Try and establish a baseline of monthly spending and an acceptable saving target against the baseline (new services will not be optimized at this stage)",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2bd463cb-bac7-4581-a59b-b91a3ed90cae",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "services": [
+ "Cost",
+ "AzurePolicy"
+ ],
"severity": "Medium",
- "subcategory": "Security Audits and Penetration Testing",
- "text": "Red team your GenAI applications",
- "waf": "Security"
+ "subcategory": "Baseline",
+ "text": "Establish a cost optimization baseline by using a policy that tags every new resource as #NEW",
+ "waf": "Cost"
},
{
- "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": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2cc84c37-b6b7-480c-a9fe-5c46489d457a",
+ "link": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management-config",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "End user feedback",
- "text": "Provide end users with scoring options for LLM responses and track these scores. ",
- "waf": "Operational Excellence"
+ "subcategory": "Baseline",
+ "text": "Organize resources to maximize cost insights and accountability",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "927c3874-d010-42ca-a6aa-e01e6a84de5d",
+ "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": [
"Cost"
],
- "severity": "High",
- "subcategory": "Quota Management",
- "text": "Consider Quota management practices",
- "waf": "Cost Optimization"
+ "severity": "Medium",
+ "subcategory": "Budgets",
+ "text": "Create budgets",
+ "waf": "Cost"
},
{
- "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",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e36d1d92-881a-41bd-9d1e-44a19659d395",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator",
"services": [
- "LoadBalancer",
- "APIM",
- "ACR",
- "Entra"
+ "Cost"
],
"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"
+ "subcategory": "Cost Analysis",
+ "text": "In cost analysis - use daily granularity, grouped by service name to analyze the spending of the past 3 months and identify the top 3 spenders",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
- "service": "Cognitive Services",
- "services": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8fd77289-b835-4556-bf2b-fe4563b0d834",
+ "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Best Practice",
- "text": "Leverage FTA HandBook for Cognitive Services",
- "waf": "Reliability"
+ "subcategory": "Cost Analysis",
+ "text": "Check daily for cost spikes and anomalies (ideally with automatic billing exports)",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
- "service": "Cognitive Services",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a348726d-e69c-46b5-a2a2-6494b69bad37",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
"services": [
- "Backup"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup Your Prompts",
- "waf": "Reliability"
+ "subcategory": "Cost Analysis",
+ "text": "Automate cost retrieval for deep analysis or integration",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
- "service": "Cognitive Services",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "aad53cc7-8e1d-4766-9735-7c449674b5ed",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
"services": [
- "Backup",
- "ASR"
+ "Cost",
+ "ACR"
],
- "severity": "High",
- "subcategory": "Backup",
- "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Free services",
+ "text": "Take advantage of Azure free services: Azure offers a number of free services, such as DevOps, Azure Container Registry, and Azure Logic Apps, that can help you save costs on development and operations. ",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
- "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
- "service": "Cognitive Services",
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "96c96ad8-844c-4f3b-8b38-c886ba2c0214",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
"services": [
- "Backup"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Backup Your ChatGPT conversations",
- "waf": "Reliability"
+ "subcategory": "Tagging",
+ "text": "Tag shared resources",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
- "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
- "service": "Cognitive Services",
- "services": [],
+ "category": "Process Administration",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "99014a5d-3ce5-474d-acbd-9792a6bcca2b",
+ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "DevOps",
- "text": "CI/CD for custom speech",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "3687a046-7a1f-4893-9bda-43324f248116",
- "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
- "service": "Cognitive Services",
- "services": [],
- "severity": "Low",
- "subcategory": "QnA Service",
- "text": "Move a knowledge base using export-import",
- "waf": "Reliability"
+ "subcategory": "Tagging",
+ "text": "Consider using tags to all services for cost allocation",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
- "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
- "service": "Purview",
- "services": [],
+ "category": "reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4fea1dbf-3dd9-45d4-ac7c-891dcb1f7d57",
+ "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage FTA Resillency Handbook",
- "waf": "Reliability"
+ "subcategory": "automation",
+ "text": "Consider Reservation automation to track and promptly react to changes",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "description": "check by searching the Meter Category Licenses in the Cost analysys",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
"services": [
- "ASR"
+ "VM",
+ "SQL",
+ "Cost",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Plan for Data Center level outage",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "check AHUB is applied to all Windows VMs, RHEL and SQL",
+ "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
- "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
"services": [
- "ASR"
+ "LoadBalancer",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Practice Failover for BCDR",
- "waf": "Reliability"
+ "subcategory": "Check Red Hat Licences if applicable",
+ "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "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": [
- "Backup"
+ "AppSvc",
+ "Cost"
],
- "severity": "High",
- "subcategory": "Backup and Restore ",
- "text": "Plan a backup strategy and take regular backups",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Saving plans will provide 17% on select app service plans",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
- "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
- "service": "Purview",
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
"services": [
- "EventHubs"
+ "VM",
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Purview Accounts Replications",
- "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Planning",
+ "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
- "link": "https://learn.microsoft.com/purview/deployment-best-practices",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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": [
+ "VM",
+ "ARS",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Purview accounts architectures and deployment best practices",
- "waf": "Reliability"
+ "subcategory": "Reservations/savings plans",
+ "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.",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a785c6fe-96c9-46ad-a844-cf3b2b38c886",
+ "link": "https://azure.microsoft.com/resources/achieving-compliant-data-residency-and-security-with-azure/",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Collection Architectures and best practices",
- "waf": "Reliability"
+ "subcategory": "Reservations/savings plans",
+ "text": "Plan for Azure Savings Plans for all the workloads that are dynamic and need maximum flexibility",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ba2c0214-9901-44a5-b3ce-574dccbd9792",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Assest lifecycle best practices",
- "waf": "Reliability"
+ "subcategory": "Reservations/savings plans",
+ "text": "Plan for Azure Reservations for all the workloads that are less dynamic and won't change much",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "services": [
+ "Storage",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow automation best practices",
- "waf": "Reliability"
+ "subcategory": "Reserve storage",
+ "text": "Only larger disks can be reserved => 1 TiB -",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
"services": [
- "Backup"
+ "VM",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Backup and Migration Best practices",
- "waf": "Reliability"
+ "subcategory": "Reserve VMs with normalized and rationalized sizes",
+ "text": "After the right-sizing optimization",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "services": [
+ "SQL",
+ "Cost",
+ "AzurePolicy"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Purview Glossary Best Practices",
- "waf": "Reliability"
- },
- {
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
- "link": "https://learn.microsoft.com/purview/concept-workflow",
- "service": "Purview",
- "services": [],
- "severity": "Low",
- "subcategory": "Data catalog",
- "text": "Leverage Workflows ",
- "waf": "Reliability"
+ "subcategory": "SQL Database AHUB",
+ "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",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "services": [
+ "VM",
+ "SQL",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data catalog",
- "text": "Follow Purview Security Best Practices",
- "waf": "Reliability"
+ "subcategory": "SQL Database Reservations",
+ "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e13c1056-75c1-4e94-9b45-9837ff7ae7c6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#managed-identities",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data Map",
- "text": "Follow Purview Data Lineage Best Practices",
- "waf": "Reliability"
+ "subcategory": "Tracking",
+ "text": "Make sure you Azure Reservations and Savings plans are close to 100% utilization or make the necessary changes to reach it.",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
- "service": "Purview",
- "services": [],
+ "category": "Reservations",
+ "checklist": "Cost Optimization Checklist",
+ "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"
+ ],
"severity": "Medium",
- "subcategory": "Data Map",
- "text": "Follow Best Practices for Scanning Registered Sources",
- "waf": "Reliability"
+ "subcategory": "Tracking",
+ "text": "Make sure that your reservations usage is close to 100%. If not, either enforce an allowed SKU policy or exchange the reservation",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
- "service": "Purview",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "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"
+ ],
"severity": "Medium",
- "subcategory": "Data Map",
- "text": "Follow Classification Best Practices in Governance Portal",
- "waf": "Reliability"
+ "subcategory": "Automation",
+ "text": "Plan and enforce a On/Off policy for production services, where possible",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
- "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
- "service": "Purview",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "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"
+ ],
"severity": "Medium",
- "subcategory": "Data Map",
- "text": "Perform Sensitivity Labelling in the Purview Data Map",
- "waf": "Reliability"
+ "subcategory": "Automation",
+ "text": "Plan and enforce a On-Demand policy with auto-shutdown for non-production services, where possible",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
- "link": "https://learn.microsoft.com/purview/concept-data-share",
- "service": "Purview",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
"services": [
- "Storage"
+ "VM",
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Data Sharing",
- "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Autoscale",
+ "text": "Consider using a VMSS to match demand rather than flat sizing",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
- "services": [],
- "severity": "Low",
- "subcategory": "Data Estate",
- "text": "Leverage Data Estate Insights",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "services": [
+ "Cost",
+ "AKS"
+ ],
+ "severity": "Medium",
+ "subcategory": "Autoscale",
+ "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
- "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
- "service": "Purview",
- "services": [],
- "severity": "Low",
- "subcategory": "Data Estate",
- "text": "Use Data stewardship and Catalog adoption",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "93665720-2bff-4456-9b0d-934a359c363e",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Autoscale",
+ "text": "Right-size PaaS service according to average use and accomodate spikes with auto or manual scaling",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
- "services": [],
- "severity": "Low",
- "subcategory": "Data Estate",
- "text": "Use Inventory and Ownership",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7dd61623-a364-4a90-9eba-e38ead53cc7d",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Autoscale",
+ "text": "Plan for demand shaping where applicable",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
- "link": "https://learn.microsoft.com/purview/glossary-insights",
- "service": "Purview",
- "services": [],
- "severity": "Low",
- "subcategory": "Data Estate",
- "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e2e8aaab-3571-4549-ab91-53d89f89dc7b",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Autoscale",
+ "text": "Consider implementing a service re-scaling logic within the application",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/savings-plan/",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
- "link": "https://learn.microsoft.com/purview/compliance-manager",
- "service": "Purview",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "services": [
+ "Backup",
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "Data Quality ",
- "text": "Generate assessment scores",
- "waf": "Reliability"
+ "subcategory": "Backup",
+ "text": "Move recovery points to vault-archive where applicable (Validate)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
- "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
- "service": "Purview",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "services": [
+ "LoadBalancer",
+ "Cost",
+ "VM"
+ ],
"severity": "Medium",
- "subcategory": "Data Quality ",
- "text": "Profiling- get summaries of data content",
- "waf": "Reliability"
+ "subcategory": "Databricks",
+ "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
- "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
- "service": "Purview",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
"services": [
- "AzurePolicy"
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Data Policy",
- "text": "Follow Microsoft Purview Data Owner access policies",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Functions - Reuse connections",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
- "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
- "service": "Purview",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
"services": [
- "AzurePolicy"
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Data Policy",
- "text": "Follow Self-service access policies",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Functions - Cache data locally",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
- "link": "https://learn.microsoft.com/purview/concept-policies-devops",
- "service": "Purview",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
"services": [
- "AzurePolicy"
+ "Storage",
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Data Policy",
- "text": "Follow DevOps policies",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "fda1dae2-dc95-4d48-a6c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/sql-data-warehouse/backup-and-restore#geo-backups-and-disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
"services": [
- "Backup"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Backup",
- "text": "Enable Geo Backup ",
- "waf": "Reliability"
+ "subcategory": "Functions",
+ "text": "Functions - Keep your functions warm",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "89e558b9-37d4-4974-b111-2dbd7baf12e7",
- "link": "https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/how-to-use-ci-cd-integration-to-automate-the-deploy-of-a-synapse/ba-p/2248060",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "DevOps",
- "text": "Integrate with Azure DevOps to deploy Multiple environments",
- "waf": "Reliability"
+ "subcategory": "Functions",
+ "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "b94ef6e0-47d2-4da2-a82b-1cd6d2f54b29",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "services": [],
- "severity": "High",
- "subcategory": "DR",
- "text": "BCDR for Azure Synapse pipelines ",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "769e3a69-1e88-438a-a936-667e13c00567",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "services": [],
- "severity": "High",
- "subcategory": "DR",
- "text": "Use Zone Redudant pipelines in regions supporting Availablity Zones",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Functions",
+ "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "4b1e944a-4598-437e-b7ad-6c6d3b365a5c",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/cicd/source-control",
- "services": [],
- "severity": "Low",
- "subcategory": "DevOps",
- "text": "Create Scripts for all DLL Statements and save in Git Repository ",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "df03a822-cd46-43cb-abc8-ac299ebc91a4",
+ "link": "https://learn.microsoft.com/azure/sentinel/quickstart-onboard",
+ "services": [
+ "Cost"
+ ],
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Evaluate your network topology against networking costs and where applicable reduce the egress and peering data",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "7acbe48a-be54-4cd7-af2e-87768358c559",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/spark/apache-spark-development-using-notebooks",
- "services": [],
- "severity": "Low",
- "subcategory": "DevOps",
- "text": "When working with Spark Notebooks, make sure to integrate with Git or Azure DevOps",
- "waf": "Reliability"
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
+ "services": [
+ "EventHubs",
+ "Cost",
+ "FrontDoor"
+ ],
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
+ "waf": "Cost"
},
{
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "775c6ee9-5b86-4ad8-a44c-e3b2b38b875b",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/sql-data-warehouse/backup-and-restore",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Use Dedicated pools",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "a1cf2049-9013-4a5d-9ce4-74dbcbd8682a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/analytics/azure-synapse",
- "services": [],
- "severity": "Medium",
- "subcategory": "DR",
- "text": "Use Database restore points for Azure Synapse",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "6abca2a4-fda1-4dae-8dc9-5d48c6c791dc",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/sql/on-demand-workspace-overview",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Use Serverless Pools when required",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "a0f6c565-89e5-458b-a37d-4974e1112dbd",
- "link": "https://learn.microsoft.com/azure/synapse-analytics/quickstart-deployment-template-workspaces",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
"services": [
- "Storage"
+ "AppSvc",
+ "Cost",
+ "FrontDoor"
],
"severity": "Medium",
- "subcategory": "DevOps",
- "text": "Use Infrastructure as a Code template to do repeatable deployments",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Synapse Review Checklist",
- "guid": "7baf12e7-b94e-4f6e-847d-2da2982b1cd6",
- "link": "https://learn.microsoft.com/azure/cosmos-db/synapse-link",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Make sure to re-eshtablish any Synapse Links",
- "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
- "waf": "Reliability"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Follow reliability support recommendations in Azure Bot Service",
- "waf": "Reliability"
- },
- {
- "category": "Operations management",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Deploying bots with local data residency and regional compliance",
- "waf": "Reliability"
+ "subcategory": "Networking",
+ "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
+ "waf": "Cost"
},
{
- "category": "Operations management",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
- "services": [],
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "f843e52f-4722-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/agents/diagnostics-extension-overview",
+ "services": [
+ "Cost"
+ ],
"severity": "Medium",
- "subcategory": "High Availablity",
- "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
- "waf": "Reliability"
+ "subcategory": "PaaS",
+ "text": "Consider using free tiers where applicable for all non-production environments",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD control plane does not offer a financially backed service level agreement. We strive to attain at least 99.9% availability for the Azure Virtual Desktop service URLs. The availability of the session host virtual machines in your subscription is covered by the Virtual Machines SLA. Dependent resources/services and infrastructure availability must be also considered to properly satisfy global high-availability requirements.",
- "guid": "56c57ba5-9119-4bf8-b8f5-c586c7d9cdc1",
- "link": "https://azure.microsoft.com/support/legal/sla/virtual-desktop/v1_0/",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b9de39ac-0e7c-428d-a936-657202bff456",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
"services": [
- "VM",
- "ASR",
- "Subscriptions",
- "AVD"
+ "Cost"
],
- "severity": "High",
- "subcategory": "Compute",
- "text": "Determine the expected High Availability SLA for applications/desktops published through AVD",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Serverless",
+ "text": "Using serverless patterns for spikes can help keeping costs down",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "'Active-Active' model can be achieved with multiple host pools in different regions. A single Host Pool with VMs from different regions is not recommended. If multiple pools for same users will be used, the problem of how to synchronize/replicate user profiles must be solved. FSLogix Cloud Cache could be used, but need to be carefully reviewed and planned, or customers can decide to do not synchronize/replicate at all. 'Active-Passive' can be achieved using Azure Site Recovery (ASR) or on-demand Pool deployment with automated mechanism. For a detailed discussion on multi-region BCDR, please read the companion article in the 'More Info' column and this FSLogix related page: https://learn.microsoft.com/fslogix/concepts-container-recovery-business-continuity.",
- "guid": "6acc076e-f9b1-441a-a989-579e76b897e7",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
"services": [
"Storage",
- "VM",
- "ASR",
- "AVD"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Compute",
- "text": "Assess Geo Disaster Recovery requirements for AVD Host Pools",
- "waf": "Reliability"
+ "subcategory": "Storage",
+ "text": "Consider archiving tiers for less used data",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Before approaching Azure Virtual Desktop BCDR planning and design, it is important to initially consider which applications consumed through AVD are critical. You may want to separate them from non-critical apps and use a separate Host Pool with a different disaster recovery approach and capabilities.",
- "guid": "10a7da7b-e996-46e1-9d3c-4ada97cc3d13",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
"services": [
- "ASR",
- "AVD"
+ "Storage",
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Compute",
- "text": "Separate critical applications in different AVD Host Pools",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Each Host Pool can be deployed using Availability Zones (AZ) or Availability Set (AS). To maximize resiliency, usage of AZ is recommended: at Host Pool creation time you can decide to spread Host Pool Session Hosts across all available AZ. Usage of AS will not protect from single datacenter failure, then should be used only in regions where AZ are not available. More details on AZ and AVD in the companion article. For a comparison between AZ and AS you can read here: https://learn.microsoft.com/azure/virtual-machines/availability.",
- "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",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
"services": [
- "ASR",
- "AVD",
- "ACR"
+ "Storage",
+ "Cost"
],
- "severity": "High",
- "subcategory": "Compute",
- "text": "Plan the best resiliency option for AVD Host Pool deployment",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Consider using standard SSD rather than Premium or Ultra where possible",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Backup can be used to protect Host Pool VMs. For Pooled Pools, this is not necessary since should be stateless. Instead, this option can be considered for Personal Host Pools.",
- "guid": "4c61fc3f-c14e-4ea6-b69e-8d9a3eec218e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
"services": [
- "VM",
- "Backup",
- "AVD",
- "ASR"
+ "Storage",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Compute",
- "text": "Assess the requirement to backup AVD Session Host VMs",
- "waf": "Reliability"
+ "subcategory": "Storage",
+ "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Even for Personal Pools, usage of Availability Zones, when available, is recommended. Three possible in-region DR strategies are possible, it is recommended to select the best one based on cost, RTO/RPO, and if it is really necessary to save the entire VM OS disk: (1) create each session host in a specific zone (AZ) and then use Azure Site Recovery (ASR) to replicate to a different zone. (2) Use Azure Backup to backup and restore the specific session host in a different AZ. (3) Create a new session host in a different AZ and rely on FSLogix and/or OneDrive to make data and settings available on the new machine. All options require administrator intervention for DR and direct user assignment at Host Pool level, then must be planned and configured in advance.",
- "guid": "5da58639-ca3a-4961-890b-29663c5e10d",
- "link": "https://learn.microsoft.com/azure/site-recovery/azure-to-azure-how-to-enable-zone-to-zone-disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
"services": [
"ASR",
- "Backup",
"Cost",
- "VM",
- "AVD"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Compute",
- "text": "Prepare a local DR strategy for Personal Host Pool Session Hosts",
- "waf": "Reliability"
+ "subcategory": "Storage",
+ "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If custom images are used to deploy AVD Host Pool VMs, it is important to ensure those artifacts are available in all regions where AVD is deployed. Azure Compute Gallery service can be used to replicate images across all regions where a Host Pool is deployed, with redundant storage and in multiple copies. Please be aware that the Azure Compute Gallery service isn't a global resource. For disaster recovery scenarios, the best practice is to have at least two galleries, in different regions.",
- "guid": "dd2e0d5d-771d-441e-9610-cc57b4a4a141",
- "link": "https://learn.microsoft.com/azure/virtual-machines/azure-compute-gallery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
"services": [
- "ASR",
- "ACR",
"Storage",
- "VM",
- "AVD"
- ],
- "severity": "Low",
- "subcategory": "Dependencies",
- "text": "Plan for Golden Image cross-region availability",
- "waf": "Reliability"
- },
- {
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If users of the AVD infrastructure need on-premises resource access, high availability of network infrastructure required to connect is also critical and should be considered. Resiliency of authentication infrastructure needs to be assessed and evaluated. BCDR aspects for dependent applications and other resources need to be considered to ensure availability in the secondary DR location.",
- "guid": "fd339489-8c12-488b-9c6a-57cfb644451e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
- "services": [
- "ASR",
- "AVD"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Dependencies",
- "text": "Assess Infrastructure & Application dependencies ",
- "waf": "Reliability"
+ "subcategory": "storage",
+ "text": "Storage accounts: check hot tier and/or GRS necessary",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Not all data inside FSLogix user profiles may deserve protection from disaster. Additionally, if external storage is used, for example OneDrive or File Servers/Shares, what is remaining in the FSLogix profile is minimal and could be lost in some extreme circumstances. In other cases, data inside the profile can be rebuilt from other storages (for example Outlook Inbox in cached mode).",
- "guid": "687ab077-adb5-49e5-a960-3334fdf8cc23",
- "link": "https://docs.microsoft.com/fslogix/manage-profile-content-cncpt",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
"services": [
"Storage",
- "ASR",
- "AVD"
+ "Cost"
],
"severity": "Medium",
"subcategory": "Storage",
- "text": "Assess which data need to be protected in the Profile and Office Containers",
- "waf": "Reliability"
+ "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Preventing data loss for critical user data is important, first step is to assess which data need to be saved and protected. If using OneDrive or other external storage, saving user Profile and/or Office Containers data maybe not necessary. Appropriate mechanism must be considered to provide protection for critical user data. Azure Backup service can be used to protect Profile and Office Containers data when stored on Azure Files Standard and Premium tiers. Azure NetApp Files Snapshots and Policies can be used for Azure NetApp Files (all tiers).",
- "guid": "fc4972cc-3cd2-45bf-a707-6e9eab4bed32",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
"services": [
- "ASR",
- "Storage",
- "AzurePolicy",
- "Backup",
- "AVD"
+ "EventHubs",
+ "Cost",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Build a backup protection strategy for Profile and Office Containers",
- "waf": "Reliability"
+ "subcategory": "Synapse",
+ "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "In AVD, multiple replication mechanisms and strategies can be used for user data residing in FSLogix containers: [Profile Pattern #1]: Native Azure storage replication mechanisms, for example Azure Files Standard GRS replication, Azure NetApp Files Cross Region Replication. Use Zone Replicated Storage (ZRS) or Geo replicated storage (GRS) for Azure Files is recommended. LRS with local-only resiliency can be used if no zone/region protection is required. NOTE: Azure Files Share Standard is LRS/ZRS/GRS, but with 100TB large support enabled only LRS/ZRS are supported. [Profile Pattern #2]: FSLogix Cloud Cache is built in automatic mechanism to replicate containers between different (up to 4) storage accounts. Cloud Cache should be used only when:(1) User Profile or Office containers data availability required high-availability SLA is critical and need to be resilient to region failure. (2) Selected storage option is not able to satisfy BCDR requirements. For example, with Azure File Share Premium tier, or Azure File Share Standard with Large File Support enabled, GRS is not available. (3) When replication between disparate storage is required. [Profile Pattern #3]: Only set up geo disaster recovery for application data and not for user data/profile containers: store important application data in separate storages, like OneDrive or other external storage with its own built-in DR mechanism.",
- "guid": "9f7547c1-746d-4c56-868a-714435bd09dd",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
"services": [
"Storage",
- "ASR",
- "AVD"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Assess Profile Container storage replication requirements and resiliency for BCDR purpose",
- "waf": "Reliability"
+ "subcategory": "Synapse",
+ "text": "Export cost data to a storage account for additional data analysis.",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "For local disaster recovery, Azure Backup for Azure Files can be used. For cross-region geo disaster recovery: GRS for Azure Files is only available with standard SKU and no large share support, then not suitable in most customer scenarios. If geo-replication is required with Azure File Share Premium, replication with FSLogix Cloud Cache can be evaluated, or 'in-region' Availability Zone (AZ) only resiliency should be considered.",
- "guid": "3d4f3537-c134-46dc-9602-7a71efe1bd05",
- "link": "https://docs.microsoft.com/azure/backup/backup-afs",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
"services": [
- "Storage",
- "ASR",
- "AVD",
- "Backup"
+ "SQL",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Review Azure Files disaster recovery strategy",
- "waf": "Reliability"
+ "subcategory": "Synapse",
+ "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Zone Redundant Storage will maximize in-region resiliency for the user profile data. ZRS is supported for premium file shares through the 'FileStorage' storage account kind. ZRS is supported in standard general-purpose v2 storage accounts. Usage of zone redundant storage must be paired with zone redundant deployment of Session Hosts in each Host Pool. ",
- "guid": "10d4e875-d502-4142-a795-f2b6eff34f88",
- "link": "https://learn.microsoft.com/azure/storage/files/files-redundancy#zone-redundant-storage",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
"services": [
- "Storage",
- "ASR",
- "AVD"
+ "Cost"
],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Use Zone Redundant Storage (ZRS) for Azure Files to maximize resiliency",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Synapse",
+ "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
- "checklist": "Azure Virtual Desktop Review",
- "description": "For local disaster recovery, Azure NetApp Files (ANF) native backup is available. ANF is essentially locally redundant, then for cross-region geo disaster recovery it is necessary to use an additional mechanism that is Cross-Region Replication (CRR) https://learn.microsoft.com/azure/azure-netapp-files/cross-region-replication-create-peering. Currently, ANF does not provide replication nor redundancy across different Availability Zones (AZ), only the possibility to select in which single AZ to place the ANF volume: https://learn.microsoft.com/azure/azure-netapp-files/manage-availability-zone-volume-placement.",
- "guid": "23429db7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/cross-region-replication-create-peering",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
"services": [
- "ASR",
- "ACR",
- "Storage",
- "Backup",
- "AVD"
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "Review Azure NetApp Files disaster recovery strategy",
- "waf": "Reliability"
+ "subcategory": "Synapse",
+ "text": "Create multiple Apache Spark pool definitions of various sizes.",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Applications can be preinstalled in the golden image/s, can be attached using MSIX & AppAttach feature or distributed to the session hosts after host pool deployment using traditional software distribution methods.",
- "guid": "86ba2802-1459-4014-95d3-8e5309ccbd97",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
"services": [
- "AVD"
+ "Cost"
],
- "severity": "High",
- "subcategory": "Golden Images",
- "text": "Determine how applications will be deployed in AVD Host Pools",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Synapse",
+ "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Multiple golden images can be required to support different OS versions and/or settings, different groups of applications that must be separated and cannot be included in a single image.",
- "guid": "9266bcca-274f-4aa1-abf3-9d95d44c7c89",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
"services": [
- "AVD"
+ "VM",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Golden Images",
- "text": "Estimate the number of golden images that will be required",
- "waf": "Operations"
+ "subcategory": "VM",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Determine which Guest OS will be used to deploy each Host Pool: Windows 10 vs. Windows Server, Marketplace vs. Custom images",
- "guid": "19ca1f6d-5315-4ae5-84ba-34d4585e2213",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#operating-systems-and-licenses",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
"services": [
- "AVD"
+ "VM",
+ "Cost"
],
"severity": "Medium",
- "subcategory": "Golden Images",
- "text": "Determine which OS image/s you will use for Host Pool deployment",
- "waf": "Reliability"
+ "subcategory": "VM",
+ "text": "Right-sizing all VMs",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure VM custom images can be created and stored in different ways: in an Azure Compute Gallery, as a managed image object or as a managed disk in the storage. The recommended way is to use Azure Compute Gallery.",
- "guid": "5a2adb2c-3e23-426b-b225-ca44e1696fdd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/shared-image-galleries",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
"services": [
- "Storage",
"VM",
- "AVD"
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Select the proper store for custom images",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "VM",
+ "text": "Swap VM sized with normalized and most recent sizes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If custom images will be used, plan for an automated build process. If no pre-existing software factory exists, consider using Custom Image Templates and/or Azure Image Builder to automate the build process.",
- "guid": "9bd7bb01-2f7b-495e-86e1-54e2aa359282",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/create-custom-image-templates",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
"services": [
- "AVD"
+ "VM",
+ "Cost",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Design your build process for custom images",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "VM",
+ "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "There are some known best practices and recommendations for the golden image customization, be sure to check the referenced article.",
- "guid": "deace4cb-1dec-44c6-90c3-fc14eebb36a3",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
- "services": [
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Golden Images",
- "text": "If custom image will be used, check recommended best practices for AVD on how to build custom image",
- "waf": "Operations"
- },
- {
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "FSLogix stack installed in AVD session hosts does not provide auto-update capability. For this reason, it is recommended to download the latest version of FSLogix and include in the golden image update process.",
- "guid": "ed5c9027-dd1a-4343-86ca-52b199223186",
- "link": "https://learn.microsoft.com/fslogix/how-to-install-fslogix",
+ "category": "Right-sizing",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
"services": [
- "AVD"
+ "VM",
+ "Cost"
],
+ "severity": "Medium",
+ "subcategory": "VM",
+ "text": "Containerizing an application can improve VM density and save money on scaling it",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Cost"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "services": [],
"severity": "High",
- "subcategory": "Golden Images",
- "text": "Include the latest version of FSLogix in the golden image update process",
+ "subcategory": "High Availablity",
+ "text": "Enable 2 replicas to have 99.9% availability for read operations",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "This tool-set has been created to automatically apply setting referenced in white paper 'Optimizing Windows 10, version 2004 for a Virtual Desktop Infrastructure (VDI) role': https://docs.microsoft.com/windows-server/remote/remote-desktop-services/rds-vdi-recommendations-2004. Usage of the tool and/or optimizations mentioned in the white-paper should be considered. ",
- "guid": "829e3fec-2183-4687-a017-7a2b5945bda4",
- "link": "https://github.com/The-Virtual-Desktop-Team/Virtual-Desktop-Optimization-Tool",
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "High Availablity",
+ "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availablity",
+ "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"services": [
- "RBAC",
- "AVD"
+ "ACR"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Evaluate the usage of Virtual-Desktop-Optimization-Tool",
- "waf": "Performance"
+ "severity": "Medium",
+ "subcategory": "Georeplication",
+ "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",
+ "waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If OneDrive is used and included in a golden image, be sure to follow the configuration procedure reported in the companion article in the 'More Info' section. Not in scope in this AVD checklist, but OneDrive optimizations like 'Known Folder Redirection' and 'Files On-Demand' should be evaluated used to reduce the space used in FSLogix profiles and provide a better user experience. OneDrive today is not supported for Remote Apps.",
- "guid": "e3d3e084-4276-4d4b-bc01-5bcf219e4a1e",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/install-office-on-wvd-master-image#install-onedrive-in-per-machine-mode",
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"services": [
- "Storage",
- "AVD"
+ "ACR"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Determine if Microsoft OneDrive will be part of AVD deployment",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Georeplication",
+ "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",
+ "waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Be sure to review the requirements and configuration procedure contained in the companion article in the 'More Info' column. Since Teams automatic updates will be disabled, it is recommended to check and include Teams latest version in the golden image update process.",
- "guid": "b5887953-5d22-4788-9d30-b66c67be5951",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/teams-on-AVD",
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"services": [
- "AVD"
+ "TrafficManager"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Determine if Microsoft Teams will be part of AVD deployment",
- "waf": "Performance"
+ "severity": "Medium",
+ "subcategory": "Georeplication",
+ "text": "Use Azure Traffic Manager to coordinate requests",
+ "waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD can support users with different language and localization requirements in the same host pool. This can be done customizing golden images to ensure users can select whichever language they need. The procedure to configure additional language packs in Windows 11 is documented in the reference article.",
- "guid": "7c336f3b-822a-498e-8cd1-667d1150df4a",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/windows-11-language-packs",
+ "category": "Operations Management",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
"services": [
- "AVD"
+ "Storage",
+ "Backup",
+ "ASR"
],
- "severity": "Low",
- "subcategory": "Golden Images",
- "text": "Assess the requirement to support multiple languages",
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
"waf": "Reliability"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "It is highly recommended to use separate storage accounts/shares to store MSIX packages. If necessary, storage can scale out independently and not being impacted by profile I/O activities. Azure offers multiple storage options that can be used for MISX app attach. We recommend using Azure Files or Azure NetApp Files as those options offer the best value between cost and management overhead. ",
- "guid": "90083845-c587-4cb3-a1ec-16a1d076ef9f",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "When you are creating a SQL Server on Azure VM, carefully consider the type of workload necessary. If you are migrating an existing environment, collect a performance baseline to determine your SQL Server on Azure VM requirements. If this is a new VM, then create your new SQL Server VM based on your vendor requirements.",
+ "guid": "1fc3fc14-eea6-4e69-b8d9-a3eec218e687",
+ "link": "https://learn.microsoft.com/sql/dma/dma-sku-recommend-sql-db?view=sql-server-ver16",
"services": [
- "Storage",
- "Cost",
- "AVD"
+ "VM",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "MSIX & AppAttach",
- "text": "Do not use the same storage account/share as FSLogix profiles",
+ "severity": "High",
+ "subcategory": "VM Size",
+ "text": "Collect the target workload's performance characteristics and use them to determine the appropriate VM size for your business.",
"waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "In the referenced article, we reported few but important performance considerations for MSIX usage in AVD context, be sure to carefully review.",
- "guid": "241addce-5793-477b-adb3-751ab2ac1fad",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "The memory optimized virtual machine sizes are a primary target for SQL Server VMs and the recommended choice by Microsoft. The memory optimized virtual machines offer stronger memory-to-CPU ratios and medium-to-large cache options.Consider Ebdsv5-series series first for most SQL Server workloads.",
+ "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": [
- "AVD"
+ "VM",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "MSIX & AppAttach",
- "text": "Review performance considerations for MSIX",
+ "subcategory": "VM Size",
+ "text": "Use memory optimized virtual machine sizes for the best performance of SQL Server workloads.",
"waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "MSIX app attach requires read-only permissions to access the file share. If you're storing your MSIX applications in Azure Files, then for your session hosts, you'll need to assign all session host VMs both storage account role-based access control (RBAC) and file share New Technology File System (NTFS) permissions on the share.",
- "guid": "66e15d4d-5a2a-4db2-a3e2-326bf225ca41",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "To find the most effective configuration for SQL Server workloads on an Azure VM, start by measuring the storage performance of your business application. Once storage requirements are known, select a virtual machine that supports the necessary IOPS and throughput with the appropriate memory-to-vCore ratio.",
+ "guid": "2ea55b56-ad48-4408-be72-734b476ba18f",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance#counters-to-measure-application-performance-requirements",
"services": [
- "Storage",
"VM",
- "RBAC",
- "AVD"
+ "Storage",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "MSIX & AppAttach",
- "text": "Check proper session host permissions for MSIX share",
- "waf": "Security"
+ "subcategory": "Storage",
+ "text": "Determine storage bandwidth and latency requirements for SQL Server data, log, and tempdb files before choosing the disk type.",
+ "waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "3rd-party software vendor must provide a MSIX package, it is not recommended for customer to attempt the conversion procedure without proper support from the application owner.",
- "guid": "bd362caa-ab79-4b19-adab-81932c9fc9d1",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "This provides more dedicated disk IOPS and throughput on the disk level and also allows you to configure the Azure disk host caching setting for each disk to the optimal setting for that data type.",
+ "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": [
- "AVD"
+ "Storage",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "MSIX & AppAttach",
- "text": "MSIX packages for 3rd-party applications",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "Place data, log, and tempdb files on separate drives",
+ "waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "MSIX app attach doesn't support auto-update for MSIX applications, so they should be disabled.",
- "guid": "bb88037f-5e6b-4fbb-aed5-03547cc447e8",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Premium SSD is always recommend as a minimum for SQL Server in order to obtain better performance and lower latency. P30 and P40 are recommended because disk caching is not supported for disks 4 TiB and larger ( P50 and above) and they provide the optimal price to performance ratio",
+ "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": [
- "AVD"
+ "Storage",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "MSIX & AppAttach",
- "text": "Disable auto-update for MSIX packages",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "For the data drive, use premium P30 and P40 or smaller disks to ensure the availability of cache support",
+ "waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "In order to leverage MSIX & App Attach, guest OS image for AVD Host pool must be Windows 10/11 Enterprise or Windows 10/11 Enterprise Multi-session, version 2004 or later.",
- "guid": "26128a71-f0f1-4cac-9d9e-f1d5e832e42e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Log files have primarily write-heavy operations. Therefore, they do not benefit from the ReadOnly cache. Hence evaluate your price vs performance vs capacity and chose the right storage disk.",
+ "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": [
- "AVD"
+ "Storage",
+ "SQL",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "MSIX & AppAttach",
- "text": "Review operating systems support",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "For the log drive plan for capacity and test performance versus cost while evaluating the premium P30 - P80 disks",
+ "waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Once selected the VM SKU that will be used for Host Pool deployment, it is recommended to use Gen2 type of the SKU for higher security and improved capabilities.",
- "guid": "e4633254-3185-40a1-b120-bd563a1c8e9d",
- "link": "https://docs.microsoft.com/azure/virtual-machines/generation-2",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Placing TempDB on the D drive can help performance. Consider the size required and always test performance.",
+ "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": [
"VM",
- "AVD"
+ "Storage",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Session Host",
- "text": "Evaluate the usage of Gen2 VM for Host Pool deployment",
+ "subcategory": "Storage",
+ "text": "Place tempdb on the local ephemeral SSD (default D:\\) drive for most SQL Server workloads that are not part of Failover Cluster Instance (FCI) after choosing the optimal VM size.",
"waf": "Performance"
},
{
- "category": "Compute",
- "checklist": "Azure Virtual Desktop Review",
- "description": "MMR redirects the media content from Session Host to your local machine for faster processing and rendering. It only works when you play media content on Microsoft Edge or Google Chrome. See linked URL for more details.",
- "guid": "adecb27f-dc40-40f5-aca2-0090f633b1c9",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/multimedia-redirection",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Striping Data and Log disk can increase bandwidth. Ensure that VM size also matches expected output",
+ "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": [
- "AVD"
+ "VM",
+ "Storage",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Session Host",
- "text": "Consider using MMR (MultiMedia Redirection) to get better video performance on browser",
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "Stripe multiple Azure data disks using Storage Spaces to increase I/O bandwidth",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "A host pool is a collection of Azure virtual machines that register to Azure Virtual Desktop as session hosts. A host pool can be one of two types: Personal and Pooled. Which type to use, and how many, is a key design decision that must be documented and validated. See companion article in 'More Info' column for more details.",
- "guid": "8468c55a-775c-46ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology#host-pools",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Your storage caching policy varies depending on the type of SQL Server data files that are hosted on the drive.Enable Read-only caching for the disks hosting SQL Server data files.Reads from cache will be faster than the uncached reads from the data disk.Set the caching policy to None for disks hosting the transaction log. There is no performance benefit to enabling caching for the Transaction log disk.",
+ "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": [
- "VM",
- "AVD"
+ "Storage",
+ "SQL",
+ "AzurePolicy"
],
"severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Determine the Host Pool type to use",
- "waf": "Cost"
+ "subcategory": "Storage",
+ "text": "Set host caching to read-only for data file disks and none for log file disks.",
+ "waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Use your design criteria to determine the number of Host Pools to deploy. This will be based on factors such as different OS images, multi-region support, guest VM hardware differences (such as GPU support or no), different user expectations and uptime requirements (examples might be 'Executives', 'Office Workers', 'Developers', etc.), and Host Pool RDP settings (such as drive redirection support). These will determine the number of host pools as well as how many hosts will be in each pool.",
- "guid": "4e98495f-d3c0-4af2-aa59-a793395a32a7",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology?WT.mc_id=Portal-fx#host-pools",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Check that you storage is in the same region as your VM. For exaplme if your VM is in EAST US 2 ensure your storage is in East US 2.",
+ "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": [
"VM",
- "AVD"
+ "Storage",
+ "SQL"
],
"severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Estimate the number of different Host Pools to deploy ",
+ "subcategory": "Storage",
+ "text": "Provision the storage account in the same region as the SQL Server VM",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Confirm that the difference between automatic and direct assignment is well understood and the selected option is appropriate for the scenario in question. Automatic is the default setting.",
- "guid": "b38b875b-a1cf-4204-a901-3a5d3ce474db",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/configure-host-pool-personal-desktop-assignment-type",
- "services": [
- "AVD"
- ],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "For Personal Host Pool type, select the proper assignment type",
- "waf": "Operations"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Check which one to use and available options, autoscale ignores existing load-balancing algorithms.",
- "guid": "cbd8682a-6abc-4a2a-9fda-1dbf3dc95d48",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/host-pool-load-balancing",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "SQL Server uses extents to store data. These are 64KB in size. Therefore, on a SQL Server machine, the NTFS allocation unit size for hosting SQL database files should be 64 KB.",
+ "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": [
- "AVD"
+ "Storage",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "For Pooled Host Pool type, select the best load balancing method",
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "Format your data disk to use 64 KB block size (allocation unit size) for all data files placed on a drive other than the temporary D:\\ drive",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "The number of cores increase, the system's synchronization overhead also increases. Especially for multiple user's sign-in simultaneously. Make sure not to use a VM that is too large for the session host",
- "guid": "b3724959-4943-4577-a3a9-e10ff6345f24",
- "link": "https://learn.microsoft.com/windows-server/remote/remote-desktop-services/virtual-machine-recs",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "It is recommended that you determine BCDR needs and requirements ensuring that you are able to meet you SLAs of the environment.",
+ "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",
- "AVD"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Capacity Planning",
- "text": "For Pooled Host Pool type, VMs shouldn't have more than 32 cores",
- "waf": "Performance"
+ "subcategory": "HADR",
+ "text": "Determine HA/DR requirements for each VM to be migrated.",
+ "waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD does not support assigning both the RemoteApp and Desktop Application Group (DAG) in a single host pool to the same set of users. Doing so will cause a single user to have two user sessions in a single host pool. Users aren't supposed to have two active sessions at the same time in the same host pool using the same profile.",
- "guid": "b384b7ed-1cdd-457e-a2cd-c8d4d55bc144",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology?WT.mc_id=Portal-fx#application-groups",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "When depoying High Availability you need to use availability sets or availability zones to avoid unexpected outages.",
+ "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": [
- "Storage",
- "AVD"
+ "VM",
+ "SQL"
],
"severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Do not use the same Host Pool to offer both full desktops (DAG) and Remote Apps to the same set of users",
- "waf": "Security"
+ "subcategory": "HADR",
+ "text": "Place your VMs in an availability set or different availability zones.",
+ "waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "There is a limit of 500 Application Groups that can be created in AVD for each Microsoft Entra ID (former Azure AD) tenant. The limit can be increased (see the companion link for details) but it is not recommended.",
- "guid": "971cc4a4-b1f7-4c12-90e0-1ad96808f00c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-virtual-desktop-service-limits",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Prefered option when deploying an Availability Group. The recommended solution is to use multi-subnets when deploying Always on Availability Groups.",
+ "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": [
- "AVD",
- "ACR",
- "Entra"
+ "VM",
+ "SQL",
+ "LoadBalancer",
+ "VNet"
],
"severity": "Medium",
- "subcategory": "Capacity Planning",
- "text": "Estimate the number of Application Groups required across all Host Pools in the Microsoft Entra ID tenant",
+ "subcategory": "HADR",
+ "text": "Deploy your SQL Server VMs to multiple subnets whenever possible to avoid the dependency on an Azure Load Balancer or a distributed network name (DNN) to route traffic to your HADR solution. ( If one is implementing FCI or AG)",
"waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Applications are grouped under Application Groups as containers for publishing and assigning permissions: we recommend that you do not publish more than 50 applications per application group.",
- "guid": "fa9f2895-473d-439b-ab8e-5a5cf92c7f32",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop#considerations",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "High availability and disaster recovery (HADR) features, such as the Always On availability group and the failover cluster instance rely on underlying Windows Server Failover Cluster technology. Review the best practices for modifying your HADR settings to better support the cloud environment.",
+ "guid": "2d027fe4-12f7-4098-9f63-04722ee69d6b",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql-vm#hadr-configuration",
"services": [
- "AVD"
+ "ASR",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "Estimate the number of Applications for each Application Group",
+ "severity": "High",
+ "subcategory": "HADR",
+ "text": "Change the cluster to less aggressive parameters to avoid unexpected outages from transient network failures or Azure platform maintenance. ( If one is implementing FCI or AG)",
"waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "FSLogix is not required for Personal Host Pools since each VM is statically assigned to a single user, then no immediate needs for a roaming profile solution. In some usage scenarios FSLogix can help. For example, a VM can be re-assigned, or user moved to another desktop, or roaming profile can be used to save user profile in a different location for DR purposes.",
- "guid": "38b19ab6-0693-4992-9394-5590883916ec",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/configure-host-pool-personal-desktop-assignment-type?tabs=azure#reassign-a-personal-desktop",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Ensure that quorum is set correct for the number of instances deployed.",
+ "guid": "5c2622f5-4b69-4bad-94aa-d5e8c78e1d76",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/hadr-cluster-best-practices?view=azuresql-vm&tabs=windows2012#quorum-voting",
"services": [
- "Storage",
- "VM",
- "AVD"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "Evaluate the usage of FSLogix for Personal Host Pools",
+ "severity": "High",
+ "subcategory": "HADR",
+ "text": "Configure cluster quorum voting to use 3 or more odd number of votes. Don't assign votes to DR regions. ( If one is implementing FCI or AG)",
"waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Use the link provided to set a starting point for SKU decision, then validate using a performance test. Ensure a minimum of four cores for Production is selected per Session Host (multi-session)",
- "guid": "e1112dbd-7ba0-412e-9b94-ef6e047d2ea2",
- "link": "https://docs.microsoft.com/windows-server/remote/remote-desktop-services/virtual-machine-recs",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "On Azure virtual machines, clusters use a load balancer to hold an IP address that needs to be on one cluster node at a time. In this solution, the load balancer holds the IP address for the virtual network name (VNN) listener for the Always On availability group when the SQL Server VMs are in a single subnet.",
+ "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": [
- "VM",
- "AVD"
+ "LoadBalancer",
+ "SQL",
+ "VNet",
+ "VM"
],
"severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Run workload performance test to determine the best Azure VM SKU and size to use",
- "waf": "Performance"
+ "subcategory": "HADR",
+ "text": "When using the virtual network name (VNN) and Azure Load Balancer to connect to your HADR solution, specify MultiSubnetFailover = true in the connection string, even if your cluster only spans one subnet. ( If one is implementing FCI or AG)",
+ "waf": "Reliability"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "It is critical to check AVD capacity and limits reported in the referenced article. Additional limits and thresholds apply for network, compute, storage and service management. ",
- "guid": "992b1cd6-d2f5-44b2-a769-e3a691e8838a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop#considerations",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "SQL Server, Azure SQL Database, and Azure SQL Managed Instance support row and page compression for rowstore tables and indexes, and support columnstore and columnstore archival compression for columnstore tables and indexes.",
+ "guid": "61623b77-5a91-47e1-b348-ef354c27d42e",
+ "link": "https://learn.microsoft.com/sql/relational-databases/data-compression/data-compression?view=sql-server-ver16",
"services": [
"Storage",
- "AVD"
+ "SQL"
],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Verify AVD scalability limits for the environment",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "SQL Server",
+ "text": "Enable database page compression where appropriate.",
+ "waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Host Pools with GPU require special configuration, please be sure to review the referenced article.",
- "guid": "c936667e-13c0-4056-94b1-e945a459837e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/configure-vm-gpu",
- "services": [
- "AVD"
- ],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "Determine if Session Hosts will require GPU",
- "waf": "Performance"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Whenever is possible, it is recommended to leverage VM SKUs with Accelerated Networking feature. This feature does require specific VM SKU/size and OS versions, please see the list and requirement in the companion article.",
- "guid": "b47a393a-0803-4272-a479-8b1578b219a4",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "By default, data and log files are initialized to overwrite any existing data left on the disk from previously deleted files. Data and log files are first initialized by zeroing the files (filling with zeros).In SQL Server, for data files only, instant file initialization (IFI) allows for faster execution of the previously mentioned file operations, since it reclaims used disk space without filling that space with zeros. Instead, disk content is overwritten as new data is written to the files.",
+ "guid": "8bbac868-155a-4bb9-863e-9908ae28c84c",
+ "link": "https://learn.microsoft.com/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-ver16",
"services": [
- "VM",
- "AVD"
+ "Storage",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Capacity Planning",
- "text": "Use Azure VM SKUs able to leverage Accelerated Networking",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "SQL Server",
+ "text": "Enable instant file initialization for data files.",
+ "waf": "Operations"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "For proper planning and deployment, it is important to assess the maximum number of concurrent and total users for each Host Pool. Additionally, users from different regions may require different Host Pools to ensure the best user experience.",
- "guid": "bb91a33d-90ca-4e2c-a881-3706f7c0cb9f",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/overview",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Recommended for best performance and availability migrate all databases to data and log disks",
+ "guid": "33b6b780-8b9f-4e5c-9204-9d413a923c34",
+ "link": "https://learn.microsoft.com/sql/relational-databases/databases/move-database-files?view=sql-server-ver16",
"services": [
- "AVD"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Clients & Users",
- "text": "Assess how many users will connect to AVD and from which regions",
- "waf": "Performance"
+ "subcategory": "SQL Server",
+ "text": "Move all databases to data disks, including system databases.",
+ "waf": "Operations"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "The dependencies on resources external to the AVD pool should be assessed and reviewed, for example Active Directory, external file shares or other storage, on-premises services and resources, network infrastructure components like VPN and or ExpressRoute, external services and 3rd-party components. For all these resources, latency from the AVD Host Pool needs to be evaluated and connectivity considered. Additionally, BCDR considerations need to be applied to these dependencies as well.",
- "guid": "6abca2a4-fda1-4dbf-9dc9-5d48c7c791dc",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop?toc=%2Fazure%2Fvirtual-desktop%2Ftoc.json&bc=%2Fazure%2Fvirtual-desktop%2Fbreadcrumb%2Ftoc.json",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "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": [
+ "VM",
"Storage",
- "AVD",
- "ExpressRoute",
- "VPN"
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Clients & Users",
- "text": "Assess external dependencies for each Host Pool",
- "waf": "Performance"
+ "severity": "Low",
+ "subcategory": "SQL Server",
+ "text": "Move SQL Server error log and trace file directories to data disks.",
+ "waf": "Operations"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD offers a variety of client types (fat, thin, web) to connect over different platforms (Windows, MacOS, iOS, Android). Review limitations of each client and compare multiple options when possible.",
- "guid": "a1f6d565-99e5-458b-a37d-4985e1112dbd",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/users/connect-windows",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "guid": "d68c5b5c-2925-4394-a69a-9d2799c42bb6",
+ "link": "https://learn.microsoft.com/sql/database-engine/configure-windows/server-memory-server-configuration-options#use-",
"services": [
- "AVD"
+ "VM",
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Clients & Users",
- "text": "Review user client OS used and AVD client type",
+ "severity": "High",
+ "subcategory": "SQL Server",
+ "text": "Set max SQL Server memory limit to leave enough memory for the Operating System.",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Depending on the user locations, and AVD region deployment, users may have a non-optimal experience, hence is important to test as soon as possible in a small PoC environment. Run the 'Azure Virtual Desktop Experience Estimator' tool to select the best Azure region to deploy Host Pools. Beyond 150ms latency, user experience may be not optimal.",
- "guid": "d2f54b29-769e-43a6-a1e8-838ac936667e",
- "link": "https://azure.microsoft.com/services/virtual-desktop/assessment/",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "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": [
- "AVD"
+ "VM",
+ "SQL"
],
"severity": "High",
- "subcategory": "Clients & Users",
- "text": "Run a PoC to validate end-to-end user experience and impact of network latency",
+ "subcategory": "SQL Server",
+ "text": "Enable lock pages in memory.",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "RDP settings can currently only be configured at the host pool level, not per user/group. If different settings are required for different set of users, it is recommended to create multiple Host Pools.",
- "guid": "3b365a5c-7acb-4e48-abe5-4cd79f2e8776",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/customize-rdp-properties",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "guid": "633ad2a0-916a-4664-a8fa-d0e278ee293c",
+ "link": "https://learn.microsoft.com/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store",
"services": [
- "AVD"
+ "VM",
+ "SQL"
],
"severity": "Low",
- "subcategory": "Clients & Users",
- "text": "Assess and document RDP settings for all user groups",
- "waf": "Security"
+ "subcategory": "SQL Server",
+ "text": "Enable Query Store on all production SQL Server databases following best practices.",
+ "waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD is a non-regional service, Host Pools can be created in any region, automatic redirection from closest front-end will happen automatically.",
- "guid": "42e52f47-21d9-428c-8b1b-d521e44a29a9",
- "link": "https://azure.microsoft.com/global-infrastructure/services/?products=virtual-desktop",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "guid": "1bc352ba-aab7-4571-a49a-b8093dc9ec9d",
+ "link": "https://learn.microsoft.com/sql/relational-databases/databases/tempdb-database#optimizing-tempdb-performance-in-sql-server",
"services": [
- "AVD"
+ "VM",
+ "SQL"
],
"severity": "High",
- "subcategory": "General",
- "text": "Determine in which Azure regions AVD Host Pools will be deployed.",
+ "subcategory": "SQL Server",
+ "text": "Ensure that all tempdb best practices are followed.",
"waf": "Performance"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD must store metadata to support the service; this is stored in the specified geography. However, this is independent of the regions where Host Pools are located.",
- "guid": "bad37ead-53cc-47ce-8d7a-aab3571449ab",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/data-locations",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "guid": "1bb73b36-a5a6-47fb-a9ed-5b35478c3479",
+ "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization",
"services": [
- "AVD"
+ "VM",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "General",
- "text": "Determine metadata location for AVD service",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "SQL Server",
+ "text": "Schedule SQL Server Agent jobs to run DBCC CHECKDB, index reorganize, index rebuild, and update statistics jobs.",
+ "waf": "Operations"
},
{
- "category": "Foundation",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Check for specific VM SKUs, especially if you need GPU or high-specs SKUs, and eventually Azure NetApp Files if used.",
- "guid": "8053d89e-89dc-47b3-9be2-a1a27f7a9e91",
- "link": "https://docs.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
+ "guid": "816b2863-cffe-41ca-a599-ef0d5a73dd4c",
+ "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization",
"services": [
- "Storage",
"VM",
- "AVD"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "General",
- "text": "Check Azure quotas and availability for specific VM sizes and types in the selected regions",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "SQL Server",
+ "text": "Limit autogrowth of the database and Disable autoshrink",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AD DCs in Azure are recommended (at least two in different AZ) to reduce latency for users logging into AVD session hosts, and eventually for Azure NetApp Files and AD integration. A DC need to be able to talk to DCs for ALL child domains. As alternative, on-premise connectivity must be used to reach AD DCs.",
- "guid": "c14aea7e-65e8-4d9a-9aec-218e6436b073",
- "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Constrained vCPU virtual machines (VMs) are a type of VM where the vCPU count can be constrained to a half or a quarter of the original VM size. This allows customers to reduce the cost of software licensing while maintaining the same memory, storage, and I/O bandwidth",
+ "guid": "e36c1c81-770a-4fbc-9c0d-43918648d285",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/constrained-vcpu",
"services": [
+ "VM",
"Storage",
- "VNet",
- "AVD",
- "Entra"
+ "SQL",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Create at least two Active Directory Domain Controllers (DCs) in Azure VNet environment close to AVD Host Pool",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Cost Optimization",
+ "text": "Optimize SQL Server License cost with Constrained vCPU VM's",
+ "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
+ "waf": "Cost"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Recommended to create a separate OU per Host Pool under a separate OU hierarchy. These OUs will contain machine accounts of AVD Session Hosts. ",
- "guid": "6db55f57-9603-4334-adf9-cc23418db612",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/create-host-pools-azure-marketplace",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Azure Hybrid Benefit allows you to exchange your existing licenses for discounted rates on Azure SQL Database and Azure SQL Managed Instance. Y",
+ "guid": "7ed67178-b824-4546-ae1a-ee3453aec823",
+ "link": "https://azure.microsoft.com/en-ca/pricing/hybrid-benefit/",
"services": [
- "AVD",
- "Entra"
+ "SQL",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Create a specific OU in Active Directory for each Host Pool",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Cost Optimization",
+ "text": "Leverage Azure Hybrid benefit to maximize the value of your on premises licenses in the cloud",
+ "waf": "Cost"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Carefully review, and potentially block/filter inheritance of GPOs to the OUs containing AVD Host Pools. ",
- "guid": "7126504b-b47a-4393-a080-327294798b15",
- "link": "https://docs.microsoft.com/previous-versions/windows/desktop/Policy/group-policy-hierarchy",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "The SQL Server IaaS Agent extension (SqlIaasExtension) runs on SQL Server on Azure Windows Virtual Machines (VMs) to automate management and administration tasks.",
+ "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": [
- "AVD",
- "Entra"
+ "VM",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Review Domain GPOs that will be applied to OU and impacting Host Pool Session Hosts functionalities",
+ "subcategory": "Azure",
+ "text": "Register with the SQL IaaS Agent Extension to unlock a number of feature benefits.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If Active Directory Domain GPOs are used, it is recommended to configure FSLogix using the built-in provided GPO ADMX template referenced in the companion article in the 'More Info' column",
- "guid": "2226a8e3-50a4-4ac3-8bd6-ee150553051f",
- "link": "https://learn.microsoft.com/fslogix/how-to-use-group-policy-templates",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Accelerated Networking provides consistent ultra-low network latency via Azure's in-house programmable hardware and technologies",
+ "guid": "99c42bb6-8d1d-4755-9624-6b438563b4dc",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
"services": [
- "AVD",
- "Entra"
+ "VM",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Configure FSLogix settings using the built-in provided GPO ADMX template",
+ "severity": "High",
+ "subcategory": "Azure",
+ "text": "Ensure Accelerated Networking is enabled on the virtual machine.",
"waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "It is recommended to have a specific dedicated account with minimal permissions, and without the default 10 joins limitation. Review the companion article for more details.",
- "guid": "347dc560-28a7-41ff-b1cd-15dd2f0d5e77",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#session-hosts",
+ "category": "SQL Server on Azure VM",
+ "checklist": "SQL Migration Review",
+ "description": "Microsoft Defender detects anomalous activities indicating unusual and potentially harmful attempts to access or exploit databases on the SQL server.",
+ "guid": "74a748b6-633a-4d2a-8916-a66498fad0e2",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/secure-score-security-controls",
"services": [
"VM",
- "AVD",
- "Entra"
+ "SQL",
+ "Defender"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Create a dedicated user account with only permissions to join VM to the domain",
+ "severity": "High",
+ "subcategory": "Azure",
+ "text": "Leverage Microsoft Defender for Cloud to improve the overall security posture of your virtual machine deployment.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Security"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Avoid granting access per user, instead use AD groups and replicate them using Active Directory Connector (ADC) in Microsoft Entra ID (former Azure AD). ",
- "guid": "2d41e361-1cc5-47b4-a4b1-410d43958a8c",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/manage-app-groups",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "There are some PaaS limitations that are introduced in SQL Managed Instance and some behavior changes compared to SQL Server. It is important to review and understand these differences.",
+ "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": [
- "AVD",
- "Entra"
+ "EventHubs",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Create a domain user group for each set of users that will be granted access to each Host Pool Application Group (DAG or RAG)",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Pre Migration",
+ "text": "Review the major differences between SQL Server and Managed Instance",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If Azure Files Active Directory (AD) integration is used, as part of the configuration procedure, an AD account to represent the storage account (file share) will be created. You can choose to register as a computer account or service logon account, see FAQ for details. For computer accounts, there is a default password expiration age set in AD at 30 days. Similarly, the service logon account may have a default password expiration age set on the AD domain or Organizational Unit (OU). For both account types, we recommend you check the password expiration age configured in your AD environment and plan to update the password of your storage account identity of the AD account before the maximum password age. You can consider creating a new AD Organizational Unit (OU) in AD and disabling password expiration policy on computer accounts or service logon accounts accordingly.",
- "guid": "2289b3d6-b57c-4fc6-9546-1e1a3e3453a3",
- "link": "https://docs.microsoft.com/azure/storage/files/storage-files-identity-ad-ds-enable",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "SQL Managed Instance has characteristics and resource limits that depend on the underlying infrastructure and architecture. It is important to review these limits.",
+ "guid": "3dc9ec9d-1bb7-43b3-9a5a-67fba9ed5b35",
+ "link": "https://docs.microsoft.com/azure/azure-sql/managed-instance/resource-limits",
"services": [
- "Storage",
- "AVD",
- "Entra",
- "AzurePolicy"
+ "SQL"
],
"severity": "High",
- "subcategory": "Active Directory",
- "text": "Review your organization password expiration policy for accounts used by Azure Files AD integration",
- "waf": "Security"
+ "subcategory": "Pre Migration",
+ "text": "Review capacity limits for SQL MI",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Performance"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "You can configure this using Active Directory Connect (ADC) or Azure AD Domain Services (for hybrid or cloud organizations). Microsoft Entra ID is the new name for Azure Active Directory (Azure AD).",
- "guid": "5119bf8e-8f58-4542-a7d9-cec166cd072a",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#identity",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "The instance settings between managed instance and your source SQL Server can be different . It is important to review those differences that can impact performance.",
+ "guid": "8bc178bd-c5a0-46ca-9144-351e19dd3442",
+ "link": "https://medium.com/azure-sqldb-managed-instance/compare-environment-settings-on-sql-server-and-azure-sql-that-may-impact-performance-e90c21fa9b08",
"services": [
- "AVD",
- "Entra"
+ "SQL"
],
"severity": "High",
- "subcategory": "Active Directory",
- "text": "A Windows Server Active Directory forest/domain must be in sync with Microsoft Entra ID",
- "waf": "Reliability"
+ "subcategory": "Pre Migration",
+ "text": "Compare instance settings on SQL Server and Azure SQL MI that may impact performance",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Performance"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If Azure Files is used and pre-requisites can be satisfied, it is recommended to configure (Microsoft Entra ID) Kerberos authentication. This configuration will allow to store FSLogix profiles that can be accessed by hybrid user identities from Azure AD-joined session hosts without requiring network line-of-sight to domain controllers.",
- "guid": "e777fd5e-c5f1-4d6e-8fa9-fc210b88e338",
- "link": "https://learn.microsoft.com/azure/storage/files/storage-files-identity-auth-hybrid-identities-enable",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Assess on-premises SQL Server instance(s) migrating to Azure SQL Managed Instance. The assessment workflow helps you to detect issues that block the migration itself and also partially supported and unsupported features",
+ "guid": "9eb72281-37a1-451c-9bb4-e4f1814287d5",
+ "link": "https://docs.microsoft.com/azure/dms/ads-sku-recommend",
"services": [
- "Storage",
- "AVD",
- "Entra"
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Microsoft Entra ID",
- "text": "Configure Azure Files share for Microsoft Entra ID (former Azure AD) Kerberos authentication on Microsoft Entra ID Joined scenario",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Pre Migration",
+ "text": "Run Data Migration assistant or Azure Data Studio Migration Extension to detect compatibility issues that can impact database functionality on Managed Instance",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "An Azure subscription must be parented to the same Microsoft Entra ID (former Azure AD) tenant, that contains a virtual network that either contains or is connected to the Windows Server Active Directory Domain Services or Microsoft Entra ID Domain Services instance.",
- "guid": "6ceb5443-5125-4922-9442-93bb628537a5",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#identity",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "The SKU recommendation feature can evaluate the source SQL Server performance and utilization characteristics to recommend a right-sized Azure SQL Managed Instance to assist with your migration journey.",
+ "guid": "ca8c26c9-b32a-4b5b-afc6-898a135e3378",
+ "link": "https://learn.microsoft.com/azure/dms/ads-sku-recommend",
"services": [
- "Subscriptions",
- "VNet",
- "AVD",
- "Entra"
+ "SQL"
],
"severity": "High",
- "subcategory": "Requirements",
- "text": "A Microsoft Entra ID tenant must be available with at least one subscription linked",
- "waf": "Reliability"
+ "subcategory": "Pre Migration",
+ "text": "Select the right compute resources for your workload by leveraging the SKU recommendation tools.",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Performance"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Virtual Desktop supports different types of identities depending on which configuration you choose. Please review the supported scenarios mentioned in the 'More Info' article and document the design decision accordingly in the 'Comment' column. Critically, external identities (B2B or B2C) are not supported. Be sure to review also the list of supported scenarios in https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios.",
- "guid": "b4ce4781-7557-4a1f-8043-332ae199d44c",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/authentication",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Review Unsupported Features, Migration Blockers and Breaking Changes for each database from the Assessment",
+ "guid": "97e31c67-d68c-4b69-82ac-19f906d697c8",
+ "link": "https://learn.microsoft.com/azure/dms/ads-sku-recommend",
"services": [
- "AVD",
- "Entra"
+ "SQL"
],
"severity": "High",
- "subcategory": "Requirements",
- "text": "Review and document your identity scenario",
- "waf": "Security"
+ "subcategory": "Pre Migration",
+ "text": "Review and address the issues highlighted in DMA/Azure Data Studio",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Users need accounts that are in Microsoft Entra ID (former Azure AD). If you're also using AD DS or Azure AD Domain Services in your deployment of Azure Virtual Desktop, these accounts will need to be hybrid identities, which means the user accounts are synchronized. If you're using Microsoft Entra ID with AD DS, you'll need to configure Azure AD Connect to synchronize user identity data between AD DS and Microsoft Entra ID. If you're using Microsoft Entra ID with Azure AD Domain Services, user accounts are synchronized one way from Microsoft Entra ID to Azure AD Domain Services. This synchronization process is automatic. AVD also supports Microsoft Entra ID native accounts with some restrictions. External identities (B2B or B2C) are not supported.",
- "guid": "f9b141a8-98a5-435e-9378-97e71ca7da7b",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "The SQL Managed Instance default DNS zone .database.windows.net can be changed with your own. However, the managed instance hostname part of its FQDN should remain the same.",
+ "guid": "eaded26b-dd18-46f0-ac25-1b999a68af87",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/frequently-asked-questions-faq?view=azuresql-mi#can-a-managed-instance-have-the-same-name-as-a-sql-server-on-premises-instance",
"services": [
- "AVD",
- "Entra"
+ "DNS",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Requirements",
- "text": "Assess User Account types and requirements",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Pre Migration",
+ "text": "Plan for connection string changes as changing a managed instance name is not supported",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD supports SSO using either Active Directory Federation Services (AD FS) or Microsoft Entra ID (former Azure AD) authentication. The latter is recommended, please check the requirements and limitation in the 'More Info' article. Using AD FS could be a viable choice if already present in the customer environment, it is not recommended to deploy a brand new ADFS infrastructure just for AVD SSO implementation.",
- "guid": "5f9f680a-ba07-4429-bbf7-93d7071561f4",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/authentication#single-sign-on-sso",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "There are addional requirements in configuring a vnet and subnet hosting the managed instance.",
+ "guid": "c9a7f821-b8eb-48c0-aa77-e25e4d5aeaa8",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-existing-add-subnet?view=azuresql-mi",
"services": [
- "AVD",
- "Entra"
+ "VNet",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Requirements",
- "text": "If Single-Sign On (SSO) is a requirement, review the supported scenarios and prerequisites",
- "waf": "Reliability"
+ "subcategory": "Pre Migration",
+ "text": "Review managed instance VNet requirements",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "VMs can be Windows Active Directory (AD) domain-joined, Hybrid AD-joined, Microsoft Entra ID (former Azure AD) Joined or Azure AD Domain Services joined. Be sure to review supported scenarios, limitations and requirements from the referenced article.",
- "guid": "ea962a15-9394-46da-a7cc-3923266b2258",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Though it's possible to deploy managed instances to a subnet with a number of IP addresses that's less than the output of the subnet formula, always consider using bigger subnets instead. Using a bigger subnet can help avoid future issues stemming from a lack of IP addresses, such as the inability to create additional instances within the subnet or scale existing instances.",
+ "guid": "dc4e2436-bb33-46d7-85f1-7960eee0b9b5",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-subnet-determine-size?view=azuresql-mi",
"services": [
- "VM",
- "AVD",
- "Entra"
+ "VNet",
+ "SQL"
],
"severity": "High",
- "subcategory": "Requirements",
- "text": "Select the proper AVD Session Host domain join type",
- "waf": "Security"
+ "subcategory": "Deployment",
+ "text": "Ensure managed instance subnet has sufficient IP addresses available",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "waf": "Operations"
},
{
- "category": "Identity",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Compare self-managed Windows Active Directory Domain Services, Microsoft Entra ID (former Azure AD), and managed Azure AD Domain Services (AAD-DS)",
- "guid": "6f4a1651-bddd-4ea8-a487-cdeb4861bc3b",
- "link": "https://docs.microsoft.com/azure/active-directory-domain-services/compare-identity-solutions",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "SQL Managed Instance has characteristics and resource limits that depend on the underlying infrastructure and architecture. SQL Managed Instance can be deployed on multiple hardware configurations.",
+ "guid": "c8defc4d-721d-431d-850f-b707ae9eab40",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/resource-limits?view=azuresql-mi#service-tier-characteristics",
"services": [
- "AVD",
- "Entra"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Requirements",
- "text": "Before using Azure AD Domain Services (AAD-DS) for AVD, be sure to review the limitations.",
- "waf": "Reliability"
- },
+ "severity": "High",
+ "subcategory": "Pre Migration",
+ "text": "Plan between General Purpose and Business Critical tiers of MI",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Performance"
+ },
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD provides administrative templates for Intune and Active Directory GPO. Using these templates it is possible to centrally control several AVD configuration settings: Graphics related data logging, Screen capture protection, RDP Shortpath for managed networks, Watermarking. See companion article in 'More Info' colum for details. NOTE: FSLogix has its own separate template.",
- "guid": "5549524b-36c0-4f1a-892b-ab3ca78f5db2",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/administrative-template",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "The auto-failover groups feature allows you to manage the replication and failover of user databases in a managed instance to a managed instance in another Azure region. Auto-failover groups are designed to simplify deployment and management of geo-replicated databases at scale.",
+ "guid": "ed329079-8bc1-478b-bc5a-06ca7144351e",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/auto-failover-group-sql-mi?view=azuresql-mi&tabs=azure-powershell",
"services": [
- "Monitor",
- "AVD",
- "Entra"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Use built-in provided administrative templates for AVD settings configuration",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Pre Migration",
+ "text": "Based on your RPO/RTO's , determine if Auto failover Group needs to be implemented. If so, plan for the deployment attributes of the second instance.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-windows-server-iaas-virtual-machine-identity/",
+ "waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Determine if a configuration management tool is already in place to manage Host Pool VM configuration after initial deployment, For example SCCM/SCOM, Intune/ConfigurationManager, 3rd-party solutions.",
- "guid": "3334fdf9-1c23-4418-8b65-285269440b4b",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/management",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "There are multiple ways to connect your application to the managed instance. Review and understand the pros and cons and decide on the best approach for your application.",
+ "guid": "5d226886-d30b-466c-97be-595190f83845",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connect-application-instance?view=azuresql-mi",
"services": [
- "VM",
- "Monitor",
- "AVD"
+ "SQL"
],
"severity": "Low",
- "subcategory": "Management",
- "text": "Plan AVD Session Hosts configuration management strategy",
+ "subcategory": "Pre Migration",
+ "text": "Review the Connectivity Design between Database and Application, test & validate it",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "We recommend using Microsoft Intune, if requirements can be satisfied, to manage your Azure Virtual Desktop environment. Review supported scenarios and requirements to enable Intune for AVD Session Host management in the referenced article in the More Info column. Document your choice in the 'Comment' column. In that article, review the different requirements and capabilities for single-session https://learn.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop and multi-session https://learn.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop-multi-session AVD.",
- "guid": "63a08be1-6004-4b4a-a79b-f3239faae113",
- "link": "https://learn.microsoft.com/mem/intune/fundamentals/azure-virtual-desktop",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Compare migration options to choose the path that's appropriate to your business needs.",
+ "guid": "c586cb29-1ec1-46a1-b076-ef9f141acdce",
+ "link": "https://learn.microsoft.com/azure/azure-sql/migration-guides/managed-instance/sql-server-to-managed-instance-overview?view=azuresql-mi#migration-tools",
"services": [
- "Monitor",
- "AVD"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Evaluate Intune for AVD Session Hosts management",
+ "subcategory": "Pre Migration",
+ "text": "Plan for the Migration Method. Depending on the DB Size and Application downtime window, select the preferred Migration Method.",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
"waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "The scaling tool provides a low-cost automation option for customers who want to optimize their session host VM costs. You can use the scaling tool to schedule VMs to start and stop based on Peak and Off-Peak business hours, scale out VMs based on number of sessions per CPU core, scale in VMs during Off-Peak hours, leaving the minimum number of session host VMs running. Not available yet for Personal Host Pool type.",
- "guid": "7138b820-102c-4e16-be30-1e6e872e52e3",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/autoscale-scenarios",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "After you verify that data is the same on both source and target, you can cut over from the source to the target environment. It's important to plan the cutover process with business / application teams to ensure minimal interruption during cutover doesn't affect business continuity.",
+ "guid": "579377bc-db37-451a-a2ac-1fad66e15d4d",
+ "link": "https://learn.microsoft.com/azure/dms/tutorial-sql-server-managed-instance-online#performing-migration-cutover",
"services": [
- "VM",
- "Monitor",
- "Cost",
- "AVD"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Assess the requirements for host pool auto-scaling capability",
+ "subcategory": "Pre Migration",
+ "text": "Plan the cutover process with business / application teams to ensure minimal interruption during cutover and it does not affect business continuity.",
+ "training": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain",
"waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Start VM On Connect lets you reduce costs by enabling end users to turn on their session host virtual machines (VMs) only when they need them. You can then turn off VMs when they're not needed. You can configure Start VM on Connect for personal or pooled host pools using the Azure portal or PowerShell. Start VM on Connect is a host pool wide setting.",
- "guid": "55f612fe-f215-4f0d-a956-10e7dd96bcbc",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/start-virtual-machine-connect",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "A time zone of a managed instance can be set during instance creation only. The default time zone is UTC",
+ "guid": "4a2adb1c-3d23-426a-b225-ca44e1695fdd",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/timezones-overview?view=azuresql#set-a-time-zone",
"services": [
- "VM",
- "Monitor",
- "Cost",
- "AVD"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Consider the usage of Start VM on Connect for Personal Host Pools",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Deployment",
+ "text": "Ensure you customize your time zone setting at the instance creation time. One cannot change it later.",
+ "training": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "'Start VM On Connect' provides a smart way to automatically start previously stopped Session Hosts but does not provide a mechanism to shut down when not in used. Administrators are encouraged to configure additional policies to sign users out of their sessions and run Azure automation scripts to de-allocate VMs. Users should be not allowed to shut down their Personal Hosts since will not be able to de-allocate Azure VMs, then billing will still be active with no cost reduction.",
- "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",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Server-level collation in Azure SQL Managed Instance can be specified when the instance is created and cannot be changed later.Default server-level collation is SQL_Latin1_General_CP1_CI_AS.",
+ "guid": "deace4cb-1deb-44c6-90c3-fc14eebb3693",
+ "link": "https://learn.microsoft.com/sql/relational-databases/collations/set-or-change-the-server-collation?view=sql-server-ver16",
+ "services": [
+ "SQL"
+ ],
+ "severity": "High",
+ "subcategory": "Deployment",
+ "text": "Ensure you select the right collation setting at the instance creation time. One cannot change it later",
+ "waf": "Operations"
+ },
+ {
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "When you're migrating a database protected by Transparent Data Encryption (TDE) to Azure SQL Managed Instance using the native restore option, the corresponding certificate from the SQL Server instance needs to be migrated before database restore.",
+ "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": [
- "AzurePolicy",
- "Monitor",
- "Cost",
"VM",
- "AVD"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Evaluate the implementation of an ad-hoc mechanism to shut down Personal AVD Session Hosts",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Deployment",
+ "text": "For TDE Enabled Database, corresponding certificate from the on-premises or Azure VM SQL Server needs to be migrated before database restore",
+ "waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Virtual Desktop billing is mainly based on cost associated to compute, networking and storage resources consumed by Host Pools. In addition to this, costs can be generated by dependent resources, for example VPN or ExpressRoute or vWAN, Active Directory Domain Controllers, DNS, etc. There is no direct cost associated to AVD objects like workspaces, host pools or application groups. To make AVD associated costs more evident and grouped by Host Pool, it is recommended to use 'cm-resource-parent' tag. ",
- "guid": "51bcafca-476a-48fa-9b91-9645a7679f20",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/tag-virtual-desktop-resources",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "System databases can be restored only from backups that are created on the version of SQL Server that the server instance is currently running. This is not the case when you are migrating to SQL Managed Instance.Azure PowerShell and DBATools PowerShell libraries enable you to easily script and automate and customize all parts of the migration process.",
+ "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": [
- "DNS",
- "VWAN",
- "Storage",
- "VPN",
- "Monitor",
- "Cost",
- "ExpressRoute",
- "AVD"
+ "Backup",
+ "SQL"
],
"severity": "Low",
- "subcategory": "Management",
- "text": "Review and adopt suggested Azure Tags for Azure Virtual Desktop",
- "waf": "Cost"
+ "subcategory": "Migration",
+ "text": "Restore of system databases is not supported. To migrate instance-level objects (stored in master or msdb databases), we recommend to script them out and run T-SQL scripts on the destination instance.",
+ "waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Advisor analyzes your configurations and telemetry to offer personalized recommendations to solve common problems. With these recommendations, you can optimize your Azure resources for reliability, security, operational excellence, performance, and cost.",
- "guid": "611dd68c-5a4b-4252-8e44-a59a9c2399c4",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/azure-advisor-recommendations",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "When using migration options that continuously replicate / sync data changes from source to the target, the source data and schema can change and drift from the target. During data sync, ensure that all changes on the source are captured and applied to the target during the migration process.",
+ "guid": "e3d3e084-3276-4d4b-bc01-5bcf219e4a1e",
"services": [
- "Monitor",
- "Cost",
- "AVD",
- "Entra"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Periodically check Azure Advisor recommendations for AVD",
+ "severity": "High",
+ "subcategory": "Migration",
+ "text": "Ensure that all changes on the source are captured and applied to the target during the migration process.",
"waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Customers have several options: Microsoft Configuration Manager, this article explains how to automatically apply updates to a Azure Virtual Desktop session hosts running Windows 10/11: https://learn.microsoft.com/azure/virtual-desktop/configure-automatic-updates, Microsoft Intune: https://docs.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop-multi-session, Azure Update Management and WSUS for Windows Server OS only (client OS not supported: https://learn.microsoft.com/azure/automation/update-management/operating-system-requirements), 3rd Party tools. Outside an emergency security patching situation, it is recommended to move away from an 'in-place' update strategy patching strategy and adopt a re-imaging approach.",
- "guid": "04722da2-9c2b-41cd-922f-54b29bade3aa",
- "link": "https://learn.microsoft.com/mem/intune/fundamentals/azure-virtual-desktop-multi-session",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Ensure that the application is able to succesffuly connect to the managed instance post migration of the databases.",
+ "guid": "b5887952-5d22-4688-9d30-b66c57be5951",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connect-application-instance?view=azuresql-mi",
"services": [
- "Monitor",
- "AVD"
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Plan for a Session Host emergency patching and update strategy",
+ "subcategory": "Migration",
+ "text": "Test Application Connectivity to MI and Databases",
"waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "The Scheduled Agent Updates feature lets you create up to two maintenance windows per Host Pool to update AVD components at a convenient time. It is recommended to specify maintenance windows then upgrading Session Hosts will not happen during peak business hours. Scheduled Agent Updates is disabled by default. This means that, unless you enable this setting, the agent can get updated at any time by the agent update flighting service.",
- "guid": "c067939b-e5ca-4698-b9ce-3bd91843e73f",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/scheduled-agent-updates",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "High availability is a fundamental part of SQL Managed Instance platform that works transparently for your database applications. Failovers from primary to secondary nodes in case of node degradation or fault detection, or during regular monthly software updates are an expected occurrence for all applications using SQL Managed Instance in Azure.",
+ "guid": "90f83845-c586-4cb2-a1ec-16a1d076ef9f",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/user-initiated-failover?view=azuresql",
"services": [
- "Monitor",
- "AVD"
+ "SQL"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Configure the Scheduled Agent Updates feature",
+ "severity": "High",
+ "subcategory": "Post Migration",
+ "text": "Consider executing a manual failover on SQL Managed Instance to test for fault and failover resiliency.",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Host pools are a collection of one or more identical virtual machines within Azure Virtual Desktop environment. We highly recommend you create a validation host pool where service updates are applied first. This allows you to monitor service updates before the service applies them to your standard or non-validation environment.",
- "guid": "d1e8c38e-c936-4667-913c-005674b1e944",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/create-validation-host-pool",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Ensuring that your applications are failover resilient prior to deploying to production will help mitigate the risk of application faults in production and will contribute to application availability for your customers.",
+ "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": [
- "VM",
- "Monitor",
- "AVD"
+ "LoadBalancer",
+ "EventHubs",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Create a validation (canary) Host Pool",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Post Migration",
+ "text": "If failover groups have been implemented, Test Manual Failover and Failback and test application connectivity behavior during failover/failback",
+ "waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "An AVD Host Pool can be deployed in several ways: Azure Portal, ARM templates, Azure CLI tool, Powershell, manual VM creation with registration token, Terraform, 3rd-party tools. It is important to adopt proper method/s to support automatic deployment through automation and CI/CD tools.",
- "guid": "a459c373-e7ed-4616-83b3-65a917ecbe48",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-platform-automation-and-devops",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "This provides more dedicated disk IOPS and throughput",
+ "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": [
- "VM",
- "Monitor",
- "AVD"
+ "Storage",
+ "SQL"
],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Determine Host Pool deployment strategy",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Post Migration",
+ "text": "Optimize Storage Performance for General Purpose Managed Instance",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Performance"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "After you register a VM to a host pool within the Azure Virtual Desktop service, the agent regularly refreshes the VM's token whenever the VM is active. The certificate for the registration token is valid for 90 days. Because of this 90-day limit, we recommend VMs to be online for 20 minutes every 90 days so that the machine can refresh its tokens and update the agent and side-by-side stack components.",
- "guid": "ebe54cd7-df2e-48bb-ac35-81559bb9153e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/faq",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "Many organizations have policies that require that certificates or encryption keys be created and managed internally. If your organization has a similar policy, this architecture might apply to you. If your customers require internal management of these items, the architecture also might apply to you.",
+ "guid": "35ad9422-23e1-4381-8523-081a94174158",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/data/sql-managed-instance-cmk",
"services": [
- "VM",
- "Monitor",
- "AVD"
+ "AKV",
+ "Backup",
+ "SQL",
+ "AzurePolicy"
+ ],
+ "severity": "Low",
+ "subcategory": "Post Migration",
+ "text": "Enable Customer managed TDE for taking your own copy only full backups",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Security"
+ },
+ {
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "The maintenance window feature provides you with the ability to onboard Azure SQL resource to prescheduled time blocks outside of business hours.",
+ "guid": "33ef7ad7-c6d3-4733-865c-7acbe44bbe60",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/planned-maintenance?view=azuresql",
+ "services": [
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Turn on Session Host VMs at least every 90 days for token refresh",
+ "subcategory": "Post Migration",
+ "text": "Plan for Azure maintenance events",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Operations"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Virtual Desktop Insights is a dashboard built on Azure Monitor Workbooks that helps IT professionals understand their Azure Virtual Desktop environments. Read the referenced article to learn how to set up Azure Monitor for Azure Virtual Desktop to monitor your AVD environments.",
- "guid": "63cfff1c-ac59-49ef-8d5a-83dd4de36c1c",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/insights",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "By using the long-term retention (LTR) feature, you can store specified SQL Database and SQL Managed Instance full backups in Azure Blob storage with configured redundancy for up to 10 years.",
+ "guid": "9d89f2e8-7778-4424-b516-785c6fa96b96",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/long-term-retention-overview?view=azuresql-mi",
"services": [
- "Monitor",
- "AVD"
+ "ARS",
+ "Backup",
+ "SQL",
+ "Storage"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Enable monitoring for AVD",
+ "severity": "Low",
+ "subcategory": "Post Migration",
+ "text": "Configure Long Term backup retention, view backups and restore from backups",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
"waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Azure Virtual Desktop uses Azure Monitor and Log Analytics for monitoring and alerts like many other Azure services. This lets admins identify issues through a single interface. The service creates activity logs for both user and administrative actions. Each activity log falls under the following categories: Management, Feed, Connections, Host Registration, Errors, Checkpoints. ",
- "guid": "81770afb-c4c0-4e43-a186-58d2857ed671",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/diagnostics-log-analytics",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "By using Azure Hybrid Benefit, you can achieve cost savings, modernise and maintain a flexible hybrid environment while optimising business applications.",
+ "guid": "ad88408f-3727-434c-a76b-a28021459014",
+ "link": "https://azure.microsoft.com/en-gb/pricing/hybrid-benefit/#overview",
"services": [
- "VM",
- "Monitor",
- "AVD"
+ "SQL",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Enable diagnostic settings for Workspaces, Host Pools, Application Groups and Host VMs to Log Analytics workspace",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Post Migration",
+ "text": "Take advantage of Azure Hybrid Benefit and Azure Reservations where applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Cost"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "See the referenced article and this additional one to setup proper monitoring and alerting for storage: https://docs.microsoft.com/azure/storage/files/storage-troubleshooting-files-performance. ",
- "guid": "2463cffe-179c-4599-be0d-5973dd4ce32c",
- "link": "https://docs.microsoft.com/azure/storage/files/storage-files-monitoring?tabs=azure-portal",
+ "category": "SQL Managed Instance",
+ "checklist": "SQL Migration Review",
+ "description": "If you don't have threat protection Advanced Threat Protection is part of the Microsoft Defender for SQL offering, which is a unified package for advanced SQL security capabilities.",
+ "guid": "65d38e53-f9cc-4bd8-9926-6acca274faa1",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-overview?view=azuresql",
"services": [
- "Storage",
- "Monitor",
- "AVD"
+ "SQL",
+ "Defender"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Create alerts on the profile storage to be alerted in case of high usage and throttling",
+ "subcategory": "Post Migration",
+ "text": "Leverage Microsoft Defender for Cloud to improve the overall security posture",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "a96b96ad-8840-48f3-9273-4c876ba28021",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-resiliency",
+ "services": [
+ "DNS",
+ "VNet"
+ ],
+ "severity": "High",
+ "subcategory": "Azure Private DNS",
+ "text": "Verify that Zones are linked to Vnets in multiple regions",
"waf": "Reliability"
},
{
- "category": "Monitoring and Management",
- "checklist": "Azure Virtual Desktop Review",
- "description": "You can use Azure Service Health to monitor service issues and health advisories for Azure Virtual Desktop. Azure Service Health can notify you with different types of alerts (for example, email or SMS), help you understand the effect of an issue, and keep you updated as the issue resolves.",
- "guid": "18813706-f7c4-4c0d-9e51-4548d2457ed6",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/set-up-service-alerts",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "45901465-d38e-453f-accb-d969266acca2",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-resiliency",
"services": [
- "Monitor",
- "AVD"
+ "DNS"
],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Configure Azure Service Health for AVD alerts ",
+ "severity": "High",
+ "subcategory": "Azure Private DNS",
+ "text": "If different Zones are used between regions, verify a plan for making sure that Zones are up to date in a DR failover situation",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If required to connect to on-premises environment, assess the current connectivity option or plan for the required connectivity (ExpressRoute, Azure S2S or 3rd-party NVA VPN). ",
- "guid": "dd399cfd-7b28-4dc8-9555-6202bfe4563b",
- "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "74faa19b-f39d-495d-94c7-c8919ca1f6d5",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-traffic-manager?toc=%2Fazure%2Fdns%2Ftoc.json",
"services": [
- "VPN",
- "AVD",
- "ExpressRoute",
- "NVA"
+ "DNS",
+ "TrafficManager",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Determine if hybrid connectivity is required to connect to on-premises environment",
+ "subcategory": "Azure DNS",
+ "text": "Plan for disaster recovery with Azure DNS and Traffic Manager",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD Host Pools can be deployed in either Azure Virtual WAN or traditional 'Hub & Spoke' network topologies. It is recommended to deploy each Host Pool in a separate 'spoke' VNet, using 'hub' is not recommended.",
- "guid": "c8639648-a652-4d6c-85e5-02965388e5de",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-network-topology-and-connectivity",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "315ae524-ba34-4d45-a5e1-2139bd7bb012",
+ "link": "https://learn.microsoft.com/azure/dns/private-resolver-reliability#availability-zones",
"services": [
- "VNet",
- "AVD",
- "VWAN"
+ "DNS"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Determine Azure Virtual Network (VNet) placement for each AVD Host Pool",
- "waf": "Performance"
+ "subcategory": "Azure DNS Resolver",
+ "text": "Enable availability zones with Private Resolver",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Evaluate the bandwidth requirements, ensure VPN/ER bandwidth will be enough, ensure proper routing and firewall rules are in place, test end-to-end latency. ",
- "guid": "d227dd14-2b06-4c21-a799-9a646f4389a7",
- "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "f7b95e06-e154-4e2a-a359-2828e6e20517",
+ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
"services": [
- "AVD",
- "VPN"
+ "DNS",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Assess which on-premises resources are required from AVD Host Pools",
+ "subcategory": "Azure DNS Resolver",
+ "text": "Plan for failover with Private Resolvers in a Disaster Recovery",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Several options are available. You can use Azure Firewall or equivalent 3rd-party NVA, Network Security Group (NSG) and/or Proxy servers. NSG is not able to enable/disable by URL, only ports and protocols. Proxy should be used only as explicit setting in user browser. Details on using Azure Firewall Premium with AVD are reported in the companion article in the 'More Info' column. Be sure to allow proper access to required AVD URLs. Forced Tunneling to on-premises is not recommended.",
- "guid": "fc4972cd-3cd2-41bf-9703-6e5e6b4bed3d",
- "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "2676ae46-691e-4883-9ad9-42223e138105",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-virtual-machines?toc=%2Fazure%2Fvirtual-machines%2Ftoc.json&bc=%2Fazure%2Fvirtual-machines%2Fbreadcrumb%2Ftoc.json&tabs=graph",
"services": [
- "Firewall",
- "VNet",
- "AVD",
- "NVA"
+ "DNS",
+ "VM"
],
"severity": "Medium",
- "subcategory": "Networking",
- "text": "Need to control/restrict Internet outbound traffic for AVD hosts?",
- "waf": "Security"
+ "subcategory": "VM Based DNS Service",
+ "text": "Follow VM Guidance for resillency of VM",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Required URLs for AVD control plane access by session hosts are documented here: https://docs.microsoft.com/azure/virtual-desktop/safe-url-list. A check tool is available to verify connectivity from the session hosts: https://docs.microsoft.com/azure/virtual-desktop/safe-url-list#required-url-check-tool. Forced Tunneling to on-premises is not recommended.",
- "guid": "65c7acbe-45bb-4e60-ad89-f2e87778424d",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/safe-url-list",
+ "category": "Operations Management",
+ "checklist": "DNS Review Checklist",
+ "guid": "23081a94-1741-4583-9ff7-ad7c6d373316",
+ "link": "https://www.windows-active-directory.com/azure-ad-dns-for-custom-domain-names-with-advanced-dns-settings.html",
"services": [
- "AVD"
+ "DNS",
+ "VM",
+ "Entra"
],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Ensure AVD control plane endpoints are accessible",
+ "severity": "Medium",
+ "subcategory": "VM Based DNS Service",
+ "text": "IF AD based DNS, follow the Identity -> Windows Server AD path",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Consider the usage of Azure Defender Endpoint or similar 3rd-party agents to control user web navigation, see the Security section for more details.",
- "guid": "73676ae4-6691-4e88-95ad-a42223e13810",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/onboard-windows-multi-session-device?view=o365-worldwide",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
+ "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
+ "service": "Azure Data Explorer",
"services": [
- "AVD",
- "Defender"
+ "Storage",
+ "Cost"
],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Need to control/restrict Internet outbound traffic only for users on AVD hosts? ",
- "waf": "Security"
+ "subcategory": "Replication",
+ "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Custom UDR and NSG can be applied to AVD Host Pool subnets, for example to redirect to Azure Firewall or NVA, or to filter/block network traffic. In this case is recommended to carefully review to ensure optimal path for outbound traffic to AVD control plane is used. Service Tags can now be used with UDR and NSG, then AVD management plane traffic can be easily allowed: https://learn.microsoft.com/azure/virtual-desktop/safe-url-list.",
- "guid": "523181a9-4174-4158-93ff-7ae7c6d37431",
- "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
+ "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
+ "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
+ "service": "Azure Data Explorer",
"services": [
- "Firewall",
- "VNet",
- "AVD",
- "NVA"
+ "Storage"
],
- "severity": "Low",
- "subcategory": "Networking",
- "text": "Review custom UDR and NSG for AVD Host Pool subnets",
- "waf": "Security"
+ "subcategory": "Replication",
+ "text": "To share data, explore Leader-follower cluster configuration",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Network traffic from AVD Session Host VMs to AVD control plane should be as direct as possible. Redirecting this traffic through a Proxy or Firewall with deep packet inspection and/or SSL termination could cause serious issues and bad customer experience. It is recommended to bypass Proxy and Firewall just for the AVD control plane. User generated traffic surfing the web instead, should be filtered by Firewall and/or redirected to a Proxy. For details and guidelines, please see the companion article in the 'More Info' column.",
- "guid": "cc6edca0-aeca-4566-9e92-cf246f1465af",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/proxy-server-support",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
+ "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
+ "service": "Azure Data Explorer",
"services": [
- "VM",
- "AVD"
+ "ASR"
],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Do not use Proxy servers, SSL termination and Deep Packet Inspection for AVD control plane traffic",
+ "subcategory": "Replication",
+ "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "It is recommended to assess and review networking bandwidth requirements for users, based on the specific workload type. The referenced article provide general estimations and recommendations, but specific measure are required for proper sizing. ",
- "guid": "516785c6-fa96-4c96-ad88-408f372734c8",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/rdp-bandwidth",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
+ "service": "Azure Data Explorer",
"services": [
- "VM",
- "AVD"
+ "RBAC",
+ "Storage"
],
- "severity": "Low",
- "subcategory": "Networking",
- "text": "Check the network bandwidth required for each user and in total for the VM SKU",
- "waf": "Performance"
+ "subcategory": "Replication",
+ "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If Azure Files SMB share will be used to store user profiles via FSLogix, the usage of Private Endpoint (PE) for private access to the storage is recommended. AVD Session Hosts will access the storage using a private IP in the same VNet, a separate subnet is recommended. This feature has an additional cost that must be evaluated. If PE will not be used, at least Service Endpoint is recommended (no cost associated).",
- "guid": "ec27d589-9178-426d-8df2-ff60020f30a6",
- "link": "https://learn.microsoft.com/azure/storage/files/storage-files-networking-endpoints",
- "services": [
- "PrivateLink",
- "Storage",
- "VNet",
- "Cost",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Evaluate usage Private Endpoint for Azure Files share",
- "waf": "Security"
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
+ "service": "Azure Data Explorer",
+ "services": [],
+ "subcategory": "Replication",
+ "text": "Ingest data into each cluster in parallel",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Connections to Azure Virtual Desktop can use TCP or UDP. RDP Shortpath is a feature of AVD that establishes a direct UDP-based transport between a supported Windows Remote Desktop client and session host. if clients have line of sight to AVD session hosts from internal network (VPN usage is not recommended), this feature can provide lower latency and best performances as explained in https://learn.microsoft.com/azure/virtual-desktop/rdp-shortpath?tabs=managed-networks#key-benefits.",
- "guid": "b2074747-d01a-4f61-b1aa-92ad793d9ff4",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/shortpath",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
+ "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "AVD",
- "VPN"
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Evaluate usage of RDP ShortPath for clients connecting from managed internal networks",
- "waf": "Performance"
+ "subcategory": "DR Configuration",
+ "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Security mechanisms provided by GPO should be used, if available. For example, it is possible to impose desktop screen lock and idle session disconnection time. Existing GPOs applied to on-premises environment should be reviewed and eventually applied also to secure also AVD Hosts when joined to the domain.",
- "guid": "a135e337-897e-431c-97d6-8cb6a22ac19f",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#establish-maximum-inactive-time-and-disconnection-policies",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
+ "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "AVD"
+ "ACR"
],
- "severity": "Medium",
- "subcategory": "Active Directory",
- "text": "Review Active Directory GPO to secure RDP sessions",
- "waf": "Security"
+ "subcategory": "DR Configuration",
+ "text": "For critical applications, create Active-Active configuration in two paired regions",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Microsoft Defender for Endpoint supports Azure Virtual Desktop for Windows 10/11 Enterprise multi-session. Check article for onboarding non-persistent virtual desktop infrastructure (VDI) devices: https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/configure-endpoints-vdi",
- "guid": "b1172576-9ef6-4691-a483-5ac932223ece",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/deployment-vdi-microsoft-defender-antivirus",
- "services": [
- "AVD",
- "Defender"
- ],
- "severity": "High",
- "subcategory": "Host Configuration",
- "text": "Ensure anti-virus and anti-malware solutions are used",
- "waf": "Security"
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
+ "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
+ "service": "Azure Data Explorer",
+ "services": [],
+ "subcategory": "DR Configuration",
+ "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Disks in Azure are already encrypted at rest by default with Microsoft managed keys. Host VM OS disk encryption is possible and supported using Azure Disk Encryption (ADE - BitLocker) and Disk Encryption Set (DES - Server Side Encryption), the latter is recommended. Encryption of FSLogix storage using Azure Files can be done using SSE on Azure Storage. For OneDrive encryption, see this article: https://docs.microsoft.com/compliance/assurance/assurance-encryption-for-microsoft-365-services.",
- "guid": "0fd32907-98bc-4178-adc5-a06ca7144351",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disk-encryption-overview",
+ "category": "BC and DR",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
+ "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
+ "service": "Azure Data Explorer",
"services": [
"Storage",
- "VM",
- "AVD",
- "AKV"
- ],
- "severity": "Low",
- "subcategory": "Host Configuration",
- "text": "Assess disk encryption requirements for AVD Session Hosts",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Trusted launch are Gen2 Azure VMs with enhanced security features aimed to protect against bottom of the stack threats through attack vectors such as rootkits, boot kits, and kernel-level malware. Recommended to enable and leverage Secure Boot, Virtual TPM (vTPM) and Integrity Monitoring.",
- "guid": "36a5a67f-bb9e-4d5b-9547-8c4479816b28",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#azure-virtual-desktop-support-for-trusted-launch",
- "services": [
- "VM",
- "Monitor",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Host Configuration",
- "text": "Enable Trusted launch in Azure Gen2 VM Session Hosts",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Trusted Launch and Gen2 VM are not only security and performance enhancing features but also system requirements for Windows 11. When building an AVD environment based on Windows 11, it is essential to enable these features.",
- "guid": "135d3899-4b31-44d3-bc8f-028871a359d8",
- "link": "https://learn.microsoft.com/windows/whats-new/windows-11-requirements",
- "services": [
- "VM",
- "AVD"
+ "Cost",
+ "ASR",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Host Configuration",
- "text": "Enable Trusted Launch and use Gen2 image are system requirements for Windows 11",
- "waf": "Security"
+ "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",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Displayed content will be automatically blocked or hidden in screenshots. Keep in mind screen sharing will also be blocked when using Teams or other collaboration software which use screen sharing.",
- "guid": "a49dc137-7896-4343-b2bc-1a31bf1d30b6",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/screen-capture-protection",
+ "category": "Operations Management",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
+ "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
"services": [
- "AVD"
+ "AzurePolicy"
],
- "severity": "Low",
- "subcategory": "Host Configuration",
- "text": "Consider enabling screen capture protection to prevent sensitive information from being captured",
- "waf": "Security"
+ "subcategory": "IaC",
+ "text": "Wrap DevOps and source control around all your code",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If not absolutely required, redirecting drives, printers, and USB devices to a user's local device in a remote desktop session should be disabled or highly restricted. Restrict Windows Explorer access by hiding local and remote drive mappings is also a secure measure to adopt preventing users from discovering unwanted information about system configuration and users.",
- "guid": "7ce2cd20-85b4-4f82-828e-6558736ede6a",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#other-security-tips-for-session-hosts",
- "services": [
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Host Configuration",
- "text": "Restrict device redirection and drive mapping",
- "waf": "Security"
+ "category": "Operations Management",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
+ "services": [],
+ "subcategory": "IaC",
+ "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "waf": "Reliability"
},
{
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "When choosing a deployment model, you can either provide remote users access to entire virtual desktops or only select applications. Remote applications, or RemoteApps, provide a seamless experience as the user works with apps on their virtual desktop. RemoteApps reduce risk by only letting the user work with a subset of the remote machine exposed by the application.",
- "guid": "4e25d70e-3924-44f4-b66f-d6cdd4f4a973",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/web-protection-overview",
- "services": [
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "When possible, prefer Remote Apps over Full Desktops (DAG)",
- "waf": "Security"
+ "category": "Operations Management",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
+ "services": [],
+ "subcategory": "IaC",
+ "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Reliability"
},
{
- "category": "Security",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "Web content filtering feature provided by Web Protection capability in Microsoft Defender for Endpoint, can be used to to control user web navigation. If this tool is used, configuration of web filtering for user Internet browsing is recommended. Access by the Guest OS system to required AVD control plane URLs must be guaranteed.",
- "guid": "e19dd344-29eb-4722-a237-a151c5bb4e4f",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/web-protection-overview",
+ "description": "AVD control plane does not offer a financially backed service level agreement. We strive to attain at least 99.9% availability for the Azure Virtual Desktop service URLs. The availability of the session host virtual machines in your subscription is covered by the Virtual Machines SLA. Dependent resources/services and infrastructure availability must be also considered to properly satisfy global high-availability requirements.",
+ "guid": "56c57ba5-9119-4bf8-b8f5-c586c7d9cdc1",
+ "link": "https://azure.microsoft.com/support/legal/sla/virtual-desktop/v1_0/",
"services": [
+ "VM",
+ "ASR",
"AVD",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Need to control/restrict user Internet navigation from AVD session hosts?",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "We recommend you don't grant your users admin access to virtual desktops. If you need software packages, we recommend you make them available through configuration management utilities.",
- "guid": "a0cdb3b5-4eb2-4eb0-9dda-a3592718e2ed",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/security-guide",
- "services": [
- "AVD"
+ "Subscriptions"
],
"severity": "High",
- "subcategory": "Management",
- "text": "Ensure AVD users will not have local administrator privileges on AVD Hosts",
- "waf": "Security"
+ "subcategory": "Compute",
+ "text": "Determine the expected High Availability SLA for applications/desktops published through AVD",
+ "waf": "Reliability"
},
{
- "category": "Security",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "We recommend you enable Defender for Cloud for the subscriptions, virtual machines, key vaults, and storage accounts used by AVD. With this tool is possible to assess and manage vulnerabilities, assess compliance with common frameworks like PCI, strengthen the overall security of your AVD environment and measure it over time using 'Secure Score': https://learn.microsoft.com/azure/virtual-desktop/security-guide#improve-your-secure-score.",
- "guid": "1814387e-5ca9-4c26-a9b3-2ab5bdfc6998",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#enable-microsoft-defender-for-cloud",
+ "description": "'Active-Active' model can be achieved with multiple host pools in different regions. A single Host Pool with VMs from different regions is not recommended. If multiple pools for same users will be used, the problem of how to synchronize/replicate user profiles must be solved. FSLogix Cloud Cache could be used, but need to be carefully reviewed and planned, or customers can decide to do not synchronize/replicate at all. 'Active-Passive' can be achieved using Azure Site Recovery (ASR) or on-demand Pool deployment with automated mechanism. For a detailed discussion on multi-region BCDR, please read the companion article in the 'More Info' column and this FSLogix related page: https://learn.microsoft.com/fslogix/concepts-container-recovery-business-continuity.",
+ "guid": "6acc076e-f9b1-441a-a989-579e76b897e7",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr",
"services": [
- "AKV",
- "Subscriptions",
- "Defender",
- "Storage",
"VM",
+ "Storage",
+ "ASR",
"AVD"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Enable Microsoft Defender for Cloud to manage AVD Session Hosts security posture",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Enabling audit log collection lets you view user and admin activity related to Azure Virtual Desktop and store in a central repository like Log Analytics workspace. ",
- "guid": "a0916a76-4980-4ad0-b278-ee293c1bc352",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#collect-audit-logs",
- "services": [
- "Monitor",
- "AVD",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Enable diagnostic and audit logging",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Assign the least privilege required by defining administrative, operations, and engineering roles to Azure RBAC roles. To limit access to high privilege roles within your Azure Virtual Desktop landing zone, consider integration with Azure Privileged Identity Management (PIM). Maintaining knowledge of which team is responsible for each particular administrative area helps you determine Azure role-based access control (RBAC) roles and configuration.",
- "guid": "baaab757-1849-4ab8-893d-c9fc9d1bb73b",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/rbac",
- "services": [
- "RBAC",
- "AVD",
- "Entra"
- ],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Assess the requirement to use custom RBAC roles for AVD management",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "AVD users should not have permission to install application. If required, Windows Defender Application Control (WDAC) can be used to control which drivers and applications are allowed to run on their Windows clients. ",
- "guid": "b9ea80c8-0628-49fc-ae63-125aa4c0a284",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#windows-defender-application-control",
- "services": [
- "AVD",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Restrict users from installing un-authorized applications",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Enabling MFA and CA lets you manage risks before you grant users access to your AVD environment. When deciding which users to grant access to, we recommend you also consider who the user is, how they sign in, and which device they're using. Additional details and configuration procedures are provided in the companion article. Microsoft Entra ID is the new name for Azure Active Directory (Azure AD).",
- "guid": "916d697d-8ead-4ed2-9bdd-186f1ac252b9",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-mfa",
- "services": [
- "AVD",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Microsoft Entra ID",
- "text": "Evaluate the usage of Multi-Factor Authentication (MFA) and Conditional Access (CA) for AVD users",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If Zero Trust is a requirement, review the companion article in the 'More Info' column. It provides steps to apply the principles of Zero Trust to an Azure Virtual Desktop deployment.",
- "guid": "221102d0-90af-49fc-b2b7-8d3fe397e43",
- "link": "https://learn.microsoft.com/security/zero-trust/azure-infrastructure-avd",
- "services": [
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Zero Trust",
- "text": "Review and Apply Zero Trust principles and guidance",
- "waf": "Security"
+ "subcategory": "Compute",
+ "text": "Assess Geo Disaster Recovery requirements for AVD Host Pools",
+ "waf": "Reliability"
},
{
- "category": "Storage",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "If used, make sure to check the list of best practices and recommendations described in the referenced article.",
- "guid": "9164e990-9ae2-48c8-9c33-b6b7808bafe6",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/fslogix-containers-azure-files#best-practices-for-azure-virtual-desktop",
+ "description": "Before approaching Azure Virtual Desktop BCDR planning and design, it is important to initially consider which applications consumed through AVD are critical. You may want to separate them from non-critical apps and use a separate Host Pool with a different disaster recovery approach and capabilities.",
+ "guid": "10a7da7b-e996-46e1-9d3c-4ada97cc3d13",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
"services": [
- "Storage",
+ "ASR",
"AVD"
],
- "severity": "Medium",
- "subcategory": "Azure Files",
- "text": "Check best-practices for Azure Files",
- "waf": "Performance"
+ "severity": "Low",
+ "subcategory": "Compute",
+ "text": "Separate critical applications in different AVD Host Pools",
+ "waf": "Reliability"
},
{
- "category": "Storage",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "SMB Multichannel enables clients to use multiple network connections that provide increased performance while lowering the cost of ownership. Increased performance is achieved through bandwidth aggregation over multiple NICs and utilizing Receive Side Scaling (RSS) support for NICs to distribute the IO load across multiple CPUs.",
- "guid": "5784b6ca-5e9e-4bcf-8b54-c95459ea7369",
- "link": "https://learn.microsoft.com/azure/storage/files/storage-files-smb-multichannel-performance",
+ "description": "Each Host Pool can be deployed using Availability Zones (AZ) or Availability Set (AS). To maximize resiliency, usage of AZ is recommended: at Host Pool creation time you can decide to spread Host Pool Session Hosts across all available AZ. Usage of AS will not protect from single datacenter failure, then should be used only in regions where AZ are not available. More details on AZ and AVD in the companion article. For a comparison between AZ and AS you can read here: https://learn.microsoft.com/azure/virtual-machines/availability.",
+ "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": [
- "Storage",
- "Cost",
+ "ASR",
"AVD",
"ACR"
],
- "severity": "Low",
- "subcategory": "Azure Files",
- "text": "Enable SMB multichannel when using a premium file share to host FSLogix profile containers.",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "If a second region is required for DR purposes verify NetApp availability in there as well.",
- "guid": "4a359836-ee79-4d6c-9d3a-364a5b7abae3",
- "link": "https://azure.microsoft.com/global-infrastructure/services/",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Azure NetApp Files",
- "text": "If NetApp Files storage is required, check storage service availability in your specific region.",
+ "severity": "High",
+ "subcategory": "Compute",
+ "text": "Plan the best resiliency option for AVD Host Pool deployment",
"waf": "Reliability"
},
{
- "category": "Storage",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "CA option is a recommended setting in the FSLogix scenario, as it enables a more resilient SMB session between the Session Host and NetApp Files.",
- "guid": "a2661898-866a-4c8d-9d1f-8cfc86e88024",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/create-fslogix-profile-container",
+ "description": "Azure Backup can be used to protect Host Pool VMs. For Pooled Pools, this is not necessary since should be stateless. Instead, this option can be considered for Personal Host Pools.",
+ "guid": "4c61fc3f-c14e-4ea6-b69e-8d9a3eec218e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
"services": [
- "Storage",
- "AVD"
+ "Backup",
+ "VM",
+ "AVD",
+ "ASR"
],
"severity": "Medium",
- "subcategory": "Azure NetApp Files",
- "text": "If NetApp Files storage is used enable CA (Continuous Availability) option to increase resiliency",
+ "subcategory": "Compute",
+ "text": "Assess the requirement to backup AVD Session Host VMs",
"waf": "Reliability"
},
{
- "category": "Storage",
+ "category": "Business Continuity and Disaster Recovery",
"checklist": "Azure Virtual Desktop Review",
- "description": "An Active Directory Site should be created for the Azure virtual network environment where Azure NetApp Files (ANF) subnet will be created, and that site name should be specified in the ANF connection property when executing the join procedure as explained in the reference article.",
- "guid": "6647e977-db49-48a8-bc35-743f17499d42",
- "link": "https://docs.microsoft.com/azure/azure-netapp-files/create-active-directory-connections",
+ "description": "Even for Personal Pools, usage of Availability Zones, when available, is recommended. Three possible in-region DR strategies are possible, it is recommended to select the best one based on cost, RTO/RPO, and if it is really necessary to save the entire VM OS disk: (1) create each session host in a specific zone (AZ) and then use Azure Site Recovery (ASR) to replicate to a different zone. (2) Use Azure Backup to backup and restore the specific session host in a different AZ. (3) Create a new session host in a different AZ and rely on FSLogix and/or OneDrive to make data and settings available on the new machine. All options require administrator intervention for DR and direct user assignment at Host Pool level, then must be planned and configured in advance.",
+ "guid": "5da58639-ca3a-4961-890b-29663c5e10d",
+ "link": "https://learn.microsoft.com/azure/site-recovery/azure-to-azure-how-to-enable-zone-to-zone-disaster-recovery",
"services": [
- "Storage",
- "VNet",
- "AVD"
+ "Backup",
+ "VM",
+ "ASR",
+ "AVD",
+ "Cost"
],
- "severity": "High",
- "subcategory": "Azure NetApp Files",
- "text": "If Azure NetApp Files storage is used, check Active Directory Site name setting in the Active Directory Connection configuration",
+ "severity": "Medium",
+ "subcategory": "Compute",
+ "text": "Prepare a local DR strategy for Personal Host Pool Session Hosts",
"waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Possible options: Standard HDD, Standard SSD, or Premium SSD. Ephemeral disks are not supported, Ultra-Disks not recommended. Recommended to evaluate Premium for OS disk if user density is not low, and if Cloud Cache will be used. ",
- "guid": "3611c818-b0a0-4bc5-80e4-3a18a9cd289c",
- "link": "https://docs.microsoft.com/azure/virtual-machines/disks-types",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "Capacity Planning",
- "text": "Determine which type of managed disk will be used for the Session Hosts",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Possible options are: Azure NetApp Files, Azure Files, VM based File Server. File-server it is not recommended. Azure Files Premium typically a good starting point. NetApp usually required for large scale / high-performant environment. For a detailed comparison see the article in the 'More Info' column.",
- "guid": "ed6b17db-8255-4462-b2ae-e4553afc8339",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/store-fslogix-profile",
- "services": [
- "Storage",
- "VM",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Determine which storage backend solution will be used for FSLogix Profiles",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Every Host Pool should use a separate set of storage accounts/volumes (at least one) and shares. Users should have a different profile for each Host Pool since settings and configurations are specific to each Host Pool. Additionally, accessing different Host Pools at the same time can cause errors on the shared user profile VHD/X. Usage of different storage accounts/volumes for multiple shares is also recommended to scale independently.",
- "guid": "2fad62bd-5004-453c-ace4-64d862e7f5a4",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/store-fslogix-profile",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Do not share storage and profiles between different Host Pools",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "As a starting point for estimating profile container storage performance requirements we recommend to assume 10 IOPS per user in the steady state and 50 IOPS per user during sign-in/sign-out. Space requirements is simply obtained based on the maximum profiles size in FSLogix per the total number of users for each Host Pool. Multiple storage accounts can be used for the same Host Pool if required.",
- "guid": "680e7828-9c93-4665-9d02-bff4564b0d93",
- "link": "https://learn.microsoft.com/azure/virtual-desktop/faq#what-s-the-largest-profile-size-fslogix-can-handle-",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "Verify storage scalability limits and Host Pool requirements",
- "waf": "Reliability"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Avoid introducing additional latency and costs associated with cross-region network traffic where possible.",
- "guid": "8aad53cc-79e2-4e86-9673-57c549675c5e",
- "link": "https://docs.microsoft.com/azure/virtual-desktop/fslogix-containers-azure-files",
- "services": [
- "Storage",
- "Cost",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "For optimal performance, the storage solution and the FSLogix profile container should be in the same Azure region.",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "The recommendation in Azure Virtual Desktop is to use Profile Container without Office Container (ODFC) split unless you are planning for specific Business Continuity and Disaster Recovery (BCDR) scenarios as described in the Disaster Recovery section below. https://docs.microsoft.com/fslogix/profile-container-office-container-cncpt ",
- "guid": "df47d2d9-2881-4b1c-b5d1-e54a29759e39",
- "link": "https://learn.microsoft.com/fslogix/concepts-container-types#when-to-use-profile-and-odfc-containers",
- "services": [
- "Storage",
- "ASR",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "FSLogix",
- "text": "Do not use Office Containers (ODFC) if not strictly required and justified",
- "waf": "Reliability"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Make sure to configure the following antivirus exclusions for FSLogix Profile Container virtual hard drives, as documented in the referenced article in the 'More Info' column.",
- "guid": "83f63047-22ee-479d-9b5c-3632054b69ba",
- "link": "https://learn.microsoft.com/fslogix/overview-prerequisites#configure-antivirus-file-and-folder-exclusions",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "FSLogix",
- "text": "Configure the recommended antivirus exclusions for FSLogix (includes not scanning VHD(x) files on connect).",
- "waf": "Security"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Profile containers have a default max size of 30GB. If large Profile Containers are anticipated, and customers wants to try to keep them small, consider using OneDrive to host Office 365 files outside the FSLogix profile.",
- "guid": "01e6a84d-e5df-443d-8992-481718d5d1e5",
- "link": "https://docs.microsoft.com/fslogix/profile-container-configuration-reference",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "FSLogix",
- "text": "Review and confirm configured maximum profile size in FSLogix",
- "waf": "Cost"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Defaults and recommended settings are reported in the companion article in the 'More Info' column. If not recommended keys and/or values must be used, be sure to review with a Microsoft AVD expert and clearly document your choices.",
- "guid": "d34aad5e-8c78-4e1d-9666-7313c405674c",
- "link": "https://learn.microsoft.com/fslogix/concepts-configuration-examples",
- "services": [
- "Storage",
- "AKV",
- "AVD",
- "ACR"
- ],
- "severity": "High",
- "subcategory": "FSLogix",
- "text": "Review FSLogix registry keys and determine which ones to apply",
- "waf": "Reliability"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Concurrent or multiple connections are not recommended in Azure Virtual Desktop. Concurrent connections are also not supported by Session Hosts running in an Azure Virtual Desktop Host Pool. OneDrive, if used, doesn't support concurrent or multiple connections using the same container, under any circumstance. For multiple connections, usage of the same profile disk is not recommended.",
- "guid": "5e985b85-9c77-43e7-b261-623b775a917e",
- "link": "https://learn.microsoft.com/fslogix/concepts-multi-concurrent-connections",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "High",
- "subcategory": "FSLogix",
- "text": "Avoid usage of concurrent or multiple connections",
- "waf": "Reliability"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "Cloud Cache uses OS drive as local cache storage and may generate lot of pressure on the VM disk. Depending on the VM SKU and size used, the VM temporary drive can be a viable and performant solution where to relocate Cloud Cache cached content. Before adopting this solution, tests should be executed to confirm performance and stability. More details on Cloud Cache can be found here: https://learn.microsoft.com/fslogix/concepts-fslogix-cloud-cache. ",
- "guid": "b2d1215a-e114-4ba3-9df5-85ecdcd9bd3b",
- "link": "https://docs.microsoft.com/fslogix/cloud-cache-configuration-reference",
- "services": [
- "Storage",
- "VM",
- "AVD"
- ],
- "severity": "Low",
- "subcategory": "FSLogix",
- "text": "If FSLogix Cloud Cache is used, consider moving the cache directory to the VM temporary drive.",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Virtual Desktop Review",
- "description": "REDIRECTION.XML file is used to control what folders are redirected out of the profile container to the 'C:' drive. Exclusions should be the exception and should never be used unless the specific exclusion is completely understood by the person configuring the exclusion. Exclusions should always be fully tested in the environment where they are intended to be implemented. Configuring exclusions may impact functionality, stability and performance.",
- "guid": "0b50ca97-b1d2-473c-b4d9-6e98b0f912de",
- "link": "https://docs.microsoft.com/fslogix/manage-profile-content-cncpt#redirectionsxml",
- "services": [
- "Storage",
- "AVD"
- ],
- "severity": "Medium",
- "subcategory": "FSLogix",
- "text": "Review the usage of FSLogix redirection.",
- "waf": "Cost"
- },
- {
- "category": "Operations Management",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
- "service": "PostgreSQL",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
- "service": "PostgreSQL",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Best Practices",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "31b67c67-be59-4519-8083-845d587cb391",
- "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
- "service": "PostgreSQL",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage cross-region read replicas for BCDR",
- "waf": "Reliability"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
- "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
- "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
- "service": "ACR",
- "services": [
- "ACR"
- ],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Disable Azure Container Registry image export",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
- "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
- "service": "ACR",
- "services": [
- "ACR",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Enable Azure Policies for Azure Container Registry",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
- "guid": "d345293c-7639-4637-a551-c5c04e401955",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
- "service": "ACR",
- "services": [
- "AKV",
- "ACR"
- ],
- "severity": "High",
- "subcategory": "Data Protection",
- "text": "Sign and Verify containers with notation (Notary v2)",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
- "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
- "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
- "service": "ACR",
- "services": [
- "AKV",
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Encrypt registry with a customer managed key",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
- "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "services": [
- "RBAC",
- "ACR",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Use Managed Identities to connect instead of Service Principals",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
- "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "services": [
- "RBAC",
- "ACR",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Disable local authentication for management plane access",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
- "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
- "service": "ACR",
- "services": [
- "RBAC",
- "ACR",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable anonymous pull/push access",
- "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
- "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
- "service": "ACR",
- "services": [
- "ACR",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Control",
- "text": "Disable Anonymous pull access",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
- "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
- "service": "ACR",
- "services": [
- "ACR",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Disable repository-scoped access tokens",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
- "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
- "service": "ACR",
- "services": [
- "EventHubs",
- "ACR",
- "Entra",
- "PrivateLink"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Control",
- "text": "Deploy images from a trusted environment",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
- "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
- "service": "ACR",
- "services": [
- "ACR",
- "Entra",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Control",
- "text": "Disable Azure ARM audience tokens for authentication",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
- "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
- "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
- "service": "ACR",
- "services": [
- "Monitor",
- "ACR",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Logging and Monitoring",
- "text": "Enable diagnostics logging",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
- "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
- "service": "ACR",
- "services": [
- "Firewall",
- "VNet",
- "ACR",
- "PrivateLink"
- ],
- "severity": "Medium",
- "subcategory": "Network Security",
- "text": "Control inbound network access with Private Link",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable public network access if inbound network access is secured using Private Link",
- "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
- "service": "ACR",
- "services": [
- "ACR",
- "PrivateLink"
- ],
- "severity": "Medium",
- "subcategory": "Network Security",
- "text": "Disable Public Network access",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only the ACR Premium SKU supports Private Link access",
- "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
- "service": "ACR",
- "services": [
- "ACR",
- "PrivateLink"
- ],
- "severity": "Medium",
- "subcategory": "Network Security",
- "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
- "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
- "service": "ACR",
- "services": [
- "ACR",
- "Defender"
- ],
- "severity": "Low",
- "subcategory": "Network Security",
- "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
- "service": "ACR",
- "services": [
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "Vulnerability Management",
- "text": "Deploy validated container images",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
- "service": "ACR",
- "services": [
- "ACR"
- ],
- "severity": "High",
- "subcategory": "Vulnerability Management",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Low",
- "subcategory": "Data Protection",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "TrafficManager",
- "AzurePolicy",
- "Entra",
- "RBAC"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "AKV",
- "Storage",
- "Entra",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "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": [
- "EventHubs",
- "RBAC",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "Monitor",
- "VNet"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Enable logging for security investigation. Use Azure Monitor to captured metrics and logs such as resource logs, runtime audit logs and Kafka logs",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "VNet",
- "PrivateLink"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Event Hub Review",
- "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Leverage FTA Resillency HandBook",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "ACR"
- ],
- "severity": "High",
- "subcategory": "Zone Redudancy",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Best Practices",
- "text": "Use the Premium or Dedicated SKUs for predicable performance",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "Geo Redudancy",
- "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "ASR"
- ],
- "severity": "Medium",
- "subcategory": "Geo Redudancy",
- "text": "For Business Critical Applications, use Active Active configuration",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
- "services": [
- "EventHubs"
- ],
- "severity": "Medium",
- "subcategory": "Reliability",
- "text": "Design Resilient Event Hubs",
- "waf": "Reliability"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "services": [
- "Monitor",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Azure Monitor - enforce data collection rules",
- "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "services": [
- "Backup",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Backup",
- "text": "check backup instances with the underlying datasource not found",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Delete/archive",
- "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "659d3958-fd77-4289-a835-556df2bfe456",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Delete/archive",
- "text": "Consider snooze and stop technique (snooze a service after x days, stop after 2x, delete/deallocate after 3x)",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "3b0d834a-3487-426d-b69c-6b5c2a26494b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "services": [
- "Storage",
- "Backup",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Delete/archive",
- "text": "Delete or archive unused resources (old backups, logs, storage accounts, etc...)",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "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": [
- "Storage",
- "Backup",
- "Cost",
- "ASR"
- ],
- "severity": "Medium",
- "subcategory": "Delete/archive",
- "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "services": [
- "Monitor",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Log Analytics retention for workspaces",
- "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 ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "services": [
- "Storage",
- "Cost",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Policy",
- "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "59bb91a3-ed90-4cae-8cc8-4c37b6b780cb",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Run orphaned resources workbook - delete or snooze ghost items",
- "text": "https://github.com/dolevshor/azure-orphan-resources",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-acm-create-budgets",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "9fe5c464-89d4-457a-a27c-3874d0102cac",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Shutdown/deallocate",
- "text": "Shutdown underutilized instances",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/understand/analyze-unexpected-charges",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "services": [
- "Storage",
- "VM",
- "Backup",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "stopped/deallocated VMs: check disks",
- "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "services": [
- "Storage",
- "Cost",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "storage accounts lifecycle policy",
- "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "Cost"
- },
- {
- "category": "Cleanup",
- "checklist": "Cost Optimization Checklist",
- "guid": "f2bfe456-3b0d-4834-a348-726de69c6b5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Tagging",
- "text": "Use specific tags for temporary items with 'delete by DATE' format - and automate monthly cleanup",
- "waf": "Cost"
- },
- {
- "category": "DB/App tuning",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a26494b-69ba-4d37-aad5-3cc78e1d7666",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "DB optimization",
- "text": "Plan for db optimization with the intent of downsizing the related services (and improve performance)",
- "waf": "Cost"
- },
- {
- "category": "DB/APP tuning",
- "checklist": "Cost Optimization Checklist",
- "guid": "7357c449-674b-45ed-a5a8-59c7733be2a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "App modernization",
- "text": "Modernizing the app towards a microservices architecture will have the effect of letting the app scale according to the single service and not the entire stack",
- "waf": "Cost"
- },
- {
- "category": "DB/APP tuning",
- "checklist": "Cost Optimization Checklist",
- "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": [
- "Storage",
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "DB optimization",
- "text": "optimizing the DB queries will increase performance and allow better right-sizing of storage and VMs",
- "waf": "Cost"
- },
- {
- "category": "DB/APP tuning",
- "checklist": "Cost Optimization Checklist",
- "guid": "bac75819-59bb-491a-9ed9-0cae2cc84c37",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Demand shaping",
- "text": "Using demand shaping on PaaS services will optimize costs and performances",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "b6b780cb-9fe5-4c46-989d-457a927c3874",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging",
- "services": [
- "Cost",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Advisor",
- "text": "Start from the Azure Advisor page suggestions.",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Advisor",
- "text": "Make sure advisor is configured for VM right sizing ",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "881a1bd5-d1e4-44a1-a659-d3958fd77289",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Consider implementing IaC scripts or devops pipelines to match the cost governance process",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "b835556d-f2bf-4e45-93b0-d834a348726d",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "services": [
- "Monitor",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Set up cost alerts for applications that have variable costs (ideally for all of them)",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "e69c6b5c-2a26-4494-a69b-ad37aad53cc7",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Use Azure Automation: Automate repetitive tasks can help you save time and resources, reducing costs in the process. ",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "8e1d7666-7357-4c44-a674-b5ed85a859c7",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Run orphaned resources workbook",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "733be2a1-a27b-4765-a91b-e1f388ef394c",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Baseline",
- "text": "Try and establish a baseline of monthly spending and an acceptable saving target against the baseline (new services will not be optimized at this stage)",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "2bd463cb-bac7-4581-a59b-b91a3ed90cae",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "services": [
- "Cost",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Baseline",
- "text": "Establish a cost optimization baseline by using a policy that tags every new resource as #NEW",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "2cc84c37-b6b7-480c-a9fe-5c46489d457a",
- "link": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management-config",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Baseline",
- "text": "Organize resources to maximize cost insights and accountability",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "927c3874-d010-42ca-a6aa-e01e6a84de5d",
- "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": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Budgets",
- "text": "Create budgets",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "e36d1d92-881a-41bd-9d1e-44a19659d395",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#identity-and-access-management-in-the-azure-landing-zone-accelerator",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Cost Analysis",
- "text": "In cost analysis - use daily granularity, grouped by service name to analyze the spending of the past 3 months and identify the top 3 spenders",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "8fd77289-b835-4556-bf2b-fe4563b0d834",
- "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Cost Analysis",
- "text": "Check daily for cost spikes and anomalies (ideally with automatic billing exports)",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "a348726d-e69c-46b5-a2a2-6494b69bad37",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Cost Analysis",
- "text": "Automate cost retrieval for deep analysis or integration",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "aad53cc7-8e1d-4766-9735-7c449674b5ed",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "services": [
- "Cost",
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "Free services",
- "text": "Take advantage of Azure free services: Azure offers a number of free services, such as DevOps, Azure Container Registry, and Azure Logic Apps, that can help you save costs on development and operations. ",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "96c96ad8-844c-4f3b-8b38-c886ba2c0214",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Tagging",
- "text": "Tag shared resources",
- "waf": "Cost"
- },
- {
- "category": "Process Administration",
- "checklist": "Cost Optimization Checklist",
- "guid": "99014a5d-3ce5-474d-acbd-9792a6bcca2b",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Tagging",
- "text": "Consider using tags to all services for cost allocation",
- "waf": "Cost"
- },
- {
- "category": "reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "4fea1dbf-3dd9-45d4-ac7c-891dcb1f7d57",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "automation",
- "text": "Consider Reservation automation to track and promptly react to changes",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "description": "check by searching the Meter Category Licenses in the Cost analysys",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "services": [
- "SQL",
- "VM",
- "Cost",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "check AHUB is applied to all Windows VMs, RHEL and SQL",
- "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "services": [
- "LoadBalancer",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Check Red Hat Licences if applicable",
- "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Saving plans will provide 17% on select app service plans",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Planning",
- "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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": [
- "VM",
- "Cost",
- "ARS"
- ],
- "severity": "Medium",
- "subcategory": "Reservations/savings plans",
- "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.",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "a785c6fe-96c9-46ad-a844-cf3b2b38c886",
- "link": "https://azure.microsoft.com/resources/achieving-compliant-data-residency-and-security-with-azure/",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Reservations/savings plans",
- "text": "Plan for Azure Savings Plans for all the workloads that are dynamic and need maximum flexibility",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "ba2c0214-9901-44a5-b3ce-574dccbd9792",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Reservations/savings plans",
- "text": "Plan for Azure Reservations for all the workloads that are less dynamic and won't change much",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Reserve storage",
- "text": "Only larger disks can be reserved => 1 TiB -",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Reserve VMs with normalized and rationalized sizes",
- "text": "After the right-sizing optimization",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "services": [
- "SQL",
- "Cost",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "SQL Database AHUB",
- "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",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "services": [
- "SQL",
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "SQL Database Reservations",
- "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "guid": "e13c1056-75c1-4e94-9b45-9837ff7ae7c6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#managed-identities",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Tracking",
- "text": "Make sure you Azure Reservations and Savings plans are close to 100% utilization or make the necessary changes to reach it.",
- "waf": "Cost"
- },
- {
- "category": "Reservations",
- "checklist": "Cost Optimization Checklist",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Tracking",
- "text": "Make sure that your reservations usage is close to 100%. If not, either enforce an allowed SKU policy or exchange the reservation",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Plan and enforce a On/Off policy for production services, where possible",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Plan and enforce a On-Demand policy with auto-shutdown for non-production services, where possible",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Autoscale",
- "text": "Consider using a VMSS to match demand rather than flat sizing",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "services": [
- "AKS",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Autoscale",
- "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "93665720-2bff-4456-9b0d-934a359c363e",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Autoscale",
- "text": "Right-size PaaS service according to average use and accomodate spikes with auto or manual scaling",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "7dd61623-a364-4a90-9eba-e38ead53cc7d",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Autoscale",
- "text": "Plan for demand shaping where applicable",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "e2e8aaab-3571-4549-ab91-53d89f89dc7b",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Autoscale",
- "text": "Consider implementing a service re-scaling logic within the application",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/savings-plan/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "services": [
- "Backup",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Backup",
- "text": "Move recovery points to vault-archive where applicable (Validate)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "services": [
- "LoadBalancer",
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Databricks",
- "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Functions - Reuse connections",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Functions - Cache data locally",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Functions - Keep your functions warm",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Functions",
- "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "df03a822-cd46-43cb-abc8-ac299ebc91a4",
- "link": "https://learn.microsoft.com/azure/sentinel/quickstart-onboard",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Evaluate your network topology against networking costs and where applicable reduce the egress and peering data",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "services": [
- "EventHubs",
- "Cost",
- "FrontDoor"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "services": [
- "Cost",
- "FrontDoor",
- "AppSvc"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "f843e52f-4722-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/azure-monitor/agents/diagnostics-extension-overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "PaaS",
- "text": "Consider using free tiers where applicable for all non-production environments",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "b9de39ac-0e7c-428d-a936-657202bff456",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Serverless",
- "text": "Using serverless patterns for spikes can help keeping costs down",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Consider archiving tiers for less used data",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Consider using standard SSD rather than Premium or Ultra where possible",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "services": [
- "Storage",
- "ASR",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "storage",
- "text": "Storage accounts: check hot tier and/or GRS necessary",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "services": [
- "EventHubs",
- "Monitor",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "services": [
- "Storage",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Export cost data to a storage account for additional data analysis.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "services": [
- "SQL",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Create multiple Apache Spark pool definitions of various sizes.",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "services": [
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "Synapse",
- "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "VM",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "VM",
- "text": "Right-sizing all VMs",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "VM",
- "text": "Swap VM sized with normalized and most recent sizes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "services": [
- "VM",
- "Monitor",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "VM",
- "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "category": "Right-sizing",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "services": [
- "VM",
- "Cost"
- ],
- "severity": "Medium",
- "subcategory": "VM",
- "text": "Containerizing an application can improve VM density and save money on scaling it",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Cost"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Development best practices",
- "text": "Implement an error handling policy at the global level",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Development best practices",
- "text": "Ensure all APIs policies include a element.",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
- "services": [
- "APIM",
- "ACR",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Development best practices",
- "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Monetization",
- "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
- "services": [
- "APIM",
- "Monitor"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
- "services": [
- "APIM",
- "Monitor"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Enable Application Insights for more detailed telemetry",
- "waf": "Operations"
- },
- {
- "category": "Governance",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "services": [
- "APIM",
- "Monitor"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Configure alerts on the most critical metrics",
- "waf": "Operations"
- },
- {
- "category": "Identity and Access Management",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
- "services": [
- "AKV",
- "APIM",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Data protection",
- "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Security"
- },
- {
- "category": "Identity and Access Management",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Protect incoming requests to APIs (data plane) with Azure AD",
- "waf": "Security"
- },
- {
- "category": "Identity and Access Management",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity",
- "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
- "waf": "Security"
- },
- {
- "category": "Identity and Access Management",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Privileged access",
- "text": "Create appropriate groups to control the visibility of the products",
- "waf": "Security"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "Use Backends feature to eliminate redundant API backend configurations",
- "waf": "Operations"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "Use Named Values to store common values that can be used in policies",
- "waf": "Operations"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
- "services": [
- "APIM",
- "ASR",
- "ACR"
- ],
- "severity": "Medium",
- "subcategory": "Business continuity and disaster recovery",
- "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "services": [
- "APIM",
- "ASR"
- ],
- "severity": "Medium",
- "subcategory": "Business continuity and disaster recovery",
- "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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": [
- "Backup",
- "APIM",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "Business continuity and disaster recovery",
- "text": "Ensure there is an automated backup routine",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Failover and Caching",
- "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "f96ddac5-77ec-4fa9-8833-4327f052059e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-cache-external",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Performance and scalability",
- "text": "Consider using a external cache policy for APIs that can benefit from caching",
- "training": "https://learn.microsoft.com/training/modules/improve-api-performance-with-apim-caching-policy/"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "services": [
- "EventHubs",
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Low",
- "subcategory": "Performance and scalability",
- "text": "If you need to log at high performance levels, consider Event Hubs policy",
- "waf": "Operations"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Performance and scalability",
- "text": "Apply throttling policies to control the number of requests per second",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "Performance"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Performance and scalability",
- "text": "Configure autoscaling to scale out the number of instances when the load increases",
- "waf": "Performance"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Performance and scalability",
- "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
- "waf": "Performance"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Premium Tier",
- "text": "Use the premium tier for production workloads.",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
- "services": [
- "APIM",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Request Routing",
- "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Resource Limits",
- "text": "Be aware of APIM's limits",
- "waf": "Reliability"
- },
- {
- "category": "Management",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "High",
- "subcategory": "Self-Hosted",
- "text": "Ensure that the self-hosted gateway deployments are resilient.",
- "waf": "Reliability"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
- "services": [
- "APIM",
- "FrontDoor",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Connectivity",
- "text": "Use Azure Front Door in front of APIM for multi-region deployment",
- "waf": "Performance"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "services": [
- "APIM",
- "VNet"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Deploy the service within a Virtual Network (VNet)",
- "waf": "Security"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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": [
- "APIM",
- "Monitor",
- "Entra",
- "VNet"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
- "waf": "Security"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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": [
- "APIM",
- "PrivateLink",
- "Entra",
- "VNet"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
- "waf": "Security"
- },
- {
- "category": "Network Topology and Connectivity",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "High",
- "subcategory": "Security",
- "text": "Disable Public Network Access",
- "waf": "Security"
- },
- {
- "category": "Platform automation and DevOps",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "Automation",
- "text": "Simplify management with PowerShell automation scripts",
- "waf": "Operations"
- },
- {
- "category": "Platform automation and DevOps",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
- "waf": "Operations"
- },
- {
- "category": "Platform automation and DevOps",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
- "waf": "Operations"
- },
- {
- "category": "Platform automation and DevOps",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "DevOps",
- "text": "Implement DevOps and CI/CD in your workflow",
- "waf": "Operations"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "APIs",
- "text": "Secure APIs using client certificate authentication",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "APIs",
- "text": "Secure backend services using client certificate authentication",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "APIs",
- "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "Medium",
- "subcategory": "APIs",
- "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "services": [
- "APIM"
- ],
- "severity": "High",
- "subcategory": "Ciphers",
- "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
- "services": [
- "AKV",
- "APIM"
- ],
- "severity": "High",
- "subcategory": "Data protection",
- "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
- "services": [
- "APIM",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identities",
- "text": "Use managed identities to authenticate to other Azure resources whenever possible",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
- "APIM",
- "AppGW",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Network",
- "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
- "waf": "Security"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "When you are creating a SQL Server on Azure VM, carefully consider the type of workload necessary. If you are migrating an existing environment, collect a performance baseline to determine your SQL Server on Azure VM requirements. If this is a new VM, then create your new SQL Server VM based on your vendor requirements.",
- "guid": "1fc3fc14-eea6-4e69-b8d9-a3eec218e687",
- "link": "https://learn.microsoft.com/sql/dma/dma-sku-recommend-sql-db?view=sql-server-ver16",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "VM Size",
- "text": "Collect the target workload's performance characteristics and use them to determine the appropriate VM size for your business.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "The memory optimized virtual machine sizes are a primary target for SQL Server VMs and the recommended choice by Microsoft. The memory optimized virtual machines offer stronger memory-to-CPU ratios and medium-to-large cache options.Consider Ebdsv5-series series first for most SQL Server workloads.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "VM Size",
- "text": "Use memory optimized virtual machine sizes for the best performance of SQL Server workloads.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "To find the most effective configuration for SQL Server workloads on an Azure VM, start by measuring the storage performance of your business application. Once storage requirements are known, select a virtual machine that supports the necessary IOPS and throughput with the appropriate memory-to-vCore ratio.",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Determine storage bandwidth and latency requirements for SQL Server data, log, and tempdb files before choosing the disk type.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "This provides more dedicated disk IOPS and throughput on the disk level and also allows you to configure the Azure disk host caching setting for each disk to the optimal setting for that data type.",
- "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": [
- "SQL",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Place data, log, and tempdb files on separate drives",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Premium SSD is always recommend as a minimum for SQL Server in order to obtain better performance and lower latency. P30 and P40 are recommended because disk caching is not supported for disks 4 TiB and larger ( P50 and above) and they provide the optimal price to performance ratio",
- "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": [
- "SQL",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "For the data drive, use premium P30 and P40 or smaller disks to ensure the availability of cache support",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Log files have primarily write-heavy operations. Therefore, they do not benefit from the ReadOnly cache. Hence evaluate your price vs performance vs capacity and chose the right storage disk.",
- "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": [
- "SQL",
- "Cost",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "For the log drive plan for capacity and test performance versus cost while evaluating the premium P30 - P80 disks",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Placing TempDB on the D drive can help performance. Consider the size required and always test performance.",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Place tempdb on the local ephemeral SSD (default D:\\) drive for most SQL Server workloads that are not part of Failover Cluster Instance (FCI) after choosing the optimal VM size.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Striping Data and Log disk can increase bandwidth. Ensure that VM size also matches expected output",
- "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"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Stripe multiple Azure data disks using Storage Spaces to increase I/O bandwidth",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Your storage caching policy varies depending on the type of SQL Server data files that are hosted on the drive.Enable Read-only caching for the disks hosting SQL Server data files.Reads from cache will be faster than the uncached reads from the data disk.Set the caching policy to None for disks hosting the transaction log. There is no performance benefit to enabling caching for the Transaction log disk.",
- "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",
- "Storage",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Set host caching to read-only for data file disks and none for log file disks.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Check that you storage is in the same region as your VM. For exaplme if your VM is in EAST US 2 ensure your storage is in East US 2.",
- "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"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Provision the storage account in the same region as the SQL Server VM",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "SQL Server uses extents to store data. These are 64KB in size. Therefore, on a SQL Server machine, the NTFS allocation unit size for hosting SQL database files should be 64 KB.",
- "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": [
- "SQL",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Format your data disk to use 64 KB block size (allocation unit size) for all data files placed on a drive other than the temporary D:\\ drive",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "It is recommended that you determine BCDR needs and requirements ensuring that you are able to meet you SLAs of the environment.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "HADR",
- "text": "Determine HA/DR requirements for each VM to be migrated.",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "When depoying High Availability you need to use availability sets or availability zones to avoid unexpected outages.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "HADR",
- "text": "Place your VMs in an availability set or different availability zones.",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Prefered option when deploying an Availability Group. The recommended solution is to use multi-subnets when deploying Always on Availability Groups.",
- "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": [
- "SQL",
- "VM",
- "VNet",
- "LoadBalancer"
- ],
- "severity": "Medium",
- "subcategory": "HADR",
- "text": "Deploy your SQL Server VMs to multiple subnets whenever possible to avoid the dependency on an Azure Load Balancer or a distributed network name (DNN) to route traffic to your HADR solution. ( If one is implementing FCI or AG)",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "High availability and disaster recovery (HADR) features, such as the Always On availability group and the failover cluster instance rely on underlying Windows Server Failover Cluster technology. Review the best practices for modifying your HADR settings to better support the cloud environment.",
- "guid": "2d027fe4-12f7-4098-9f63-04722ee69d6b",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql-vm#hadr-configuration",
- "services": [
- "SQL",
- "ASR"
- ],
- "severity": "High",
- "subcategory": "HADR",
- "text": "Change the cluster to less aggressive parameters to avoid unexpected outages from transient network failures or Azure platform maintenance. ( If one is implementing FCI or AG)",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Ensure that quorum is set correct for the number of instances deployed.",
- "guid": "5c2622f5-4b69-4bad-94aa-d5e8c78e1d76",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/hadr-cluster-best-practices?view=azuresql-vm&tabs=windows2012#quorum-voting",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "HADR",
- "text": "Configure cluster quorum voting to use 3 or more odd number of votes. Don't assign votes to DR regions. ( If one is implementing FCI or AG)",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "On Azure virtual machines, clusters use a load balancer to hold an IP address that needs to be on one cluster node at a time. In this solution, the load balancer holds the IP address for the virtual network name (VNN) listener for the Always On availability group when the SQL Server VMs are in a single subnet.",
- "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": [
- "SQL",
- "VM",
- "VNet",
- "LoadBalancer"
- ],
- "severity": "High",
- "subcategory": "HADR",
- "text": "When using the virtual network name (VNN) and Azure Load Balancer to connect to your HADR solution, specify MultiSubnetFailover = true in the connection string, even if your cluster only spans one subnet. ( If one is implementing FCI or AG)",
- "waf": "Reliability"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "SQL Server, Azure SQL Database, and Azure SQL Managed Instance support row and page compression for rowstore tables and indexes, and support columnstore and columnstore archival compression for columnstore tables and indexes.",
- "guid": "61623b77-5a91-47e1-b348-ef354c27d42e",
- "link": "https://learn.microsoft.com/sql/relational-databases/data-compression/data-compression?view=sql-server-ver16",
- "services": [
- "SQL",
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "SQL Server",
- "text": "Enable database page compression where appropriate.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "By default, data and log files are initialized to overwrite any existing data left on the disk from previously deleted files. Data and log files are first initialized by zeroing the files (filling with zeros).In SQL Server, for data files only, instant file initialization (IFI) allows for faster execution of the previously mentioned file operations, since it reclaims used disk space without filling that space with zeros. Instead, disk content is overwritten as new data is written to the files.",
- "guid": "8bbac868-155a-4bb9-863e-9908ae28c84c",
- "link": "https://learn.microsoft.com/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-ver16",
- "services": [
- "SQL",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "SQL Server",
- "text": "Enable instant file initialization for data files.",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Recommended for best performance and availability migrate all databases to data and log disks",
- "guid": "33b6b780-8b9f-4e5c-9204-9d413a923c34",
- "link": "https://learn.microsoft.com/sql/relational-databases/databases/move-database-files?view=sql-server-ver16",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "SQL Server",
- "text": "Move all databases to data disks, including system databases.",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "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"
- ],
- "severity": "Low",
- "subcategory": "SQL Server",
- "text": "Move SQL Server error log and trace file directories to data disks.",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "guid": "d68c5b5c-2925-4394-a69a-9d2799c42bb6",
- "link": "https://learn.microsoft.com/sql/database-engine/configure-windows/server-memory-server-configuration-options#use-",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "SQL Server",
- "text": "Set max SQL Server memory limit to leave enough memory for the Operating System.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "SQL Server",
- "text": "Enable lock pages in memory.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "guid": "633ad2a0-916a-4664-a8fa-d0e278ee293c",
- "link": "https://learn.microsoft.com/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "Low",
- "subcategory": "SQL Server",
- "text": "Enable Query Store on all production SQL Server databases following best practices.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "guid": "1bc352ba-aab7-4571-a49a-b8093dc9ec9d",
- "link": "https://learn.microsoft.com/sql/relational-databases/databases/tempdb-database#optimizing-tempdb-performance-in-sql-server",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "SQL Server",
- "text": "Ensure that all tempdb best practices are followed.",
- "waf": "Performance"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "guid": "1bb73b36-a5a6-47fb-a9ed-5b35478c3479",
- "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "SQL Server",
- "text": "Schedule SQL Server Agent jobs to run DBCC CHECKDB, index reorganize, index rebuild, and update statistics jobs.",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Part of the SQL Server Feature checklist in the link that is recommended when SQL Server Instance is in an Azure VM.",
- "guid": "816b2863-cffe-41ca-a599-ef0d5a73dd4c",
- "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "SQL Server",
- "text": "Limit autogrowth of the database and Disable autoshrink",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Constrained vCPU virtual machines (VMs) are a type of VM where the vCPU count can be constrained to a half or a quarter of the original VM size. This allows customers to reduce the cost of software licensing while maintaining the same memory, storage, and I/O bandwidth",
- "guid": "e36c1c81-770a-4fbc-9c0d-43918648d285",
- "link": "https://learn.microsoft.com/azure/virtual-machines/constrained-vcpu",
- "services": [
- "SQL",
- "VM",
- "Cost",
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Cost Optimization",
- "text": "Optimize SQL Server License cost with Constrained vCPU VM's",
- "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
- "waf": "Cost"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Azure Hybrid Benefit allows you to exchange your existing licenses for discounted rates on Azure SQL Database and Azure SQL Managed Instance. Y",
- "guid": "7ed67178-b824-4546-ae1a-ee3453aec823",
- "link": "https://azure.microsoft.com/en-ca/pricing/hybrid-benefit/",
- "services": [
- "SQL",
- "Cost"
- ],
- "severity": "Low",
- "subcategory": "Cost Optimization",
- "text": "Leverage Azure Hybrid benefit to maximize the value of your on premises licenses in the cloud",
- "waf": "Cost"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "The SQL Server IaaS Agent extension (SqlIaasExtension) runs on SQL Server on Azure Windows Virtual Machines (VMs) to automate management and administration tasks.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Azure",
- "text": "Register with the SQL IaaS Agent Extension to unlock a number of feature benefits.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Accelerated Networking provides consistent ultra-low network latency via Azure's in-house programmable hardware and technologies",
- "guid": "99c42bb6-8d1d-4755-9624-6b438563b4dc",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "services": [
- "SQL",
- "VM"
- ],
- "severity": "High",
- "subcategory": "Azure",
- "text": "Ensure Accelerated Networking is enabled on the virtual machine.",
- "waf": "Operations"
- },
- {
- "category": "SQL Server on Azure VM",
- "checklist": "SQL Migration Review",
- "description": "Microsoft Defender detects anomalous activities indicating unusual and potentially harmful attempts to access or exploit databases on the SQL server.",
- "guid": "74a748b6-633a-4d2a-8916-a66498fad0e2",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/secure-score-security-controls",
- "services": [
- "SQL",
- "VM",
- "Defender"
- ],
- "severity": "High",
- "subcategory": "Azure",
- "text": "Leverage Microsoft Defender for Cloud to improve the overall security posture of your virtual machine deployment.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "There are some PaaS limitations that are introduced in SQL Managed Instance and some behavior changes compared to SQL Server. It is important to review and understand these differences.",
- "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": [
- "SQL",
- "EventHubs"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Review the major differences between SQL Server and Managed Instance",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "SQL Managed Instance has characteristics and resource limits that depend on the underlying infrastructure and architecture. It is important to review these limits.",
- "guid": "3dc9ec9d-1bb7-43b3-9a5a-67fba9ed5b35",
- "link": "https://docs.microsoft.com/azure/azure-sql/managed-instance/resource-limits",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Review capacity limits for SQL MI",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Performance"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "The instance settings between managed instance and your source SQL Server can be different . It is important to review those differences that can impact performance.",
- "guid": "8bc178bd-c5a0-46ca-9144-351e19dd3442",
- "link": "https://medium.com/azure-sqldb-managed-instance/compare-environment-settings-on-sql-server-and-azure-sql-that-may-impact-performance-e90c21fa9b08",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Compare instance settings on SQL Server and Azure SQL MI that may impact performance",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Performance"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Assess on-premises SQL Server instance(s) migrating to Azure SQL Managed Instance. The assessment workflow helps you to detect issues that block the migration itself and also partially supported and unsupported features",
- "guid": "9eb72281-37a1-451c-9bb4-e4f1814287d5",
- "link": "https://docs.microsoft.com/azure/dms/ads-sku-recommend",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Run Data Migration assistant or Azure Data Studio Migration Extension to detect compatibility issues that can impact database functionality on Managed Instance",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "The SKU recommendation feature can evaluate the source SQL Server performance and utilization characteristics to recommend a right-sized Azure SQL Managed Instance to assist with your migration journey.",
- "guid": "ca8c26c9-b32a-4b5b-afc6-898a135e3378",
- "link": "https://learn.microsoft.com/azure/dms/ads-sku-recommend",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Select the right compute resources for your workload by leveraging the SKU recommendation tools.",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Performance"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Review Unsupported Features, Migration Blockers and Breaking Changes for each database from the Assessment",
- "guid": "97e31c67-d68c-4b69-82ac-19f906d697c8",
- "link": "https://learn.microsoft.com/azure/dms/ads-sku-recommend",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Review and address the issues highlighted in DMA/Azure Data Studio",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "The SQL Managed Instance default DNS zone .database.windows.net can be changed with your own. However, the managed instance hostname part of its FQDN should remain the same.",
- "guid": "eaded26b-dd18-46f0-ac25-1b999a68af87",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/frequently-asked-questions-faq?view=azuresql-mi#can-a-managed-instance-have-the-same-name-as-a-sql-server-on-premises-instance",
- "services": [
- "SQL",
- "DNS"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Plan for connection string changes as changing a managed instance name is not supported",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "There are addional requirements in configuring a vnet and subnet hosting the managed instance.",
- "guid": "c9a7f821-b8eb-48c0-aa77-e25e4d5aeaa8",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-existing-add-subnet?view=azuresql-mi",
- "services": [
- "SQL",
- "VNet"
- ],
- "severity": "Medium",
- "subcategory": "Pre Migration",
- "text": "Review managed instance VNet requirements",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Though it's possible to deploy managed instances to a subnet with a number of IP addresses that's less than the output of the subnet formula, always consider using bigger subnets instead. Using a bigger subnet can help avoid future issues stemming from a lack of IP addresses, such as the inability to create additional instances within the subnet or scale existing instances.",
- "guid": "dc4e2436-bb33-46d7-85f1-7960eee0b9b5",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-subnet-determine-size?view=azuresql-mi",
- "services": [
- "SQL",
- "VNet"
- ],
- "severity": "High",
- "subcategory": "Deployment",
- "text": "Ensure managed instance subnet has sufficient IP addresses available",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "SQL Managed Instance has characteristics and resource limits that depend on the underlying infrastructure and architecture. SQL Managed Instance can be deployed on multiple hardware configurations.",
- "guid": "c8defc4d-721d-431d-850f-b707ae9eab40",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/resource-limits?view=azuresql-mi#service-tier-characteristics",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Plan between General Purpose and Business Critical tiers of MI",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Performance"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "The auto-failover groups feature allows you to manage the replication and failover of user databases in a managed instance to a managed instance in another Azure region. Auto-failover groups are designed to simplify deployment and management of geo-replicated databases at scale.",
- "guid": "ed329079-8bc1-478b-bc5a-06ca7144351e",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/auto-failover-group-sql-mi?view=azuresql-mi&tabs=azure-powershell",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Pre Migration",
- "text": "Based on your RPO/RTO's , determine if Auto failover Group needs to be implemented. If so, plan for the deployment attributes of the second instance.",
- "training": "https://learn.microsoft.com/learn/paths/implement-windows-server-iaas-virtual-machine-identity/",
- "waf": "Reliability"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "There are multiple ways to connect your application to the managed instance. Review and understand the pros and cons and decide on the best approach for your application.",
- "guid": "5d226886-d30b-466c-97be-595190f83845",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connect-application-instance?view=azuresql-mi",
- "services": [
- "SQL"
- ],
- "severity": "Low",
- "subcategory": "Pre Migration",
- "text": "Review the Connectivity Design between Database and Application, test & validate it",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Compare migration options to choose the path that's appropriate to your business needs.",
- "guid": "c586cb29-1ec1-46a1-b076-ef9f141acdce",
- "link": "https://learn.microsoft.com/azure/azure-sql/migration-guides/managed-instance/sql-server-to-managed-instance-overview?view=azuresql-mi#migration-tools",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Pre Migration",
- "text": "Plan for the Migration Method. Depending on the DB Size and Application downtime window, select the preferred Migration Method.",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "After you verify that data is the same on both source and target, you can cut over from the source to the target environment. It's important to plan the cutover process with business / application teams to ensure minimal interruption during cutover doesn't affect business continuity.",
- "guid": "579377bc-db37-451a-a2ac-1fad66e15d4d",
- "link": "https://learn.microsoft.com/azure/dms/tutorial-sql-server-managed-instance-online#performing-migration-cutover",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Pre Migration",
- "text": "Plan the cutover process with business / application teams to ensure minimal interruption during cutover and it does not affect business continuity.",
- "training": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain",
- "waf": "Reliability"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "A time zone of a managed instance can be set during instance creation only. The default time zone is UTC",
- "guid": "4a2adb1c-3d23-426a-b225-ca44e1695fdd",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/timezones-overview?view=azuresql#set-a-time-zone",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Deployment",
- "text": "Ensure you customize your time zone setting at the instance creation time. One cannot change it later.",
- "training": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Server-level collation in Azure SQL Managed Instance can be specified when the instance is created and cannot be changed later.Default server-level collation is SQL_Latin1_General_CP1_CI_AS.",
- "guid": "deace4cb-1deb-44c6-90c3-fc14eebb3693",
- "link": "https://learn.microsoft.com/sql/relational-databases/collations/set-or-change-the-server-collation?view=sql-server-ver16",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Deployment",
- "text": "Ensure you select the right collation setting at the instance creation time. One cannot change it later",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "When you're migrating a database protected by Transparent Data Encryption (TDE) to Azure SQL Managed Instance using the native restore option, the corresponding certificate from the SQL Server instance needs to be migrated before database restore.",
- "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": [
- "SQL",
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Deployment",
- "text": "For TDE Enabled Database, corresponding certificate from the on-premises or Azure VM SQL Server needs to be migrated before database restore",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "System databases can be restored only from backups that are created on the version of SQL Server that the server instance is currently running. This is not the case when you are migrating to SQL Managed Instance.Azure PowerShell and DBATools PowerShell libraries enable you to easily script and automate and customize all parts of the migration process.",
- "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": [
- "SQL",
- "Backup"
- ],
- "severity": "Low",
- "subcategory": "Migration",
- "text": "Restore of system databases is not supported. To migrate instance-level objects (stored in master or msdb databases), we recommend to script them out and run T-SQL scripts on the destination instance.",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "When using migration options that continuously replicate / sync data changes from source to the target, the source data and schema can change and drift from the target. During data sync, ensure that all changes on the source are captured and applied to the target during the migration process.",
- "guid": "e3d3e084-3276-4d4b-bc01-5bcf219e4a1e",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Migration",
- "text": "Ensure that all changes on the source are captured and applied to the target during the migration process.",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Ensure that the application is able to succesffuly connect to the managed instance post migration of the databases.",
- "guid": "b5887952-5d22-4688-9d30-b66c57be5951",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connect-application-instance?view=azuresql-mi",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Migration",
- "text": "Test Application Connectivity to MI and Databases",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "High availability is a fundamental part of SQL Managed Instance platform that works transparently for your database applications. Failovers from primary to secondary nodes in case of node degradation or fault detection, or during regular monthly software updates are an expected occurrence for all applications using SQL Managed Instance in Azure.",
- "guid": "90f83845-c586-4cb2-a1ec-16a1d076ef9f",
- "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/user-initiated-failover?view=azuresql",
- "services": [
- "SQL"
- ],
- "severity": "High",
- "subcategory": "Post Migration",
- "text": "Consider executing a manual failover on SQL Managed Instance to test for fault and failover resiliency.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Reliability"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Ensuring that your applications are failover resilient prior to deploying to production will help mitigate the risk of application faults in production and will contribute to application availability for your customers.",
- "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"
- ],
- "severity": "High",
- "subcategory": "Post Migration",
- "text": "If failover groups have been implemented, Test Manual Failover and Failback and test application connectivity behavior during failover/failback",
- "waf": "Reliability"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "This provides more dedicated disk IOPS and throughput",
- "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": [
- "SQL",
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Post Migration",
- "text": "Optimize Storage Performance for General Purpose Managed Instance",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Performance"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "Many organizations have policies that require that certificates or encryption keys be created and managed internally. If your organization has a similar policy, this architecture might apply to you. If your customers require internal management of these items, the architecture also might apply to you.",
- "guid": "35ad9422-23e1-4381-8523-081a94174158",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/data/sql-managed-instance-cmk",
- "services": [
- "SQL",
- "AKV",
- "Backup",
- "AzurePolicy"
- ],
- "severity": "Low",
- "subcategory": "Post Migration",
- "text": "Enable Customer managed TDE for taking your own copy only full backups",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Security"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "The maintenance window feature provides you with the ability to onboard Azure SQL resource to prescheduled time blocks outside of business hours.",
- "guid": "33ef7ad7-c6d3-4733-865c-7acbe44bbe60",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/planned-maintenance?view=azuresql",
- "services": [
- "SQL"
- ],
- "severity": "Medium",
- "subcategory": "Post Migration",
- "text": "Plan for Azure maintenance events",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "By using the long-term retention (LTR) feature, you can store specified SQL Database and SQL Managed Instance full backups in Azure Blob storage with configured redundancy for up to 10 years.",
- "guid": "9d89f2e8-7778-4424-b516-785c6fa96b96",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/long-term-retention-overview?view=azuresql-mi",
- "services": [
- "SQL",
- "Backup",
- "ARS",
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "Post Migration",
- "text": "Configure Long Term backup retention, view backups and restore from backups",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Reliability"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "By using Azure Hybrid Benefit, you can achieve cost savings, modernise and maintain a flexible hybrid environment while optimising business applications.",
- "guid": "ad88408f-3727-434c-a76b-a28021459014",
- "link": "https://azure.microsoft.com/en-gb/pricing/hybrid-benefit/#overview",
- "services": [
- "SQL",
- "Cost"
- ],
- "severity": "Low",
- "subcategory": "Post Migration",
- "text": "Take advantage of Azure Hybrid Benefit and Azure Reservations where applicable.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Cost"
- },
- {
- "category": "SQL Managed Instance",
- "checklist": "SQL Migration Review",
- "description": "If you don't have threat protection Advanced Threat Protection is part of the Microsoft Defender for SQL offering, which is a unified package for advanced SQL security capabilities.",
- "guid": "65d38e53-f9cc-4bd8-9926-6acca274faa1",
- "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-overview?view=azuresql",
- "services": [
- "SQL",
- "Defender"
- ],
- "severity": "Medium",
- "subcategory": "Post Migration",
- "text": "Leverage Microsoft Defender for Cloud to improve the overall security posture",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "cb7da8cf-aa62-4a15-a495-6da97dc3a242",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-plan-capacity-vmware",
- "services": [],
- "severity": "High",
- "subcategory": "Replication",
- "text": "Capacity planning is required to make sure you have sufficient bandwidth for replication and an estimated number of CPU cores & disk types that will be needed in Azure for failover",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "67b23587-05a1-4652-aded-fa8a488cdec4",
- "link": "https://learn.microsoft.com/azure/site-recovery/azure-to-azure-how-to-enable-policy",
- "services": [
- "VM",
- "ASR",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Replication",
- "text": "Use Azure Policy to ensure that all critical Azure VMs are protected with ASR",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "862bc3bc-14be-4b7f-96e8-d9b3bec228e7",
- "link": "https://learn.microsoft.com/azure/site-recovery/recovery-plan-overview",
- "services": [
- "VM"
- ],
- "severity": "Medium",
- "subcategory": "Replication",
- "text": "Define recovery plans to automate the failover sequence for VMs. You can also include automation scripts to reduce manual steps and improve recovery time",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "437b1736-db55-4f67-a613-334bd09dc234",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-how-to-manage?tabs=recovery-services-vault",
- "services": [],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enable and LOCK immutability for vaults. This ensures recovery points cannot be deleted before their intended expiry",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "19db6128-1265-404b-a47a-493a08042729",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
- "services": [],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enable 'Always-on soft delete' for vaults protecting critical workloads",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Recovery Services Vault Checklist",
- "guid": "4798b158-8b31-4aa5-9ceb-54445135a227",
- "link": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-storage-redundancy",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Redudancy",
- "text": "When creating Recovery Service Vaults choose the best storage redundancy option for your requirements. Vaults support local, geo and zone redundancy but this setting cannot be changed once the vault is protecting one or more resources",
- "waf": "Reliability"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": " Overview",
- "text": "Consider the 'Azure security baseline for storage'",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "PrivateLink"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Consider using private endpoints for Azure Storage",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Subscriptions",
- "RBAC"
- ],
- "severity": "Medium",
- "subcategory": "Governance",
- "text": "Ensure older storage accounts are not using 'classic deployment model'",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Defender"
- ],
- "severity": "High",
- "subcategory": "Governance",
- "text": "Enable Microsoft Defender for all of your storage accounts",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Data Availability",
- "text": "Enable 'soft delete' for blobs",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Confidentiality",
- "text": "Disable 'soft delete' for blobs",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Data Availability",
- "text": "Enable 'soft delete' for containers",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Confidentiality",
- "text": "Disable 'soft delete' for containers",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Data Availability",
- "text": "Enable resource locks on storage accounts",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Subscriptions",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Data Availability, Compliance",
- "text": "Consider immutable blobs",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Require HTTPS, i.e. disable port 80 on the storage account",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "AAD tokens should be favored over shared access signatures, wherever possible",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "RBAC",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Least privilege in IaM permissions",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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": [
- "Storage",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AKV",
- "Monitor",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AKV",
- "Monitor",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AKV",
- "Entra",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "When using storage account keys, consider enabling a 'key expiration policy'",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Consider configuring an SAS expiration policy",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AKV",
- "Entra",
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Consider linking SAS to a stored access policy",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AKV"
- ],
- "severity": "Medium",
- "subcategory": "CI/CD",
- "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Strive for short validity periods for ad-hoc SAS",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Apply a narrow scope to a SAS",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "Consider scoping SAS to a specific client IP address, wherever possible",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "Low",
- "subcategory": "Identity and Access Management",
- "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "RBAC",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "Entra"
- ],
- "severity": "Medium",
- "subcategory": "Identity and Access Management",
- "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "services": [
- "Storage",
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Avoid overly broad CORS policies",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Confidentiality and Encryption",
- "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Confidentiality and Encryption",
- "text": "Determine which/if platform encryption should be used.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Confidentiality and Encryption",
- "text": "Determine which/if client-side encryption should be used.",
- "waf": "Security"
- },
- {
- "category": "Security",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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": [
- "Storage",
- "Entra"
- ],
- "severity": "High",
- "subcategory": "Identity and Access Management",
- "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
- "waf": "Security"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Storage Review Checklist",
- "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Platform Version",
- "text": "Leverage a storagev2 account type for better performance and reliability",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "High",
- "subcategory": "Availablity",
- "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Azure Storage Review Checklist",
- "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Failover",
- "text": "For write operation after failover, use customer-Managed Failover ",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Storage Review Checklist",
- "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Failover",
- "text": "Understand Microsoft-Managed Failover details",
- "waf": "Reliability"
- },
- {
- "category": "Operations Management",
- "checklist": "Azure Storage Review Checklist",
- "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
- "service": "Azure Storage",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Data Protection",
- "text": "Enable Soft Delete",
- "waf": "Reliability"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "Define a resource group structure for placement of Azure Arc-enabled servers resources",
- "guid": "585e1112-9bd7-4ba0-82f7-b94ef6e043d2",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Capacity Planning",
- "text": "One or more resource groups is required for onboarding servers into Azure",
- "waf": "Operations"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "guid": "aa359271-8e6e-4205-8725-769e46691e88",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits",
- "services": [
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Capacity Planning",
- "text": "Take Azure Active Directory object limitations into account",
- "waf": "Performance"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "The following resource providers needs to be registered: Microsoft.HybridCompute, Microsoft.GuestConfiguration, Microsoft.HybridConnectivity",
- "guid": "deace4bb-1deb-44c6-9fc3-fc14eeaa3692",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-resource-providers",
- "services": [
- "Subscriptions",
- "Arc"
- ],
- "severity": "High",
- "subcategory": "General",
- "text": "Has the Resource providers required been registered in all subscriptions",
- "waf": "Operations"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "Aligning with an existing or creating an Azure tagging strategy is recommended. Resource tags allow you to quickly locate it, automate operational tasks amd more. ",
- "guid": "c6d37331-65c7-4acb-b44b-be609d79f2e8",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/decision-guides/resource-tagging/",
- "services": [
- "Arc"
- ],
- "severity": "Low",
- "subcategory": "General",
- "text": "Has a tagging strategy for Azure Arc-enabled servers been defined",
- "waf": "Cost"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "Installation of the connected machine agent is supported on most newer Windows and Linux operative systems, review the link to se the latest list",
- "guid": "7778424c-5167-475c-9fa9-5b96ad88408e",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#supported-operating-systems",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "General",
- "text": "What operating systems need to be Azure Arc-enabled",
- "waf": "Operations"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "There are software requirements to the agent installation. Some might require a system reboot after installation, review to link",
- "guid": "372734b8-76ba-428f-8145-901365d38e53",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#software-requirements",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "General",
- "text": "Are required software installed on Windows and Linux servers to support the installation",
- "waf": "Operations"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "guid": "d44c7c89-19ca-41f6-b521-5ae514ba34d4",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/?products=azure-arc®ions=all",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "General",
- "text": "Make sure to use a supported Azure region",
- "waf": "Reliability"
- },
- {
- "category": "Foundation",
- "checklist": "Azure Arc Review",
- "description": "The scope include organization into management groups, subscriptions, and resource groups.",
- "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"
- ],
- "severity": "Low",
- "subcategory": "Organization",
- "text": "Define the structure for Azure management of resources",
- "waf": "Performance"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "Define RBAC rules to the servers / resource groups as required for servers management, the 'Azure Connected Machine Resource Administrator' or 'Hybrid Server Resource Administrator' role would be sufficient for management of the Azure Arc-enabled servers resources in Azure",
- "guid": "9bf39d95-d44c-47c8-a19c-a1f6d5215ae5",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#identity-and-access-control",
- "services": [
- "RBAC",
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Access",
- "text": "Assign RBAC rights to Azure AD user/group access for managing Azure Arc-enabled servers",
- "waf": "Security"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "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",
- "Entra",
- "Arc"
- ],
- "severity": "Low",
- "subcategory": "Access",
- "text": "Consider using managed identities for applications to access Azure resources like Key Vault example in link",
- "waf": "Security"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "An Azure subscription must be parented to the same Azure AD tenant",
- "guid": "35ac9322-23e1-4380-8523-081a94174158",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits",
- "services": [
- "Subscriptions",
- "Entra",
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Requirements",
- "text": "An Azure Active Directory tenant must be available with at least one subscription",
- "waf": "Operations"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "Users (or SPs) need the 'Azure Connected Machine Onboarding' or 'Contributor' role to onboarding of servers",
- "guid": "33ee7ad6-c6d3-4733-865c-7acbe44bbe60",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions",
- "services": [
- "RBAC",
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Requirements",
- "text": "Define which users (AAD user/groups) has access to onboard Azure Arc-enabled servers",
- "waf": "Security"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "Ensure to only add the rights to users or groups that is required to perform their role",
- "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": [
- "RBAC",
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Use the principle of least privileged",
- "waf": "Security"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "A service principle with the 'Azure Connected Machine Onboarding' role is required for at-scale onboarding of servers, consider more SP's if onboarding is done by different teams/decentralized management",
- "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": [
- "RBAC",
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "How many Service Principals are needed for onboarding Arc-enabled servers into Azure",
- "waf": "Security"
- },
- {
- "category": "Identity",
- "checklist": "Azure Arc Review",
- "description": "Consider assigning the rights for the 'Azure Connected Machine Onboarding' role at the resource group level, to control the resource creation",
- "guid": "65d38e53-f9cc-4bd8-9826-6abca264f9a1",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions",
- "services": [
- "RBAC",
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Limit the rights to onboard Azure Arc-enabled servers to the desired resource groups",
- "waf": "Security"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Plan for agent deployments at scale",
- "guid": "6ee79d6b-5c2a-4364-a4b6-9bad38aad53c",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/plan-at-scale-deployment",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Define a strategy for agent provisioning",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Use Microsoft Update to ensure that the connected machine agent is always up-to-date",
- "guid": "c78e1d76-6673-457c-9496-74c5ed85b859",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-agent#upgrade-the-agent",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Management",
- "text": "Define a strategy for agent updates",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Recommendation is to use Azure Policy, or another automation tool like Azure DevOps - important is to avoid configuration drift.",
- "guid": "c7733be2-a1a2-47b7-95a9-1be1f388ff39",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions",
- "services": [
- "Monitor",
- "AzurePolicy",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Define a strategy for extension installation",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Use automatic upgrades where available and define an update strategy for all extensions not supporting automatic upgrades.",
- "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"
- ],
- "severity": "High",
- "subcategory": "Management",
- "text": "Define a strategy for extension updates",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Azure Automanage help implement Microsoft best-practices for servers management in Azure",
- "guid": "7a927c39-74d1-4102-aac6-aae01e6a84de",
- "link": "https://learn.microsoft.com/azure/automanage/automanage-arc",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Consider using Azure Automanage to control settings and avoid configuration drift on servers",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "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"
- ],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Monitor for unresponsive agents",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "guid": "74d1102c-ac6a-4ae0-8e6a-84de5df47d2d",
- "link": "https://learn.microsoft.com/azure/azure-monitor/agents/log-analytics-agent#data-collected",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Design a monitoring strategy to send metrics and logs to an Log Analytics workspace",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "guid": "92881b1c-d5d1-4e54-a296-59e3958fd782",
- "link": "https://learn.microsoft.com/azure/service-health/resource-health-alert-monitor-guide",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use notification in Activity logs to receive notification on unexpected changes to the resources",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "guid": "89c93555-6d02-4bfe-9564-b0d834a34872",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/learn/tutorial-enable-vm-insights",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Use Azure Monitor for compliance and operational monitoring",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "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"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Create an alert to identify Azure Arc-enabled servers that aren't using the latest version of the Azure connected machine agent",
- "waf": "Operations"
- },
- {
- "category": "Management and Monitoring",
- "checklist": "Azure Arc Review",
- "description": "Use Update Management in Azure Automation or the new Update Management Center (preview) functionality to ensure update management of servers",
- "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"
- ],
- "severity": "Low",
- "subcategory": "Security",
- "text": "Use Azure Arc-enabled servers to control software updates deployments to servers",
- "waf": "Operations"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "The Connected Machine Agent will by default communicate with Azure services over public Internet connectivity using HTTPS (TCP port 443)",
- "guid": "f6e043d2-aa35-4927-88e6-e2050725769e",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#details",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Define a connectivity method from the server to Azure",
- "waf": "Operations"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "The Connected Machine Agent can be configured to use a proxy server, it is recommended to define the proxy server address using 'azcmagent config set proxy.url' command on the local system.",
- "guid": "46691e88-35ac-4932-823e-13800523081a",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-agent#update-or-remove-proxy-settings",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Is a proxy server a required for communication over the Public Internet",
- "waf": "Operations"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "The Connected Machine Agent can use a Private Link for communication with Azure Services over an existing ExpressRoute or VPN connection",
- "guid": "94174158-33ee-47ad-9c6d-3733165c7acb",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/private-link-security",
- "services": [
- "PrivateLink",
- "ExpressRoute",
- "VPN",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Networking",
- "text": "Is a private (not public Internet) connection required?",
- "waf": "Operations"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "Firewall configuration might be required for the agent to communicate with Azure, use the link to see ServiceTags and/or URL's required",
- "guid": "e44bbe60-9d79-4f2e-a777-8424c516775c",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#service-tags",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Will Firewall configurations be needed in order to ensure communication with Azure Services?",
- "waf": "Security"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "Use available automation tool for the system in question to regularly update the Azure endpoints",
- "guid": "6fa95b96-ad88-4408-b372-734b876ba28f",
- "link": "https://www.microsoft.com/download/details.aspx?id=56519",
- "services": [
- "Arc"
- ],
- "severity": "Low",
- "subcategory": "Networking",
- "text": "Can the Firewall or Proxy rules be automated updated if Service Tags or IP addresses change",
- "waf": "Security"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "Configure Servers to use Transport Layer Security (TLS) version 1.2",
- "guid": "21459013-65d3-48e5-9f9c-cbd868266abc",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#transport-layer-security-12-protocol",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Networking",
- "text": "Always use secure communication for Azure where possible",
- "waf": "Security"
- },
- {
- "category": "Networking",
- "checklist": "Azure Arc Review",
- "description": "All extensions (like log analytics etc.) have separate network requirements, be sure to include all in the network design.",
- "guid": "a264f9a1-9bf3-49d9-9d44-c7c8919ca1f6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/hybrid/arc-enabled-servers/eslz-arc-servers-connectivity#define-extensions-connectivity-method",
- "services": [
- "Monitor",
- "PrivateLink",
- "Arc"
- ],
- "severity": "Low",
- "subcategory": "Networking",
- "text": "Include communication for Azure Arc-enabled Servers extensions in the design (firewall/proxy/private link)",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "ac6aae01-e6a8-44de-9df4-7d2d92881b1c",
- "link": "https://learn.microsoft.com/azure/governance/policy/",
- "services": [
- "AzurePolicy",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Use Azure Policy to implement a governance model for hybrid connected servers",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "5c2a3649-4b69-4bad-98aa-d53cc78e1d76",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Consider using Machine configurations for in guest OS configurations",
- "waf": "Operations"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "667357c4-4967-44c5-bd85-b859c7733be2",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/machine-configuration-create",
- "services": [
- "AzurePolicy",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Evaluate the need for custom Guest Configuration policies",
- "waf": "Operations"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "49674c5e-d85b-4859-a773-3be2a1a27b77",
- "link": "https://learn.microsoft.com/azure/automation/change-tracking/overview",
- "services": [
- "Monitor",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Consider using change tracking for tracking changes made on the servers",
- "waf": "Operations"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "d5d1e54a-2965-49e3-a58f-d78289c93555",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/data-residency",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Requirements",
- "text": "Make sure to use an Azure region for storing the metadata approved by the organization",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "195abb91-a4ed-490d-ae2c-c84c37b6b780",
- "link": "https://learn.microsoft.com/azure/key-vault/general/basic-concepts",
- "services": [
- "AKV",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Secrets",
- "text": "Use Azure Key Vault for certificate management on servers",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "description": "Consider using a short-lived Azure AD service principal client secrets.",
- "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": [
- "Storage",
- "AKV",
- "Entra",
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Secrets",
- "text": "What is the acceptable life time of the secret used by SP's",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "description": "A private key is saved to the disk, ensure this is protected using disk encryption",
- "guid": "a1a27b77-5a91-4be1-b388-ff394c2bd463",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#using-disk-encryption",
- "services": [
- "AKV",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Secrets",
- "text": "Secure the public key for Azure Arc-enabled Servers",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "description": "Local administrator is required to install the Connected Machine Agent on Windows and Linux systems",
- "guid": "29659e39-58fd-4782-a9c9-35556d02bfe4",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/onboard-portal#install-manually",
- "services": [
- "Arc"
- ],
- "severity": "High",
- "subcategory": "Security",
- "text": "Ensure there is local administrator access for executing the agent installation",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "description": "Members of the local administrator group on Windows and users with root privileges on Linux, have permissions to manage the agent via command line.",
- "guid": "564b0d83-4a34-4872-9ee7-9d6b5c2a3649",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#agent-security-and-permissions",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Limit the amount of users with local administrator rights to the servers",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "4b69bad3-8aad-453c-a78e-1d76667357c4",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication",
- "services": [
- "Entra",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Consider using and restricting access to managed identities for applications.",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "description": "Use Defender for Endpoint or another AV and EDR solution to protect endpoints",
- "guid": "5a91be1f-388f-4f39-9c2b-d463cbbbc868",
- "link": "https://learn.microsoft.com/azure/security-center/security-center-get-started",
- "services": [
- "Defender",
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Enable Defender for Servers for all servers to secure hybrid workloads from threats",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "cbafe6c4-6589-4d45-9a92-7c3974d1102c",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Define controls to detect security misconfigurations and track compliance",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "Azure Arc Review",
- "guid": "cbbbc868-195a-4bb9-8a4e-d90dae2cc84c",
- "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#extension-allowlists-and-blocklists",
- "services": [
- "Arc"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Use allow- or block-lists to control what extensions can be installed on the Azure Arc-enabled servers",
- "waf": "Security"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Implement branching policy in Azure DevOps",
- "guid": "eda1dae2-cc85-4c47-a6b7-81cca0e6c465",
- "link": "https://learn.microsoft.com/azure/devops/repos/git/branch-policies-overview?view=azure-devops",
- "services": [
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Branching Policy",
- "text": "Branch Policies",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Understand branch strategy such as GitFlow or GitHub Flow",
- "guid": "bc288bec-6a16-4ca7-8444-51e1add34529",
- "link": "https://learn.microsoft.com/azure/devops/repos/git/git-branching-guidance?view=azure-devops",
- "services": [
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Branching Policy",
- "text": "Branching strategy",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Understand how teams work with git",
- "guid": "ec723823-7a15-41c5-ab4e-401914387e5c",
- "link": "https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow",
- "services": [
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Branching Policy",
- "text": "Understand GitFlow Branch Strategy",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Merge into higher branches after two or more reviewers in a PR",
- "guid": "a9c26c9c-32ab-45bd-8c69-98a246e33899",
- "link": "https://learn.microsoft.com/azure/devops/repos/git/review-pull-requests?view=azure-devops&tabs=browser",
- "services": [
- "AzurePolicy"
- ],
- "severity": "High",
- "subcategory": "Branching Policy",
- "text": "Pull Request Review",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Implement access control to the branches",
- "guid": "7e41c77d-68cb-46a2-8ac1-9f916d697d8e",
- "link": "https://learn.microsoft.com/azure/devops/repos/git/branch-permissions?view=azure-devops",
- "services": [
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Branching Policy",
- "text": "Access Control to the Branch",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Perform SAST code scan",
- "guid": "adfd27bd-e187-401a-a252-baa9b68a088c",
- "link": "https://devblogs.microsoft.com/devops/integrate-security-into-your-developer-workflow-with-github-advanced-security-for-azure-devops/",
- "services": [],
- "severity": "High",
- "subcategory": "Security",
- "text": "Code Scan",
- "waf": "Security"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Understand TFVC as Code Repo",
- "guid": "9a8f822b-8eb9-4d1b-a77f-26e5e6beba8e",
- "link": "https://learn.microsoft.com/azure/devops/repos/tfvc/what-is-tfvc?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Practice",
- "text": "TFVC as Code Repository",
- "waf": "Operations"
- },
- {
- "category": "Version Control",
- "checklist": "Azure DevOps",
- "description": "Compare Git vs TFVC for your project",
- "guid": "d4f3437b-c336-4d71-9f27-a71eee0b9b5d",
- "link": "https://learn.microsoft.com/azure/devops/repos/tfvc/comparison-git-tfvc?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Practice",
- "text": "Choose Right version control",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Set up your team management",
- "guid": "8defd5d7-21d4-41d2-900c-807bf9eab40f",
- "link": "https://learn.microsoft.com/azure/devops/organizations/settings/manage-teams?view=azure-devops",
- "services": [],
- "severity": "High",
- "subcategory": "Team Planning",
- "text": "Configure your teams",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Start scheduling sprints",
- "guid": "9ed5b354-78d4-447a-a26c-2863c00f1cac",
- "link": "https://learn.microsoft.com/azure/devops/boards/sprints/define-sprints?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Team Planning",
- "text": "Configure your sprints",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Set up your work item heirarchy",
- "guid": "699ef1d5-a83d-4e5d-b36c-1c81870a0bc5",
- "link": "https://learn.microsoft.com/azure/devops/organizations/settings/work/customize-process-work-item-type?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Team Planning",
- "text": "Choose Work Item types",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "WIT Processes available in Azure DevOps",
- "guid": "c1e43a18-658d-4285-aed6-7179b825546d",
- "link": "https://learn.microsoft.com/azure/devops/boards/work-items/guidance/choose-process?view=azure-devops&tabs=agile-process",
- "services": [],
- "severity": "High",
- "subcategory": "Team Planning",
- "text": "Select a WIT Process",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Use Azure Boards with GitHub",
- "guid": "f2aee455-3afc-4833-a248-726dd68c5b5c",
- "link": "https://learn.microsoft.com/azure/devops/cross-service/github-integration?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Tool Integration",
- "text": "GitHub Integration",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Understand the methologies",
- "guid": "2925394b-69b9-4d37-aac4-3bc68d1d7665",
- "link": "https://www.atlassian.com/agile/scrum/agile-vs-scrum",
- "services": [],
- "severity": "Medium",
- "subcategory": "Process Planning",
- "text": "Understand Agile Vs Scrum",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Create Dashboard and PowerBI reports",
- "guid": "7246b448-564b-44dd-94a7-59c7633bd2a1",
- "link": "https://learn.microsoft.com/azure/devops/report/dashboards/overview?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Reporting",
- "text": "Dashboard",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Set up backlog",
- "guid": "a27a764a-90be-40e3-98ee-293c1bd363ca",
- "link": "https://learn.microsoft.com/azure/devops/boards/backlogs/set-up-your-backlog?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Reporting",
- "text": "Refine your backlog",
- "waf": "Operations"
- },
- {
- "category": "Azure Boards",
- "checklist": "Azure DevOps",
- "description": "Link your work items",
- "guid": "aab75719-49ab-4919-9dc9-fc9d1bb84b37",
- "link": "https://learn.microsoft.com/azure/devops/boards/queries/link-work-items-support-traceability?view=azure-devops&tabs=browser",
- "services": [],
- "severity": "Medium",
- "subcategory": "Reporting",
- "text": "Visualize Relationships",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "View the velocity report",
- "guid": "b5a67fcb-9ed5-4b35-978d-447a826c2863",
- "link": "https://learn.microsoft.com/azure/devops/report/dashboards/team-velocity?view=azure-devops&tabs=in-context",
- "services": [],
- "severity": "Low",
- "subcategory": "Reporting",
- "text": "Review Team Velocity",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Create your first pipeline",
- "guid": "c00f1cac-699e-4f1d-9a83-de5de36c1c81",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/create-first-pipeline?view=azure-devops&tabs=java%2Ctfs-2018-2%2Cbrowser",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Integration",
- "text": "Set up pipeline",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Specify events that trigger pipelines",
- "guid": "870a0bc5-c1e4-43a1-a658-d2858ed67179",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/build/triggers?view=azure-devops",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Integration",
- "text": "Set Build triggers",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Use YAML to create build pipeline",
- "guid": "b825546d-f2ae-4e45-93af-c8339248726d",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/customize-pipeline?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Continuous Integration",
- "text": "Customize YAML Pipeline",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Use classic GUI editor to set up pipeline",
- "guid": "d68c5b5c-2925-4394-a69b-9d379ac43bc6",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/get-started/pipelines-get-started?view=azure-devops&source=recommendations#define-pipelines-using-the-classic-interface",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Integration",
- "text": "Use GUI for pipeline",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set up templates, parameters and expressions",
- "guid": "8d1d7665-7246-4b44-a564-b4dd74a759c7",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/templates?view=azure-devops&pivots=templates-includes",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Integration",
- "text": "Configure Templates",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set up jobs, stages and dependencies",
- "guid": "633bd2a1-a27a-4764-a90b-e0e378ee293c",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/stages?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Integration",
- "text": "Jobs",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set up conditions and Demands",
- "guid": "1bd363ca-aab7-4571-a49a-b9193dc9fc9d",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml%2Cstages",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Integration",
- "text": "Conditions and Demands",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Define Variables",
- "guid": "1bb84b37-b5a6-47fc-a9ed-5b35478d447a",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Integration",
- "text": "Variables",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set up your deployment pipeline",
- "guid": "826c2863-c00f-41ca-a699-ef1d5a83de5d",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/create-multistage-pipeline?view=azure-devops",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Deployment",
- "text": "Deployment Pipeline",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Select correct branches to deploy from",
- "guid": "e36c1c81-870a-40bc-9c1e-43a18658d285",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/release/deploy-multiple-branches?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Deployment",
- "text": "Release branch",
- "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "use relevant template to deploy to azure",
- "guid": "8ed67179-b825-4546-bf2a-ee4553afc833",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/overview-azure?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Deployment",
- "text": "Deploy to Azure",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Define Release Approvals and pre deployment checks",
- "guid": "9248726d-d68c-45b5-a292-5394b69b9d37",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Deployment",
- "text": "Approvals and Checks",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Define Gates and post deployment checks",
- "guid": "9ac43bc6-8d1d-4766-9724-6b448564b4dd",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/release/approvals/?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Deployment",
- "text": "Gates",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Define Azure Function and REST API Checks",
- "guid": "74a759c7-633b-4d2a-8a27-a764a90be0e3",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/process/invoke-checks?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Continuous Deployment",
- "text": "Azure Function Checks",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Review pipeline reports",
- "guid": "78ee293c-1bd3-463c-aaab-7571949ab919",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/reports/pipelinereport?view=azure-devops",
- "services": [],
- "severity": "High",
- "subcategory": "Continuous Deployment",
- "text": "Pipline Reports",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "configure Trend Result widget",
- "guid": "3dc9fc9d-1bb8-44b3-9b5a-67fcb9ed5b35",
- "link": "https://learn.microsoft.com/azure/devops/report/dashboards/analytics-widgets?toc=%2Fazure%2Fdevops%2Fpipelines%2Ftoc.json&view=azure-devops#test-results-trend-advanced",
- "services": [],
- "severity": "Medium",
- "subcategory": "Analytics",
- "text": "Pipeline Result Trend",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Connect with WIT to visualize work",
- "guid": "478d447a-826c-4286-9c00-f1cac699ef1d",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/integrations/configure-pipelines-work-tracking?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "Medium",
- "subcategory": "Analytics",
- "text": "Work Tracking with Pipeline",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Understand agent pools",
- "guid": "5a83de5d-e36c-41c8-8870-a0bc5c1e43a1",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/agents/agents?view=azure-devops&tabs=yaml%2Cbrowser",
- "services": [],
- "severity": "Medium",
- "subcategory": "Continuous Deployment",
- "text": " Agents and agent pools",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Understand and provision Deployment Groups when required",
- "guid": "8658d285-8ed6-4717-ab82-5546df2aee45",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/release/deployment-groups/?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Continuous Deployment",
- "text": "Deployment Groups",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Understand Kubernetes Deployment",
- "guid": "53afc833-9248-4726-bd68-c5b5c2925394",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/ecosystems/kubernetes/deploy?view=azure-devops",
- "services": [
- "AKS"
- ],
- "severity": "Low",
- "subcategory": "Continuous Deployment",
- "text": "Deploy to Kubernetes",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Perform Dynamic Security Testing",
- "guid": "b69b9d37-9ac4-43bc-98d1-d76657246b44",
- "link": "https://devblogs.microsoft.com/premier-developer/azure-devops-pipelines-leveraging-owasp-zap-in-the-release-pipeline/",
- "services": [],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "DAST Scan",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Security"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Manage Service Connections",
- "guid": "8564b4dd-74a7-459c-9633-bd2a1a27a764",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Service Connections",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Security"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set data retention policies for CI and CD",
- "guid": "a90be0e3-78ee-4293-a1bd-363caaab7571",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/retention?view=azure-devops&tabs=yaml",
- "services": [
- "AzurePolicy"
- ],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Retention Policies",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
- "waf": "Security"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set up and pay for concurrent pipelines",
- "guid": "949ab919-3dc9-4fc9-b1bb-84b37b5a67fc",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/licensing/concurrent-jobs?view=azure-devops&tabs=ms-hosted",
- "services": [],
- "severity": "Low",
- "subcategory": "Administration",
- "text": "Parallel Pipelines",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Operations"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Set pipeline permissions",
- "guid": "b9ed5b35-478d-4447-a826-c2863c00f1ca",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/permissions?view=azure-devops",
- "services": [],
- "severity": "Medium",
- "subcategory": "Security",
- "text": "Pipeline Permissions",
- "training": "https://learn.microsoft.com/learn/paths/implement-windows-server-iaas-virtual-machine-identity/",
- "waf": "Security"
- },
- {
- "category": "Azure Pipelines",
- "checklist": "Azure DevOps",
- "description": "Add users to pipeline",
- "guid": "c699ef1d-5a83-4de5-be36-c1c81870a0bc",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/policies/set-permissions?view=azure-devops",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If custom images are used to deploy AVD Host Pool VMs, it is important to ensure those artifacts are available in all regions where AVD is deployed. Azure Compute Gallery service can be used to replicate images across all regions where a Host Pool is deployed, with redundant storage and in multiple copies. Please be aware that the Azure Compute Gallery service isn't a global resource. For disaster recovery scenarios, the best practice is to have at least two galleries, in different regions.",
+ "guid": "dd2e0d5d-771d-441e-9610-cc57b4a4a141",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/azure-compute-gallery",
+ "services": [
+ "Storage",
+ "VM",
+ "ASR",
+ "AVD",
+ "ACR"
+ ],
"severity": "Low",
- "subcategory": "Security",
- "text": "Pipeline Users",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Security"
+ "subcategory": "Dependencies",
+ "text": "Plan for Golden Image cross-region availability",
+ "waf": "Reliability"
},
{
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Configure Artifacts",
- "guid": "5c1e43a1-8658-4d28-98ed-67179b825546",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/artifacts-overview?view=azure-devops&tabs=nuget",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If users of the AVD infrastructure need on-premises resource access, high availability of network infrastructure required to connect is also critical and should be considered. Resiliency of authentication infrastructure needs to be assessed and evaluated. BCDR aspects for dependent applications and other resources need to be considered to ensure availability in the secondary DR location.",
+ "guid": "fd339489-8c12-488b-9c6a-57cfb644451e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "services": [
+ "ASR",
+ "AVD"
+ ],
"severity": "Medium",
- "subcategory": "Configuration",
- "text": "Artifact In Pipeline",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
- "waf": "Operations"
+ "subcategory": "Dependencies",
+ "text": "Assess Infrastructure & Application dependencies ",
+ "waf": "Reliability"
},
{
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Publish and consume artifact in pipeline",
- "guid": "df2aee45-53af-4c83-9924-8726dd68c5b5",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/pipeline-artifacts?view=azure-devops&tabs=yaml",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Not all data inside FSLogix user profiles may deserve protection from disaster. Additionally, if external storage is used, for example OneDrive or File Servers/Shares, what is remaining in the FSLogix profile is minimal and could be lost in some extreme circumstances. In other cases, data inside the profile can be rebuilt from other storages (for example Outlook Inbox in cached mode).",
+ "guid": "687ab077-adb5-49e5-a960-3334fdf8cc23",
+ "link": "https://docs.microsoft.com/fslogix/manage-profile-content-cncpt",
+ "services": [
+ "Storage",
+ "ASR",
+ "AVD"
+ ],
"severity": "Medium",
- "subcategory": "Configuration",
- "text": "Publish and download Artifact",
- "training": "https://learn.microsoft.com/azure/architecture/example-scenario/identity/adds-extend-domain",
- "waf": "Operations"
- },
- {
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Publish NuGet packages with artifacts",
- "guid": "c2925394-b69b-49d3-99ac-43bc68d1d766",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/nuget?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "Low",
- "subcategory": "Configuration",
- "text": "NuGet",
- "training": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "waf": "Operations"
+ "subcategory": "Storage",
+ "text": "Assess which data need to be protected in the Profile and Office Containers",
+ "waf": "Reliability"
},
{
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Publish Maven packages with artifacts",
- "guid": "57246b44-8564-4b4d-b74a-759c7633bd2a",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/publish-maven-artifacts?view=azure-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Configuration",
- "text": "Maven",
- "waf": "Operations"
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Preventing data loss for critical user data is important, first step is to assess which data need to be saved and protected. If using OneDrive or other external storage, saving user Profile and/or Office Containers data maybe not necessary. Appropriate mechanism must be considered to provide protection for critical user data. Azure Backup service can be used to protect Profile and Office Containers data when stored on Azure Files Standard and Premium tiers. Azure NetApp Files Snapshots and Policies can be used for Azure NetApp Files (all tiers).",
+ "guid": "fc4972cc-3cd2-45bf-a707-6e9eab4bed32",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "services": [
+ "Storage",
+ "Backup",
+ "ASR",
+ "AVD",
+ "AzurePolicy"
+ ],
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Build a backup protection strategy for Profile and Office Containers",
+ "waf": "Reliability"
},
{
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Publish NPM packages with artifacts",
- "guid": "1a27a764-a90b-4e0e-978e-e293c1bd363c",
- "link": "https://learn.microsoft.com/azure/devops/pipelines/artifacts/npm?view=azure-devops&tabs=yaml",
- "services": [],
- "severity": "Low",
- "subcategory": "Configuration",
- "text": "NPM",
- "waf": "Operations"
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "In AVD, multiple replication mechanisms and strategies can be used for user data residing in FSLogix containers: [Profile Pattern #1]: Native Azure storage replication mechanisms, for example Azure Files Standard GRS replication, Azure NetApp Files Cross Region Replication. Use Zone Replicated Storage (ZRS) or Geo replicated storage (GRS) for Azure Files is recommended. LRS with local-only resiliency can be used if no zone/region protection is required. NOTE: Azure Files Share Standard is LRS/ZRS/GRS, but with 100TB large support enabled only LRS/ZRS are supported. [Profile Pattern #2]: FSLogix Cloud Cache is built in automatic mechanism to replicate containers between different (up to 4) storage accounts. Cloud Cache should be used only when:(1) User Profile or Office containers data availability required high-availability SLA is critical and need to be resilient to region failure. (2) Selected storage option is not able to satisfy BCDR requirements. For example, with Azure File Share Premium tier, or Azure File Share Standard with Large File Support enabled, GRS is not available. (3) When replication between disparate storage is required. [Profile Pattern #3]: Only set up geo disaster recovery for application data and not for user data/profile containers: store important application data in separate storages, like OneDrive or other external storage with its own built-in DR mechanism.",
+ "guid": "9f7547c1-746d-4c56-868a-714435bd09dd",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery",
+ "services": [
+ "Storage",
+ "ASR",
+ "AVD"
+ ],
+ "severity": "Medium",
+ "subcategory": "Storage",
+ "text": "Assess Profile Container storage replication requirements and resiliency for BCDR purpose",
+ "waf": "Reliability"
},
{
- "category": "Azure Artifact",
- "checklist": "Azure DevOps",
- "description": "Best Practices to work with Azure Artifact",
- "guid": "aaab7571-949a-4b91-a3dc-9fc9d1bb84b3",
- "link": "https://learn.microsoft.com/azure/devops/artifacts/concepts/best-practices?view=azure-devops",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "For local disaster recovery, Azure Backup for Azure Files can be used. For cross-region geo disaster recovery: GRS for Azure Files is only available with standard SKU and no large share support, then not suitable in most customer scenarios. If geo-replication is required with Azure File Share Premium, replication with FSLogix Cloud Cache can be evaluated, or 'in-region' Availability Zone (AZ) only resiliency should be considered.",
+ "guid": "3d4f3537-c134-46dc-9602-7a71efe1bd05",
+ "link": "https://docs.microsoft.com/azure/backup/backup-afs",
+ "services": [
+ "Backup",
+ "Storage",
+ "ASR",
+ "AVD"
+ ],
"severity": "Medium",
- "subcategory": "Configuration",
- "text": "Best Practices",
- "waf": "Operations"
+ "subcategory": "Storage",
+ "text": "Review Azure Files disaster recovery strategy",
+ "waf": "Reliability"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "What is monitoring?",
- "guid": "7b5a67fc-b9ed-45b3-9478-d447a826c286",
- "link": "https://learn.microsoft.com/devops/operate/what-is-monitoring",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Zone Redundant Storage will maximize in-region resiliency for the user profile data. ZRS is supported for premium file shares through the 'FileStorage' storage account kind. ZRS is supported in standard general-purpose v2 storage accounts. Usage of zone redundant storage must be paired with zone redundant deployment of Session Hosts in each Host Pool. ",
+ "guid": "10d4e875-d502-4142-a795-f2b6eff34f88",
+ "link": "https://learn.microsoft.com/azure/storage/files/files-redundancy#zone-redundant-storage",
"services": [
- "Monitor"
+ "Storage",
+ "ASR",
+ "AVD"
],
"severity": "High",
- "subcategory": "Practice",
- "text": "What to monitor?",
- "waf": "Operations"
+ "subcategory": "Storage",
+ "text": "Use Zone Redundant Storage (ZRS) for Azure Files to maximize resiliency",
+ "waf": "Reliability"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Progressive Exposure Strategy",
- "guid": "3c00f1ca-c699-4ef1-b5a8-3de5de36c1c8",
- "link": "https://learn.microsoft.com/devops/operate/safe-deployment-practices",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "For local disaster recovery, Azure NetApp Files (ANF) native backup is available. ANF is essentially locally redundant, then for cross-region geo disaster recovery it is necessary to use an additional mechanism that is Cross-Region Replication (CRR) https://learn.microsoft.com/azure/azure-netapp-files/cross-region-replication-create-peering. Currently, ANF does not provide replication nor redundancy across different Availability Zones (AZ), only the possibility to select in which single AZ to place the ANF volume: https://learn.microsoft.com/azure/azure-netapp-files/manage-availability-zone-volume-placement.",
+ "guid": "23429db7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/cross-region-replication-create-peering",
+ "services": [
+ "Backup",
+ "Storage",
+ "ASR",
+ "AVD",
+ "ACR"
+ ],
"severity": "Medium",
- "subcategory": "Practice",
- "text": "Safe Deployment Practices",
- "waf": "Operations"
+ "subcategory": "Storage",
+ "text": "Review Azure NetApp Files disaster recovery strategy",
+ "waf": "Reliability"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Microsoft runs reliable systems with DevOps",
- "guid": "1870a0bc-5c1e-443a-8865-8d2858ed6717",
- "link": "https://learn.microsoft.com/devops/operate/how-microsoft-operates-devops",
- "services": [],
- "severity": "Low",
- "subcategory": "Practice",
- "text": "Case Study",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Applications can be preinstalled in the golden image/s, can be attached using MSIX & AppAttach feature or distributed to the session hosts after host pool deployment using traditional software distribution methods.",
+ "guid": "86ba2802-1459-4014-95d3-8e5309ccbd97",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
+ "services": [
+ "AVD"
+ ],
+ "severity": "High",
+ "subcategory": "Golden Images",
+ "text": "Determine how applications will be deployed in AVD Host Pools",
"waf": "Operations"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Security in DevOps",
- "guid": "9b825546-df2a-4ee4-953a-fc8339248726",
- "link": "https://learn.microsoft.com/devops/operate/security-in-devops",
- "services": [],
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Multiple golden images can be required to support different OS versions and/or settings, different groups of applications that must be separated and cannot be included in a single image.",
+ "guid": "9266bcca-274f-4aa1-abf3-9d95d44c7c89",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
+ "services": [
+ "AVD"
+ ],
"severity": "Medium",
- "subcategory": "Practice",
- "text": "DevSecOps",
- "waf": "Security"
+ "subcategory": "Golden Images",
+ "text": "Estimate the number of golden images that will be required",
+ "waf": "Operations"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Enable DevSecops with Azure And GitHub",
- "guid": "dd68c5b5-c292-4539-9b69-b9d379ac43bc",
- "link": "https://learn.microsoft.com/devops/devsecops/enable-devsecops-azure-github",
- "services": [],
- "severity": "Low",
- "subcategory": "Practice",
- "text": "DevSecops",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Security"
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Determine which Guest OS will be used to deploy each Host Pool: Windows 10 vs. Windows Server, Marketplace vs. Custom images",
+ "guid": "19ca1f6d-5315-4ae5-84ba-34d4585e2213",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#operating-systems-and-licenses",
+ "services": [
+ "AVD"
+ ],
+ "severity": "Medium",
+ "subcategory": "Golden Images",
+ "text": "Determine which OS image/s you will use for Host Pool deployment",
+ "waf": "Reliability"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Mirror RBAC in DevOps",
- "guid": "68d1d766-5724-46b4-9856-4b4dd74a759c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/secure/best-practices/end-to-end-governance",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure VM custom images can be created and stored in different ways: in an Azure Compute Gallery, as a managed image object or as a managed disk in the storage. The recommended way is to use Azure Compute Gallery.",
+ "guid": "5a2adb2c-3e23-426b-b225-ca44e1696fdd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/shared-image-galleries",
"services": [
- "RBAC"
+ "Storage",
+ "VM",
+ "AVD"
],
"severity": "Low",
- "subcategory": "Practice",
- "text": "Secure DevOps Govenance",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Security"
+ "subcategory": "Golden Images",
+ "text": "Select the proper store for custom images",
+ "waf": "Reliability"
},
{
- "category": "DevOps Practice",
- "checklist": "Azure DevOps",
- "description": "Governance when using CI/CD",
- "guid": "7633bd2a-1a27-4a76-9a90-be0e378ee293",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/governance/end-to-end-governance-in-azure",
- "services": [],
- "severity": "Medium",
- "subcategory": "Practice",
- "text": "Azure DevOps Governance",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If custom images will be used, plan for an automated build process. If no pre-existing software factory exists, consider using Custom Image Templates and/or Azure Image Builder to automate the build process.",
+ "guid": "9bd7bb01-2f7b-495e-86e1-54e2aa359282",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/create-custom-image-templates",
+ "services": [
+ "AVD"
+ ],
+ "severity": "Low",
+ "subcategory": "Golden Images",
+ "text": "Design your build process for custom images",
+ "waf": "Operations"
},
{
- "category": "Application Deployment",
- "checklist": "Azure AKS Review",
- "guid": "785c2fa5-5b56-4ad4-a408-fe72734c476b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/containers/aks/secure-baseline-aks",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "There are some known best practices and recommendations for the golden image customization, be sure to check the referenced article.",
+ "guid": "deace4cb-1dec-44c6-90c3-fc14eebb36a3",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-golden-image",
"services": [
- "AKS"
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Development",
- "text": "Use canary or blue/green deployments",
+ "subcategory": "Golden Images",
+ "text": "If custom image will be used, check recommended best practices for AVD on how to build custom image",
"waf": "Operations"
},
{
- "category": "Application Deployment",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "FSLogix stack installed in AVD session hosts does not provide auto-update capability. For this reason, it is recommended to download the latest version of FSLogix and include in the golden image update process.",
+ "guid": "ed5c9027-dd1a-4343-86ca-52b199223186",
+ "link": "https://learn.microsoft.com/fslogix/how-to-install-fslogix",
"services": [
- "AKS"
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Development",
- "text": "If required for AKS Windows workloads HostProcess containers can be used",
+ "severity": "High",
+ "subcategory": "Golden Images",
+ "text": "Include the latest version of FSLogix in the golden image update process",
"waf": "Reliability"
},
{
- "category": "Application Deployment",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "This tool-set has been created to automatically apply setting referenced in white paper 'Optimizing Windows 10, version 2004 for a Virtual Desktop Infrastructure (VDI) role': https://docs.microsoft.com/windows-server/remote/remote-desktop-services/rds-vdi-recommendations-2004. Usage of the tool and/or optimizations mentioned in the white-paper should be considered. ",
+ "guid": "829e3fec-2183-4687-a017-7a2b5945bda4",
+ "link": "https://github.com/The-Virtual-Desktop-Team/Virtual-Desktop-Optimization-Tool",
"services": [
- "AKS"
+ "RBAC",
+ "AVD"
],
"severity": "Low",
- "subcategory": "Development",
- "text": "Use KEDA if running event-driven workloads",
+ "subcategory": "Golden Images",
+ "text": "Evaluate the usage of Virtual-Desktop-Optimization-Tool",
"waf": "Performance"
},
{
- "category": "Application Deployment",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If OneDrive is used and included in a golden image, be sure to follow the configuration procedure reported in the companion article in the 'More Info' section. Not in scope in this AVD checklist, but OneDrive optimizations like 'Known Folder Redirection' and 'Files On-Demand' should be evaluated used to reduce the space used in FSLogix profiles and provide a better user experience. OneDrive today is not supported for Remote Apps.",
+ "guid": "e3d3e084-4276-4d4b-bc01-5bcf219e4a1e",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/install-office-on-wvd-master-image#install-onedrive-in-per-machine-mode",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
"severity": "Low",
- "subcategory": "Development",
- "text": "Use Dapr to ease microservice development",
+ "subcategory": "Golden Images",
+ "text": "Determine if Microsoft OneDrive will be part of AVD deployment",
"waf": "Operations"
},
{
- "category": "Application Deployment",
- "checklist": "Azure AKS Review",
- "guid": "3acbe04b-be20-49d3-afda-47778424d116",
- "link": "https://learn.microsoft.com/azure/developer/terraform/create-k8s-cluster-with-tf-and-aks",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Be sure to review the requirements and configuration procedure contained in the companion article in the 'More Info' column. Since Teams automatic updates will be disabled, it is recommended to check and include Teams latest version in the golden image update process.",
+ "guid": "b5887953-5d22-4788-9d30-b66c67be5951",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/teams-on-AVD",
"services": [
- "AKS"
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Infrastructure as Code",
- "text": "Use automation through ARM/TF to create your Azure resources",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Golden Images",
+ "text": "Determine if Microsoft Teams will be part of AVD deployment",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "36cb45e5-7960-4332-9bdf-8cc23318da61",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/business-continuity-and-disaster-recovery",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD can support users with different language and localization requirements in the same host pool. This can be done customizing golden images to ensure users can select whichever language they need. The procedure to configure additional language packs in Windows 11 is documented in the reference article.",
+ "guid": "7c336f3b-822a-498e-8cd1-667d1150df4a",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/windows-11-language-packs",
"services": [
- "AKS",
- "ASR"
+ "AVD"
],
- "severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Schedule and perform DR tests regularly",
+ "severity": "Low",
+ "subcategory": "Golden Images",
+ "text": "Assess the requirement to support multiple languages",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "170265f4-bb46-4a39-9af7-f317284797b1",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "It is highly recommended to use separate storage accounts/shares to store MSIX packages. If necessary, storage can scale out independently and not being impacted by profile I/O activities. Azure offers multiple storage options that can be used for MISX app attach. We recommend using Azure Files or Azure NetApp Files as those options offer the best value between cost and management overhead. ",
+ "guid": "90083845-c587-4cb3-a1ec-16a1d076ef9f",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
"services": [
- "AKS",
- "TrafficManager",
- "FrontDoor",
- "LoadBalancer"
+ "Storage",
+ "Cost",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Use Azure Traffic Manager or Azure Front Door as a global load balancer for region failover",
- "waf": "Reliability"
+ "subcategory": "MSIX & AppAttach",
+ "text": "Do not use the same storage account/share as FSLogix profiles",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "graph": "resources | where type=='microsoft.containerservice/managedclusters' | extend compliant= isnotnull(properties.agentPoolProfiles[0].availabilityZones) | distinct id,compliant",
- "guid": "578a219a-46be-4b54-9350-24922634292b",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "In the referenced article, we reported few but important performance considerations for MSIX usage in AVD context, be sure to carefully review.",
+ "guid": "241addce-5793-477b-adb3-751ab2ac1fad",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
"services": [
- "AKS"
+ "AVD"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Use Availability Zones if they are supported in your Azure region",
- "waf": "Reliability"
+ "subcategory": "MSIX & AppAttach",
+ "text": "Review performance considerations for MSIX",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "MSIX app attach requires read-only permissions to access the file share. If you're storing your MSIX applications in Azure Files, then for your session hosts, you'll need to assign all session host VMs both storage account role-based access control (RBAC) and file share New Technology File System (NTFS) permissions on the share.",
+ "guid": "66e15d4d-5a2a-4db2-a3e2-326bf225ca41",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share",
"services": [
- "AKS"
+ "RBAC",
+ "Storage",
+ "VM",
+ "AVD"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Use the SLA-backed AKS offering",
+ "severity": "Medium",
+ "subcategory": "MSIX & AppAttach",
+ "text": "Check proper session host permissions for MSIX share",
+ "waf": "Security"
+ },
+ {
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "3rd-party software vendor must provide a MSIX package, it is not recommended for customer to attempt the conversion procedure without proper support from the application owner.",
+ "guid": "bd362caa-ab79-4b19-adab-81932c9fc9d1",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "services": [
+ "AVD"
+ ],
+ "severity": "Low",
+ "subcategory": "MSIX & AppAttach",
+ "text": "MSIX packages for 3rd-party applications",
+ "waf": "Cost"
+ },
+ {
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "MSIX app attach doesn't support auto-update for MSIX applications, so they should be disabled.",
+ "guid": "bb88037f-5e6b-4fbb-aed5-03547cc447e8",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "services": [
+ "AVD"
+ ],
+ "severity": "Low",
+ "subcategory": "MSIX & AppAttach",
+ "text": "Disable auto-update for MSIX packages",
+ "waf": "Operations"
+ },
+ {
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "In order to leverage MSIX & App Attach, guest OS image for AVD Host pool must be Windows 10/11 Enterprise or Windows 10/11 Enterprise Multi-session, version 2004 or later.",
+ "guid": "26128a71-f0f1-4cac-9d9e-f1d5e832e42e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-faq",
+ "services": [
+ "AVD"
+ ],
+ "severity": "Medium",
+ "subcategory": "MSIX & AppAttach",
+ "text": "Review operating systems support",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Once selected the VM SKU that will be used for Host Pool deployment, it is recommended to use Gen2 type of the SKU for higher security and improved capabilities.",
+ "guid": "e4633254-3185-40a1-b120-bd563a1c8e9d",
+ "link": "https://docs.microsoft.com/azure/virtual-machines/generation-2",
"services": [
- "AKS",
- "Cost"
+ "VM",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "High Availability",
- "text": "Use Disruption Budgets in your pod and deployment definitions",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Session Host",
+ "text": "Evaluate the usage of Gen2 VM for Host Pool deployment",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
+ "category": "Compute",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "MMR redirects the media content from Session Host to your local machine for faster processing and rendering. It only works when you play media content on Microsoft Edge or Google Chrome. See linked URL for more details.",
+ "guid": "adecb27f-dc40-40f5-aca2-0090f633b1c9",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/multimedia-redirection",
"services": [
- "AKS",
- "ACR"
+ "AVD"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "If using a private registry, configure region replication to store images in multiple regions",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Session Host",
+ "text": "Consider using MMR (MultiMedia Redirection) to get better video performance on browser",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "daa9a260-c3ea-4490-b077-5fc1f2a80cb0",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "A host pool is a collection of Azure virtual machines that register to Azure Virtual Desktop as session hosts. A host pool can be one of two types: Personal and Pooled. Which type to use, and how many, is a key design decision that must be documented and validated. See companion article in 'More Info' column for more details.",
+ "guid": "8468c55a-775c-46ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology#host-pools",
"services": [
- "AKS",
- "ASR",
- "Storage"
+ "VM",
+ "AVD"
],
"severity": "High",
- "subcategory": "Disaster Recovery",
- "text": "Use Zone-Redundant Storage (ZRS) with stateful workloads",
- "waf": "Reliability"
+ "subcategory": "Capacity Planning",
+ "text": "Determine the Host Pool type to use",
+ "waf": "Cost"
},
{
- "category": "BC and DR",
- "checklist": "Azure AKS Review",
- "guid": "bc14aea6-e65d-48d9-a3ad-c218e6436b06",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/business-continuity-and-disaster-recovery",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Use your design criteria to determine the number of Host Pools to deploy. This will be based on factors such as different OS images, multi-region support, guest VM hardware differences (such as GPU support or no), different user expectations and uptime requirements (examples might be 'Executives', 'Office Workers', 'Developers', etc.), and Host Pool RDP settings (such as drive redirection support). These will determine the number of host pools as well as how many hosts will be in each pool.",
+ "guid": "4e98495f-d3c0-4af2-aa59-a793395a32a7",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology?WT.mc_id=Portal-fx#host-pools",
"services": [
- "AKS"
+ "VM",
+ "AVD"
],
"severity": "High",
- "subcategory": "Requirements",
- "text": "Define non-functional requirements such as SLAs, RTO (Recovery Time Objective) and RPO (Recovery Point Objective).",
- "waf": "Reliability"
+ "subcategory": "Capacity Planning",
+ "text": "Estimate the number of different Host Pools to deploy ",
+ "waf": "Performance"
},
{
- "category": "Cost Governance",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Confirm that the difference between automatic and direct assignment is well understood and the selected option is appropriate for the scenario in question. Automatic is the default setting.",
+ "guid": "b38b875b-a1cf-4204-a901-3a5d3ce474db",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/configure-host-pool-personal-desktop-assignment-type",
"services": [
- "AKS",
- "Cost"
+ "AVD"
],
"severity": "Low",
- "subcategory": "Cost",
- "text": "Use an external application such as kubecost to allocate costs to different users",
- "waf": "Cost"
+ "subcategory": "Capacity Planning",
+ "text": "For Personal Host Pool type, select the proper assignment type",
+ "waf": "Operations"
},
{
- "category": "Cost Governance",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Check which one to use and available options, autoscale ignores existing load-balancing algorithms.",
+ "guid": "cbd8682a-6abc-4a2a-9fda-1dbf3dc95d48",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/host-pool-load-balancing",
"services": [
- "AKS",
- "Cost"
+ "AVD"
],
"severity": "Low",
- "subcategory": "Cost",
- "text": "Use scale down mode to delete/deallocate nodes",
- "waf": "Cost"
+ "subcategory": "Capacity Planning",
+ "text": "For Pooled Host Pool type, select the best load balancing method",
+ "waf": "Performance"
},
{
- "category": "Cost Governance",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "The number of cores increase, the system's synchronization overhead also increases. Especially for multiple user's sign-in simultaneously. Make sure not to use a VM that is too large for the session host",
+ "guid": "b3724959-4943-4577-a3a9-e10ff6345f24",
+ "link": "https://learn.microsoft.com/windows-server/remote/remote-desktop-services/virtual-machine-recs",
"services": [
- "AKS",
- "Cost"
+ "VM",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Cost",
- "text": "When required use multi-instance partitioning GPU on AKS Clusters",
- "waf": "Cost"
- },
- {
- "category": "Cost Governance",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "services": [
- "AKS",
- "Cost"
- ],
- "severity": "Low",
- "subcategory": "Cost",
- "text": "If running a Dev/Test cluster use NodePool Start/Stop",
- "waf": "Cost"
+ "subcategory": "Capacity Planning",
+ "text": "For Pooled Host Pool type, VMs shouldn't have more than 32 cores",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD does not support assigning both the RemoteApp and Desktop Application Group (DAG) in a single host pool to the same set of users. Doing so will cause a single user to have two user sessions in a single host pool. Users aren't supposed to have two active sessions at the same time in the same host pool using the same profile.",
+ "guid": "b384b7ed-1cdd-457e-a2cd-c8d4d55bc144",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/terminology?WT.mc_id=Portal-fx#application-groups",
"services": [
- "AKS",
- "AzurePolicy"
+ "Storage",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "Do not use the same Host Pool to offer both full desktops (DAG) and Remote Apps to the same set of users",
"waf": "Security"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "There is a limit of 500 Application Groups that can be created in AVD for each Microsoft Entra ID (former Azure AD) tenant. The limit can be increased (see the companion link for details) but it is not recommended.",
+ "guid": "971cc4a4-b1f7-4c12-90e0-1ad96808f00c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#azure-virtual-desktop-service-limits",
"services": [
- "AKS"
+ "Entra",
+ "AVD",
+ "ACR"
],
"severity": "Medium",
- "subcategory": "Compliance",
- "text": "Separate applications from the control plane with user/system node pools",
- "waf": "Security"
+ "subcategory": "Capacity Planning",
+ "text": "Estimate the number of Application Groups required across all Host Pools in the Microsoft Entra ID tenant",
+ "waf": "Reliability"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Applications are grouped under Application Groups as containers for publishing and assigning permissions: we recommend that you do not publish more than 50 applications per application group.",
+ "guid": "fa9f2895-473d-439b-ab8e-5a5cf92c7f32",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop#considerations",
"services": [
- "AKS"
+ "AVD"
],
"severity": "Low",
- "subcategory": "Compliance",
- "text": "Add taint to your system nodepool to make it dedicated",
- "waf": "Security"
+ "subcategory": "Capacity Planning",
+ "text": "Estimate the number of Applications for each Application Group",
+ "waf": "Reliability"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "FSLogix is not required for Personal Host Pools since each VM is statically assigned to a single user, then no immediate needs for a roaming profile solution. In some usage scenarios FSLogix can help. For example, a VM can be re-assigned, or user moved to another desktop, or roaming profile can be used to save user profile in a different location for DR purposes.",
+ "guid": "38b19ab6-0693-4992-9394-5590883916ec",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/configure-host-pool-personal-desktop-assignment-type?tabs=azure#reassign-a-personal-desktop",
"services": [
- "AKS",
- "ACR"
+ "Storage",
+ "VM",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Use a private registry for your images, such as ACR",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Capacity Planning",
+ "text": "Evaluate the usage of FSLogix for Personal Host Pools",
+ "waf": "Reliability"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Use the link provided to set a starting point for SKU decision, then validate using a performance test. Ensure a minimum of four cores for Production is selected per Session Host (multi-session)",
+ "guid": "e1112dbd-7ba0-412e-9b94-ef6e047d2ea2",
+ "link": "https://docs.microsoft.com/windows-server/remote/remote-desktop-services/virtual-machine-recs",
"services": [
- "AKS"
+ "VM",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Scan your images for vulnerabilities",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "Run workload performance test to determine the best Azure VM SKU and size to use",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "cc639637-a652-42ac-89e8-06965388e9de",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "It is critical to check AVD capacity and limits reported in the referenced article. Additional limits and thresholds apply for network, compute, storage and service management. ",
+ "guid": "992b1cd6-d2f5-44b2-a769-e3a691e8838a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop#considerations",
"services": [
- "AKS",
- "Defender"
+ "Storage",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Compliance",
- "text": "Use Azure Security Center to detect security posture vulnerabilities",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "Verify AVD scalability limits for the environment",
+ "waf": "Reliability"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "42d4aefe-2383-470e-b019-c30df24996b2",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Host Pools with GPU require special configuration, please be sure to review the referenced article.",
+ "guid": "c936667e-13c0-4056-94b1-e945a459837e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/configure-vm-gpu",
"services": [
- "AKS"
+ "AVD"
],
"severity": "Low",
- "subcategory": "Compliance",
- "text": "If required configure FIPS",
- "waf": "Security"
+ "subcategory": "Capacity Planning",
+ "text": "Determine if Session Hosts will require GPU",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Whenever is possible, it is recommended to leverage VM SKUs with Accelerated Networking feature. This feature does require specific VM SKU/size and OS versions, please see the list and requirement in the companion article.",
+ "guid": "b47a393a-0803-4272-a479-8b1578b219a4",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
"services": [
- "AKS"
+ "VM",
+ "AVD"
],
- "severity": "High",
- "subcategory": "Compliance",
- "text": "Define app separation requirements (namespace/nodepool/cluster)",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Capacity Planning",
+ "text": "Use Azure VM SKUs able to leverage Accelerated Networking",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "For proper planning and deployment, it is important to assess the maximum number of concurrent and total users for each Host Pool. Additionally, users from different regions may require different Host Pools to ensure the best user experience.",
+ "guid": "bb91a33d-90ca-4e2c-a881-3706f7c0cb9f",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/overview",
"services": [
- "AKS",
- "AKV"
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Secrets",
- "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
- "waf": "Security"
+ "subcategory": "Clients & Users",
+ "text": "Assess how many users will connect to AVD and from which regions",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "The dependencies on resources external to the AVD pool should be assessed and reviewed, for example Active Directory, external file shares or other storage, on-premises services and resources, network infrastructure components like VPN and or ExpressRoute, external services and 3rd-party components. For all these resources, latency from the AVD Host Pool needs to be evaluated and connectivity considered. Additionally, BCDR considerations need to be applied to these dependencies as well.",
+ "guid": "6abca2a4-fda1-4dbf-9dc9-5d48c7c791dc",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/windows-virtual-desktop?toc=%2Fazure%2Fvirtual-desktop%2Ftoc.json&bc=%2Fazure%2Fvirtual-desktop%2Fbreadcrumb%2Ftoc.json",
"services": [
- "AKS",
- "AKV"
+ "VPN",
+ "Storage",
+ "AVD",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Secrets",
- "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Clients & Users",
+ "text": "Assess external dependencies for each Host Pool",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD offers a variety of client types (fat, thin, web) to connect over different platforms (Windows, MacOS, iOS, Android). Review limitations of each client and compare multiple options when possible.",
+ "guid": "a1f6d565-99e5-458b-a37d-4985e1112dbd",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/users/connect-windows",
"services": [
- "AKS",
- "AKV"
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Secrets",
- "text": "If required add Key Management Service etcd encryption",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Clients & Users",
+ "text": "Review user client OS used and AVD client type",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Depending on the user locations, and AVD region deployment, users may have a non-optimal experience, hence is important to test as soon as possible in a small PoC environment. Run the 'Azure Virtual Desktop Experience Estimator' tool to select the best Azure region to deploy Host Pools. Beyond 150ms latency, user experience may be not optimal.",
+ "guid": "d2f54b29-769e-43a6-a1e8-838ac936667e",
+ "link": "https://azure.microsoft.com/services/virtual-desktop/assessment/",
"services": [
- "AKS",
- "AKV"
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Secrets",
- "text": "If required consider using Confidential Compute for AKS",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Clients & Users",
+ "text": "Run a PoC to validate end-to-end user experience and impact of network latency",
+ "waf": "Performance"
},
{
- "category": "Governance and Security",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "RDP settings can currently only be configured at the host pool level, not per user/group. If different settings are required for different set of users, it is recommended to create multiple Host Pools.",
+ "guid": "3b365a5c-7acb-4e48-abe5-4cd79f2e8776",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/customize-rdp-properties",
"services": [
- "AKS",
- "AKV",
- "Defender"
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Secrets",
- "text": "Consider using Defender for Containers",
+ "severity": "Low",
+ "subcategory": "Clients & Users",
+ "text": "Assess and document RDP settings for all user groups",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD is a non-regional service, Host Pools can be created in any region, automatic redirection from closest front-end will happen automatically.",
+ "guid": "42e52f47-21d9-428c-8b1b-d521e44a29a9",
+ "link": "https://azure.microsoft.com/global-infrastructure/services/?products=virtual-desktop",
"services": [
- "AKS",
- "Entra"
+ "AVD"
],
"severity": "High",
- "subcategory": "Identity",
- "text": "Use managed identities instead of Service Principals",
- "waf": "Security"
+ "subcategory": "General",
+ "text": "Determine in which Azure regions AVD Host Pools will be deployed.",
+ "waf": "Performance"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD must store metadata to support the service; this is stored in the specified geography. However, this is independent of the regions where Host Pools are located.",
+ "guid": "bad37ead-53cc-47ce-8d7a-aab3571449ab",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/data-locations",
"services": [
- "AKS",
- "Entra"
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Integrate authentication with AAD (using the managed integration)",
- "waf": "Security"
+ "subcategory": "General",
+ "text": "Determine metadata location for AVD service",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
+ "category": "Foundation",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Check for specific VM SKUs, especially if you need GPU or high-specs SKUs, and eventually Azure NetApp Files if used.",
+ "guid": "8053d89e-89dc-47b3-9be2-a1a27f7a9e91",
+ "link": "https://docs.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
"services": [
- "AKS",
- "Entra"
+ "Storage",
+ "VM",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "text": "Limit access to admin kubeconfig (get-credentials --admin)",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "General",
+ "text": "Check Azure quotas and availability for specific VM sizes and types in the selected regions",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AD DCs in Azure are recommended (at least two in different AZ) to reduce latency for users logging into AVD session hosts, and eventually for Azure NetApp Files and AD integration. A DC need to be able to talk to DCs for ALL child domains. As alternative, on-premise connectivity must be used to reach AD DCs.",
+ "guid": "c14aea7e-65e8-4d9a-9aec-218e6436b073",
+ "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
"services": [
- "AKS",
- "RBAC",
- "Entra"
+ "Entra",
+ "Storage",
+ "VNet",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Integrate authorization with AAD RBAC",
- "waf": "Security"
+ "subcategory": "Active Directory",
+ "text": "Create at least two Active Directory Domain Controllers (DCs) in Azure VNet environment close to AVD Host Pool",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Recommended to create a separate OU per Host Pool under a separate OU hierarchy. These OUs will contain machine accounts of AVD Session Hosts. ",
+ "guid": "6db55f57-9603-4334-adf9-cc23418db612",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/create-host-pools-azure-marketplace",
"services": [
- "AKS",
- "RBAC",
- "Entra"
+ "Entra",
+ "AVD"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Active Directory",
+ "text": "Create a specific OU in Active Directory for each Host Pool",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Carefully review, and potentially block/filter inheritance of GPOs to the OUs containing AVD Host Pools. ",
+ "guid": "7126504b-b47a-4393-a080-327294798b15",
+ "link": "https://docs.microsoft.com/previous-versions/windows/desktop/Policy/group-policy-hierarchy",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
- "waf": "Security"
+ "subcategory": "Active Directory",
+ "text": "Review Domain GPOs that will be applied to OU and impacting Host Pool Session Hosts functionalities",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If Active Directory Domain GPOs are used, it is recommended to configure FSLogix using the built-in provided GPO ADMX template referenced in the companion article in the 'More Info' column",
+ "guid": "2226a8e3-50a4-4ac3-8bd6-ee150553051f",
+ "link": "https://learn.microsoft.com/fslogix/how-to-use-group-policy-templates",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "For AKS non-interactive logins use kubelogin (preview)",
- "waf": "Security"
+ "subcategory": "Active Directory",
+ "text": "Configure FSLogix settings using the built-in provided GPO ADMX template",
+ "waf": "Operations"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "It is recommended to have a specific dedicated account with minimal permissions, and without the default 10 joins limitation. Review the companion article for more details.",
+ "guid": "347dc560-28a7-41ff-b1cd-15dd2f0d5e77",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#session-hosts",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "VM",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Disable AKS local accounts",
+ "subcategory": "Active Directory",
+ "text": "Create a dedicated user account with only permissions to join VM to the domain",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Avoid granting access per user, instead use AD groups and replicate them using Active Directory Connector (ADC) in Microsoft Entra ID (former Azure AD). ",
+ "guid": "2d41e361-1cc5-47b4-a4b1-410d43958a8c",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/manage-app-groups",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Identity",
- "text": "Configure if required Just-in-time cluster access",
+ "severity": "Medium",
+ "subcategory": "Active Directory",
+ "text": "Create a domain user group for each set of users that will be granted access to each Host Pool Application Group (DAG or RAG)",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If Azure Files Active Directory (AD) integration is used, as part of the configuration procedure, an AD account to represent the storage account (file share) will be created. You can choose to register as a computer account or service logon account, see FAQ for details. For computer accounts, there is a default password expiration age set in AD at 30 days. Similarly, the service logon account may have a default password expiration age set on the AD domain or Organizational Unit (OU). For both account types, we recommend you check the password expiration age configured in your AD environment and plan to update the password of your storage account identity of the AD account before the maximum password age. You can consider creating a new AD Organizational Unit (OU) in AD and disabling password expiration policy on computer accounts or service logon accounts accordingly.",
+ "guid": "2289b3d6-b57c-4fc6-9546-1e1a3e3453a3",
+ "link": "https://docs.microsoft.com/azure/storage/files/storage-files-identity-ad-ds-enable",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "Storage",
+ "AVD",
+ "AzurePolicy"
],
- "severity": "Low",
- "subcategory": "Identity",
- "text": "Configure if required AAD conditional access for AKS",
+ "severity": "High",
+ "subcategory": "Active Directory",
+ "text": "Review your organization password expiration policy for accounts used by Azure Files AD integration",
"waf": "Security"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "You can configure this using Active Directory Connect (ADC) or Azure AD Domain Services (for hybrid or cloud organizations). Microsoft Entra ID is the new name for Azure Active Directory (Azure AD).",
+ "guid": "5119bf8e-8f58-4542-a7d9-cec166cd072a",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#identity",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Identity",
- "text": "If required for Windows AKS workloads configure gMSA ",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Active Directory",
+ "text": "A Windows Server Active Directory forest/domain must be in sync with Microsoft Entra ID",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access Management",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If Azure Files is used and pre-requisites can be satisfied, it is recommended to configure (Microsoft Entra ID) Kerberos authentication. This configuration will allow to store FSLogix profiles that can be accessed by hybrid user identities from Azure AD-joined session hosts without requiring network line-of-sight to domain controllers.",
+ "guid": "e777fd5e-c5f1-4d6e-8fa9-fc210b88e338",
+ "link": "https://learn.microsoft.com/azure/storage/files/storage-files-identity-auth-hybrid-identities-enable",
"services": [
- "AKS",
- "Entra"
+ "Entra",
+ "Storage",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "For finer control consider using a managed Kubelet Identity",
+ "subcategory": "Microsoft Entra ID",
+ "text": "Configure Azure Files share for Microsoft Entra ID (former Azure AD) Kerberos authentication on Microsoft Entra ID Joined scenario",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "An Azure subscription must be parented to the same Microsoft Entra ID (former Azure AD) tenant, that contains a virtual network that either contains or is connected to the Windows Server Active Directory Domain Services or Microsoft Entra ID Domain Services instance.",
+ "guid": "6ceb5443-5125-4922-9442-93bb628537a5",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#identity",
"services": [
- "AKS",
- "AppGW",
- "ACR"
+ "Entra",
+ "VNet",
+ "AVD",
+ "Subscriptions"
],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "If using AGIC, do not share an AppGW across clusters",
+ "severity": "High",
+ "subcategory": "Requirements",
+ "text": "A Microsoft Entra ID tenant must be available with at least one subscription linked",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure Virtual Desktop supports different types of identities depending on which configuration you choose. Please review the supported scenarios mentioned in the 'More Info' article and document the design decision accordingly in the 'Comment' column. Critically, external identities (B2B or B2C) are not supported. Be sure to review also the list of supported scenarios in https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios.",
+ "guid": "b4ce4781-7557-4a1f-8043-332ae199d44c",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/authentication",
"services": [
- "AKS"
+ "Entra",
+ "AVD"
],
"severity": "High",
- "subcategory": "Best practices",
- "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
- "waf": "Reliability"
+ "subcategory": "Requirements",
+ "text": "Review and document your identity scenario",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Users need accounts that are in Microsoft Entra ID (former Azure AD). If you're also using AD DS or Azure AD Domain Services in your deployment of Azure Virtual Desktop, these accounts will need to be hybrid identities, which means the user accounts are synchronized. If you're using Microsoft Entra ID with AD DS, you'll need to configure Azure AD Connect to synchronize user identity data between AD DS and Microsoft Entra ID. If you're using Microsoft Entra ID with Azure AD Domain Services, user accounts are synchronized one way from Microsoft Entra ID to Azure AD Domain Services. This synchronization process is automatic. AVD also supports Microsoft Entra ID native accounts with some restrictions. External identities (B2B or B2C) are not supported.",
+ "guid": "f9b141a8-98a5-435e-9378-97e71ca7da7b",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios",
"services": [
- "AKS"
+ "Entra",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Best practices",
- "text": "For Windows workloads use Accelerated Networking",
- "waf": "Performance"
+ "subcategory": "Requirements",
+ "text": "Assess User Account types and requirements",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD supports SSO using either Active Directory Federation Services (AD FS) or Microsoft Entra ID (former Azure AD) authentication. The latter is recommended, please check the requirements and limitation in the 'More Info' article. Using AD FS could be a viable choice if already present in the customer environment, it is not recommended to deploy a brand new ADFS infrastructure just for AVD SSO implementation.",
+ "guid": "5f9f680a-ba07-4429-bbf7-93d7071561f4",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/authentication#single-sign-on-sso",
"services": [
- "AKS",
- "LoadBalancer"
+ "Entra",
+ "AVD"
],
- "severity": "High",
- "subcategory": "Best practices",
- "text": "Use the standard ALB (as opposed to the basic one)",
+ "severity": "Medium",
+ "subcategory": "Requirements",
+ "text": "If Single-Sign On (SSO) is a requirement, review the supported scenarios and prerequisites",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "VMs can be Windows Active Directory (AD) domain-joined, Hybrid AD-joined, Microsoft Entra ID (former Azure AD) Joined or Azure AD Domain Services joined. Be sure to review supported scenarios, limitations and requirements from the referenced article.",
+ "guid": "ea962a15-9394-46da-a7cc-3923266b2258",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios",
"services": [
- "AKS",
- "VNet"
+ "Entra",
+ "VM",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Best practices",
- "text": "If using Azure CNI, consider using different Subnets for NodePools",
+ "severity": "High",
+ "subcategory": "Requirements",
+ "text": "Select the proper AVD Session Host domain join type",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "category": "Identity",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Compare self-managed Windows Active Directory Domain Services, Microsoft Entra ID (former Azure AD), and managed Azure AD Domain Services (AAD-DS)",
+ "guid": "6f4a1651-bddd-4ea8-a487-cdeb4861bc3b",
+ "link": "https://docs.microsoft.com/azure/active-directory-domain-services/compare-identity-solutions",
"services": [
- "AKS",
- "VNet",
- "Cost",
- "PrivateLink"
+ "Entra",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Cost",
- "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Requirements",
+ "text": "Before using Azure AD Domain Services (AAD-DS) for AVD, be sure to review the limitations.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "e8a03f97-8794-468d-96a7-86d60f96c97b",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD provides administrative templates for Intune and Active Directory GPO. Using these templates it is possible to centrally control several AVD configuration settings: Graphics related data logging, Screen capture protection, RDP Shortpath for managed networks, Watermarking. See companion article in 'More Info' colum for details. NOTE: FSLogix has its own separate template.",
+ "guid": "5549524b-36c0-4f1a-892b-ab3ca78f5db2",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/administrative-template",
"services": [
- "AKS",
- "VPN"
+ "Entra",
+ "AVD",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "HA",
- "text": "If hybrid connectivity is required, use 2xER or ER+VPN for better availability",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Use built-in provided administrative templates for AVD settings configuration",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Determine if a configuration management tool is already in place to manage Host Pool VM configuration after initial deployment, For example SCCM/SCOM, Intune/ConfigurationManager, 3rd-party solutions.",
+ "guid": "3334fdf9-1c23-4418-8b65-285269440b4b",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/management",
"services": [
- "AKS"
+ "VM",
+ "AVD",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "IPAM",
- "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Plan AVD Session Hosts configuration management strategy",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "We recommend using Microsoft Intune, if requirements can be satisfied, to manage your Azure Virtual Desktop environment. Review supported scenarios and requirements to enable Intune for AVD Session Host management in the referenced article in the More Info column. Document your choice in the 'Comment' column. In that article, review the different requirements and capabilities for single-session https://learn.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop and multi-session https://learn.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop-multi-session AVD.",
+ "guid": "63a08be1-6004-4b4a-a79b-f3239faae113",
+ "link": "https://learn.microsoft.com/mem/intune/fundamentals/azure-virtual-desktop",
"services": [
- "AKS",
- "VNet"
+ "AVD",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "IPAM",
- "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
- "waf": "Performance"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Evaluate Intune for AVD Session Hosts management",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "The scaling tool provides a low-cost automation option for customers who want to optimize their session host VM costs. You can use the scaling tool to schedule VMs to start and stop based on Peak and Off-Peak business hours, scale out VMs based on number of sessions per CPU core, scale in VMs during Off-Peak hours, leaving the minimum number of session host VMs running. Not available yet for Personal Host Pool type.",
+ "guid": "7138b820-102c-4e16-be30-1e6e872e52e3",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/autoscale-scenarios",
"services": [
- "AKS"
+ "VM",
+ "AVD",
+ "Cost",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "IPAM",
- "text": "If using Azure CNI, check the maximum pods/node (default 30)",
- "waf": "Performance"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Assess the requirements for host pool auto-scaling capability",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Start VM On Connect lets you reduce costs by enabling end users to turn on their session host virtual machines (VMs) only when they need them. You can then turn off VMs when they're not needed. You can configure Start VM on Connect for personal or pooled host pools using the Azure portal or PowerShell. Start VM on Connect is a host pool wide setting.",
+ "guid": "55f612fe-f215-4f0d-a956-10e7dd96bcbc",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/start-virtual-machine-connect",
"services": [
- "AKS",
- "VNet"
+ "VM",
+ "AVD",
+ "Cost",
+ "Monitor"
],
"severity": "Low",
- "subcategory": "IPAM",
- "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
- "waf": "Security"
+ "subcategory": "Management",
+ "text": "Consider the usage of Start VM on Connect for Personal Host Pools",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "'Start VM On Connect' provides a smart way to automatically start previously stopped Session Hosts but does not provide a mechanism to shut down when not in used. Administrators are encouraged to configure additional policies to sign users out of their sessions and run Azure automation scripts to de-allocate VMs. Users should be not allowed to shut down their Personal Hosts since will not be able to de-allocate Azure VMs, then billing will still be active with no cost reduction.",
+ "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": [
- "AKS"
+ "VM",
+ "AVD",
+ "AzurePolicy",
+ "Monitor",
+ "Cost"
],
- "severity": "High",
- "subcategory": "IPAM",
- "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Evaluate the implementation of an ad-hoc mechanism to shut down Personal AVD Session Hosts",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure Virtual Desktop billing is mainly based on cost associated to compute, networking and storage resources consumed by Host Pools. In addition to this, costs can be generated by dependent resources, for example VPN or ExpressRoute or vWAN, Active Directory Domain Controllers, DNS, etc. There is no direct cost associated to AVD objects like workspaces, host pools or application groups. To make AVD associated costs more evident and grouped by Host Pool, it is recommended to use 'cm-resource-parent' tag. ",
+ "guid": "51bcafca-476a-48fa-9b91-9645a7679f20",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/tag-virtual-desktop-resources",
"services": [
- "AKS"
+ "Storage",
+ "DNS",
+ "AVD",
+ "VPN",
+ "Monitor",
+ "Cost",
+ "ExpressRoute",
+ "VWAN"
],
"severity": "Low",
- "subcategory": "Operations",
- "text": "If required add your own CNI plugin",
- "waf": "Security"
+ "subcategory": "Management",
+ "text": "Review and adopt suggested Azure Tags for Azure Virtual Desktop",
+ "waf": "Cost"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure Advisor analyzes your configurations and telemetry to offer personalized recommendations to solve common problems. With these recommendations, you can optimize your Azure resources for reliability, security, operational excellence, performance, and cost.",
+ "guid": "611dd68c-5a4b-4252-8e44-a59a9c2399c4",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/azure-advisor-recommendations",
"services": [
- "AKS"
+ "Entra",
+ "Cost",
+ "AVD",
+ "Monitor"
],
"severity": "Low",
- "subcategory": "Operations",
- "text": "If required configure Public IP per node in AKS",
- "waf": "Performance"
+ "subcategory": "Management",
+ "text": "Periodically check Azure Advisor recommendations for AVD",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Customers have several options: Microsoft Configuration Manager, this article explains how to automatically apply updates to a Azure Virtual Desktop session hosts running Windows 10/11: https://learn.microsoft.com/azure/virtual-desktop/configure-automatic-updates, Microsoft Intune: https://docs.microsoft.com/mem/intune/fundamentals/windows-virtual-desktop-multi-session, Azure Update Management and WSUS for Windows Server OS only (client OS not supported: https://learn.microsoft.com/azure/automation/update-management/operating-system-requirements), 3rd Party tools. Outside an emergency security patching situation, it is recommended to move away from an 'in-place' update strategy patching strategy and adopt a re-imaging approach.",
+ "guid": "04722da2-9c2b-41cd-922f-54b29bade3aa",
+ "link": "https://learn.microsoft.com/mem/intune/fundamentals/azure-virtual-desktop-multi-session",
"services": [
- "AKS"
+ "AVD",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Scalability",
- "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
- "waf": "Reliability"
+ "subcategory": "Management",
+ "text": "Plan for a Session Host emergency patching and update strategy",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "The Scheduled Agent Updates feature lets you create up to two maintenance windows per Host Pool to update AVD components at a convenient time. It is recommended to specify maintenance windows then upgrading Session Hosts will not happen during peak business hours. Scheduled Agent Updates is disabled by default. This means that, unless you enable this setting, the agent can get updated at any time by the agent update flighting service.",
+ "guid": "c067939b-e5ca-4698-b9ce-3bd91843e73f",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/scheduled-agent-updates",
"services": [
- "AKS"
+ "AVD",
+ "Monitor"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Configure the Scheduled Agent Updates feature",
"waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Host pools are a collection of one or more identical virtual machines within Azure Virtual Desktop environment. We highly recommend you create a validation host pool where service updates are applied first. This allows you to monitor service updates before the service applies them to your standard or non-validation environment.",
+ "guid": "d1e8c38e-c936-4667-913c-005674b1e944",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/create-validation-host-pool",
"services": [
- "AKS"
+ "VM",
+ "AVD",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Scalability",
- "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
- "waf": "Reliability"
+ "subcategory": "Management",
+ "text": "Create a validation (canary) Host Pool",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "An AVD Host Pool can be deployed in several ways: Azure Portal, ARM templates, Azure CLI tool, Powershell, manual VM creation with registration token, Terraform, 3rd-party tools. It is important to adopt proper method/s to support automatic deployment through automation and CI/CD tools.",
+ "guid": "a459c373-e7ed-4616-83b3-65a917ecbe48",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-platform-automation-and-devops",
"services": [
- "AKS",
- "NVA"
+ "VM",
+ "AVD",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Security",
- "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Determine Host Pool deployment strategy",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "After you register a VM to a host pool within the Azure Virtual Desktop service, the agent regularly refreshes the VM's token whenever the VM is active. The certificate for the registration token is valid for 90 days. Because of this 90-day limit, we recommend VMs to be online for 20 minutes every 90 days so that the machine can refresh its tokens and update the agent and side-by-side stack components.",
+ "guid": "ebe54cd7-df2e-48bb-ac35-81559bb9153e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/faq",
"services": [
- "AKS"
+ "VM",
+ "AVD",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "If using a public API endpoint, restrict the IP addresses that can access it",
- "waf": "Security"
+ "subcategory": "Management",
+ "text": "Turn on Session Host VMs at least every 90 days for token refresh",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure Virtual Desktop Insights is a dashboard built on Azure Monitor Workbooks that helps IT professionals understand their Azure Virtual Desktop environments. Read the referenced article to learn how to set up Azure Monitor for Azure Virtual Desktop to monitor your AVD environments.",
+ "guid": "63cfff1c-ac59-49ef-8d5a-83dd4de36c1c",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/insights",
"services": [
- "AKS"
+ "AVD",
+ "Monitor"
],
"severity": "High",
- "subcategory": "Security",
- "text": "Use private clusters if your requirements mandate it",
- "waf": "Security"
+ "subcategory": "Monitoring",
+ "text": "Enable monitoring for AVD",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Azure Virtual Desktop uses Azure Monitor and Log Analytics for monitoring and alerts like many other Azure services. This lets admins identify issues through a single interface. The service creates activity logs for both user and administrative actions. Each activity log falls under the following categories: Management, Feed, Connections, Host Registration, Errors, Checkpoints. ",
+ "guid": "81770afb-c4c0-4e43-a186-58d2857ed671",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/diagnostics-log-analytics",
"services": [
- "AKS",
- "AzurePolicy"
+ "VM",
+ "AVD",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
- "waf": "Security"
+ "subcategory": "Monitoring",
+ "text": "Enable diagnostic settings for Workspaces, Host Pools, Application Groups and Host VMs to Log Analytics workspace",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "See the referenced article and this additional one to setup proper monitoring and alerting for storage: https://docs.microsoft.com/azure/storage/files/storage-troubleshooting-files-performance. ",
+ "guid": "2463cffe-179c-4599-be0d-5973dd4ce32c",
+ "link": "https://docs.microsoft.com/azure/storage/files/storage-files-monitoring?tabs=azure-portal",
"services": [
- "AKS",
- "AzurePolicy"
+ "Storage",
+ "AVD",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Security",
- "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Create alerts on the profile storage to be alerted in case of high usage and throttling",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "category": "Monitoring and Management",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "You can use Azure Service Health to monitor service issues and health advisories for Azure Virtual Desktop. Azure Service Health can notify you with different types of alerts (for example, email or SMS), help you understand the effect of an issue, and keep you updated as the issue resolves.",
+ "guid": "18813706-f7c4-4c0d-9e51-4548d2457ed6",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/set-up-service-alerts",
"services": [
- "AKS",
- "AzurePolicy"
+ "AVD",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Security",
- "text": "Use Kubernetes network policies to increase intra-cluster security",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Configure Azure Service Health for AVD alerts ",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If required to connect to on-premises environment, assess the current connectivity option or plan for the required connectivity (ExpressRoute, Azure S2S or 3rd-party NVA VPN). ",
+ "guid": "dd399cfd-7b28-4dc8-9555-6202bfe4563b",
+ "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/",
"services": [
- "AKS",
- "WAF"
+ "VPN",
+ "AVD",
+ "NVA",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Security",
- "text": "Use a WAF for web workloads (UIs or APIs)",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Determine if hybrid connectivity is required to connect to on-premises environment",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD Host Pools can be deployed in either Azure Virtual WAN or traditional 'Hub & Spoke' network topologies. It is recommended to deploy each Host Pool in a separate 'spoke' VNet, using 'hub' is not recommended.",
+ "guid": "c8639648-a652-4d6c-85e5-02965388e5de",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-network-topology-and-connectivity",
"services": [
- "AKS",
"VNet",
- "DDoS"
+ "AVD",
+ "VWAN"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Use DDoS Standard in the AKS Virtual Network",
- "waf": "Security"
+ "subcategory": "Networking",
+ "text": "Determine Azure Virtual Network (VNet) placement for each AVD Host Pool",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Evaluate the bandwidth requirements, ensure VPN/ER bandwidth will be enough, ensure proper routing and firewall rules are in place, test end-to-end latency. ",
+ "guid": "d227dd14-2b06-4c21-a799-9a646f4389a7",
+ "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/",
"services": [
- "AKS"
+ "VPN",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Security",
- "text": "If required add company HTTP Proxy",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Assess which on-premises resources are required from AVD Host Pools",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Several options are available. You can use Azure Firewall or equivalent 3rd-party NVA, Network Security Group (NSG) and/or Proxy servers. NSG is not able to enable/disable by URL, only ports and protocols. Proxy should be used only as explicit setting in user browser. Details on using Azure Firewall Premium with AVD are reported in the companion article in the 'More Info' column. Be sure to allow proper access to required AVD URLs. Forced Tunneling to on-premises is not recommended.",
+ "guid": "fc4972cd-3cd2-41bf-9703-6e5e6b4bed3d",
+ "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop",
"services": [
- "AKS"
+ "VNet",
+ "AVD",
+ "NVA",
+ "Firewall"
],
"severity": "Medium",
- "subcategory": "Security",
- "text": "Consider using a service mesh for advanced microservice communication management",
+ "subcategory": "Networking",
+ "text": "Need to control/restrict Internet outbound traffic for AVD hosts?",
"waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Required URLs for AVD control plane access by session hosts are documented here: https://docs.microsoft.com/azure/virtual-desktop/safe-url-list. A check tool is available to verify connectivity from the session hosts: https://docs.microsoft.com/azure/virtual-desktop/safe-url-list#required-url-check-tool. Forced Tunneling to on-premises is not recommended.",
+ "guid": "65c7acbe-45bb-4e60-ad89-f2e87778424d",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/safe-url-list",
"services": [
- "AKS",
- "Monitor"
+ "AVD"
],
"severity": "High",
- "subcategory": "Alerting",
- "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
- "waf": "Operations"
+ "subcategory": "Networking",
+ "text": "Ensure AVD control plane endpoints are accessible",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Consider the usage of Azure Defender Endpoint or similar 3rd-party agents to control user web navigation, see the Security section for more details.",
+ "guid": "73676ae4-6691-4e88-95ad-a42223e13810",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/onboard-windows-multi-session-device?view=o365-worldwide",
"services": [
- "AKS",
- "Entra"
+ "AVD",
+ "Defender"
],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Check regularly Azure Advisor for recommendations on your cluster",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Need to control/restrict Internet outbound traffic only for users on AVD hosts? ",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Custom UDR and NSG can be applied to AVD Host Pool subnets, for example to redirect to Azure Firewall or NVA, or to filter/block network traffic. In this case is recommended to carefully review to ensure optimal path for outbound traffic to AVD control plane is used. Service Tags can now be used with UDR and NSG, then AVD management plane traffic can be easily allowed: https://learn.microsoft.com/azure/virtual-desktop/safe-url-list.",
+ "guid": "523181a9-4174-4158-93ff-7ae7c6d37431",
+ "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop",
"services": [
- "AKS"
+ "VNet",
+ "AVD",
+ "NVA",
+ "Firewall"
],
"severity": "Low",
- "subcategory": "Compliance",
- "text": "Enable AKS auto-certificate rotation",
- "waf": "Operations"
- },
- {
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
- "services": [
- "AKS"
- ],
- "severity": "High",
- "subcategory": "Compliance",
- "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
- "waf": "Operations"
+ "subcategory": "Networking",
+ "text": "Review custom UDR and NSG for AVD Host Pool subnets",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Network traffic from AVD Session Host VMs to AVD control plane should be as direct as possible. Redirecting this traffic through a Proxy or Firewall with deep packet inspection and/or SSL termination could cause serious issues and bad customer experience. It is recommended to bypass Proxy and Firewall just for the AVD control plane. User generated traffic surfing the web instead, should be filtered by Firewall and/or redirected to a Proxy. For details and guidelines, please see the companion article in the 'More Info' column.",
+ "guid": "cc6edca0-aeca-4566-9e92-cf246f1465af",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/proxy-server-support",
"services": [
- "AKS"
+ "VM",
+ "AVD"
],
"severity": "High",
- "subcategory": "Compliance",
- "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
- "waf": "Operations"
+ "subcategory": "Networking",
+ "text": "Do not use Proxy servers, SSL termination and Deep Packet Inspection for AVD control plane traffic",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "It is recommended to assess and review networking bandwidth requirements for users, based on the specific workload type. The referenced article provide general estimations and recommendations, but specific measure are required for proper sizing. ",
+ "guid": "516785c6-fa96-4c96-ad88-408f372734c8",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/rdp-bandwidth",
"services": [
- "AKS"
+ "VM",
+ "AVD"
],
- "severity": "High",
- "subcategory": "Compliance",
- "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Networking",
+ "text": "Check the network bandwidth required for each user and in total for the VM SKU",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If Azure Files SMB share will be used to store user profiles via FSLogix, the usage of Private Endpoint (PE) for private access to the storage is recommended. AVD Session Hosts will access the storage using a private IP in the same VNet, a separate subnet is recommended. This feature has an additional cost that must be evaluated. If PE will not be used, at least Service Endpoint is recommended (no cost associated).",
+ "guid": "ec27d589-9178-426d-8df2-ff60020f30a6",
+ "link": "https://learn.microsoft.com/azure/storage/files/storage-files-networking-endpoints",
"services": [
- "AKS"
+ "PrivateLink",
+ "Storage",
+ "AVD",
+ "VNet",
+ "Cost"
],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Evaluate usage Private Endpoint for Azure Files share",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
+ "category": "Networking",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Connections to Azure Virtual Desktop can use TCP or UDP. RDP Shortpath is a feature of AVD that establishes a direct UDP-based transport between a supported Windows Remote Desktop client and session host. if clients have line of sight to AVD session hosts from internal network (VPN usage is not recommended), this feature can provide lower latency and best performances as explained in https://learn.microsoft.com/azure/virtual-desktop/rdp-shortpath?tabs=managed-networks#key-benefits.",
+ "guid": "b2074747-d01a-4f61-b1aa-92ad793d9ff4",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/shortpath",
"services": [
- "AKS"
+ "VPN",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Consider using AKS command invoke on private clusters",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Evaluate usage of RDP ShortPath for clients connecting from managed internal networks",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Security mechanisms provided by GPO should be used, if available. For example, it is possible to impose desktop screen lock and idle session disconnection time. Existing GPOs applied to on-premises environment should be reviewed and eventually applied also to secure also AVD Hosts when joined to the domain.",
+ "guid": "a135e337-897e-431c-97d6-8cb6a22ac19f",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#establish-maximum-inactive-time-and-disconnection-policies",
"services": [
- "AKS"
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "For planned events consider using Node Auto Drain",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Active Directory",
+ "text": "Review Active Directory GPO to secure RDP sessions",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Microsoft Defender for Endpoint supports Azure Virtual Desktop for Windows 10/11 Enterprise multi-session. Check article for onboarding non-persistent virtual desktop infrastructure (VDI) devices: https://docs.microsoft.com/windows/security/threat-protection/microsoft-defender-atp/configure-endpoints-vdi",
+ "guid": "b1172576-9ef6-4691-a483-5ac932223ece",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/deployment-vdi-microsoft-defender-antivirus",
"services": [
- "AKS"
+ "AVD",
+ "Defender"
],
"severity": "High",
- "subcategory": "Compliance",
- "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
- "waf": "Operations"
+ "subcategory": "Host Configuration",
+ "text": "Ensure anti-virus and anti-malware solutions are used",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Disks in Azure are already encrypted at rest by default with Microsoft managed keys. Host VM OS disk encryption is possible and supported using Azure Disk Encryption (ADE - BitLocker) and Disk Encryption Set (DES - Server Side Encryption), the latter is recommended. Encryption of FSLogix storage using Azure Files can be done using SSE on Azure Storage. For OneDrive encryption, see this article: https://docs.microsoft.com/compliance/assurance/assurance-encryption-for-microsoft-365-services.",
+ "guid": "0fd32907-98bc-4178-adc5-a06ca7144351",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disk-encryption-overview",
"services": [
- "AKS"
+ "AKV",
+ "Storage",
+ "VM",
+ "AVD"
],
"severity": "Low",
- "subcategory": "Compliance",
- "text": "Use custom Node RG (aka 'Infra RG') name",
- "waf": "Operations"
+ "subcategory": "Host Configuration",
+ "text": "Assess disk encryption requirements for AVD Session Hosts",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Trusted launch are Gen2 Azure VMs with enhanced security features aimed to protect against bottom of the stack threats through attack vectors such as rootkits, boot kits, and kernel-level malware. Recommended to enable and leverage Secure Boot, Virtual TPM (vTPM) and Integrity Monitoring.",
+ "guid": "36a5a67f-bb9e-4d5b-9547-8c4479816b28",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#azure-virtual-desktop-support-for-trusted-launch",
"services": [
- "AKS"
+ "VM",
+ "AVD",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": "Compliance",
- "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
- "waf": "Operations"
- },
- {
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "services": [
- "AKS"
- ],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Taint Windows nodes",
- "waf": "Operations"
- },
- {
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "services": [
- "AKS"
- ],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Keep windows containers patch level in sync with host patch level",
- "waf": "Operations"
+ "subcategory": "Host Configuration",
+ "text": "Enable Trusted launch in Azure Gen2 VM Session Hosts",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "description": "Via Diagnostic Settings at the cluster level",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Trusted Launch and Gen2 VM are not only security and performance enhancing features but also system requirements for Windows 11. When building an AVD environment based on Windows 11, it is essential to enable these features.",
+ "guid": "135d3899-4b31-44d3-bc8f-028871a359d8",
+ "link": "https://learn.microsoft.com/windows/whats-new/windows-11-requirements",
"services": [
- "AKS",
- "Monitor"
+ "VM",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Compliance",
- "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Host Configuration",
+ "text": "Enable Trusted Launch and use Gen2 image are system requirements for Windows 11",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Displayed content will be automatically blocked or hidden in screenshots. Keep in mind screen sharing will also be blocked when using Teams or other collaboration software which use screen sharing.",
+ "guid": "a49dc137-7896-4343-b2bc-1a31bf1d30b6",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/screen-capture-protection",
"services": [
- "AKS"
+ "AVD"
],
"severity": "Low",
- "subcategory": "Compliance",
- "text": "If required use nodePool snapshots",
- "waf": "Cost"
+ "subcategory": "Host Configuration",
+ "text": "Consider enabling screen capture protection to prevent sensitive information from being captured",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If not absolutely required, redirecting drives, printers, and USB devices to a user's local device in a remote desktop session should be disabled or highly restricted. Restrict Windows Explorer access by hiding local and remote drive mappings is also a secure measure to adopt preventing users from discovering unwanted information about system configuration and users.",
+ "guid": "7ce2cd20-85b4-4f82-828e-6558736ede6a",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#other-security-tips-for-session-hosts",
"services": [
- "AKS",
- "Cost"
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Cost",
- "text": "Consider spot node pools for non time-sensitive workloads",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Host Configuration",
+ "text": "Restrict device redirection and drive mapping",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "When choosing a deployment model, you can either provide remote users access to entire virtual desktops or only select applications. Remote applications, or RemoteApps, provide a seamless experience as the user works with apps on their virtual desktop. RemoteApps reduce risk by only letting the user work with a subset of the remote machine exposed by the application.",
+ "guid": "4e25d70e-3924-44f4-b66f-d6cdd4f4a973",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/web-protection-overview",
"services": [
- "AKS",
- "Cost"
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Cost",
- "text": "Consider AKS virtual node for quick bursting",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "When possible, prefer Remote Apps over Full Desktops (DAG)",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Web content filtering feature provided by Web Protection capability in Microsoft Defender for Endpoint, can be used to to control user web navigation. If this tool is used, configuration of web filtering for user Internet browsing is recommended. Access by the Guest OS system to required AVD control plane URLs must be guaranteed.",
+ "guid": "e19dd344-29eb-4722-a237-a151c5bb4e4f",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/web-protection-overview",
"services": [
- "AKS",
- "Monitor"
+ "AVD",
+ "Defender"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Need to control/restrict user Internet navigation from AVD session hosts?",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "We recommend you don't grant your users admin access to virtual desktops. If you need software packages, we recommend you make them available through configuration management utilities.",
+ "guid": "a0cdb3b5-4eb2-4eb0-9dda-a3592718e2ed",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/security-guide",
"services": [
- "AKS",
- "Monitor"
+ "AVD"
],
"severity": "High",
- "subcategory": "Monitoring",
- "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
- "waf": "Operations"
+ "subcategory": "Management",
+ "text": "Ensure AVD users will not have local administrator privileges on AVD Hosts",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "We recommend you enable Defender for Cloud for the subscriptions, virtual machines, key vaults, and storage accounts used by AVD. With this tool is possible to assess and manage vulnerabilities, assess compliance with common frameworks like PCI, strengthen the overall security of your AVD environment and measure it over time using 'Secure Score': https://learn.microsoft.com/azure/virtual-desktop/security-guide#improve-your-secure-score.",
+ "guid": "1814387e-5ca9-4c26-a9b3-2ab5bdfc6998",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#enable-microsoft-defender-for-cloud",
"services": [
- "AKS",
- "Monitor"
+ "AKV",
+ "Storage",
+ "Defender",
+ "VM",
+ "AVD",
+ "Subscriptions"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Monitor CPU and memory utilization of the nodes",
- "waf": "Operations"
+ "subcategory": "Management",
+ "text": "Enable Microsoft Defender for Cloud to manage AVD Session Hosts security posture",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Enabling audit log collection lets you view user and admin activity related to Azure Virtual Desktop and store in a central repository like Log Analytics workspace. ",
+ "guid": "a0916a76-4980-4ad0-b278-ee293c1bc352",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#collect-audit-logs",
"services": [
- "AKS",
+ "Entra",
+ "AVD",
"Monitor"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
- "waf": "Operations"
+ "subcategory": "Management",
+ "text": "Enable diagnostic and audit logging",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Assign the least privilege required by defining administrative, operations, and engineering roles to Azure RBAC roles. To limit access to high privilege roles within your Azure Virtual Desktop landing zone, consider integration with Azure Privileged Identity Management (PIM). Maintaining knowledge of which team is responsible for each particular administrative area helps you determine Azure role-based access control (RBAC) roles and configuration.",
+ "guid": "baaab757-1849-4ab8-893d-c9fc9d1bb73b",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/rbac",
"services": [
- "EventHubs",
- "Storage",
- "AKS",
- "ServiceBus",
- "Monitor"
+ "Entra",
+ "RBAC",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Monitor OS disk queue depth in nodes",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Assess the requirement to use custom RBAC roles for AVD management",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "AVD users should not have permission to install application. If required, Windows Defender Application Control (WDAC) can be used to control which drivers and applications are allowed to run on their Windows clients. ",
+ "guid": "b9ea80c8-0628-49fc-ae63-125aa4c0a284",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#windows-defender-application-control",
"services": [
- "AKS",
- "Monitor",
- "NVA",
- "LoadBalancer"
+ "AVD",
+ "Defender"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
- "waf": "Operations"
+ "subcategory": "Management",
+ "text": "Restrict users from installing un-authorized applications",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Enabling MFA and CA lets you manage risks before you grant users access to your AVD environment. When deciding which users to grant access to, we recommend you also consider who the user is, how they sign in, and which device they're using. Additional details and configuration procedures are provided in the companion article. Microsoft Entra ID is the new name for Azure Active Directory (Azure AD).",
+ "guid": "916d697d-8ead-4ed2-9bdd-186f1ac252b9",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/set-up-mfa",
"services": [
- "AKS",
- "Monitor"
+ "Entra",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Subscribe to resource health notifications for your AKS cluster",
- "waf": "Operations"
+ "subcategory": "Microsoft Entra ID",
+ "text": "Evaluate the usage of Multi-Factor Authentication (MFA) and Conditional Access (CA) for AVD users",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "category": "Security",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If Zero Trust is a requirement, review the companion article in the 'More Info' column. It provides steps to apply the principles of Zero Trust to an Azure Virtual Desktop deployment.",
+ "guid": "221102d0-90af-49fc-b2b7-8d3fe397e43",
+ "link": "https://learn.microsoft.com/security/zero-trust/azure-infrastructure-avd",
"services": [
- "AKS"
+ "AVD"
],
- "severity": "High",
- "subcategory": "Resources",
- "text": "Configure requests and limits in your pod specs",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Zero Trust",
+ "text": "Review and Apply Zero Trust principles and guidance",
+ "waf": "Security"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If used, make sure to check the list of best practices and recommendations described in the referenced article.",
+ "guid": "9164e990-9ae2-48c8-9c33-b6b7808bafe6",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/fslogix-containers-azure-files#best-practices-for-azure-virtual-desktop",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Resources",
- "text": "Enforce resource quotas for namespaces",
- "waf": "Operations"
+ "subcategory": "Azure Files",
+ "text": "Check best-practices for Azure Files",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "SMB Multichannel enables clients to use multiple network connections that provide increased performance while lowering the cost of ownership. Increased performance is achieved through bandwidth aggregation over multiple NICs and utilizing Receive Side Scaling (RSS) support for NICs to distribute the IO load across multiple CPUs.",
+ "guid": "5784b6ca-5e9e-4bcf-8b54-c95459ea7369",
+ "link": "https://learn.microsoft.com/azure/storage/files/storage-files-smb-multichannel-performance",
"services": [
- "AKS",
- "Subscriptions"
+ "Storage",
+ "Cost",
+ "AVD",
+ "ACR"
],
- "severity": "High",
- "subcategory": "Resources",
- "text": "Ensure your subscription has enough quota to scale out your nodepools",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Azure Files",
+ "text": "Enable SMB multichannel when using a premium file share to host FSLogix profile containers.",
+ "waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
- "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "If a second region is required for DR purposes verify NetApp availability in there as well.",
+ "guid": "4a359836-ee79-4d6c-9d3a-364a5b7abae3",
+ "link": "https://azure.microsoft.com/global-infrastructure/services/",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
- "severity": "High",
- "subcategory": "Resources",
- "text": "Configure Liveness and Readiness probes for all deployments",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Azure NetApp Files",
+ "text": "If NetApp Files storage is required, check storage service availability in your specific region.",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "CA option is a recommended setting in the FSLogix scenario, as it enables a more resilient SMB session between the Session Host and NetApp Files.",
+ "guid": "a2661898-866a-4c8d-9d1f-8cfc86e88024",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/create-fslogix-profile-container",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Scalability",
- "text": "Use the Cluster Autoscaler",
- "waf": "Performance"
+ "subcategory": "Azure NetApp Files",
+ "text": "If NetApp Files storage is used enable CA (Continuous Availability) option to increase resiliency",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "An Active Directory Site should be created for the Azure virtual network environment where Azure NetApp Files (ANF) subnet will be created, and that site name should be specified in the ANF connection property when executing the join procedure as explained in the reference article.",
+ "guid": "6647e977-db49-48a8-bc35-743f17499d42",
+ "link": "https://docs.microsoft.com/azure/azure-netapp-files/create-active-directory-connections",
"services": [
- "AKS"
+ "Storage",
+ "VNet",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "Customize node configuration for AKS node pools",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Azure NetApp Files",
+ "text": "If Azure NetApp Files storage is used, check Active Directory Site name setting in the Active Directory Connection configuration",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Possible options: Standard HDD, Standard SSD, or Premium SSD. Ephemeral disks are not supported, Ultra-Disks not recommended. Recommended to evaluate Premium for OS disk if user density is not low, and if Cloud Cache will be used. ",
+ "guid": "3611c818-b0a0-4bc5-80e4-3a18a9cd289c",
+ "link": "https://docs.microsoft.com/azure/virtual-machines/disks-types",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Scalability",
- "text": "Use the Horizontal Pod Autoscaler when required",
+ "subcategory": "Capacity Planning",
+ "text": "Determine which type of managed disk will be used for the Session Hosts",
"waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Possible options are: Azure NetApp Files, Azure Files, VM based File Server. File-server it is not recommended. Azure Files Premium typically a good starting point. NetApp usually required for large scale / high-performant environment. For a detailed comparison see the article in the 'More Info' column.",
+ "guid": "ed6b17db-8255-4462-b2ae-e4553afc8339",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/store-fslogix-profile",
"services": [
- "AKS"
+ "Storage",
+ "VM",
+ "AVD"
],
"severity": "High",
- "subcategory": "Scalability",
- "text": "Consider an appropriate node size, not too large or too small",
+ "subcategory": "Capacity Planning",
+ "text": "Determine which storage backend solution will be used for FSLogix Profiles",
"waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Every Host Pool should use a separate set of storage accounts/volumes (at least one) and shares. Users should have a different profile for each Host Pool since settings and configurations are specific to each Host Pool. Additionally, accessing different Host Pools at the same time can cause errors on the shared user profile VHD/X. Usage of different storage accounts/volumes for multiple shares is also recommended to scale independently.",
+ "guid": "2fad62bd-5004-453c-ace4-64d862e7f5a4",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/store-fslogix-profile",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "Do not share storage and profiles between different Host Pools",
"waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "As a starting point for estimating profile container storage performance requirements we recommend to assume 10 IOPS per user in the steady state and 50 IOPS per user during sign-in/sign-out. Space requirements is simply obtained based on the maximum profiles size in FSLogix per the total number of users for each Host Pool. Multiple storage accounts can be used for the same Host Pool if required.",
+ "guid": "680e7828-9c93-4665-9d02-bff4564b0d93",
+ "link": "https://learn.microsoft.com/azure/virtual-desktop/faq#what-s-the-largest-profile-size-fslogix-can-handle-",
"services": [
- "AKS"
+ "Storage",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "Consider subscribing to EventGrid Events for AKS automation",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "Verify storage scalability limits and Host Pool requirements",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Avoid introducing additional latency and costs associated with cross-region network traffic where possible.",
+ "guid": "8aad53cc-79e2-4e86-9673-57c549675c5e",
+ "link": "https://docs.microsoft.com/azure/virtual-desktop/fslogix-containers-azure-files",
"services": [
- "AKS"
+ "Storage",
+ "Cost",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "For long running operation on an AKS cluster consider event termination",
+ "severity": "High",
+ "subcategory": "Capacity Planning",
+ "text": "For optimal performance, the storage solution and the FSLogix profile container should be in the same Azure region.",
"waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "The recommendation in Azure Virtual Desktop is to use Profile Container without Office Container (ODFC) split unless you are planning for specific Business Continuity and Disaster Recovery (BCDR) scenarios as described in the Disaster Recovery section below. https://docs.microsoft.com/fslogix/profile-container-office-container-cncpt ",
+ "guid": "df47d2d9-2881-4b1c-b5d1-e54a29759e39",
+ "link": "https://learn.microsoft.com/fslogix/concepts-container-types#when-to-use-profile-and-odfc-containers",
"services": [
- "AKS"
+ "Storage",
+ "ASR",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "FSLogix",
+ "text": "Do not use Office Containers (ODFC) if not strictly required and justified",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Make sure to configure the following antivirus exclusions for FSLogix Profile Container virtual hard drives, as documented in the referenced article in the 'More Info' column.",
+ "guid": "83f63047-22ee-479d-9b5c-3632054b69ba",
+ "link": "https://learn.microsoft.com/fslogix/overview-prerequisites#configure-antivirus-file-and-folder-exclusions",
"services": [
- "AKS",
- "Storage"
+ "Storage",
+ "AVD"
+ ],
+ "severity": "Medium",
+ "subcategory": "FSLogix",
+ "text": "Configure the recommended antivirus exclusions for FSLogix (includes not scanning VHD(x) files on connect).",
+ "waf": "Security"
+ },
+ {
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Profile containers have a default max size of 30GB. If large Profile Containers are anticipated, and customers wants to try to keep them small, consider using OneDrive to host Office 365 files outside the FSLogix profile.",
+ "guid": "01e6a84d-e5df-443d-8992-481718d5d1e5",
+ "link": "https://docs.microsoft.com/fslogix/profile-container-configuration-reference",
+ "services": [
+ "Storage",
+ "AVD"
],
"severity": "High",
- "subcategory": "Storage",
- "text": "Use ephemeral OS disks",
- "waf": "Performance"
+ "subcategory": "FSLogix",
+ "text": "Review and confirm configured maximum profile size in FSLogix",
+ "waf": "Cost"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Defaults and recommended settings are reported in the companion article in the 'More Info' column. If not recommended keys and/or values must be used, be sure to review with a Microsoft AVD expert and clearly document your choices.",
+ "guid": "d34aad5e-8c78-4e1d-9666-7313c405674c",
+ "link": "https://learn.microsoft.com/fslogix/concepts-configuration-examples",
"services": [
- "AKS",
- "Storage"
+ "AKV",
+ "Storage",
+ "AVD",
+ "ACR"
],
"severity": "High",
- "subcategory": "Storage",
- "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
- "waf": "Performance"
+ "subcategory": "FSLogix",
+ "text": "Review FSLogix registry keys and determine which ones to apply",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Concurrent or multiple connections are not recommended in Azure Virtual Desktop. Concurrent connections are also not supported by Session Hosts running in an Azure Virtual Desktop Host Pool. OneDrive, if used, doesn't support concurrent or multiple connections using the same container, under any circumstance. For multiple connections, usage of the same profile disk is not recommended.",
+ "guid": "5e985b85-9c77-43e7-b261-623b775a917e",
+ "link": "https://learn.microsoft.com/fslogix/concepts-multi-concurrent-connections",
"services": [
- "AKS",
- "Storage"
+ "Storage",
+ "AVD"
],
- "severity": "Low",
- "subcategory": "Storage",
- "text": "For hyper performance storage option use Ultra Disks on AKS",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "FSLogix",
+ "text": "Avoid usage of concurrent or multiple connections",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "Cloud Cache uses OS drive as local cache storage and may generate lot of pressure on the VM disk. Depending on the VM SKU and size used, the VM temporary drive can be a viable and performant solution where to relocate Cloud Cache cached content. Before adopting this solution, tests should be executed to confirm performance and stability. More details on Cloud Cache can be found here: https://learn.microsoft.com/fslogix/concepts-fslogix-cloud-cache. ",
+ "guid": "b2d1215a-e114-4ba3-9df5-85ecdcd9bd3b",
+ "link": "https://docs.microsoft.com/fslogix/cloud-cache-configuration-reference",
"services": [
- "AKS",
- "SQL",
- "Storage"
+ "Storage",
+ "VM",
+ "AVD"
],
- "severity": "Medium",
- "subcategory": "Storage",
- "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
+ "severity": "Low",
+ "subcategory": "FSLogix",
+ "text": "If FSLogix Cloud Cache is used, consider moving the cache directory to the VM temporary drive.",
"waf": "Performance"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "category": "Storage",
+ "checklist": "Azure Virtual Desktop Review",
+ "description": "REDIRECTION.XML file is used to control what folders are redirected out of the profile container to the 'C:' drive. Exclusions should be the exception and should never be used unless the specific exclusion is completely understood by the person configuring the exclusion. Exclusions should always be fully tested in the environment where they are intended to be implemented. Configuring exclusions may impact functionality, stability and performance.",
+ "guid": "0b50ca97-b1d2-473c-b4d9-6e98b0f912de",
+ "link": "https://docs.microsoft.com/fslogix/manage-profile-content-cncpt#redirectionsxml",
"services": [
- "AKS",
- "Storage"
+ "Storage",
+ "AVD"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
- "waf": "Performance"
+ "subcategory": "FSLogix",
+ "text": "Review the usage of FSLogix redirection.",
+ "waf": "Cost"
},
{
- "category": "Operations",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
"services": [
- "AKS",
- "Storage"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "Storage",
- "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
- "waf": "Performance"
- },
- {
- "category": "Application Deployment",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "services": [],
- "severity": "Medium",
- "subcategory": "DevOps",
- "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
+ "subcategory": "Entra ID",
+ "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"services": [
- "ASR",
- "TrafficManager",
- "FrontDoor"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
+ "subcategory": "AAD B2C",
+ "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
"services": [
- "ACR"
+ "Entra"
],
"severity": "Medium",
- "subcategory": "High Availability",
- "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.",
- "waf": "Reliability"
+ "subcategory": "AAD B2C",
+ "text": "Custom brand assets should be hosted on a CDN",
+ "waf": "Performance"
},
{
- "category": "BC and DR",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
- "services": [],
- "severity": "Medium",
- "subcategory": "High Availability",
- "text": "Use more than 1 app instance for your apps",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
+ "services": [
+ "Entra"
+ ],
+ "severity": "Low",
+ "subcategory": "AAD B2C",
+ "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"services": [
- "Monitor"
+ "Entra",
+ "VM"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
+ "subcategory": "Windows Server AD",
+ "text": "Follow VM rules for high availability on the VM level (premium disks, two or more in a region, in different availability zones)",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "services": [
+ "Entra"
+ ],
"severity": "Medium",
- "subcategory": "Scalability",
- "text": "Set up autoscaling in Spring Cloud Gateway",
- "waf": "Reliability"
- },
- {
- "category": "Operations",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
- "services": [],
- "severity": "Low",
- "subcategory": "Scalability",
- "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
+ "subcategory": "Windows Server AD",
+ "text": "Don't replicate! Replication can create issues with directory synchronization",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "services": [
+ "Entra"
+ ],
"severity": "Medium",
- "subcategory": "Support",
- "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Select the right Function hosting plan based on your business & SLO requirements",
+ "subcategory": "Windows Server AD",
+ "text": "Have active-active for multi-regions",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "services": [
+ "Entra"
+ ],
+ "severity": "Medium",
+ "subcategory": "Entra Domain Services",
+ "text": "Add Azure AD Domain service stamps to additional regions and locations",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "services": [
+ "Entra"
+ ],
"severity": "Medium",
- "subcategory": "High Availability",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "subcategory": "Entra Domain Services",
+ "text": "Use Replica Sets for DR",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
+ "service": "CosmosDB",
"services": [
- "AppSvc"
+ "CosmosDB"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "severity": "Medium",
+ "subcategory": "Best Practices",
+ "text": "FTA Resiliency Playbook",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
"services": [
- "AppSvc"
+ "CosmosDB"
],
"severity": "High",
"subcategory": "High Availability",
- "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
+ "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
+ "service": "CosmosDB",
"services": [
- "Storage"
+ "CosmosDB"
],
"severity": "Medium",
"subcategory": "High Availability",
- "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
+ "text": "Run multiple replicas of the database (>1 ) in Prod",
"waf": "Reliability"
},
{
- "category": "Application Deployment",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
- "services": [],
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
+ "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
+ "service": "CosmosDB",
+ "services": [
+ "CosmosDB",
+ "ACR"
+ ],
"severity": "Medium",
- "subcategory": "CI/CD",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
- "waf": "Operations"
- },
- {
- "category": "BC and DR",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
- },
- {
- "category": "BC and DR",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
- "services": [],
- "severity": "High",
"subcategory": "High Availability",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "text": "Leverage Multi-Region Writes",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "services": [],
- "severity": "High",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Span Cosmos account across two or more regions with multi-region writes",
+ "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
+ "services": [
+ "CosmosDB",
+ "ACR"
+ ],
+ "severity": "Medium",
"subcategory": "High Availability",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "Distribute your data globally",
"waf": "Reliability"
},
{
- "category": "BC and DR",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
+ "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
+ "service": "CosmosDB",
"services": [
- "AppSvc"
+ "CosmosDB"
],
"severity": "High",
"subcategory": "High Availability",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "text": "Choose from several well-defined consistency models",
"waf": "Reliability"
},
{
- "category": "Application Deployment",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
- "services": [],
- "severity": "Medium",
- "subcategory": "CI/CD",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
- "waf": "Operations"
- },
- {
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "9f519499-5820-4060-88fe-cab4538c9dd0",
- "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements",
- "services": [
- "Storage"
- ],
- "severity": "Medium",
- "subcategory": "Physical",
- "text": "All planned storage pools should use direct-attached storage (SATA, SAS, NVMe)",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "f7c015e0-7d97-4283-b006-567afeb2b5ca",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/drive-symmetry-considerations#understand-capacity-imbalance",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
+ "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
+ "service": "CosmosDB",
"services": [
- "Storage",
- "ACR"
+ "CosmosDB"
],
"severity": "Medium",
- "subcategory": "Physical",
- "text": "Disks are symmetrical across all nodes",
- "waf": "Performance"
+ "subcategory": "High Availability",
+ "text": "Enable Service managed failover",
+ "waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "f785b143-2c1e-4466-9baa-dde8ba4c7aaa",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/fault-tolerance#parity",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
+ "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
+ "service": "CosmosDB",
"services": [
- "Storage",
- "Backup"
+ "Backup",
+ "CosmosDB",
+ "Storage"
],
"severity": "Medium",
- "subcategory": "S2D",
- "text": "Parity type disk redundancy should only be used for low I/O volumes (backup/archive)",
- "waf": "Performance"
+ "subcategory": "Backup Strategy",
+ "text": "Enable Automatic Backups",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "8a705965-9840-43cc-93b3-06d089406bb4",
- "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/storage-spaces-direct-hardware-requirements#physical-deployments",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
+ "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
+ "service": "CosmosDB",
"services": [
- "Storage"
+ "Backup",
+ "CosmosDB"
],
"severity": "Medium",
- "subcategory": "S2D",
- "text": "Ensure there at least 2 capacity disks with available capacity in the Storage Pool",
+ "subcategory": "Backup Strategy",
+ "text": "Perform Periodic Backups",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "2a4f629a-d623-4610-a8e3-d6fd66057d8e",
- "link": "https://learn.microsoft.com/windows-server/storage/storage-spaces/delimit-volume-allocation",
+ "category": "Operations Management",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
+ "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
+ "service": "CosmosDB",
"services": [
- "Storage"
+ "Backup",
+ "CosmosDB"
],
- "severity": "Low",
- "subcategory": "S2D",
- "text": "'Delimited allocation' has been considered to improve volume resiliency in a multi-node failure",
+ "severity": "Medium",
+ "subcategory": "Backup Strategy",
+ "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
"waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "960eb9be-1f0f-4fc1-9b31-fcf1cf9e34e6",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/plan-volumes#choosing-how-many-volumes-to-create",
+ "category": "Automation",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"services": [
- "Storage"
+ "SAP"
],
"severity": "Medium",
- "subcategory": "S2D",
- "text": "CSVs are created in multiples of node count",
- "waf": "Performance"
+ "subcategory": "ACSS",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "859ba2b9-a3a8-4ca1-bb61-165effbf1c03",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/cache",
+ "category": "Automation",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"services": [
- "Storage"
+ "SAP"
],
"severity": "Medium",
- "subcategory": "S2D",
- "text": "If a cache tier is implemented, the number of capacity drives is a multiple of the number of cache drives",
- "waf": "Performance"
+ "subcategory": "SDAF",
+ "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.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "Operations"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "d8a65f05-db06-461d-81dc-7899ad3f8f1e",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/plan-volumes#reserve-capacity",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
"services": [
- "Storage"
+ "Backup",
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "S2D",
- "text": "A minimum of 1 type of each disk type per node has been factored as a reserve disk",
+ "subcategory": "Backup and restore",
+ "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",
"waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "description": "VMFleet is a tool that can be used to measure the performance of a storage subsystem, best used to baseline performance prior to workload deployment",
- "guid": "9d138f1d-5363-476e-bbd7-acfa500bdc0c",
- "link": "https://github.com/microsoft/diskspd/wiki/VMFleet",
- "services": [
- "Storage"
- ],
- "severity": "Low",
- "subcategory": "S2D",
- "text": "VMFleet has been run prior to workload deployment to baseline storage performance",
- "waf": "Performance"
- },
- {
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "13c12e2a-c938-4dd1-9223-507d5e17f9c5",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"services": [
- "Storage"
+ "Backup",
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Host OS",
- "text": "OS drives use a dedicated storage controller",
+ "subcategory": "Disaster recovery",
+ "text": "Test the backup and recovery times to verify that they meet your RTO requirements for restoring all systems simultaneously after a disaster.",
"waf": "Reliability"
},
{
- "category": "Storage",
- "checklist": "Azure Stack HCI Review",
- "guid": "a631e7dc-8879-45bd-b0a7-e5927b805428",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/use-csv-cache",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
"services": [
- "Storage"
+ "Backup",
+ "SQL",
+ "Storage",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Host OS",
- "text": "CSV in-memory read caching is enabled and properly configured",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Disaster recovery",
+ "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.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "c062cd9a-f1db-4f83-aab3-9cb03f56c140",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/host-network-requirements#switch-embedded-teaming-set",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"services": [
- "ACR"
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Host",
- "text": "NICs are symmetrical across nodes",
+ "subcategory": "Disaster recovery",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "ea8054db-a558-4533-80c8-5d9cf447ba19",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
"services": [
- "Storage"
+ "VPN",
+ "ASR",
+ "ExpressRoute",
+ "SAP"
],
"severity": "High",
- "subcategory": "Host",
- "text": "Storage networking is redundant",
- "waf": "Reliability"
- },
- {
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "15d976c5-e267-49a1-8b00-62010bfa5188",
- "link": "https://learn.microsoft.com/azure-stack/hci/deploy/network-atc",
- "services": [],
- "severity": "Medium",
- "subcategory": "Host",
- "text": "Host networking configuration is managed by Network ATC and intents are healthy",
+ "subcategory": "Disaster recovery",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "676c53ad-b29a-4de1-9d03-d7d2674405b8",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/network-hud-overview",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "services": [
+ "AKV",
+ "ACR",
+ "ASR",
+ "SAP"
+ ],
"severity": "Low",
- "subcategory": "Host",
- "text": "Network HUD has been configured",
+ "subcategory": "Disaster recovery",
+ "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "8f6d58d9-6c1a-4ec1-b2d7-b2c6ba8f3949",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/host-network-requirements",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"services": [
- "Storage",
- "VNet"
+ "VNet",
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Host",
- "text": "Storage NICs are assigned static IP addresses on separate subnets and VLANs",
+ "subcategory": "Disaster recovery",
+ "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.",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "824e53ec-953e-40c2-a6b8-52970b5b0f74",
- "link": "https://learn.microsoft.com/azure-stack/hci/plan/two-node-switched-converged",
- "services": [],
- "severity": "Medium",
- "subcategory": "Host",
- "text": "For switchless designs, dual link full mesh connectivity has been implemented",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "services": [
+ "Storage",
+ "ASR",
+ "SAP"
+ ],
+ "severity": "Low",
+ "subcategory": "Disaster recovery",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "dbc85d0e-0ebd-4589-a789-0fa8ceb1d0f0",
- "link": "https://learn.microsoft.com/azure-stack/hci/concepts/physical-network-requirements#using-switchless",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"services": [
- "Storage"
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Host",
- "text": "If the cluster is made up of more than 3 nodes, a switched storage network has been implemented",
+ "severity": "High",
+ "subcategory": "Disaster recovery",
+ "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "603c6d71-59d2-419c-a312-8edc6e799c6a",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
"services": [
- "Storage"
+ "ASR",
+ "VNet",
+ "SAP"
],
"severity": "High",
- "subcategory": "Host",
- "text": "RDMA is enabled on the Storage networking",
- "waf": "Performance"
+ "subcategory": "Disaster recovery",
+ "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "9e260eae-bca1-4827-a259-76ee63fda8d6",
- "link": "https://github.com/microsoft/SDN/blob/master/Diagnostics/Test-Rdma.ps1",
- "services": [],
- "severity": "Medium",
- "subcategory": "Host",
- "text": "Test-RDMA.ps1 has been run to validate the RDMA configuration",
- "waf": "Performance"
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "ASR",
+ "VM",
+ "SAP"
+ ],
+ "severity": "High",
+ "subcategory": "Disaster recovery",
+ "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).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "description": "This ensures that Management traffic is not exposed to the VM traffic",
- "guid": "abc85d0e-0ebd-4589-a777-0fa8ceb1d0f0",
- "link": "",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"services": [
- "VM"
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Host",
- "text": "If a VMSwitch is shared for Compute and Management traffic, require that Management traffic is tagged with a VLAN ID",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "description": "This ensures you have at least 3 NCs active at all times during NC upgrades.",
- "guid": "eb36f5f4-0fa7-4a2c-85f3-1b1c7c7817c0",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
"services": [
- "VM"
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "SDN",
- "text": "There are at least 3 Network Controller VMs deployed",
+ "severity": "High",
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "8bc78c85-6028-4a43-af2d-082a0a344909",
- "link": "https://learn.microsoft.com/windows-server/networking/sdn/manage/update-backup-restore",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"services": [
- "Backup"
+ "Storage",
+ "VM",
+ "ASR",
+ "SAP"
],
"severity": "High",
- "subcategory": "SDN",
- "text": "Backups of SDN infrastructure are configured and tested",
- "waf": "Operations"
+ "subcategory": "High availability",
+ "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "51eaa4b6-b9a7-43e1-a7dc-634d3107bc6d",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
"services": [
- "Monitor"
+ "Storage",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Cluster",
- "text": "SCOM Managed Instance has been considered for more complex monitoring and alerting scenarios",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "831f5aca-99ef-41e7-8263-9509f5093b43",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/setup-hci-system-alerts",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
"services": [
- "Monitor"
+ "ASR",
+ "SAP"
],
"severity": "High",
- "subcategory": "Cluster",
- "text": "Alerts have been configured for the cluster, either using Azure Monitor, SCOM, or a third-party solution",
- "waf": "Operations"
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "f95d0e7e-9f61-476d-bf65-59f2454d1d39",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/monitor-hci-single?tabs=22h2-and-later",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
"services": [
- "Monitor"
+ "LoadBalancer",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Cluster",
- "text": "Insights has been enabled at the cluster level and all nodes are reporting data",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "f4250fcb-ff53-40c9-b304-3560464fd90c",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/monitor-hci-single?tabs=22h2-and-later",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
"services": [
- "Monitor"
+ "LoadBalancer",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Cluster",
- "text": "Azure Monitoring Agent has been deployed to hosts and an appropriate Data Collection Rule has been configured",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "text": "Make sure the Floating IP is enabled on the Load balancer",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "6143af1d-0d1a-4163-b1c9-662f7459bb98",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
"services": [
- "Monitor"
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Hardware",
- "text": "Relevant hardware monitoring has been configured",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Management and Monitoring",
- "checklist": "Azure Stack HCI Review",
- "guid": "9cbdf225-549a-41cf-9c97-794766a6f2b0",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/health-service-overview",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
"services": [
- "Monitor"
+ "Entra",
+ "ASR",
+ "VM",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Hardware",
- "text": "Relevant hardware alerting has been configured",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "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.",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "c0da5bbd-0f0d-4a26-98ec-38c9cc42b323",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"services": [
- "VM"
+ "Entra",
+ "ASR",
+ "VM",
+ "RBAC",
+ "SAP"
],
- "severity": "Low",
- "subcategory": "VM Management - Resource Bridge",
- "text": "The Azure CLI has been installed on every node to enable RB management from WAC",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "High availability",
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "a8ecf23c-c048-4fa9-b87b-51ebfb409863",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"services": [
- "VM"
+ "ASR",
+ "SAP"
],
- "severity": "Low",
- "subcategory": "VM Management - Resource Bridge",
- "text": "DHCP is available in the cluster to support Guest Configuration at VM deployment from Azure",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "High availability",
+ "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Reliability"
},
{
- "category": "Backup and Disaster Recovery",
- "checklist": "Azure Stack HCI Review",
- "guid": "074541e3-fe08-458a-8062-32d13dcc10c6",
- "link": "https://learn.microsoft.com/azure/backup/back-up-azure-stack-hyperconverged-infrastructure-virtual-machines",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"services": [
+ "ASR",
"VM",
- "Backup",
- "ASR"
+ "SAP"
],
"severity": "High",
- "subcategory": "VM",
- "text": "Backups of HCI VMs have been configured using MABS or a third-party solution",
- "waf": "Operations"
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "48f7ae57-1035-4101-8a38-fbe163d03e8a",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "ASR",
+ "SAP"
+ ],
"severity": "High",
- "subcategory": "Cluster Configuration",
- "text": "Cluster configuration or a configuration script has been documented and maintained",
- "waf": "Operations"
+ "subcategory": "High availability",
+ "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.",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "f2a6a19a-ffe6-444d-badb-cb336c8e7b50",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/witness",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "services": [
+ "ACR",
+ "ASR",
+ "SAP"
+ ],
"severity": "High",
- "subcategory": "Cluster Configuration",
- "text": "A cluster witness has been configured for clusters with less than 5 nodes",
+ "subcategory": "High availability",
+ "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "a47339fe-62c5-44a0-bb83-3d46ef16292f",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/update-cluster",
- "services": [],
- "severity": "Medium",
- "subcategory": "Cluster Configuration",
- "text": "Cluster-Aware Updating has been configured for Windows and hardware updates (if available)",
- "waf": "Operations"
- },
- {
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "7f1d6fe8-3079-44ea-8ea6-14494d1aa470",
- "link": "https://learn.microsoft.com/azure-stack/hci/deploy/validate",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "ASR",
+ "SAP"
+ ],
"severity": "High",
- "subcategory": "Cluster Configuration",
- "text": "Cluster validation has been run against the configured cluster",
+ "subcategory": "High availability",
+ "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "81693af0-5638-4aa2-a153-1d6189df30a7",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-benefits",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"services": [
- "VM"
+ "Entra",
+ "ASR",
+ "VM",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Cluster Configuration",
- "text": "Azure Benefits has been enabled at the cluster and VM levels",
- "waf": "Cost"
+ "subcategory": "High availability",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "8c967ee8-8170-4537-a28d-33431cd3632a",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/use-environment-checker",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "services": [
+ "Storage",
+ "VM",
+ "ASR",
+ "SAP"
+ ],
"severity": "Medium",
- "subcategory": "Cluster Configuration",
- "text": "The Environment Checker module has been run to validate the environment",
+ "subcategory": "High availability",
+ "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "43ffbfab-766e-4950-a102-78b479136e4d",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-benefits",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"services": [
- "AzurePolicy"
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Cluster Configuration",
- "text": "Group Policy inheritance on the HCI cluster and node Active Directory organizational unit has been blocked or applied policies have been evaluated for compatibility issues (usually WinRM and PowerShell execution policy)",
- "waf": "Operations"
+ "subcategory": "High availability",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "e6a3f3a7-4a7d-49e2-985a-6e39dd284027",
- "services": [],
- "severity": "Medium",
- "subcategory": "Cluster Configuration",
- "text": "WAC is on the latest release and configured to automatically upgrade extensions",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "services": [
+ "Storage",
+ "ASR",
+ "SAP"
+ ],
+ "severity": "High",
+ "subcategory": "Storage",
+ "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "d1caa31f-cc26-42b2-b92f-2b667c0e6020",
- "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
"services": [
- "Entra"
+ "Storage",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Stretch Clustering",
- "text": "There is sub 5ms latency between each site if synchronous replication is being configured AAD",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Storage",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "3277558e-3155-4088-b49a-78594cb4ce1a",
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
"services": [
"Storage",
- "VNet"
+ "ASR",
+ "SAP"
],
"severity": "High",
- "subcategory": "Stretch Clustering",
- "text": "Management, Replication and Storage networks excluded from stretched VLANs configurations, are routed, and in different subnets",
+ "subcategory": "Storage",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
"waf": "Reliability"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "baed6066-8531-44ba-bd94-38cbabbf4099",
- "services": [],
+ "category": "Business Continuity and Disaster Recovery",
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "services": [
+ "Storage",
+ "ASR",
+ "SAP"
+ ],
"severity": "High",
- "subcategory": "Stretch Clustering",
- "text": "There is a plan detailed for site failure and recovery",
- "waf": "Operations"
+ "subcategory": "Storage",
+ "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.",
+ "waf": "Reliability"
},
{
- "category": "Networking",
- "checklist": "Azure Stack HCI Review",
- "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b4",
+ "category": "Cost Optimization",
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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": [
- "ACR"
+ "Cost",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Stretch Clustering",
- "text": "Separate vLANs and networks are used for each replication network across both sites",
- "waf": "Reliability"
+ "subcategory": " ",
+ "text": "Automate SAP System Start-Stop to manage costs.",
+ "waf": "Cost"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b5",
- "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr#cost-optimization",
+ "category": "Cost Optimization",
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
"services": [
- "Storage"
+ "Storage",
+ "VM",
+ "Cost",
+ "SAP"
],
- "severity": "High",
- "subcategory": "Stretch Clustering",
- "text": "Use either a cloud witness or a file share witness in a third site for cluster quorum for clusters with less than 5 nodes",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": " ",
+ "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.",
+ "waf": "Cost"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "8e62945f-b9ac-4a5c-a4e4-836f527010b6",
- "link": "https://learn.microsoft.com/azure/architecture/hybrid/azure-stack-hci-dr#cost-optimization",
- "services": [],
- "severity": "High",
- "subcategory": "Stretch Clustering",
- "text": "When using data deduplication, only enable it on the primary/source volumes",
- "waf": "Reliability"
+ "category": "Cost Optimization",
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "services": [
+ "Storage",
+ "VM",
+ "Cost",
+ "SAP"
+ ],
+ "severity": "Low",
+ "subcategory": " ",
+ "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.",
+ "waf": "Cost"
},
{
- "category": "Operations",
- "checklist": "Azure Stack HCI Review",
- "guid": "ac527887-f6f4-40a3-b883-e04d704f013b",
- "link": "https://learn.microsoft.com/windows-server/storage/storage-replica/stretch-cluster-replication-using-shared-storage#provision-operating-system-features-roles-storage-and-network",
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
"services": [
- "Storage"
+ "Entra",
+ "RBAC",
+ "Subscriptions",
+ "SAP"
],
"severity": "High",
- "subcategory": "Stretch Clustering",
- "text": "Storage backing log volumes must be faster (ideally) or at least as fast as capacity storage",
- "waf": "Reliability"
+ "subcategory": "Identity",
+ "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
},
{
- "category": "Backup and Disaster Recovery",
- "checklist": "Azure Stack HCI Review",
- "guid": "8ea49f70-1038-4283-b0c4-230165d3eabc",
- "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-site-recovery",
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"services": [
- "Backup",
- "ASR"
+ "Entra",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Disaster Recovery",
- "text": "Azure Site Recovery has been considered for DR purposes",
- "waf": "Operations"
+ "subcategory": "Identity",
+ "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
+ "waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Stack HCI Review",
- "guid": "03e65fdc-2628-4a1a-ba2e-a5174340ba52",
- "link": "https://learn.microsoft.com/windows/security/operating-system-security/data-protection/bitlocker/protecting-cluster-shared-volumes-and-storage-area-networks-with-bitlocker",
- "services": [],
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "SAP"
+ ],
"severity": "Medium",
- "subcategory": "Host",
- "text": "BitLocker has been enabled on CSVs for volume encryption, where appropriate",
+ "subcategory": "Identity",
+ "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.",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Stack HCI Review",
- "guid": "9645d2e6-ba28-453c-b6d5-d9ef29fc34be",
- "link": "https://learn.microsoft.com/windows-server/storage/file-server/smb-security",
- "services": [],
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "SAP"
+ ],
"severity": "Medium",
- "subcategory": "Host",
- "text": "SMB encryption has been enabled, where appropriate",
+ "subcategory": "Identity",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Stack HCI Review",
- "guid": "8f03437a-5068-4486-9a78-0402ce771298",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-antivirus-on-windows-server",
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
"services": [
- "Defender"
+ "Entra",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Host",
- "text": "Microsoft Defender Antivirus has been enabled on all nodes",
+ "subcategory": "Identity",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "Security"
},
{
- "category": "Security",
- "checklist": "Azure Stack HCI Review",
- "guid": "dba6b211-fc02-43b3-b7c8-f163c188332e",
- "link": "https://learn.microsoft.com/windows/security/identity-protection/credential-guard/credential-guard-manage",
- "services": [],
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "SAP"
+ ],
"severity": "Medium",
- "subcategory": "Host",
- "text": "Credential Guard has been configured, where appropriate",
+ "subcategory": "Identity",
+ "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Container Apps Review",
- "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
- "service": "Container Apps",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "AKV",
+ "SAP"
+ ],
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Container Apps Review",
- "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
- "service": "Container Apps",
- "services": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Use more than one replica and enable Zone Redundancy.",
- "waf": "Reliability"
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "AKV",
+ "SAP"
+ ],
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "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.",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Container Apps Review",
- "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
- "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": [],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
- "waf": "Reliability"
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
+ "services": [
+ "Entra",
+ "SAP"
+ ],
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "waf": "Security"
},
{
- "category": "BC and DR",
- "checklist": "Container Apps Review",
- "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
+ "category": "Identity and Access",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"services": [
- "TrafficManager",
- "FrontDoor"
+ "Entra",
+ "SAP"
],
- "severity": "High",
- "subcategory": "High Availability",
- "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "text": "Implement SSO to SAP HANA",
+ "waf": "Security"
},
{
- "category": "Automation",
+ "category": "Identity and Access",
"checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
"service": "SAP",
"services": [
+ "Entra",
"SAP"
],
"severity": "Medium",
- "subcategory": "ACSS",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operations"
+ "subcategory": "Identity",
+ "text": "Consider Azure AD an identity provider for SAP systems hosted on RISE. For more information, see Integrating the Service with Azure AD.",
+ "waf": "Security"
},
{
- "category": "Automation",
+ "category": "Identity and Access",
"checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
"service": "SAP",
"services": [
+ "Entra",
"SAP"
],
"severity": "Medium",
- "subcategory": "SDAF",
- "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.",
- "training": "https://github.com/Azure/sap-automation",
- "waf": "Operations"
+ "subcategory": "Identity",
+ "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
+ "waf": "Security"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Identity and Access",
"checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
"service": "SAP",
"services": [
- "Backup",
- "ASR",
+ "Entra",
"SAP"
],
"severity": "Medium",
- "subcategory": "Backup and restore",
- "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",
- "waf": "Reliability"
+ "subcategory": "Identity",
+ "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.",
+ "waf": "Security"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Identity and Access",
"checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
"service": "SAP",
"services": [
- "Backup",
- "ASR",
+ "Entra",
"SAP"
],
"severity": "Medium",
- "subcategory": "Disaster recovery",
- "text": "Test the backup and recovery times to verify that they meet your RTO requirements for restoring all systems simultaneously after a disaster.",
- "waf": "Reliability"
+ "subcategory": "Identity",
+ "text": "Implement SSO to SAP BTP",
+ "waf": "Security"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Identity and Access",
"checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
"service": "SAP",
"services": [
- "ASR",
- "Storage",
- "SAP",
- "SQL",
- "Backup"
+ "Entra",
+ "SAP"
],
- "severity": "High",
- "subcategory": "Disaster recovery",
- "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.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Identity",
+ "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.",
+ "waf": "Security"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
"service": "SAP",
"services": [
- "ASR",
+ "Subscriptions",
+ "AzurePolicy",
"SAP"
],
"severity": "Medium",
- "subcategory": "Disaster recovery",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Subscriptions",
+ "text": "enforce existing Management Group policies to SAP Subscriptions",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
"services": [
- "ASR",
- "ExpressRoute",
- "SAP",
- "VPN"
+ "Subscriptions",
+ "SAP"
],
"severity": "High",
- "subcategory": "Disaster recovery",
- "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.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Reliability"
+ "subcategory": "Subscriptions",
+ "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
"services": [
- "AKV",
- "ASR",
- "SAP",
- "ACR"
+ "Subscriptions",
+ "SAP"
],
- "severity": "Low",
- "subcategory": "Disaster recovery",
- "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Subscriptions",
+ "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
"service": "SAP",
"services": [
- "VNet",
- "ASR",
+ "VM",
+ "Subscriptions",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Disaster recovery",
- "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Subscriptions",
+ "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
"service": "SAP",
"services": [
- "Storage",
- "ASR",
+ "Subscriptions",
"SAP"
],
"severity": "Low",
- "subcategory": "Disaster recovery",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Reliability"
+ "subcategory": "Subscriptions",
+ "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
"service": "SAP",
"services": [
- "ASR",
+ "VM",
+ "Subscriptions",
"SAP"
],
"severity": "High",
- "subcategory": "Disaster recovery",
- "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Subscriptions",
+ "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.",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
"service": "SAP",
"services": [
- "VNet",
- "ASR",
+ "Subscriptions",
"SAP"
],
"severity": "High",
- "subcategory": "Disaster recovery",
- "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Subscriptions",
+ "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management Group and Subscriptions",
"checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
"service": "SAP",
"services": [
- "VM",
- "ASR",
- "SAP",
- "Entra"
+ "TrafficManager",
+ "Cost",
+ "Subscriptions",
+ "SAP"
],
- "severity": "High",
- "subcategory": "Disaster recovery",
- "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).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Subscriptions",
+ "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
"services": [
- "ASR",
+ "Monitor",
+ "Backup",
"SAP"
],
"severity": "High",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "subcategory": "BCDR",
+ "text": "Help protect your HANA database by using the Azure Backup service.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
"service": "SAP",
"services": [
- "ASR",
+ "Entra",
+ "Storage",
+ "VM",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "severity": "Medium",
+ "subcategory": "BCDR",
+ "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.",
"waf": "Reliability"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
"service": "SAP",
"services": [
- "Storage",
- "VM",
- "ASR",
+ "Monitor",
"SAP"
],
"severity": "High",
- "subcategory": "High availability",
- "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "Reliability"
+ "subcategory": "Management",
+ "text": "Ensure time-zone matches between the operating system and the SAP system.",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
"service": "SAP",
"services": [
- "Storage",
- "ASR",
+ "Entra",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
"service": "SAP",
"services": [
- "ASR",
+ "Monitor",
+ "Cost",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Management",
+ "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
+ "waf": "Cost"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
"service": "SAP",
"services": [
- "LoadBalancer",
- "ASR",
+ "Entra",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "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.",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
"service": "SAP",
"services": [
- "LoadBalancer",
- "ASR",
+ "Monitor",
+ "VM",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "text": "Make sure the Floating IP is enabled on the Load balancer",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Use Azure Update Manager to check the status of available updates for a single VM or multiple VMs and consider scheduling regular patching.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
"service": "SAP",
"services": [
- "ASR",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Management",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
"service": "SAP",
"services": [
- "VM",
- "ASR",
- "SAP",
- "Entra"
+ "Monitor",
+ "SQL",
+ "SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
"service": "SAP",
"services": [
- "ASR",
- "SAP",
"Entra",
+ "Monitor",
"VM",
- "RBAC"
+ "SAP"
],
"severity": "High",
- "subcategory": "High availability",
- "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",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"service": "SAP",
"services": [
- "ASR",
+ "Monitor",
+ "AzurePolicy",
"SAP"
],
"severity": "Medium",
- "subcategory": "High availability",
- "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "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. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
"service": "SAP",
"services": [
- "VM",
- "ASR",
+ "NetworkWatcher",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
"service": "SAP",
"services": [
- "ASR",
- "SAP",
- "Entra"
+ "Monitor",
+ "VM",
+ "SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "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.",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
"service": "SAP",
"services": [
- "ASR",
- "SAP",
- "ACR"
+ "Monitor",
+ "Subscriptions",
+ "SAP"
],
"severity": "High",
- "subcategory": "High availability",
- "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "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.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "Performance"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
"service": "SAP",
"services": [
+ "Monitor",
+ "Storage",
"ASR",
- "SAP",
- "Entra"
+ "SAP"
],
- "severity": "High",
- "subcategory": "High availability",
- "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
"waf": "Reliability"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
"service": "SAP",
"services": [
- "VM",
- "ASR",
- "SAP",
- "Entra"
+ "Sentinel",
+ "Monitor",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "High availability",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
"service": "SAP",
"services": [
- "Storage",
- "VM",
- "ASR",
+ "Monitor",
+ "Cost",
"SAP"
],
"severity": "Medium",
- "subcategory": "High availability",
- "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
- "waf": "Reliability"
+ "subcategory": "Monitoring",
+ "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
"service": "SAP",
"services": [
- "ASR",
+ "Monitor",
+ "VM",
"SAP"
],
- "severity": "Medium",
- "subcategory": "High availability",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Performance",
+ "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
+ "waf": "Performance"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
"link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
"service": "SAP",
"services": [
- "Storage",
+ "Monitor",
"ASR",
"SAP"
],
- "severity": "High",
- "subcategory": "Storage",
- "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
+ "severity": "Medium",
+ "subcategory": "Performance",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
"training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "Reliability"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
"service": "SAP",
"services": [
+ "Monitor",
"Storage",
- "ASR",
"SAP"
],
- "severity": "High",
- "subcategory": "Storage",
- "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.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Performance",
+ "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.",
+ "waf": "Performance"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
"service": "SAP",
"services": [
- "Storage",
- "ASR",
+ "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "Storage",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Performance",
+ "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
+ "waf": "Performance"
},
{
- "category": "Business Continuity and Disaster Recovery",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
"service": "SAP",
"services": [
+ "Monitor",
"Storage",
- "ASR",
"SAP"
],
- "severity": "High",
- "subcategory": "Storage",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Performance",
+ "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "Performance"
},
{
- "category": "Cost Optimization",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/optimize-your-azure-costs-by-automating-sap-system-start-stop/ba-p/2120675",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "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": [
- "Cost",
+ "Monitor",
+ "SQL",
"SAP"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Automate SAP System Start-Stop to manage costs.",
- "waf": "Cost"
+ "subcategory": "Performance",
+ "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.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "Performance"
},
{
- "category": "Cost Optimization",
+ "category": "Management and Monitoring",
"checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
"service": "SAP",
"services": [
- "Storage",
- "VM",
- "Cost",
+ "Monitor",
+ "ASR",
"SAP"
],
- "severity": "Low",
- "subcategory": " ",
- "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.",
- "waf": "Cost"
+ "severity": "High",
+ "subcategory": "Reliability",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Cost Optimization",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "SAP",
"services": [
- "Storage",
- "VM",
- "Cost",
+ "AppGW",
+ "WAF",
+ "AzurePolicy",
"SAP"
],
- "severity": "Low",
- "subcategory": " ",
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "App delivery",
+ "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "Security"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
"services": [
- "Subscriptions",
- "RBAC",
- "SAP",
- "Entra"
+ "DNS",
+ "VM",
+ "SAP"
],
- "severity": "High",
- "subcategory": "Identity",
- "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "DNS",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "DNS",
+ "VNet",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "Security"
+ "subcategory": "DNS",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "ACR",
+ "VNet",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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.",
- "waf": "Security"
+ "subcategory": "Hybrid",
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "waf": "Reliability"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "NVA",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Hybrid",
+ "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "Performance"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "VWAN",
+ "ACR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Security"
+ "subcategory": "Hybrid",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "VNet",
+ "NVA",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "subcategory": "Hybrid",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
"service": "SAP",
"services": [
- "AKV",
- "SAP",
- "Entra"
+ "VWAN",
+ "VNet",
+ "NVA",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Security"
+ "subcategory": "Hybrid",
+ "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"services": [
- "AKV",
- "SAP",
- "Entra"
+ "VNet",
+ "VM",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "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.",
+ "severity": "High",
+ "subcategory": "IP plan",
+ "text": "Public IP assignment to VM running SAP Workload is not recommended.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "Security"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "VNet",
+ "ASR",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "IP plan",
+ "text": "Consider reserving IP address on DR side when configuring ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "VNet",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Identity",
- "text": "Implement SSO to SAP HANA",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "IP plan",
+ "text": "Avoid using overlapping IP address ranges for production and DR sites.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "Storage",
+ "VNet",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Consider Azure AD an identity provider for SAP systems hosted on RISE. For more information, see Integrating the Service with Azure AD.",
- "waf": "Security"
+ "subcategory": "IP plan",
+ "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "Operations"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
- "Entra"
+ "Firewall",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
+ "subcategory": "Internet",
+ "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/training/paths/secure-networking-infrastructure/",
"waf": "Security"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
"service": "SAP",
"services": [
- "SAP",
- "Entra"
+ "AppGW",
+ "WAF",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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.",
+ "subcategory": "Internet",
+ "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.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"waf": "Security"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
"services": [
+ "AzurePolicy",
+ "FrontDoor",
+ "ACR",
"SAP",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Identity",
- "text": "Implement SSO to SAP BTP",
+ "subcategory": "Internet",
+ "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
"waf": "Security"
},
{
- "category": "Identity and Access",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
"service": "SAP",
"services": [
+ "AppGW",
+ "AzurePolicy",
+ "FrontDoor",
"SAP",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "subcategory": "Identity",
- "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.",
+ "subcategory": "Internet",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "Security"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
"services": [
- "Subscriptions",
- "SAP",
- "AzurePolicy"
+ "LoadBalancer",
+ "AppGW",
+ "WAF",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "enforce existing Management Group policies to SAP Subscriptions",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "Operations"
+ "subcategory": "Internet",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "SAP",
"services": [
- "Subscriptions",
+ "VWAN",
+ "ACR",
"SAP"
],
- "severity": "High",
- "subcategory": "Subscriptions",
- "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Internet",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Performance"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
"service": "SAP",
"services": [
- "Subscriptions",
- "SAP"
+ "PrivateLink",
+ "Backup",
+ "Storage",
+ "ACR",
+ "SAP",
+ "VNet"
],
- "severity": "High",
- "subcategory": "Subscriptions",
- "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Internet",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
"service": "SAP",
"services": [
"VM",
- "Subscriptions",
"SAP"
],
"severity": "High",
- "subcategory": "Subscriptions",
- "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "Operations"
+ "subcategory": "Segmentation",
+ "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Performance"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
"service": "SAP",
"services": [
- "Subscriptions",
+ "LoadBalancer",
"SAP"
],
- "severity": "Low",
- "subcategory": "Subscriptions",
- "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Segmentation",
+ "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"service": "SAP",
"services": [
"VM",
- "Subscriptions",
+ "VNet",
"SAP"
],
- "severity": "High",
- "subcategory": "Subscriptions",
- "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.",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Segmentation",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"services": [
- "Subscriptions",
+ "VNet",
"SAP"
],
"severity": "High",
- "subcategory": "Subscriptions",
- "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
- "waf": "Operations"
+ "subcategory": "Segmentation",
+ "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
- "category": "Management Group and Subscriptions",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
"service": "SAP",
"services": [
- "Subscriptions",
- "TrafficManager",
- "Cost",
"SAP"
],
"severity": "Medium",
- "subcategory": "Subscriptions",
- "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "subcategory": "Segmentation",
+ "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"services": [
- "Backup",
- "SAP",
- "Monitor"
+ "SAP"
],
"severity": "High",
- "subcategory": "BCDR",
- "text": "Help protect your HANA database by using the Azure Backup service.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Segmentation",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"services": [
- "Storage",
- "SAP",
- "Monitor",
- "Entra",
- "VM"
+ "VNet",
+ "Cost",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "BCDR",
- "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Segmentation",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Cost"
},
{
- "category": "Management and Monitoring",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
"service": "SAP",
"services": [
- "Monitor",
+ "LoadBalancer",
"SAP"
],
"severity": "High",
- "subcategory": "Management",
- "text": "Ensure time-zone matches between the operating system and the SAP system.",
- "waf": "Operations"
+ "subcategory": "Segmentation",
+ "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Network Topology and Connectivity",
"checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
"service": "SAP",
"services": [
- "Monitor",
- "SAP",
- "Entra"
+ "VNet",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Management",
- "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Segmentation",
+ "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",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
"services": [
- "Monitor",
- "Cost",
+ "Backup",
+ "VM",
"SAP"
],
- "severity": "Low",
- "subcategory": "Management",
- "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
+ "severity": "High",
+ "subcategory": " ",
+ "text": "Review SAP HANA database backups for Azure VMs.",
"waf": "Cost"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
"service": "SAP",
"services": [
"Monitor",
- "SAP",
- "Entra"
+ "ASR",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Management",
- "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.",
- "waf": "Operations"
+ "subcategory": " ",
+ "text": "Review Site Recovery built-in monitoring, where used for SAP.",
+ "waf": "Cost"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
"service": "SAP",
"services": [
- "VM",
"Monitor",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Management",
- "text": "Use Azure Update Manager to check the status of available updates for a single VM or multiple VMs and consider scheduling regular patching.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "severity": "High",
+ "subcategory": " ",
+ "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
"waf": "Operations"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
"service": "SAP",
"services": [
- "Monitor",
+ "Backup",
+ "VM",
"SAP"
],
- "severity": "Low",
- "subcategory": "Management",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "severity": "Medium",
+ "subcategory": " ",
+ "text": "Review Oracle Database in Azure Linux VM backup strategies.",
"waf": "Operations"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "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": [
+ "Storage",
"SQL",
- "Monitor",
"SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "subcategory": " ",
+ "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
"waf": "Operations"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
"service": "SAP",
"services": [
+ "Backup",
"VM",
- "Monitor",
- "SAP",
- "Entra"
+ "SAP"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "severity": "Medium",
+ "subcategory": " ",
+ "text": "Review the use of Automated Backup v2 for Azure VMs.",
"waf": "Operations"
},
{
- "category": "Management and Monitoring",
+ "category": "Operational Excellence",
"checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
"service": "SAP",
"services": [
- "Monitor",
- "SAP",
- "AzurePolicy"
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Monitoring",
- "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. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "severity": "High",
+ "subcategory": " ",
+ "text": "Enabling Write accelerator for M series when using premium disks(V1)",
"waf": "Operations"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
"service": "SAP",
"services": [
- "NetworkWatcher",
- "Monitor",
"SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operations"
+ "subcategory": " ",
+ "text": "Test availability zone latency.",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
"service": "SAP",
"services": [
- "VM",
- "Monitor",
"SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "waf": "Operations"
+ "subcategory": " ",
+ "text": "Activate SAP EarlyWatch Alert for all SAP components.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
"service": "SAP",
"services": [
- "Subscriptions",
- "Monitor",
"SAP"
],
- "severity": "High",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "severity": "Medium",
+ "subcategory": " ",
+ "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
"waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
"service": "SAP",
"services": [
- "Storage",
- "ASR",
- "SAP",
- "Monitor"
+ "Monitor",
+ "SQL",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
- "waf": "Reliability"
+ "subcategory": " ",
+ "text": "Review SQL Server performance monitoring using CCMS.",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
"service": "SAP",
"services": [
- "Sentinel",
- "Monitor",
+ "VM",
"SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
- "waf": "Security"
+ "subcategory": " ",
+ "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
"service": "SAP",
"services": [
"Monitor",
- "Cost",
"SAP"
],
"severity": "Medium",
- "subcategory": "Monitoring",
- "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operations"
+ "subcategory": " ",
+ "text": "Review SAP HANA studio alerts.",
+ "waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Performant",
"checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
"service": "SAP",
"services": [
- "VM",
- "Monitor",
"SAP"
],
- "severity": "Low",
- "subcategory": "Performance",
- "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
+ "severity": "Medium",
+ "subcategory": " ",
+ "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
"waf": "Performance"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"services": [
- "Monitor",
- "ASR",
+ "VM",
"SAP"
],
"severity": "Medium",
- "subcategory": "Performance",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Reliability"
+ "subcategory": "Governance",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"services": [
- "Storage",
- "Monitor",
"SAP"
],
"severity": "Medium",
- "subcategory": "Performance",
- "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.",
- "waf": "Performance"
+ "subcategory": "Governance",
+ "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.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
"services": [
- "Monitor",
+ "SQL",
"SAP"
],
"severity": "Low",
- "subcategory": "Performance",
- "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
- "waf": "Performance"
+ "subcategory": "Governance",
+ "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.",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
"services": [
- "Storage",
- "Monitor",
+ "SQL",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Performance",
- "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Governance",
+ "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.",
+ "training": "https://me.sap.com/notes/3019299/E",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"services": [
+ "AKV",
+ "Backup",
"SQL",
- "Monitor",
+ "Storage",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Performance",
- "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.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Secrets",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "waf": "Security"
},
{
- "category": "Management and Monitoring",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
"service": "SAP",
"services": [
- "Monitor",
- "ASR",
+ "AKV",
+ "Storage",
"SAP"
],
- "severity": "High",
- "subcategory": "Reliability",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Secrets",
+ "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
"service": "SAP",
"services": [
- "WAF",
- "AppGW",
- "SAP",
- "AzurePolicy"
+ "AKV",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "App delivery",
- "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "severity": "High",
+ "subcategory": "Secrets",
+ "text": "Use Azure Key Vault to store your secrets and credentials",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
"service": "SAP",
"services": [
- "VM",
- "DNS",
+ "AKV",
+ "AzurePolicy",
+ "RBAC",
+ "Subscriptions",
"SAP"
],
"severity": "Medium",
- "subcategory": "DNS",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "subcategory": "Secrets",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
"service": "SAP",
"services": [
- "DNS",
- "VNet",
+ "AKV",
+ "AzurePolicy",
"SAP"
],
"severity": "Medium",
- "subcategory": "DNS",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "subcategory": "Secrets",
+ "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
"service": "SAP",
"services": [
- "VNet",
- "SAP",
- "ACR"
+ "RBAC",
+ "AKV",
+ "AzurePolicy",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
- "waf": "Reliability"
+ "severity": "High",
+ "subcategory": "Secrets",
+ "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"services": [
- "SAP",
- "NVA"
+ "AKV",
+ "Storage",
+ "Defender",
+ "SAP"
],
"severity": "High",
- "subcategory": "Hybrid",
- "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "Performance"
+ "subcategory": "Secrets",
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
"service": "SAP",
"services": [
- "SAP",
- "VWAN",
- "ACR"
+ "RBAC",
+ "AKV",
+ "Defender",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Secrets",
+ "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"services": [
- "VNet",
- "SAP",
- "NVA"
+ "AKV",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Hybrid",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Secrets",
+ "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",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
"service": "SAP",
"services": [
- "VNet",
- "NVA",
- "SAP",
- "VWAN"
+ "AKV",
+ "SAP"
],
"severity": "Medium",
- "subcategory": "Hybrid",
- "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operations"
+ "subcategory": "Secrets",
+ "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
"service": "SAP",
"services": [
- "VM",
- "VNet",
+ "AKV",
"SAP"
],
"severity": "High",
- "subcategory": "IP plan",
- "text": "Public IP assignment to VM running SAP Workload is not recommended.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "subcategory": "Secrets",
+ "text": "Use an Azure Key Vault per application per environment per region.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
"service": "SAP",
"services": [
- "ASR",
- "SAP",
- "VNet"
+ "AKV",
+ "SAP"
],
"severity": "High",
- "subcategory": "IP plan",
- "text": "Consider reserving IP address on DR side when configuring ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Operations"
+ "subcategory": "Secrets",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
"service": "SAP",
"services": [
- "VNet",
+ "RBAC",
+ "Subscriptions",
"SAP"
],
"severity": "High",
- "subcategory": "IP plan",
- "text": "Avoid using overlapping IP address ranges for production and DR sites.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operations"
+ "subcategory": "Security",
+ "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
"service": "SAP",
"services": [
- "Storage",
- "VNet",
+ "PrivateLink",
+ "NVA",
"SAP"
],
- "severity": "Medium",
- "subcategory": "IP plan",
- "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Security",
+ "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",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-firewall?toc=%2Fazure%2Ffirewall%2Ftoc.json&bc=%2Fazure%2Ffirewall%2Fbreadcrumb%2Ftoc.json",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
"service": "SAP",
"services": [
- "Firewall",
+ "Storage",
+ "VM",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "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/training/paths/secure-networking-infrastructure/",
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
"service": "SAP",
"services": [
- "WAF",
- "AppGW",
+ "Defender",
"SAP"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "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.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
"services": [
- "ACR",
- "SAP",
- "AzurePolicy",
- "WAF",
- "FrontDoor"
+ "VNet",
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "severity": "High",
+ "subcategory": "Security",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"services": [
- "AppGW",
- "SAP",
- "AzurePolicy",
"WAF",
- "FrontDoor"
+ "SAP"
],
- "severity": "Medium",
- "subcategory": "Internet",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "severity": "Low",
+ "subcategory": "Security",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
+ "category": "Security, Governance and Compliance",
"checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
"service": "SAP",
"services": [
- "LoadBalancer",
- "WAF",
- "AppGW",
+ "AKV",
+ "Monitor",
"SAP"
],
"severity": "Medium",
- "subcategory": "Internet",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "subcategory": "Security",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
+ "category": "BC and DR",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"services": [
- "SAP",
- "VWAN",
"ACR"
],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "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.",
+ "waf": "Reliability"
+ },
+ {
+ "category": "BC and DR",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
+ "services": [
+ "Storage"
+ ],
"severity": "Medium",
- "subcategory": "Internet",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Performance"
+ "subcategory": "High Availability",
+ "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
+ "category": "BC and DR",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"services": [
- "ACR",
- "PrivateLink",
- "Storage",
- "VNet",
- "SAP",
- "Backup"
+ "Storage"
],
"severity": "Medium",
- "subcategory": "Internet",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
+ "waf": "Reliability"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
+ "category": "BC and DR",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
"services": [
- "VM",
- "SAP"
+ "ASR"
+ ],
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "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.",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "Define a resource group structure for placement of Azure Arc-enabled servers resources",
+ "guid": "585e1112-9bd7-4ba0-82f7-b94ef6e043d2",
+ "services": [
+ "Arc"
],
"severity": "High",
- "subcategory": "Segmentation",
- "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Performance"
+ "subcategory": "Capacity Planning",
+ "text": "One or more resource groups is required for onboarding servers into Azure",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "guid": "aa359271-8e6e-4205-8725-769e46691e88",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits",
"services": [
- "LoadBalancer",
- "SAP"
+ "Entra",
+ "Arc"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Security"
+ "subcategory": "Capacity Planning",
+ "text": "Take Azure Active Directory object limitations into account",
+ "waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "The following resource providers needs to be registered: Microsoft.HybridCompute, Microsoft.GuestConfiguration, Microsoft.HybridConnectivity",
+ "guid": "deace4bb-1deb-44c6-9fc3-fc14eeaa3692",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-resource-providers",
"services": [
- "VM",
- "VNet",
- "SAP"
+ "Arc",
+ "Subscriptions"
],
- "severity": "Medium",
- "subcategory": "Segmentation",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "General",
+ "text": "Has the Resource providers required been registered in all subscriptions",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "Aligning with an existing or creating an Azure tagging strategy is recommended. Resource tags allow you to quickly locate it, automate operational tasks amd more. ",
+ "guid": "c6d37331-65c7-4acb-b44b-be609d79f2e8",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/decision-guides/resource-tagging/",
"services": [
- "VNet",
- "SAP"
+ "Arc"
+ ],
+ "severity": "Low",
+ "subcategory": "General",
+ "text": "Has a tagging strategy for Azure Arc-enabled servers been defined",
+ "waf": "Cost"
+ },
+ {
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "Installation of the connected machine agent is supported on most newer Windows and Linux operative systems, review the link to se the latest list",
+ "guid": "7778424c-5167-475c-9fa9-5b96ad88408e",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#supported-operating-systems",
+ "services": [
+ "Arc"
],
"severity": "High",
- "subcategory": "Segmentation",
- "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "subcategory": "General",
+ "text": "What operating systems need to be Azure Arc-enabled",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "There are software requirements to the agent installation. Some might require a system reboot after installation, review to link",
+ "guid": "372734b8-76ba-428f-8145-901365d38e53",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#software-requirements",
"services": [
- "SAP"
+ "Arc"
],
- "severity": "Medium",
- "subcategory": "Segmentation",
- "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "General",
+ "text": "Are required software installed on Windows and Linux servers to support the installation",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "guid": "d44c7c89-19ca-41f6-b521-5ae514ba34d4",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/?products=azure-arc®ions=all",
"services": [
- "SAP"
+ "Arc"
],
"severity": "High",
- "subcategory": "Segmentation",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "subcategory": "General",
+ "text": "Make sure to use a supported Azure region",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Foundation",
+ "checklist": "Azure Arc Review",
+ "description": "The scope include organization into management groups, subscriptions, and resource groups.",
+ "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": [
+ "Arc",
+ "Subscriptions"
+ ],
+ "severity": "Low",
+ "subcategory": "Organization",
+ "text": "Define the structure for Azure management of resources",
"waf": "Performance"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "Define RBAC rules to the servers / resource groups as required for servers management, the 'Azure Connected Machine Resource Administrator' or 'Hybrid Server Resource Administrator' role would be sufficient for management of the Azure Arc-enabled servers resources in Azure",
+ "guid": "9bf39d95-d44c-47c8-a19c-a1f6d5215ae5",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#identity-and-access-control",
+ "services": [
+ "Entra",
+ "RBAC",
+ "Arc"
+ ],
+ "severity": "Medium",
+ "subcategory": "Access",
+ "text": "Assign RBAC rights to Azure AD user/group access for managing Azure Arc-enabled servers",
+ "waf": "Security"
+ },
+ {
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "guid": "14ba34d4-585e-4111-89bd-7ba012f7b94e",
+ "link": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-nonaad",
"services": [
- "VNet",
- "Cost",
- "SAP"
+ "Entra",
+ "AKV",
+ "Arc"
],
- "severity": "High",
- "subcategory": "Segmentation",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Cost"
+ "severity": "Low",
+ "subcategory": "Access",
+ "text": "Consider using managed identities for applications to access Azure resources like Key Vault example in link",
+ "waf": "Security"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "An Azure subscription must be parented to the same Azure AD tenant",
+ "guid": "35ac9322-23e1-4380-8523-081a94174158",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits",
"services": [
- "LoadBalancer",
- "SAP"
+ "Entra",
+ "Arc",
+ "Subscriptions"
],
"severity": "High",
- "subcategory": "Segmentation",
- "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Performance"
+ "subcategory": "Requirements",
+ "text": "An Azure Active Directory tenant must be available with at least one subscription",
+ "waf": "Operations"
},
{
- "category": "Network Topology and Connectivity",
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "Users (or SPs) need the 'Azure Connected Machine Onboarding' or 'Contributor' role to onboarding of servers",
+ "guid": "33ee7ad6-c6d3-4733-865c-7acbe44bbe60",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions",
"services": [
- "VNet",
- "SAP"
+ "Entra",
+ "RBAC",
+ "Arc"
],
"severity": "Medium",
- "subcategory": "Segmentation",
- "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",
+ "subcategory": "Requirements",
+ "text": "Define which users (AAD user/groups) has access to onboard Azure Arc-enabled servers",
"waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "Ensure to only add the rights to users or groups that is required to perform their role",
+ "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": [
- "VM",
- "Backup",
- "SAP"
+ "Entra",
+ "RBAC",
+ "Arc"
],
- "severity": "High",
- "subcategory": " ",
- "text": "Review SAP HANA database backups for Azure VMs.",
- "waf": "Cost"
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Use the principle of least privileged",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "A service principle with the 'Azure Connected Machine Onboarding' role is required for at-scale onboarding of servers, consider more SP's if onboarding is done by different teams/decentralized management",
+ "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": [
- "Monitor",
- "ASR",
- "SAP"
+ "Entra",
+ "RBAC",
+ "Arc"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review Site Recovery built-in monitoring, where used for SAP.",
- "waf": "Cost"
+ "subcategory": "Security",
+ "text": "How many Service Principals are needed for onboarding Arc-enabled servers into Azure",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "category": "Identity",
+ "checklist": "Azure Arc Review",
+ "description": "Consider assigning the rights for the 'Azure Connected Machine Onboarding' role at the resource group level, to control the resource creation",
+ "guid": "65d38e53-f9cc-4bd8-9826-6abca264f9a1",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions",
"services": [
- "Monitor",
- "SAP"
+ "Entra",
+ "RBAC",
+ "Arc"
],
- "severity": "High",
- "subcategory": " ",
- "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
- "waf": "Operations"
+ "severity": "Medium",
+ "subcategory": "Security",
+ "text": "Limit the rights to onboard Azure Arc-enabled servers to the desired resource groups",
+ "waf": "Security"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Plan for agent deployments at scale",
+ "guid": "6ee79d6b-5c2a-4364-a4b6-9bad38aad53c",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/plan-at-scale-deployment",
"services": [
- "VM",
- "Backup",
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review Oracle Database in Azure Linux VM backup strategies.",
+ "subcategory": "Management",
+ "text": "Define a strategy for agent provisioning",
"waf": "Operations"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Use Microsoft Update to ensure that the connected machine agent is always up-to-date",
+ "guid": "c78e1d76-6673-457c-9496-74c5ed85b859",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-agent#upgrade-the-agent",
"services": [
- "SQL",
- "SAP",
- "Storage"
+ "Arc",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": " ",
- "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
+ "severity": "High",
+ "subcategory": "Management",
+ "text": "Define a strategy for agent updates",
"waf": "Operations"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Recommendation is to use Azure Policy, or another automation tool like Azure DevOps - important is to avoid configuration drift.",
+ "guid": "c7733be2-a1a2-47b7-95a9-1be1f388ff39",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions",
"services": [
- "VM",
- "Backup",
- "SAP"
+ "Arc",
+ "AzurePolicy",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review the use of Automated Backup v2 for Azure VMs.",
+ "subcategory": "Management",
+ "text": "Define a strategy for extension installation",
"waf": "Operations"
},
{
- "category": "Operational Excellence",
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Use automatic upgrades where available and define an update strategy for all extensions not supporting automatic upgrades.",
+ "guid": "4c2bd463-cbbb-4c86-a195-abb91a4ed90d",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-automatic-vm-extension-upgrade?tabs=azure-portal",
"services": [
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "High",
- "subcategory": " ",
- "text": "Enabling Write accelerator for M series when using premium disks(V1)",
+ "subcategory": "Management",
+ "text": "Define a strategy for extension updates",
"waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Azure Automanage help implement Microsoft best-practices for servers management in Azure",
+ "guid": "7a927c39-74d1-4102-aac6-aae01e6a84de",
+ "link": "https://learn.microsoft.com/azure/automanage/automanage-arc",
"services": [
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Test availability zone latency.",
- "waf": "Performance"
+ "subcategory": "Management",
+ "text": "Consider using Azure Automanage to control settings and avoid configuration drift on servers",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "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": [
- "SAP"
+ "Arc",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": " ",
- "text": "Activate SAP EarlyWatch Alert for all SAP components.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "Performance"
+ "severity": "High",
+ "subcategory": "Monitoring",
+ "text": "Monitor for unresponsive agents",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "guid": "74d1102c-ac6a-4ae0-8e6a-84de5df47d2d",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/agents/log-analytics-agent#data-collected",
"services": [
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Performance"
+ "subcategory": "Monitoring",
+ "text": "Design a monitoring strategy to send metrics and logs to an Log Analytics workspace",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "guid": "92881b1c-d5d1-4e54-a296-59e3958fd782",
+ "link": "https://learn.microsoft.com/azure/service-health/resource-health-alert-monitor-guide",
"services": [
- "SQL",
- "Monitor",
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review SQL Server performance monitoring using CCMS.",
- "waf": "Performance"
+ "subcategory": "Monitoring",
+ "text": "Use notification in Activity logs to receive notification on unexpected changes to the resources",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "guid": "89c93555-6d02-4bfe-9564-b0d834a34872",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/learn/tutorial-enable-vm-insights",
"services": [
- "VM",
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "Performance"
+ "subcategory": "Monitoring",
+ "text": "Use Azure Monitor for compliance and operational monitoring",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "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",
- "SAP"
+ "Arc",
+ "Monitor"
],
"severity": "Medium",
- "subcategory": " ",
- "text": "Review SAP HANA studio alerts.",
- "waf": "Performance"
+ "subcategory": "Monitoring",
+ "text": "Create an alert to identify Azure Arc-enabled servers that aren't using the latest version of the Azure connected machine agent",
+ "waf": "Operations"
},
{
- "category": "Performant",
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "category": "Management and Monitoring",
+ "checklist": "Azure Arc Review",
+ "description": "Use Update Management in Azure Automation or the new Update Management Center (preview) functionality to ensure update management of servers",
+ "guid": "ae2cc84c-37b6-4b78-8cba-fe6c46589d45",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/hybrid/server/best-practices/arc-update-management",
"services": [
- "SAP"
+ "Arc",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": " ",
- "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
- "waf": "Performance"
+ "severity": "Low",
+ "subcategory": "Security",
+ "text": "Use Azure Arc-enabled servers to control software updates deployments to servers",
+ "waf": "Operations"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "The Connected Machine Agent will by default communicate with Azure services over public Internet connectivity using HTTPS (TCP port 443)",
+ "guid": "f6e043d2-aa35-4927-88e6-e2050725769e",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#details",
"services": [
- "VM",
- "SAP"
+ "Arc"
],
- "severity": "Medium",
- "subcategory": "Governance",
- "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.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Networking",
+ "text": "Define a connectivity method from the server to Azure",
+ "waf": "Operations"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "The Connected Machine Agent can be configured to use a proxy server, it is recommended to define the proxy server address using 'azcmagent config set proxy.url' command on the local system.",
+ "guid": "46691e88-35ac-4932-823e-13800523081a",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-agent#update-or-remove-proxy-settings",
"services": [
- "SAP"
+ "Arc"
],
"severity": "Medium",
- "subcategory": "Governance",
- "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.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "Security"
- },
- {
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "services": [
- "SQL",
- "SAP"
- ],
- "severity": "Low",
- "subcategory": "Governance",
- "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.",
- "waf": "Security"
+ "subcategory": "Networking",
+ "text": "Is a proxy server a required for communication over the Public Internet",
+ "waf": "Operations"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "The Connected Machine Agent can use a Private Link for communication with Azure Services over an existing ExpressRoute or VPN connection",
+ "guid": "94174158-33ee-47ad-9c6d-3733165c7acb",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/private-link-security",
"services": [
- "SQL",
- "SAP"
+ "VPN",
+ "Arc",
+ "PrivateLink",
+ "ExpressRoute"
],
- "severity": "High",
- "subcategory": "Governance",
- "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.",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Networking",
+ "text": "Is a private (not public Internet) connection required?",
+ "waf": "Operations"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "Firewall configuration might be required for the agent to communicate with Azure, use the link to see ServiceTags and/or URL's required",
+ "guid": "e44bbe60-9d79-4f2e-a777-8424c516775c",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#service-tags",
"services": [
- "AKV",
- "Storage",
- "SAP",
- "SQL",
- "Backup"
+ "Arc"
],
"severity": "High",
- "subcategory": "Secrets",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "subcategory": "Networking",
+ "text": "Will Firewall configurations be needed in order to ensure communication with Azure Services?",
"waf": "Security"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "Use available automation tool for the system in question to regularly update the Azure endpoints",
+ "guid": "6fa95b96-ad88-4408-b372-734b876ba28f",
+ "link": "https://www.microsoft.com/download/details.aspx?id=56519",
"services": [
- "Storage",
- "AKV",
- "SAP"
+ "Arc"
],
- "severity": "Medium",
- "subcategory": "Secrets",
- "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "severity": "Low",
+ "subcategory": "Networking",
+ "text": "Can the Firewall or Proxy rules be automated updated if Service Tags or IP addresses change",
"waf": "Security"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "Configure Servers to use Transport Layer Security (TLS) version 1.2",
+ "guid": "21459013-65d3-48e5-9f9c-cbd868266abc",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/network-requirements?tabs=azure-cloud#transport-layer-security-12-protocol",
"services": [
- "AKV",
- "SAP"
+ "Arc"
],
"severity": "High",
- "subcategory": "Secrets",
- "text": "Use Azure Key Vault to store your secrets and credentials",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "subcategory": "Networking",
+ "text": "Always use secure communication for Azure where possible",
"waf": "Security"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
+ "category": "Networking",
+ "checklist": "Azure Arc Review",
+ "description": "All extensions (like log analytics etc.) have separate network requirements, be sure to include all in the network design.",
+ "guid": "a264f9a1-9bf3-49d9-9d44-c7c8919ca1f6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/hybrid/arc-enabled-servers/eslz-arc-servers-connectivity#define-extensions-connectivity-method",
"services": [
- "Subscriptions",
- "AKV",
- "SAP",
- "AzurePolicy",
- "RBAC"
+ "PrivateLink",
+ "Arc",
+ "Monitor"
],
- "severity": "Medium",
- "subcategory": "Secrets",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "severity": "Low",
+ "subcategory": "Networking",
+ "text": "Include communication for Azure Arc-enabled Servers extensions in the design (firewall/proxy/private link)",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "ac6aae01-e6a8-44de-9df4-7d2d92881b1c",
+ "link": "https://learn.microsoft.com/azure/governance/policy/",
"services": [
- "AKV",
- "SAP",
+ "Arc",
"AzurePolicy"
],
"severity": "Medium",
- "subcategory": "Secrets",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "subcategory": "Management",
+ "text": "Use Azure Policy to implement a governance model for hybrid connected servers",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "5c2a3649-4b69-4bad-98aa-d53cc78e1d76",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
"services": [
- "AKV",
- "RBAC",
- "SAP",
- "AzurePolicy"
+ "Arc"
],
- "severity": "High",
- "subcategory": "Secrets",
- "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Consider using Machine configurations for in guest OS configurations",
+ "waf": "Operations"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "667357c4-4967-44c5-bd85-b859c7733be2",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/machine-configuration-create",
"services": [
- "Storage",
- "AKV",
- "SAP",
- "Defender"
+ "Arc",
+ "AzurePolicy"
],
- "severity": "High",
- "subcategory": "Secrets",
- "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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Management",
+ "text": "Evaluate the need for custom Guest Configuration policies",
+ "waf": "Operations"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "49674c5e-d85b-4859-a773-3be2a1a27b77",
+ "link": "https://learn.microsoft.com/azure/automation/change-tracking/overview",
"services": [
- "AKV",
- "RBAC",
- "SAP",
- "Defender"
+ "Arc",
+ "Monitor"
],
- "severity": "High",
- "subcategory": "Secrets",
- "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Monitoring",
+ "text": "Consider using change tracking for tracking changes made on the servers",
+ "waf": "Operations"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "d5d1e54a-2965-49e3-a58f-d78289c93555",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/data-residency",
"services": [
- "AKV",
- "SAP"
+ "Arc"
],
- "severity": "Low",
- "subcategory": "Secrets",
- "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",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "severity": "Medium",
+ "subcategory": "Requirements",
+ "text": "Make sure to use an Azure region for storing the metadata approved by the organization",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "195abb91-a4ed-490d-ae2c-c84c37b6b780",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/basic-concepts",
"services": [
"AKV",
- "SAP"
+ "Arc"
],
"severity": "Medium",
"subcategory": "Secrets",
- "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Use Azure Key Vault for certificate management on servers",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "description": "Consider using a short-lived Azure AD service principal client secrets.",
+ "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": [
+ "Entra",
"AKV",
- "SAP"
+ "Arc",
+ "Storage"
],
"severity": "High",
"subcategory": "Secrets",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "What is the acceptable life time of the secret used by SP's",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "description": "A private key is saved to the disk, ensure this is protected using disk encryption",
+ "guid": "a1a27b77-5a91-4be1-b388-ff394c2bd463",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#using-disk-encryption",
"services": [
"AKV",
- "SAP"
+ "Arc"
],
- "severity": "High",
+ "severity": "Medium",
"subcategory": "Secrets",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "text": "Secure the public key for Azure Arc-enabled Servers",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "description": "Local administrator is required to install the Connected Machine Agent on Windows and Linux systems",
+ "guid": "29659e39-58fd-4782-a9c9-35556d02bfe4",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/onboard-portal#install-manually",
"services": [
- "Subscriptions",
- "RBAC",
- "SAP"
+ "Arc"
],
"severity": "High",
"subcategory": "Security",
- "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "text": "Ensure there is local administrator access for executing the agent installation",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "description": "Members of the local administrator group on Windows and users with root privileges on Linux, have permissions to manage the agent via command line.",
+ "guid": "564b0d83-4a34-4872-9ee7-9d6b5c2a3649",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#agent-security-and-permissions",
"services": [
- "SAP",
- "NVA",
- "PrivateLink"
+ "Arc"
],
- "severity": "High",
+ "severity": "Medium",
"subcategory": "Security",
- "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",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "text": "Limit the amount of users with local administrator rights to the servers",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "4b69bad3-8aad-453c-a78e-1d76667357c4",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication",
"services": [
- "Storage",
- "VM",
- "SAP"
+ "Entra",
+ "Arc"
],
- "severity": "Low",
+ "severity": "Medium",
"subcategory": "Security",
- "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "text": "Consider using and restricting access to managed identities for applications.",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "description": "Use Defender for Endpoint or another AV and EDR solution to protect endpoints",
+ "guid": "5a91be1f-388f-4f39-9c2b-d463cbbbc868",
+ "link": "https://learn.microsoft.com/azure/security-center/security-center-get-started",
"services": [
- "SAP",
+ "Arc",
"Defender"
],
- "severity": "Low",
+ "severity": "Medium",
"subcategory": "Security",
- "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "text": "Enable Defender for Servers for all servers to secure hybrid workloads from threats",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "cbafe6c4-6589-4d45-9a92-7c3974d1102c",
"services": [
- "VNet",
- "SAP"
+ "Arc"
],
- "severity": "High",
+ "severity": "Medium",
"subcategory": "Security",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "text": "Define controls to detect security misconfigurations and track compliance",
"waf": "Security"
},
{
"category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "checklist": "Azure Arc Review",
+ "guid": "cbbbc868-195a-4bb9-8a4e-d90dae2cc84c",
+ "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#extension-allowlists-and-blocklists",
"services": [
- "WAF",
- "SAP"
+ "Arc"
],
- "severity": "Low",
+ "severity": "Medium",
"subcategory": "Security",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "text": "Use allow- or block-lists to control what extensions can be installed on the Azure Arc-enabled servers",
"waf": "Security"
},
{
- "category": "Security, Governance and Compliance",
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "category": "BCDR",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Ensure that your backups are protected against attacks. This should include encryption of the backups to protect against loss of confidentiality. For regular Azure service backup, backup data is automatically encrypted using Azure platform-managed keys. You can also choose to encrypt the backup using a customer-managed key. In this case, ensure this customer-managed key in the key vault is also in the backup scope.",
+ "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",
- "Monitor",
- "SAP"
+ "Backup",
+ "SQL"
],
"severity": "Medium",
- "subcategory": "Security",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "subcategory": "Azure Key Vault",
+ "text": "Protect your backup data with encryption and store keys safely in Azure Key Vault",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "WAF checklist",
- "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "services": [
- "WAF"
- ],
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "WAF checklist",
- "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "services": [
- "WAF"
- ],
- "severity": "High",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "WAF checklist",
- "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Device Update for IoT Hub",
- "services": [
- "WAF"
- ],
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "WAF checklist",
- "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Device Update for IoT Hub",
- "services": [
- "WAF",
- "AppSvc"
- ],
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
- },
- {
- "checklist": "WAF checklist",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "category": "BCDR",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure SQL Database uses SQL Server technology to create full backups every week, differential backup every 12-24 hours, and transaction log backup every 5 to 10 minutes. By default, SQL Database stores data in geo-redundant storage blobs that are replicated to a paired region.",
+ "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": [
- "WAF",
- "Entra"
+ "Backup",
+ "SQL",
+ "Storage"
],
"severity": "Medium",
- "text": "Use one Entra tenant for managing your Azure resources, unless you have a clear regulatory or business requirement for multi-tenants.",
- "waf": "Operations"
+ "subcategory": "Backup",
+ "text": "Configure Azure SQL Database automated backups",
+ "waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
+ "category": "BCDR",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "By default, SQL Database stores data in geo-redundant storage blobs that are replicated to a paired region. For SQL Database, the backup storage redundancy can be configured at the time of database creation or can be updated for an existing database; the changes made to an existing database apply to future backups only.",
+ "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": [
- "WAF",
- "Entra"
+ "Backup",
+ "Storage",
+ "SQL"
],
"severity": "Low",
- "text": "Use Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants.",
- "waf": "Operations"
- },
- {
- "checklist": "WAF checklist",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
- "services": [
- "WAF"
- ],
- "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"
- },
- {
- "checklist": "WAF checklist",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
- "services": [
- "WAF"
- ],
- "severity": "High",
- "text": "If you give a partner access to administer your tenant, use Azure Lighthouse.",
- "waf": "Cost"
+ "subcategory": "Backup",
+ "text": "Enable geo-redundant backup storage to protect against single region failure and data loss",
+ "waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
+ "category": "Code",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Malicious code can potentially circumvent security controls. Before deploying custom code to production, it is essential to review what's being deployed. Use a database tool like Azure Data Studio that supports source control. Implement tools and logic for code analysis, vulnerability and credential scanning.",
+ "guid": "7ca9f006-d2a9-4652-951c-de8e4ac5e76e",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-create-server",
"services": [
- "WAF",
- "RBAC",
- "Subscriptions",
- "ACR"
+ "SQL"
],
- "severity": "High",
- "text": "Enforce a RBAC model that aligns to your cloud operating model. Scope and Assign across Management Groups and Subscriptions.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "severity": "Medium",
+ "subcategory": "Source Control and Code Review",
+ "text": "Use Source Control systems to store, maintain and review application code deployed inside Azure SQLDB Database",
"waf": "Security"
},
{
- "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",
- "service": "Entra",
+ "category": "Data Discovery and Classification",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "In case of classification requirements Purview is the preferred option. Only use SQL Data Discovery & Classification in case Purview is not an option. Discover columns that potentially contain sensitive data. What is considered sensitive data heavily depends on the customer, compliance regulation, etc., and needs to be evaluated by the users in charge of that data. Classify the columns to use advanced sensitivity-based auditing and protection scenarios. Review results of automated discovery and finalize the classification if necessary.",
+ "guid": "d401509b-2629-4484-9a7f-af0d29a7778f",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/data-discovery-and-classification-overview?view=azuresql#faq---advanced-classification-capabilities",
"services": [
- "WAF"
+ "SQL"
],
- "severity": "High",
- "text": "Only use the authentication type Work or school account for all account types. Avoid using the Microsoft account",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "severity": "Low",
+ "subcategory": "Data Discovery and Classification",
+ "text": "Plan and configure Data Discovery & Classification to protect the sensitive data",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
+ "category": "Data Masking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Usage of this feature is recommended only if column encryption is not an option and there is a specific requirement to preserve data types and formats. Dynamic data masking limits sensitive data exposure by masking it to non-privileged users. Dynamic data masking helps prevent unauthorized access to sensitive data by enabling customers to designate how much of the sensitive data to reveal with minimal impact on the application layer.",
+ "guid": "9391fd50-135e-453e-90a7-c1a23f88cc13",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/dynamic-data-masking-overview",
"services": [
- "WAF",
- "Entra"
+ "SQL"
],
- "severity": "Medium",
- "text": "Only use groups to assign permissions. Add on-premises groups to the Entra ID only group if a group management system is already in place.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "severity": "Low",
+ "subcategory": "Data Masking",
+ "text": "Use Data Masking to prevent unauthorized non-admin users data access if no encryption is possible",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "category": "Defender",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "SQL Advanced Threat Detection (ATP) provides a layer of security that detects potential vulnerabilities and anomalous activity in databases such as SQL injection attacks and unusual behavior patterns. When a potential threat is detected Threat Detection sends an actionable real-time alert by email and in Microsoft Defender for Cloud, which includes clear investigation and remediation steps for the specific threat.",
+ "guid": "4e52d73f-5d37-428f-b3a2-e6997e835979",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure",
"services": [
- "WAF",
- "Entra",
- "AzurePolicy"
+ "EventHubs",
+ "SQL",
+ "Defender"
],
"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/",
+ "subcategory": "Advanced Threat Protection",
+ "text": "Review and complete Advanced Threat Protection (ATP) configuration",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "category": "Defender",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Enable Microsoft Defender for Azure SQL at the subscription level to automatically onboard and protect all existing and future servers and databases. When you enable on the subscription level, all databases in Azure SQL Database and Azure SQL Managed Instance are protected. You can then disable them individually if you choose. If you want to manually manage which databases are protected, disable at the subscription level and enable each database that you want protected.",
+ "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": [
- "WAF"
+ "Subscriptions",
+ "SQL",
+ "Defender"
],
"severity": "High",
- "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/",
+ "subcategory": "Defender for Azure SQL",
+ "text": "Enable Microsoft Defender for Azure SQL",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "category": "Defender",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Microsoft Defender for Azure SQL ATP detects anomalous activities indicating unusual and potentially harmful attempts to access or exploit databases. Alerts can be configured and generated and will be reported in the Defender for console.",
+ "guid": "ca342fdf-d25a-4427-b105-fcd50ff8a0ea",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure",
"services": [
- "WAF",
- "Entra"
+ "SQL",
+ "Defender",
+ "Monitor"
],
- "severity": "Medium",
- "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/",
+ "severity": "High",
+ "subcategory": "Defender for Azure SQL",
+ "text": "Prepare a security response plan to promptly react to Microsoft Defender for Azure SQL alerts",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "category": "Defender",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure SQLDB vulnerability assessment is a service that provides visibility into your security state. Vulnerability assessment includes actionable steps to resolve security issues and enhance your database security. It can help you to monitor a dynamic database environment where changes are difficult to track and improve your SQL security posture.",
+ "guid": "a6101ae7-534c-45ab-86fd-b34c55ea21ca",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-overview",
"services": [
- "WAF",
- "Entra"
+ "SQL",
+ "Defender",
+ "Monitor"
],
- "severity": "Medium",
- "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/",
+ "severity": "High",
+ "subcategory": "Vulnerability Assessment",
+ "text": "Configure Vulnerability Assessment (VA) findings and review recommendations",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "category": "Defender",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Microsoft Defender for Cloud provides vulnerability assessment for your Azure SQL Databases. Vulnerability assessment scans your databases for software vulnerabilities and provides a list of findings. You can use the findings to remediate software vulnerabilities and disable findings.",
+ "guid": "c8c5f112-1e50-4f77-9264-8195b4cd61ac",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-find?view=azuresql",
"services": [
- "WAF",
- "Monitor",
- "Entra"
+ "SQL",
+ "Defender"
],
- "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.",
+ "severity": "High",
+ "subcategory": "Vulnerability Assessment",
+ "text": "Regularly review of Vulnerability Assessment (VA) findings and recommendations and prepare a plan to fix",
"waf": "Security"
},
{
- "ammp": true,
- "checklist": "WAF checklist",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
+ "category": "Encryption",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Always Encrypted with Secure Enclaves expands confidential computing capabilities of Always Encrypted by enabling in-place encryption and richer confidential queries. Always Encrypted with Secure Enclaves addresses these limitations by allowing some computations on plaintext data inside a secure enclave on the server side. Usage of this feature is recommended for the cases where you need to limit administrator access and need your queries to support more than equality matching of encrypted columns.",
+ "guid": "65d7e54a-10a6-4094-b673-9ff3809c9277",
+ "link": "https://learn.microsoft.com/sql/relational-databases/security/encryption/always-encrypted-enclaves",
"services": [
- "WAF"
+ "SQL"
],
- "severity": "High",
- "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/",
+ "severity": "Medium",
+ "subcategory": "Always Encrypted",
+ "text": "If protecting sensitive PII data from admin users is a key requirement, but Column Encryption limitations cannot be tolerated, consider the adoption of Always Encrypted with Secure Enclaves",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "category": "Encryption",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "With Azure SQL Database, you can apply symmetric encryption to a column of data by using Transact-SQL. This approach is called column encryption, because you can use it to encrypt specific columns with different encryption keys. Doing so gives you more granular encryption capability than TDE, which encrypts data in pages. Using Always Encrypted to ensure sensitive data isn't exposed in plaintext in Azure SQL Database or SQL Managed Instance, even in memory/in use. Always Encrypted protects the data from Database Administrators (DBAs) and cloud admins (or bad actors who can impersonate high-privileged but unauthorized users) and gives you more control over who can access your data.",
+ "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": [
- "WAF",
- "RBAC",
- "Entra"
+ "AKV",
+ "Storage",
+ "SQL"
],
- "severity": "Medium",
- "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/",
+ "severity": "Low",
+ "subcategory": "Column Encryption",
+ "text": "To protect sensitive PII data from non-admin users in specific table columns, consider using Column Encryption",
"waf": "Security"
},
{
- "checklist": "WAF checklist",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "category": "Encryption",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Enabled by default, Transparent data encryption (TDE) helps to protect the database files against information disclosure by performing real-time encryption and decryption of the database, associated backups, and transaction log files 'at rest', without requiring changes to the application.",
+ "guid": "c614ac47-bebf-4061-b0a1-43e0c6b5e00d",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-create-server",
"services": [
- "WAF",
- "Entra"
+ "Backup",
+ "Storage",
+ "SQL"
],
- "severity": "Medium",
- "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/",
+ "severity": "High",
+ "subcategory": "Transparent Data Encryption",
+ "text": "Ensure Transparent Data Encryption (TDE) is kept enabled",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "category": "Encryption",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "If separation of duties in the management of keys and data within the organization is required, leverage Customer Managed Keys (CMK) for Transparent Data Encryption (TDE) for your Azure SQLDB and use Azure Key Vault to store (refer to its checklist). Leverage this feature when you have strict security requirements which cannot be met by the managed service keys.",
+ "guid": "2edb4165-4f54-47cc-a891-5c82c2f21e25",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-overview",
"services": [
- "WAF",
- "VNet"
+ "AKV",
+ "SQL"
],
"severity": "Medium",
- "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/",
+ "subcategory": "Transparent Data Encryption",
+ "text": "Use customer-managed keys (CMK) in Azure Key Vault (AKV) if you need increased transparency and granular control over the TDE protection",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
+ "category": "Encryption",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The minimal Transport Layer Security (TLS) version setting allows customers to choose which version of TLS their SQL database uses. It's possible to change the minimum TLS version by using the Azure portal, Azure PowerShell, and the Azure CLI.",
+ "guid": "7754b605-57fd-4bcb-8213-52c39d8e8225",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/connectivity-settings?source=recommendations&view=azuresql&tabs=azure-portal#minimal-tls-version",
"services": [
- "DNS",
- "VNet",
- "VPN",
- "WAF",
- "Firewall",
- "ExpressRoute",
- "Entra",
- "NVA"
+ "SQL"
],
"severity": "High",
- "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"
+ "subcategory": "Transport Layer Security",
+ "text": "Enforce minimum TLS version to the latest available",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "category": "Identity",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Use Azure Active Directory (Azure AD) authentication for centralized identity management. Use SQL Authentication only if really necessary and document as exceptions.",
+ "guid": "c9b8b6bf-2c6b-453d-b400-de9a43a549d7",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/authentication-aad-overview",
"services": [
- "WAF",
- "DDoS"
+ "Entra",
+ "SQL"
],
- "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/",
+ "severity": "Medium",
+ "subcategory": "Azure Active Directory",
+ "text": "Leverage Azure AD authentication for connections to Azure SQL Databases",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "WAF checklist",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "category": "Identity",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Using Azure AD groups simplifies permission management and both the group owner, and the resource owner can add/remove members to/from the group. Create a separate group for Azure AD administrators for each logical server. Monitor Azure AD group membership changes using Azure AD audit activity reports.",
+ "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": [
- "WAF",
- "NVA"
+ "Entra",
+ "SQL",
+ "Monitor"
],
"severity": "Medium",
- "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance.",
- "waf": "Reliability"
+ "subcategory": "Azure Active Directory",
+ "text": "Create a separate Azure AD group with two admin accounts for each Azure SQL Database logical server",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
+ "category": "Identity",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Ensure that distinct system and user assigned managed identities, that are dedicated to the function, with least permissions assigned, are used for communication from Azure services and applications to the Azure SQLDB databases.",
+ "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": [
- "WAF",
- "ExpressRoute",
- "ARS",
- "VPN"
+ "Entra",
+ "SQL"
],
- "severity": "Low",
- "text": "If you need transit between ExpressRoute and VPN gateways in hub and spoke scenarios, use Azure Route Server.",
+ "severity": "Medium",
+ "subcategory": "Azure Active Directory",
+ "text": "Minimize the use of password-based authentication for applications",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
+ "category": "Identity",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "System or User assigned managed identities enable Azure SQLDB to authenticate to other cloud services (e.g. Azure Key Vault) without storing credentials in code. Once enabled, all necessary permissions can be granted via Azure role-based-access-control to the specific Azure SQLDB instance. Do not share user assigned managed identities across multiple services if not strictly required.",
+ "guid": "69891194-5074-4e30-8f69-4efc3c580900",
+ "link": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
"services": [
- "WAF",
- "VNet",
- "ARS"
+ "Entra",
+ "AKV",
+ "SQL",
+ "RBAC",
+ "ACR"
],
"severity": "Low",
- "text": "If using Route Server, use a /27 prefix for the Route Server subnet.",
+ "subcategory": "Managed Identities",
+ "text": "Assign Azure SQL Database a managed identity for outbound resource access",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "category": "Identity",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Use an Azure AD integrated authentication that eliminates the use of passwords. Password-based authentication methods are a weaker form of authentication. Credentials can be compromised or mistakenly given away. Use single sign-on authentication using Windows credentials. Federate the on-premises AD domain with Azure AD and use integrated Windows authentication (for domain-joined machines with Azure AD).",
+ "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": [
- "WAF",
- "VNet",
- "ACR"
+ "Entra",
+ "SQL"
],
"severity": "Medium",
- "text": "For network architectures with multiple hub-and-spoke topologies across Azure regions, use global virtual network peerings between the hub VNets to connect the regions to each other.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
- "waf": "Performance"
+ "subcategory": "Passwords",
+ "text": "Minimize the use of password-based authentication for users",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "category": "Ledger",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The hash of the latest block in the database ledger is called the database digest. It represents the state of all ledger tables in the database at the time when the block was generated. Generating a database digest is efficient, because it involves computing only the hashes of the blocks that were recently appended. Azure Confidential Ledger is one of the supported store, it can be used and supports automatic generation and storage of database digests. Azure Ledger provides advanced security features like Blockchain Ledger Proof and Confidential Hardware Enclaves. Use it only if advanced security features are required, otherwise revert to Azure storage.",
+ "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": [
- "WAF",
- "Monitor"
+ "Storage",
+ "SQL"
],
"severity": "Medium",
- "text": "Use Azure Monitor for Networks to monitor the end-to-end state of the networks on Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Operations"
+ "subcategory": "Database Digest",
+ "text": "Use Azure Confidential Ledger to store database digests only if advanced security features are required",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "category": "Ledger",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The hash of the latest block in the database ledger is called the database digest. It represents the state of all ledger tables in the database at the time when the block was generated. Generating a database digest is efficient, because it involves computing only the hashes of the blocks that were recently appended. Azure Blob Storage with Immutable Storage feature can be used and supports automatic generation and storage of database digests. To prevent tampering of your digest files, configure and lock a retention policy for your container.",
+ "guid": "afefb2d3-95da-4ac9-acf5-33d18b32ef9a",
+ "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-digest-management",
"services": [
- "WAF",
- "VNet",
- "ExpressRoute"
+ "Storage",
+ "SQL",
+ "AzurePolicy"
],
"severity": "Medium",
- "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"
+ "subcategory": "Database Digest",
+ "text": "If Azure storage account is used to store database digests, ensure security is properly configured",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
+ "category": "Ledger",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Ledger provides a form of data integrity called forward integrity, which provides evidence of data tampering on data in your ledger tables. The database verification process takes as input one or more previously generated database digests. It then recomputes the hashes stored in the database ledger based on the current state of the ledger tables. If the computed hashes don't match the input digests, the verification fails. The failure indicates that the data has been tampered with. The verification process reports all inconsistencies that it detects.",
+ "guid": "f8d4ffda-8aac-4cc6-b72b-c81cb8625420",
+ "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-database-verification",
"services": [
"Storage",
- "WAF"
+ "SQL"
],
"severity": "Medium",
- "text": "Limit the number of routes per route table to 400.",
- "waf": "Reliability"
+ "subcategory": "Integrity",
+ "text": "Schedule the Ledger verification process regularly to verify data integrity",
+ "waf": "Security"
},
{
- "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)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "category": "Ledger",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The Ledger feature provides tamper-evidence capabilities in your database. You can cryptographically attest to other parties, such as auditors or other business parties, that your data hasn't been tampered with. Ledger helps protect data from any attacker or high-privileged user, including database administrators (DBAs), system administrators, and cloud administrators.",
+ "guid": "2563f498-e2d3-42ea-9e7b-5517881a06a2",
+ "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-overview",
"services": [
- "WAF",
- "VNet"
+ "SQL"
],
- "severity": "High",
- "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "subcategory": "Ledger",
+ "text": "If cryptographic proof of data integrity is a critical requirement, Ledger feature should be considered",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
+ "category": "Ledger",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Depending on the type of tampering, there are cases where you can repair the ledger without losing data. In the article contained in the --More Info-- column, different scenarios and recovery techniques are described.",
+ "guid": "804fc554-6554-4842-91c1-713b32f99902",
+ "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-how-to-recover-after-tampering",
"services": [
- "WAF",
- "ExpressRoute"
+ "SQL"
],
"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.",
+ "subcategory": "Recovery",
+ "text": "Prepare a response plan to investigate and repair a database after a tampering event",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure SQL Database Auditing tracks database events and writes them to an audit log in your Azure storage account. Auditing helps you understand database activity and gain insight into discrepancies and anomalies that could indicate business concerns or suspected security violations as well as helps you meet regulatory compliance. By default auditing policy includes all actions (queries, stored procedures and successful and failed logins) against the databases, which may result in high volume of audit logs. It's recommended for customers to configure auditing for different types of actions and action groups using PowerShell.",
+ "guid": "4082e31d-35f4-4a49-8507-d3172cc930a6",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
"services": [
- "WAF",
- "ExpressRoute",
- "VPN"
+ "Storage",
+ "SQL",
+ "AzurePolicy"
],
"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/",
+ "subcategory": "Auditing",
+ "text": "Ensure that Azure SQL Database Auditing is enabled at the server level",
"waf": "Security"
},
{
- "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",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure SQL Database Auditing logs can be written to external storage accounts, Log Analytics workspace or Event Hub. Be sure to protect the target repository using backups and secured configuration. Use Azure SQL Database Managed Identity to access the storage and set an explicit retention period. Do not grant permissions to administrators to the audit log repository. Use a different target storage for --Enabling Auditing of Microsoft support operations--. ",
+ "guid": "9b64bc50-b60f-4035-bf7a-28c4806dfb46",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
"services": [
- "WAF",
- "ACR"
+ "Entra",
+ "Backup",
+ "Storage",
+ "SQL",
+ "Monitor",
+ "EventHubs"
],
- "severity": "High",
- "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/",
+ "severity": "Low",
+ "subcategory": "Auditing",
+ "text": "Ensure that Azure SQL Database Auditing logs are backed up and secured in the selected repository type",
"waf": "Security"
},
{
- "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 | 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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The Azure Monitor activity log is a platform log in Azure that provides insight into subscription-level events. The activity log includes information like when a resource is modified. It is recommended to send this activity log to the same external storage repository as the Azure SQL Database Audit Log (storage account, Log Analytics workspace, Event Hub).",
+ "guid": "fcd34708-87ac-4efc-aaf6-57a47f76644a",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
"services": [
- "WAF"
+ "Storage",
+ "SQL",
+ "Subscriptions",
+ "Monitor",
+ "EventHubs"
],
"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/",
+ "subcategory": "Auditing",
+ "text": "Ensure that Azure SQL Database Activity Log is collected and integrated with Auditing logs",
"waf": "Security"
},
{
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Forward any logs from Azure SQL to your Security Information and Event Management (SIEM) and Security Orchestration Automation and Response (SOAR). Ensure that you are monitoring different types of Azure assets for potential threats and anomalies. Focus on getting high-quality alerts to reduce false positives for analysts to sort through. Alerts can be sourced from log data, agents, or other data.",
+ "guid": "f96e127e-9572-453a-b325-ff89ae9f6b44",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview",
"services": [
- "WAF",
- "VNet"
+ "SQL",
+ "Monitor"
],
- "severity": "High",
- "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"
+ "severity": "Medium",
+ "subcategory": "SIEM/SOAR",
+ "text": "Ensure that Azure SQL Database Auditing logs are being presented in to your organizations SIEM/SOAR",
+ "waf": "Security"
},
{
- "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",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Forward any logs from Azure SQL to your Security Information and Event Management (SIEM) and Security Orchestration Automation and Response (SOAR), which can be used to set up custom threat detections. Ensure that you are monitoring different types of Azure assets for potential threats and anomalies. Focus on getting high-quality alerts to reduce false positives for analysts to sort through. Alerts can be sourced from log data, agents, or other data.",
+ "guid": "41503bf8-73da-4a10-af9f-5f7fceb5456f",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
"services": [
- "WAF",
- "ASR"
+ "SQL",
+ "Monitor"
],
- "severity": "High",
- "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"
+ "severity": "Medium",
+ "subcategory": "SIEM/SOAR",
+ "text": "Ensure that Azure SQL Database Activity Log data is presented in to your SIEM/SOAR",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "WAF checklist",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "category": "Logging",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Security Operation Center (SOC) team should create an incident response plan (playbooks or manual responses) to investigate and mitigate tampering, malicious activities, and other anomalous behaviors.",
+ "guid": "19ec7c97-c563-4e1d-82f0-54d6ec12e754",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
"services": [
- "WAF",
- "DNS"
+ "EventHubs",
+ "SQL"
],
"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').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operations"
+ "subcategory": "SIEM/SOAR",
+ "text": "Ensure that you have response plans for malicious or aberrant audit logging events",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "WAF checklist",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "When you create a logical server from the Azure portal for Azure SQL Database, the result is a public endpoint that is visible and reachable over the public network (Public Access). You can then limit connectivity based on firewall rules and Service Endpoint. You can also configure private connectivity only limiting connections to internal networks using Private Endpoint (Private Access). Private Access using Private Endpoint should be the default unless a business case or performance/technical reason applies that cannot support it. Usage of Private Endpoints has performance implications that need to be considered and assessed.",
+ "guid": "2c6d356a-1784-475b-a42c-ec187dc8c925",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
"services": [
- "WAF",
- "DNS",
- "ACR"
+ "PrivateLink",
+ "SQL"
],
- "severity": "Medium",
- "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/",
+ "severity": "High",
+ "subcategory": "Connectivity",
+ "text": "Review Public vs. Private Access connectivity methods and select the appropriate one for the workload",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "WAF checklist",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "IMPORTANT: Connections to private endpoint only support Proxy as the connection policy. When using private endpoints connections are proxied via the Azure SQL Database gateway to the database nodes. Clients will not have a direct connection.",
+ "guid": "557b3ce5-bada-4296-8d52-a2d447bc1718",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/connectivity-architecture",
"services": [
- "WAF",
- "DNS"
+ "PrivateLink",
+ "SQL",
+ "AzurePolicy"
],
"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"
+ "subcategory": "Connectivity",
+ "text": "Keep default Azure SQL Database Connection Policy if not differently required and justified",
+ "waf": "Security"
},
{
- "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",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "This option configures the firewall to allow all connections from Azure, including connections from the subscriptions of other customers. If you select this option, make sure that your login and user permissions limit access to authorized users only. If not strictly required, keep this setting to OFF.",
+ "guid": "f48efacf-4405-4e8d-9dd0-16c5302ed082",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
"services": [
- "WAF",
- "VNet",
- "DNS",
- "VM"
+ "SQL",
+ "Subscriptions"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "WAF checklist",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
- "services": [
- "WAF",
- "Bastion"
- ],
- "severity": "Medium",
- "text": "Use Azure Bastion to securely connect to your network.",
+ "subcategory": "Connectivity",
+ "text": "Ensure Allow Azure Services and Resources to Access this Server setting is disabled in Azure SQL Database firewall",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure SQL Database has a new built-in feature that allows native integration with external REST endpoints. This means that integration of Azure SQL Database with Azure Functions, Azure Logic Apps, Cognitive Services, Event Hubs, Event Grid, Azure Containers, API Management and in general any REST or even GraphQL endpoint. If not properly restricted, code inside an Azure SQL Database database could leverage this mechanism to exfiltrate data. If not strictly required, it is recommended to block or restrict this feature using Outbound Firewall Rules.",
+ "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": [
- "WAF",
- "VNet",
- "Bastion"
+ "EventHubs",
+ "SQL",
+ "APIM"
],
"severity": "Medium",
- "text": "Use Azure Bastion in a subnet /26 or larger.",
+ "subcategory": "Outbound Control",
+ "text": "Block or restrict outbound REST API calls to external endpoints",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "WAF checklist",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Outbound firewall rules limit network traffic from the Azure SQL Database logical server to a customer defined list of Azure Storage accounts and Azure SQL Database logical servers. Any attempt to access storage accounts or databases not in this list is denied.",
+ "guid": "a566dd3d-314e-4a94-9378-102c42d82b38",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/outbound-firewall-rule-overview",
"services": [
- "WAF",
- "FrontDoor",
- "ACR",
- "AzurePolicy"
+ "Storage",
+ "SQL"
],
"severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "subcategory": "Outbound Control",
+ "text": "If outbound network access is required, it is recommended to configure outbound networking restrictions using built-in Azure SQL Database control feature",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "WAF checklist",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Private Endpoint is created inside a subnet in an Azure Virtual Network. Proper security configuration must be applied also to the containing network environment, including NSG/ASG, UDR, firewall, monitoring and auditing.",
+ "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": [
- "WAF",
- "AppGW",
- "FrontDoor",
- "AzurePolicy"
+ "PrivateLink",
+ "SQL",
+ "Monitor",
+ "VNet",
+ "Firewall"
],
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "Medium",
+ "subcategory": "Private Access",
+ "text": "If Private Access connectivity is used, ensure that you are using the Private Endpoint, Azure Virtual Network, Azure Firewall, and Azure Network Security Group checklists",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "WAF checklist",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "When adding a Private Endpoint connection, public routing to your logical server isn't blocked by default. In the --Firewall and virtual networks-- pane, the setting --Deny public network access-- is not selected by default. To disable public network access, ensure that you select --Deny public network access--.",
+ "guid": "3a0808ee-ea7a-47ab-bdce-920a6a2b3881",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/private-endpoint-overview?view=azuresql#disable-public-access-to-your-logical-server",
"services": [
- "WAF",
+ "PrivateLink",
+ "SQL",
"VNet"
],
"severity": "High",
- "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/",
+ "subcategory": "Private Access",
+ "text": "If Private Endpoint (Private Access) is used, consider disabling Public Access connectivity",
"waf": "Security"
},
{
- "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",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Network Security Group (NSG) and Application Security Group (ASG) can be now applied to subnet containing Private Endpoints to restrict connections to Azure SQLDB based on internal source IP ranges.",
+ "guid": "8600527e-e8c4-4424-90ef-1f0dca0224f2",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview#network-security-of-private-endpoints",
"services": [
- "WAF",
- "VNet",
- "DDoS"
+ "PrivateLink",
+ "SQL",
+ "VNet"
],
- "severity": "High",
- "text": "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "severity": "Medium",
+ "subcategory": "Private Access",
+ "text": "If Private Endpoint (Private Access) is used, apply NSG and eventually ASG to limit incoming source IP address ranges",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "WAF checklist",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
- "services": [
- "WAF"
- ],
- "severity": "High",
- "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"
- },
- {
- "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",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "A Managed Instance (SQL MI) can be isolated inside a virtual network to prevent external access. Applications and tools that are in the same or peered virtual network in the same region could access it directly. Applications and tools that are in different region could use virtual-network-to-virtual-network connection or ExpressRoute circuit peering to establish connection. Customer should use Network Security Groups (NSG), and eventually internal firewalls, to restrict access over port 1433 only to resources that require access to a managed instance.",
+ "guid": "18123ef4-a0a6-45e3-87fe-7f454f65d975",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connectivity-architecture-overview",
"services": [
- "WAF",
- "DDoS"
+ "VNet",
+ "SQL",
+ "ExpressRoute"
],
- "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/",
+ "severity": "Medium",
+ "subcategory": "Private Access",
+ "text": "Apply Network Security Groups (NSG) and firewall rules to restrict access to Azure SQL Managed Instance internal subnet",
"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",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Azure Virtual Network Service Endpoint is preferred solution if you want to establish a direct connection to the Azure SQL Database backend nodes using Redirect policy. This will allow access in high performance mode and is the recommended approach from a performance perspective.",
+ "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": [
- "WAF",
- "VM",
+ "VNet",
+ "SQL",
"AzurePolicy"
],
"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.",
+ "subcategory": "Public Access",
+ "text": "If Public Access connectivity is used, leverage Service Endpoint to restrict access from selected Azure Virtual Networks",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
- "services": [
- "WAF",
- "Backup",
- "ExpressRoute",
- "VPN"
- ],
- "severity": "Medium",
- "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"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "description": "You can use AS-path prepending and connection weights to influence traffic from Azure to on-premises, and the full range of BGP attributes in your own routers to influence traffic from on-premises to Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The Azure SQL Database firewall allows you to specify IP address ranges from which communications are accepted. This approach is fine for stable IP addresses that are outside the Azure private network.",
+ "guid": "a73e32da-b3f4-4960-b5ec-2f42a557bf31",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview",
"services": [
- "WAF",
- "ExpressRoute"
+ "Storage",
+ "SQL"
],
"severity": "Medium",
- "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"
+ "subcategory": "Public Access",
+ "text": "If Public Access connectivity is used, ensure that only specific known IPs are added to the firewall",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "We recommend that you use database-level IP firewall rules whenever possible. This practice enhances security and makes your database more portable. Use server-level IP firewall rules for administrators. Also use them when you have many databases that have the same access requirements, and you don't want to configure each database individually.",
+ "guid": "e0f31ac9-35c8-4bfd-9865-edb60ffc6768",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/firewall-configure",
"services": [
- "WAF",
- "ExpressRoute",
- "VPN"
+ "Storage",
+ "SQL"
],
- "severity": "Medium",
- "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"
+ "severity": "Low",
+ "subcategory": "Public Access",
+ "text": "If Public Access connectivity is used and controlled by Azure SQL Database firewall rules, use database-level over server-level IP rules",
+ "waf": "Security"
},
{
- "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",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "A Managed Instance (SQL MI) can be isolated inside a virtual network to prevent external access. The Managed Instance public endpoint is not enabled by default, must be explicitly enabled, only if strictly required. If company policy disallows the use of public endpoints, use Azure Policy to prevent enabling public endpoints in the first place.",
+ "guid": "b8435656-143e-41a8-9922-61d34edb751a",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview",
"services": [
- "WAF",
- "Cost",
- "ExpressRoute"
+ "VNet",
+ "SQL",
+ "AzurePolicy"
],
"severity": "High",
- "text": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost.",
- "waf": "Cost"
+ "subcategory": "Public Access",
+ "text": "Do not enable Azure SQL Managed Instance public endpoint",
+ "waf": "Security"
},
{
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
+ "category": "Networking",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "A Managed Instance (SQL MI) public endpoint is not enabled by default, must be explicitly enabled, only if strictly required. In this case, it is recommended to apply a Network Security Groups (NSG) to restrict access to port 3342 only to trusted source IP addresses.",
+ "guid": "057dd298-8726-4aa6-b590-1f81d2e30421",
+ "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview",
"services": [
- "WAF",
- "Cost",
- "ExpressRoute"
+ "VNet",
+ "SQL"
],
"severity": "High",
- "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"
+ "subcategory": "Public Access",
+ "text": "Restrict access if Azure SQL Managed Instance public endpoint is required",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "category": "Privileged Access",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Most operations, support, and troubleshooting performed by Microsoft personnel and sub-processors do not require access to customer data. In those rare circumstances where such access is required, Customer Lockbox for Microsoft Azure provides an interface for customers to review and approve or reject customer data access requests. In support scenarios where Microsoft needs to access customer data, Azure SQL Database supports Customer Lockbox to provide an interface for you to review and approve or reject customer data access requests.",
+ "guid": "37b6eb0f-553d-488f-8a8a-cb9bf97388ff",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
"services": [
- "WAF",
- "ExpressRoute"
+ "SQL"
],
- "severity": "Medium",
- "text": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
+ "severity": "Low",
+ "subcategory": "Lockbox",
+ "text": "Review and enable Customer Lockbox for Azure SQL Database access by Microsoft personnel",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "category": "Privileged Access",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "The principle of least privilege states that users shouldn't have more privileges than needed to complete their tasks. High-privileged database and server users can perform many configuration and maintenance activities on the database and can also drop databases in Azure SQL instance. Tracking database owners and privileged accounts is important to avoid having excessive permission.",
+ "guid": "5fe5281f-f0f9-4842-a682-8baf18bd8316",
+ "link": "https://learn.microsoft.com/azure/azure-sql/database/security-best-practice?view=azuresql#implement-principle-of-least-privilege",
"services": [
- "WAF",
- "ExpressRoute"
+ "SQL"
],
"severity": "Medium",
- "text": "For scenarios that require bandwidth higher than 10 Gbps or dedicated 10/100-Gbps ports, use ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "subcategory": "Permissions",
+ "text": "Ensure that users are assigned the minimum level of access necessarily to complete their job functions",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "category": "Privileged Access",
+ "checklist": "Azure SQLDB Security Checklist (Preview)",
+ "description": "Identities (both Users and SPNs) should be scoped to the least amount of access needed to perform the function. A higher number of tightly scoped SPNs should be used, instead of having one SPN with multiple sets of unrelated permissions. For example, if there are three external web applications hosted on-prem that make queries to the Azure SQL Database, they should not all use the same SPN for these activities. Instead, they should each have their own tightly scoped SPN.",
+ "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": [
- "WAF",
- "ExpressRoute"
+ "Entra",
+ "SQL"
],
- "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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "severity": "Low",
+ "subcategory": "Permissions",
+ "text": "Ensure that distinct applications will be assigned different credentials with minimal permissions to access Azure SQL Database",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "fda1dae2-dc95-4d48-a6c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/sql-data-warehouse/backup-and-restore#geo-backups-and-disaster-recovery",
"services": [
- "WAF",
- "VPN"
+ "Backup"
],
"severity": "Medium",
- "text": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "subcategory": "Backup",
+ "text": "Enable Geo Backup ",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "WAF checklist",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
- "services": [
- "WAF",
- "VPN"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "89e558b9-37d4-4974-b111-2dbd7baf12e7",
+ "link": "https://techcommunity.microsoft.com/t5/azure-synapse-analytics-blog/how-to-use-ci-cd-integration-to-automate-the-deploy-of-a-synapse/ba-p/2248060",
+ "services": [],
"severity": "Medium",
- "text": "Use redundant VPN appliances on-premises (active/active or active/passive).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "subcategory": "DevOps",
+ "text": "Integrate with Azure DevOps to deploy Multiple environments",
"waf": "Reliability"
},
{
- "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",
- "Cost",
- "ExpressRoute"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "b94ef6e0-47d2-4da2-a82b-1cd6d2f54b29",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "services": [],
"severity": "High",
- "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"
+ "subcategory": "DR",
+ "text": "BCDR for Azure Synapse pipelines ",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
- "services": [
- "WAF",
- "ExpressRoute"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "769e3a69-1e88-438a-a936-667e13c00567",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "services": [],
+ "severity": "High",
+ "subcategory": "DR",
+ "text": "Use Zone Redudant pipelines in regions supporting Availablity Zones",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "4b1e944a-4598-437e-b7ad-6c6d3b365a5c",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/cicd/source-control",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "DevOps",
+ "text": "Create Scripts for all DLL Statements and save in Git Repository ",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "7acbe48a-be54-4cd7-af2e-87768358c559",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/spark/apache-spark-development-using-notebooks",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "DevOps",
+ "text": "When working with Spark Notebooks, make sure to integrate with Git or Azure DevOps",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "775c6ee9-5b86-4ad8-a44c-e3b2b38b875b",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/sql-data-warehouse/backup-and-restore",
+ "services": [],
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Security"
+ "subcategory": "High Availablity",
+ "text": "Use Dedicated pools",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
- "services": [
- "WAF",
- "Monitor",
- "ExpressRoute"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "a1cf2049-9013-4a5d-9ce4-74dbcbd8682a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/analytics/azure-synapse",
+ "services": [],
"severity": "Medium",
- "text": "Monitor ExpressRoute availability and utilization using built-in Express Route Insights.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "subcategory": "DR",
+ "text": "Use Database restore points for Azure Synapse",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
- "services": [
- "NetworkWatcher",
- "WAF",
- "Monitor",
- "ACR"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "6abca2a4-fda1-4dae-8dc9-5d48c6c791dc",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/sql/on-demand-workspace-overview",
+ "services": [],
"severity": "Medium",
- "text": "Use Connection Monitor for connectivity monitoring across the network, especially between on-premises and Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "subcategory": "High Availablity",
+ "text": "Use Serverless Pools when required",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "a0f6c565-89e5-458b-a37d-4974e1112dbd",
+ "link": "https://learn.microsoft.com/azure/synapse-analytics/quickstart-deployment-template-workspaces",
"services": [
- "WAF",
- "ExpressRoute"
+ "Storage"
],
"severity": "Medium",
- "text": "Use ExpressRoute circuits from different peering locations for redundancy.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "subcategory": "DevOps",
+ "text": "Use Infrastructure as a Code template to do repeatable deployments",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
- "services": [
- "WAF",
- "ExpressRoute",
- "VPN"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Synapse Review Checklist",
+ "guid": "7baf12e7-b94e-4f6e-847d-2da2982b1cd6",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/synapse-link",
+ "services": [],
"severity": "Medium",
- "text": "Use site-to-site VPN as failover of ExpressRoute, if only using a single ExpressRoute circuit.",
+ "subcategory": "High Availablity",
+ "text": "Make sure to re-eshtablish any Synapse Links",
+ "training": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview",
"waf": "Reliability"
},
{
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
- "services": [
- "Storage",
- "WAF",
- "VNet"
- ],
- "severity": "High",
- "text": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated.",
+ "category": "Operations Management",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Best Practices",
+ "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
"waf": "Reliability"
},
{
- "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"
- ],
+ "category": "Operations Management",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "services": [],
"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.",
+ "subcategory": "Availablity Zone",
+ "text": "Use zone redundant pipelines in regions that support Availability Zones",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
+ "category": "Operations Management",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "ExpressRoute"
+ "Backup"
],
"severity": "Medium",
- "text": "Ensure the two physical links of your ExpressRoute circuit are connected to two distinct edge devices in your network.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "subcategory": "DevOps Integration",
+ "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"services": [
- "WAF"
+ "VM"
],
"severity": "Medium",
- "text": "Ensure Bidirectional Forwarding Detection (BFD) is enabled and configured on customer or provider edge routing devices.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "subcategory": "Network",
+ "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "category": "Network Topology and Connectivity",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "ExpressRoute"
+ "VNet"
],
- "severity": "High",
- "text": "Connect the ExpressRoute Gateway to two or more circuits from different peering locations for higher resiliency.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "severity": "Medium",
+ "subcategory": "Network",
+ "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "category": "Governance and Security",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "VNet",
- "ExpressRoute",
- "Monitor"
+ "AKV"
],
- "severity": "Medium",
- "text": "Configure diagnostic logs and alerts for ExpressRoute virtual network gateway.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Integration",
+ "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "category": "Operations Management",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"services": [
- "WAF",
- "VNet",
- "ExpressRoute"
+ "SQL"
],
"severity": "Medium",
- "text": "Do not use ExpressRoute circuits for VNet-to-VNet communication.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
- },
- {
- "checklist": "WAF checklist",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "services": [
- "WAF",
- "ACR"
- ],
- "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"
+ "subcategory": "Best Practices",
+ "text": "Leverage Flexible Server",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "category": "Operations Management",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
"services": [
- "WAF",
- "Firewall"
+ "SQL"
],
"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).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Leverage Availability Zones where regionally applicable",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "category": "Operations Management",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"services": [
- "ACR",
- "AzurePolicy",
- "WAF",
- "Firewall",
- "RBAC"
+ "SQL"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "subcategory": "Best Practices",
+ "text": "Leverage Data-in replication for cross-region DR scenarios",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
+ "category": "Governance",
+ "checklist": "Azure Key Vault",
+ "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"services": [
- "WAF",
- "Firewall"
+ "AKV",
+ "Backup"
],
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Deployment best practices",
+ "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
+ "category": "BC and DR",
+ "checklist": "Azure Key Vault",
+ "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Key Vault",
"services": [
- "WAF",
- "DNS",
- "Firewall"
+ "AKV",
+ "ACR"
],
- "severity": "High",
- "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"
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "category": "BC and DR",
+ "checklist": "Azure Key Vault",
+ "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
+ "service": "Key Vault",
"services": [
- "WAF",
- "Firewall"
+ "AKV"
],
- "severity": "High",
- "text": "Use Azure Firewall Premium to enable additional security features.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
+ "waf": "Reliability"
},
{
- "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#idps-signature-rules",
- "service": "Firewall",
+ "category": "BC and DR",
+ "checklist": "Azure Key Vault",
+ "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
+ "service": "Key Vault",
"services": [
- "WAF",
- "Firewall"
+ "AKV",
+ "AzurePolicy"
],
- "severity": "High",
- "text": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "High Availability",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
+ "service": "Key Vault",
"services": [
- "WAF",
- "Firewall"
+ "AKV",
+ "Storage",
+ "Backup",
+ "ASR",
+ "Subscriptions"
],
- "severity": "High",
- "text": "Configure Azure Firewall IDPS mode to Deny for additional protection.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Business continuity and disaster recovery",
+ "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.",
+ "waf": "Reliability"
},
{
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"services": [
- "VWAN",
- "Storage",
- "VNet",
- "WAF",
- "Firewall",
- "NVA"
+ "AKV",
+ "ASR"
],
"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.",
- "waf": "Security"
+ "subcategory": "Business continuity and disaster recovery",
+ "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
+ "waf": "Reliability"
},
{
- "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",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"services": [
- "Storage",
- "WAF",
- "Firewall"
+ "AKV",
+ "ASR"
],
- "severity": "Medium",
- "text": "Add diagnostic settings to save logs, using the Resource Specific destination table, for all Azure Firewall deployments.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Business continuity and disaster recovery",
+ "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
+ "waf": "Reliability"
},
{
- "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",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
"services": [
- "WAF",
- "Firewall",
- "AzurePolicy"
+ "AKV",
+ "Backup",
+ "ASR"
],
- "severity": "Important",
- "text": "Migrate from Azure Firewall Classic rules (if exist) to Firewall Policy.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Business continuity and disaster recovery",
+ "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.",
+ "waf": "Reliability"
},
{
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
"services": [
- "WAF",
- "VNet",
- "Firewall"
+ "AKV",
+ "Backup",
+ "ASR"
],
- "severity": "High",
- "text": "Use a /26 prefix for your Azure Firewall subnets.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Business continuity and disaster recovery",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "category": "Management",
+ "checklist": "Azure Key Vault",
+ "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
+ "service": "Key Vault",
"services": [
- "WAF",
- "AzurePolicy"
+ "AKV",
+ "ASR",
+ "EventHubs"
],
"severity": "Medium",
- "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use.",
- "waf": "Performance"
+ "subcategory": "Business continuity and disaster recovery",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
- "services": [
- "Storage",
- "WAF"
- ],
- "severity": "Medium",
- "text": "Use IP Groups or IP prefixes to reduce number of IP table rules.",
- "waf": "Performance"
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "cb7da8cf-aa62-4a15-a495-6da97dc3a242",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-plan-capacity-vmware",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Replication",
+ "text": "Capacity planning is required to make sure you have sufficient bandwidth for replication and an estimated number of CPU cores & disk types that will be needed in Azure for failover",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "67b23587-05a1-4652-aded-fa8a488cdec4",
+ "link": "https://learn.microsoft.com/azure/site-recovery/azure-to-azure-how-to-enable-policy",
"services": [
- "WAF"
+ "VM",
+ "ASR",
+ "AzurePolicy"
],
- "severity": "Medium",
- "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"
+ "severity": "High",
+ "subcategory": "Replication",
+ "text": "Use Azure Policy to ensure that all critical Azure VMs are protected with ASR",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "862bc3bc-14be-4b7f-96e8-d9b3bec228e7",
+ "link": "https://learn.microsoft.com/azure/site-recovery/recovery-plan-overview",
"services": [
- "WAF",
- "Monitor"
+ "VM"
],
"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.",
- "waf": "Performance"
+ "subcategory": "Replication",
+ "text": "Define recovery plans to automate the failover sequence for VMs. You can also include automation scripts to reduce manual steps and improve recovery time",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
- "services": [
- "WAF",
- "Firewall"
- ],
- "severity": "High",
- "text": "If you are using Azure Firewall Premium, enable TLS Inspection.",
- "waf": "Performance"
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "437b1736-db55-4f67-a613-334bd09dc234",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-how-to-manage?tabs=recovery-services-vault",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Data Protection",
+ "text": "Enable and LOCK immutability for vaults. This ensures recovery points cannot be deleted before their intended expiry",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "services": [
- "ServiceBus",
- "WAF"
- ],
- "severity": "Low",
- "text": "Use web categories to allow or deny outbound access to specific topics.",
- "waf": "Performance"
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "19db6128-1265-404b-a47a-493a08042729",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Data Protection",
+ "text": "Enable 'Always-on soft delete' for vaults protecting critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
+ "category": "Operations Management",
+ "checklist": "Recovery Services Vault Checklist",
+ "guid": "4798b158-8b31-4aa5-9ceb-54445135a227",
+ "link": "https://learn.microsoft.com/azure/backup/backup-create-recovery-services-vault#set-storage-redundancy",
"services": [
- "WAF"
+ "Storage"
],
"severity": "Medium",
- "text": "As part of your TLS inspection, plan for receiving traffic from Azure App Gateways for inspection.",
- "waf": "Performance"
+ "subcategory": "Redudancy",
+ "text": "When creating Recovery Service Vaults choose the best storage redundancy option for your requirements. Vaults support local, geo and zone redundancy but this setting cannot be changed once the vault is protecting one or more resources",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
+ "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
+ "service": "VMSS",
"services": [
- "WAF",
- "DNS",
- "Firewall"
+ "VM"
],
- "severity": "Medium",
- "text": "Enable Azure Firewall DNS proxy configuration.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "VM Scale Sets",
+ "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
+ "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
+ "service": "VM",
"services": [
- "WAF",
- "Monitor",
- "Firewall"
+ "Backup",
+ "VM"
],
"severity": "High",
- "text": "Integrate Azure Firewall with Azure Monitor and enable diagnostic logging to store and analyze firewall logs.",
- "waf": "Operations"
+ "subcategory": "Virtual Machines",
+ "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
+ "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "VM",
"services": [
- "WAF",
- "Backup"
+ "VM"
],
- "severity": "Low",
- "text": "Implement backups for your firewall rules",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Virtual Machines",
+ "text": "Use Premium or Ultra disks for production VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "WAF checklist",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
+ "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
+ "service": "VM",
"services": [
- "WAF",
- "VNet"
+ "VM"
],
"severity": "High",
- "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"
+ "subcategory": "Virtual Machines",
+ "text": "Ensure Managed Disks are used for all VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "WAF checklist",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
+ "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
+ "service": "VM",
"services": [
- "WAF",
- "ExpressRoute",
- "PrivateLink"
+ "SQL",
+ "Storage",
+ "VM"
],
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Security"
+ "subcategory": "Virtual Machines",
+ "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
+ "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "VM",
"services": [
- "WAF",
- "VNet"
+ "Storage",
+ "VM",
+ "ACR"
],
- "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"
+ "severity": "Medium",
+ "subcategory": "Virtual Machines",
+ "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "WAF checklist",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
+ "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "VM",
"services": [
- "DNS",
- "PrivateLink",
- "WAF",
- "Firewall",
- "NVA"
+ "VM"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Security"
+ "subcategory": "Virtual Machines",
+ "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
+ "waf": "Reliability"
},
{
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
+ "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "VM",
"services": [
- "WAF",
- "VNet",
- "ExpressRoute",
- "VPN"
+ "ASR",
+ "VM"
],
"severity": "High",
- "text": "Use at least a /27 prefix for your Gateway subnets.",
- "waf": "Security"
+ "subcategory": "Virtual Machines",
+ "text": "Avoid running a production workload on a single VM",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "WAF checklist",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
+ "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
"services": [
- "WAF",
- "VNet"
+ "AVS",
+ "VM",
+ "ASR"
],
"severity": "High",
- "text": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity.",
- "waf": "Security"
+ "subcategory": "Virtual Machines",
+ "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "WAF checklist",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
+ "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
+ "service": "VM",
"services": [
- "WAF",
- "VNet",
- "ACR"
+ "VM"
],
- "severity": "Medium",
- "text": "Use NSGs to help protect traffic across subnets, as well as east/west traffic across the platform (traffic between landing zones).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Virtual Machines",
+ "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "WAF checklist",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
+ "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
+ "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
+ "service": "VM",
"services": [
- "WAF",
- "VNet",
- "NVA",
- "Entra"
+ "VM",
+ "ASR"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Security"
+ "subcategory": "Virtual Machines",
+ "text": "Increase quotas in DR region before testing failover with ASR",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "WAF checklist",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "category": "Compute",
+ "checklist": "Resiliency Review",
+ "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
+ "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
+ "service": "VM",
"services": [
- "NetworkWatcher",
- "WAF",
- "VNet"
+ "VM"
],
- "severity": "Medium",
- "text": "Enable VNet Flow Logs and feed them into Traffic Analytics to gain insights into internal and external traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Virtual Machines",
+ "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "WAF checklist",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
+ "category": "Data",
+ "checklist": "Resiliency Review",
+ "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
+ "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "VNet"
+ "Storage"
],
"severity": "Medium",
- "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",
+ "subcategory": "Storage Accounts",
+ "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "category": "Data",
+ "checklist": "Resiliency Review",
+ "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
+ "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "VWAN"
+ "Storage"
],
- "severity": "Medium",
- "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"
+ "severity": "Low",
+ "subcategory": "Storage Accounts",
+ "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "category": "Data",
+ "checklist": "Resiliency Review",
+ "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "ACR",
- "VWAN"
+ "Storage"
],
- "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"
+ "severity": "Low",
+ "subcategory": "Storage Accounts",
+ "text": "Enable soft delete for Storage Account Containers",
+ "waf": "Reliability"
},
{
- "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/howto-firewall",
- "service": "VWAN",
+ "category": "Data",
+ "checklist": "Resiliency Review",
+ "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Firewall"
+ "Storage"
],
- "severity": "Medium",
- "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"
+ "severity": "Low",
+ "subcategory": "Storage Accounts",
+ "text": "Enable soft delete for blobs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
+ "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
+ "service": "Azure Backup",
"services": [
- "WAF",
- "VWAN"
+ "Backup"
],
"severity": "Medium",
- "text": "Ensure that your virtual WAN network architecture aligns to an identified architecture scenario.",
+ "subcategory": "Backup",
+ "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
+ "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
+ "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
+ "service": "Azure Backup",
"services": [
- "WAF",
- "Monitor",
- "VWAN"
+ "Backup"
],
- "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.",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Backup",
+ "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
+ "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
+ "service": "Azure Backup",
"services": [
- "WAF",
- "VWAN"
+ "Storage",
+ "Backup"
],
- "severity": "Medium",
- "text": "Do not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.",
+ "severity": "Low",
+ "subcategory": "Backup",
+ "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Clearly define your organization's business continuity and disaster recovery requirements for your Azure environment. This includes identifying the critical applications, data, and services that need to be protected, as well as specifying the desired recovery objectives and strategies.",
+ "guid": "72e52e36-11dd-458c-9a4b-1521e43a58a9",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-business-continuity-disaster-recovery",
"services": [
- "WAF",
- "ExpressRoute",
- "VPN"
+ "ASR"
],
- "severity": "Medium",
- "text": "Use AS-Path as hub routing preference, since it is more flexible than ExpressRoute or VPN.",
+ "severity": "High",
+ "subcategory": "Design",
+ "text": "Define business continuity and disaster recovery requirements",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
- "services": [
- "WAF",
- "VWAN"
- ],
- "severity": "Medium",
- "text": "Configure label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Ensure that your Azure architectures are designed with a focus on reliability. Consider implementing fault-tolerant mechanisms, redundancy, and resiliency patterns to minimize the impact of failures and maximize the availability of your applications and services.",
+ "guid": "c2399c4d-7b67-4d0c-9555-62f2b3e4563a",
+ "link": "https://learn.microsoft.com/azure/architecture/reliability/architect",
+ "services": [],
+ "severity": "High",
+ "subcategory": "Design",
+ "text": "Implement reliability best practices in Azure architectures",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "WAF checklist",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "IaC configurations can play a role in your disaster recovery plan, particularly in situations where recovery time is not time-sensitive. In the event of infrastructure recreation in a second region, IaC can be used to reproduce the necessary infrastructure.",
+ "guid": "fe237de2-43b1-46c3-8d7a-a9b7570449aa",
+ "link": "https://learn.microsoft.com/azure/well-architected/devops/automation-infrastructure",
"services": [
- "WAF"
+ "RBAC",
+ "ASR"
],
- "severity": "High",
- "text": "Assign at least a /23 prefix to virtual hubs to ensure enough IP space is available.",
+ "severity": "Medium",
+ "subcategory": "DevOps",
+ "text": "Implement Infrastructure as Code (IaC) for Rapid Infrastructure Recovery",
"waf": "Reliability"
},
{
- "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",
+ "category": "General",
+ "checklist": "Resiliency Review",
+ "description": "Azure offers region pairs that are geographically separated and can be used for cross-region replication and disaster recovery. These region pairs provide redundancy and protection against regional or large-scale disasters.",
+ "guid": "dcb1f7d5-769a-4e56-aba3-8d4a85e2213d",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
"services": [
- "WAF",
- "AzurePolicy"
+ "ASR"
],
- "severity": "High",
- "text": "Leverage Azure Policy strategically, define controls for your environment, using Policy Initiatives to group related policies.",
- "waf": "Security"
+ "severity": "Medium",
+ "subcategory": "Multi-region",
+ "text": "Plan for cross-region recovery by leveraging region pairs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "By deploying an Application Gateway with a minimum instance count of two, you will have at least two instances available under normal circumstances. In the event that one of the instances encounters a problem, the other instance will handle the traffic while a new instance is being created. This approach significantly reduces the risk of service disruption and ensures a seamless experience for your users.",
+ "guid": "93c76286-37a5-451c-9b04-e4f1854387e5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant#autoscaling-and-high-availability",
"services": [
- "WAF",
- "RBAC",
- "AzurePolicy"
+ "AppGW"
],
"severity": "Medium",
- "text": "Map regulatory and compliance requirements to Azure Policy definitions and Azure role assignments.",
- "waf": "Security"
+ "subcategory": "Application Gateways",
+ "text": "Deploy Application Gateways with a minimum instance count of 2 to avoid instance provisioning downtime",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "The v2 SKU offers several advantages and critical new features that enhance the availability and resilience of your application infrastructure. One notable feature supported by the v2 SKU is zone redundancy, which allows an Application Gateway deployment to span multiple Availability Zones.",
+ "guid": "ced126cd-032a-4f5b-8fc6-998a535e3378",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
"services": [
- "WAF",
- "Subscriptions",
- "AzurePolicy"
+ "Storage",
+ "AppGW"
],
- "severity": "Medium",
- "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes.",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "Application Gateways",
+ "text": "Deploy Azure Application Gateway v2 for zone redundancy support",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "Azure Front Door provides automatic failover capabilities, ensuring continuity in the event of a primary region becoming unavailable. However, during the failover process, there may be a brief period (typically 20-60 seconds) when clients cannot reach the application. It is essential to review the Azure Front Door service level agreement (SLA) to determine whether relying solely on Front Door meets your business requirements for high availability. ",
+ "guid": "97e31c67-d68c-4f6a-92a1-194956d697dc",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/app-service-web-app/multi-region#azure-front-door",
"services": [
- "WAF",
- "AzurePolicy"
+ "FrontDoor"
],
- "severity": "High",
- "text": "Manage policy assignments at the highest appropriate level with exclusions at bottom levels, if required.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Azure Front Door",
+ "text": "Consider a redundant traffic management solution in conjunction with Azure Front Door",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "By implementing Traffic Manager, you can configure it to continuously monitor the health of your application endpoints and automatically redirect traffic to an alternate endpoint when necessary. This automation minimizes downtime and provides a more seamless experience for your users during disaster recovery scenarios.",
+ "guid": "8df03a82-2cd4-463c-abbc-8ac299ebc92a",
+ "link": "https://learn.microsoft.com/azure/networking/disaster-recovery-dns-traffic-manager",
"services": [
- "WAF",
- "Subscriptions",
- "AzurePolicy"
+ "DNS",
+ "TrafficManager",
+ "ASR",
+ "Monitor"
],
"severity": "Low",
- "text": "Use Azure Policy to control which services users can provision at the subscription/management group level.",
- "waf": "Security"
+ "subcategory": "DNS",
+ "text": "Plan for automated failover using Traffic Manager for DNS Traffic",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
+ "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
+ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
+ "service": "DNS",
"services": [
- "WAF",
- "AzurePolicy"
+ "DNS",
+ "ASR",
+ "ACR"
],
- "severity": "High",
- "text": "Use built-in policies where possible to minimize operational overhead.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "DNS",
+ "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "description": "Assigning the Resource Policy Contributor role to specific scopes allows you to delegate policy management to relevant teams. For instance, a central IT team may oversee management group-level policies, while application teams handle policies for their subscriptions, enabling distributed governance with adherence to organizational standards.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
+ "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
+ "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
+ "service": "Data Gateways",
"services": [
- "Subscriptions",
- "AzurePolicy",
- "WAF",
- "Entra",
- "RBAC"
+ "ACR"
],
"severity": "Medium",
- "text": "Assign the built-in Resource Policy Contributor role at a particular scope to enable application-level governance.",
- "waf": "Security"
+ "subcategory": "Data Gateways",
+ "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "When using ExpressRoute, it's important to design for high availability by incorporating redundancy in both the partner and customer networks. This can include multiple ExpressRoute circuits, redundant connections from your network to Microsoft, and ensuring your on-premises network equipment has redundant connections.",
+ "guid": "c0e7c28d-c936-4657-802b-ff4564b0d934",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
"services": [
- "WAF",
- "Subscriptions",
- "AzurePolicy"
+ "ExpressRoute"
],
"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.",
- "waf": "Security"
+ "subcategory": "ExpressRoute",
+ "text": "Ensure redundancy within both the partner network and customer network when utilizing ExpressRoute for high availability",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "The primary circuit should handle regular traffic while the backup circuit stays ready to take over if the primary circuit fails. Utilize BGP attributes to influence routing and designate your primary and backup circuits effectively.",
+ "guid": "a359c373-e7dd-4616-83a3-64a907ebae48",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
"services": [
- "WAF",
- "AzurePolicy"
+ "Backup",
+ "ExpressRoute"
],
"severity": "Medium",
- "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"
+ "subcategory": "ExpressRoute",
+ "text": "When using multiple ExpressRoute circuits ensure that routing allows for a primary and backup",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "S2S VPN connection can provide a cost-effective, resilient backup solution in the event of an ExpressRoute circuit failure. By using S2S VPN as a failover, you can maintain connectivity to your Azure resources without relying solely on ExpressRoute.",
+ "guid": "ead53cc7-de2e-48aa-ab35-71549ab9153d",
+ "link": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
"services": [
- "WAF",
- "Subscriptions",
- "AzurePolicy"
+ "VPN",
+ "Backup",
+ "Cost",
+ "ExpressRoute"
],
- "severity": "Medium",
- "text": "For Sovereign Landing Zone, deploy sovereignty policy baseline and assign at correct management group level.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "ExpressRoute",
+ "text": "Consider deploying site-to-site VPN as a backup for your ExpressRoute private peering",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "WAF checklist",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "Standard Load Balancer SKU offers an SLA of 99.99% and a higher level of service availability compared to the Basic Load Balancer SKU.",
+ "guid": "778468d5-5a78-45d6-be96-c96ad8844cf3",
+ "link": "https://learn.microsoft.com/azure/load-balancer/skus",
"services": [
- "WAF",
- "AzurePolicy"
+ "LoadBalancer"
],
"severity": "Medium",
- "text": "For Sovereign Landing Zone, document Sovereign Control objectives to policy mapping.",
- "waf": "Security"
+ "subcategory": "Load Balancers",
+ "text": "Leverage the Standard SKU for Load Balancers that handle traffic to production applications",
+ "waf": "Reliability"
},
{
- "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",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "By configuring the load balancer with a zone-redundant frontend, it can serve zonal resources in any zone with a single IP address. As long as at least one zone remains healthy within the region, the IP address associated with the frontend can survive one or more zone failures. It is recommended to have multiple zonal resources, such as virtual machines from different zones, in the backend pool of the load balancer. ",
+ "guid": "b2b38c88-6ba2-4c02-8499-114a5d3ce574",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
"services": [
- "WAF",
- "AzurePolicy"
+ "LoadBalancer",
+ "VM"
],
- "severity": "Medium",
- "text": "For Sovereign Landing Zone, ensure process is in place for management of 'Sovereign Control objectives to policy mapping'.",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Load Balancers",
+ "text": "For load balancers, consider using a zone-redundant frontend with multiple zonal resources in the backend",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "WAF checklist",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "When designing health probes for your Azure Load Balancer, it is important to follow best practices to ensure reliable and accurate monitoring of your backend instances.",
+ "guid": "dccbd979-2a6b-4cca-8b5f-ea1ebf3dd95d",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-custom-probe-overview#design-guidance",
"services": [
- "AzurePolicy",
- "WAF",
- "Monitor",
- "Entra",
- "RBAC"
+ "LoadBalancer",
+ "Monitor"
],
- "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.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Operations"
+ "severity": "Low",
+ "subcategory": "Load Balancers",
+ "text": "Select the right protocol, appropriate intervals and timeouts, representative paths and probe responses when defining Load Balancer Health Probes",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "WAF checklist",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
+ "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"services": [
- "Storage",
- "WAF",
- "ARS",
- "AzurePolicy"
+ "NVA"
],
"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"
+ "subcategory": "NVAs",
+ "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "WAF checklist",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "By deploying VPN Gateways in an active-active mode, you can distribute VPN traffic across multiple gateways, improving reliability and ensuring continuous connectivity in case of failures or maintenance.",
+ "guid": "927139b8-2110-42db-b6ea-f11e6f843e53",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
"services": [
- "WAF",
- "Monitor",
- "VM",
- "AzurePolicy"
+ "VPN",
+ "ACR"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "subcategory": "VPN Gateways",
+ "text": "Deploy Azure VPN Gateways in an active-active mode to ensure high availability and redundancy for your VPN connections.",
+ "waf": "Reliability"
},
{
- "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",
- "service": "VM",
+ "category": "Network",
+ "checklist": "Resiliency Review",
+ "description": "Zone-redundant SKUs ensure that your VPN gateways are physically and logically separated within a region, providing resiliency and scalability. This deployment configuration safeguards your on-premises network connectivity to Azure from zone-level failures.",
+ "guid": "f4722d92-8c1b-41cd-921f-54b29b9de39a",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways",
"services": [
- "WAF",
- "VM"
+ "VPN"
],
"severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs in Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "subcategory": "VPN Gateways",
+ "text": "Use zone-redundant SKUs when deploying VPN Gateways to enhance resilience and protect against zone-level failures",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Devices/provisioningServices",
"checklist": "WAF checklist",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs outside of Azure using Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/networkWatchers",
+ "arm-service": "Microsoft.Devices/provisioningServices",
"checklist": "WAF checklist",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
"services": [
- "NetworkWatcher",
- "WAF",
- "Monitor"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Network Watcher to proactively monitor traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Devices/provisioningServices",
"checklist": "WAF checklist",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"services": [
- "WAF",
- "Monitor"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Monitor Logs for insights and reporting.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Devices/provisioningServices",
"checklist": "WAF checklist",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"services": [
- "WAF",
- "Monitor"
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Monitor alerts for the generation of operational alerts.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Devices/provisioningServices",
"checklist": "WAF checklist",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"services": [
- "WAF",
- "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.",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
"checklist": "WAF checklist",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
+ "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"services": [
- "WAF",
- "Backup"
+ "WAF"
],
- "severity": "Low",
- "text": "When using Azure Backup, use the correct backup types (GRS, ZRS & LRS) for your backup, as the default setting is GRS.",
+ "severity": "High",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
"checklist": "WAF checklist",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
+ "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"services": [
- "WAF",
- "VM",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure guest policies to automatically deploy software configurations through VM extensions and enforce a compliant baseline VM configuration.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
"checklist": "WAF checklist",
- "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",
+ "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Device Update for IoT Hub",
"services": [
- "WAF",
- "Monitor",
- "VM",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "text": "Monitor VM security configuration drift via Azure Policy.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
"checklist": "WAF checklist",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Device Update for IoT Hub",
"services": [
- "WAF",
- "ASR",
- "ACR",
- "VM"
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Site Recovery for Azure-to-Azure Virtual Machines disaster recovery scenarios. This enables you to replicate workloads across regions.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"services": [
- "WAF",
- "Backup"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure-native backup capabilities, or an Azure-compatible, 3rd-party backup solution.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "Microsoft.Web/sites",
"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",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
"services": [
- "WAF",
- "AppGW",
- "FrontDoor"
+ "WAF"
],
"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.",
- "waf": "Operations"
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
"services": [
- "Sentinel",
- "WAF",
- "AppGW",
- "FrontDoor"
+ "WAF"
],
- "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"
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
"services": [
- "WAF",
- "AKV"
+ "AppSvc",
+ "WAF"
],
"severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials.",
- "waf": "Security"
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"services": [
- "WAF",
- "AKV"
+ "WAF"
],
"severity": "Medium",
- "text": "Use different Azure Key Vaults for different applications and regions to avoid transaction scale limits and restrict access to secrets.",
- "waf": "Security"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.BotService/botServices",
"checklist": "WAF checklist",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
"services": [
- "WAF",
- "AKV",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "waf": "Security"
+ "text": "Follow reliability support recommendations in Azure Bot Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.BotService/botServices",
"checklist": "WAF checklist",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
"services": [
- "WAF",
- "RBAC",
- "AKV",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Follow a least privilege model by limiting authorization to permanently delete keys, secrets, and certificates to specialized custom Microsoft Entra ID roles.",
- "waf": "Security"
+ "text": "Deploying bots with local data residency and regional compliance",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.BotService/botServices",
"checklist": "WAF checklist",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Automate the certificate management and renewal process with public certificate authorities to ease administration.",
- "waf": "Security"
+ "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
+ "service": "CosmosDB",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Establish an automated process for key and certificate rotation.",
- "waf": "Security"
+ "text": "FTA Resiliency Playbook",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "VNet",
- "AKV",
- "PrivateLink"
+ "WAF"
],
- "severity": "Medium",
- "text": "Enable firewall and virtual network service endpoint or private endpoint on the vault to control access to the key vault.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "Monitor",
- "AKV",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Use the platform-central Azure Monitor Log Analytics workspace to audit key, certificate, and secret usage within each instance of Key Vault.",
- "waf": "Security"
+ "text": "Run multiple replicas of the database (>1 ) in Prod",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
+ "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "AKV",
- "AzurePolicy"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Delegate Key Vault instantiation and privileged access and use Azure Policy to enforce a consistent compliant configuration.",
- "waf": "Security"
+ "text": "Leverage Multi-Region Writes",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "description": "Span Cosmos account across two or more regions with multi-region writes",
+ "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "AKV"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "waf": "Security"
+ "text": "Distribute your data globally",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
+ "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "ASR",
- "AKV",
- "ACR"
+ "WAF"
],
- "severity": "Medium",
- "text": "If you want to bring your own keys, this might not be supported across all considered services. Implement relevant mitigation so that inconsistencies don't hinder desired outcomes. Choose appropriate region pairs and disaster recovery regions that minimize latency.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Choose from several well-defined consistency models",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
+ "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "AKV"
+ "CosmosDB",
+ "WAF"
],
"severity": "Medium",
- "text": "For Sovereign Landing Zone, use Azure Key Vault managed HSM to store your secrets and credentials.",
- "waf": "Security"
+ "text": "Enable Service managed failover",
+ "waf": "Reliability"
},
{
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"checklist": "WAF checklist",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
+ "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "Entra"
+ "Backup",
+ "Storage",
+ "CosmosDB",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Microsoft Entra ID reporting capabilities to generate access control audit reports.",
- "waf": "Security"
+ "text": "Enable Automatic Backups",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Reliability"
},
{
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"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",
+ "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
+ "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "Subscriptions",
- "Defender"
+ "Backup",
+ "WAF"
],
- "severity": "High",
- "text": "Enable Defender Cloud Security Posture Management for all subscriptions.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Perform Periodic Backups",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Reliability"
},
{
+ "arm-service": "microsoft.documentdb/databaseAccounts",
"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",
+ "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
+ "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
+ "service": "CosmosDB",
"services": [
- "WAF",
- "Subscriptions",
- "Defender"
+ "Backup",
+ "CosmosDB",
+ "WAF"
],
- "severity": "High",
- "text": "Enable a Defender Cloud Workload Protection Plan for Servers on all subscriptions.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"services": [
- "WAF",
- "Subscriptions",
- "Defender"
+ "WAF"
],
"severity": "High",
- "text": "Enable Defender Cloud Workload Protection Plans for Azure Resources on all subscriptions.",
- "waf": "Security"
+ "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Enable Endpoint Protection on IaaS Servers.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
"services": [
- "WAF",
- "Monitor",
- "Defender"
+ "WAF"
],
- "severity": "Medium",
- "text": "Monitor base operating system patching drift via Azure Monitor Logs and Defender for Cloud.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"services": [
- "WAF",
- "Monitor",
- "Entra"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Connect default resource configurations to a centralized Azure Monitor Log Analytics workspace.",
- "waf": "Security"
+ "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",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"services": [
- "WAF",
- "Entra"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "For Sovereign Landing Zone, enable transparancy logs on the Entra ID tenant.",
- "waf": "Security"
+ "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",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"services": [
- "WAF",
- "Entra"
+ "TrafficManager",
+ "WAF"
],
"severity": "Medium",
- "text": "For Sovereign Landing Zone, enable customer Lockbox on the Entra ID tenant.",
- "waf": "Security"
+ "text": "Use Azure Traffic Manager to coordinate requests",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
"services": [
"Storage",
+ "Backup",
"WAF"
],
"severity": "High",
- "text": "Enable secure transfer to storage accounts.",
- "waf": "Security"
+ "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
+ "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
+ "service": "Cognitive Services",
"services": [
- "Storage",
"WAF"
],
- "severity": "High",
- "text": "Enable container soft delete for the storage account to recover a deleted container and its contents.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Leverage FTA HandBook for Cognitive Services",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"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",
+ "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
+ "service": "Cognitive Services",
"services": [
- "WAF",
- "AKV",
- "VM"
+ "Backup",
+ "WAF"
],
- "severity": "High",
- "text": "Use Key Vault secrets to avoid hard-coding sensitive information such as credentials (virtual machines user passwords), certificates or keys.",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Backup Your Prompts",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
+ "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
+ "service": "Cognitive Services",
"services": [
- "WAF",
- "ACR"
+ "ASR",
+ "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.",
+ "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
+ "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
+ "service": "Cognitive Services",
"services": [
- "Storage",
+ "Backup",
"WAF"
],
"severity": "Medium",
- "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
+ "text": "Backup Your ChatGPT conversations",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
+ "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
+ "service": "Cognitive Services",
"services": [
- "Storage",
"WAF"
],
"severity": "Medium",
- "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
+ "text": "CI/CD for custom speech",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.cache/redis",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "guid": "3687a046-7a1f-4893-9bda-43324f248116",
+ "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
+ "service": "Cognitive Services",
"services": [
- "WAF",
- "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.",
+ "severity": "Low",
+ "text": "Move a knowledge base using export-import",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
+ "arm-service": "Microsoft.App/containerApps",
"checklist": "WAF checklist",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
+ "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
+ "service": "Container Apps",
"services": [
"WAF"
],
"severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
+ "arm-service": "Microsoft.App/containerApps",
"checklist": "WAF checklist",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
+ "service": "Container Apps",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
+ "severity": "High",
+ "text": "Use more than one replica and enable Zone Redundancy.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
+ "arm-service": "Microsoft.App/containerApps",
"checklist": "WAF checklist",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
+ "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
+ "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"
],
"severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
+ "arm-service": "Microsoft.App/containerApps",
"checklist": "WAF checklist",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
+ "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": [
+ "TrafficManager",
+ "FrontDoor",
"WAF"
],
"severity": "High",
- "text": "Learn how to trigger a manual failover.",
+ "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"services": [
"WAF"
],
"severity": "High",
- "text": "Learn how to fail back after a failover.",
+ "text": "Select the right Function hosting plan based on your business & SLO requirements",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
+ "severity": "High",
+ "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "Backup"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"services": [
+ "AppSvc",
"WAF"
],
"severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
"services": [
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Implement health checks",
+ "severity": "High",
+ "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "Backup",
- "AppSvc"
+ "Storage",
+ "WAF"
],
- "severity": "High",
- "text": "Refer to backup and restore best practices for Azure App Service",
+ "severity": "Medium",
+ "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "AppSvc"
+ "WAF"
],
- "severity": "High",
- "text": "Implement Azure App Service reliability best practices",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc"
+ "SAP",
+ "WAF"
],
- "severity": "Low",
- "text": "Familiarize with how to move an App Service app to another region During a disaster",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Familiarize with reliability support in Azure App Service",
- "waf": "Reliability"
+ "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.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc"
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "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",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "AppSvc"
+ "Backup",
+ "WAF"
],
"severity": "Medium",
- "text": "Monitor App Service instances using Health checks",
+ "text": "Test the backup and recovery times to verify that they meet your RTO requirements for restoring all systems simultaneously after a disaster.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor"
+ "Backup",
+ "SQL",
+ "Storage",
+ "ASR",
+ "SAP",
+ "WAF"
],
- "severity": "Medium",
- "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "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.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor"
+ "SAP",
+ "WAF"
],
- "severity": "Low",
- "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
"services": [
- "WAF",
- "AKV",
- "AppSvc"
+ "VPN",
+ "ASR",
+ "ExpressRoute",
+ "WAF"
],
"severity": "High",
- "text": "Use Key Vault to store secrets",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
"services": [
- "WAF",
"AKV",
- "Entra",
- "AppSvc"
+ "ACR",
+ "WAF"
],
- "severity": "High",
- "text": "Use Managed Identity to connect to Key Vault",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Store the App Service TLS certificate in Key Vault.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"services": [
- "WAF",
- "AKV",
- "AppSvc"
+ "VNet",
+ "SAP",
+ "ASR",
+ "WAF"
],
- "severity": "High",
- "text": "Use Key Vault to store TLS certificate.",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
"services": [
- "WAF",
- "Subscriptions",
- "AppSvc"
+ "SAP",
+ "Storage",
+ "WAF"
],
- "severity": "Medium",
- "text": "Isolate systems that process sensitive information",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"services": [
- "WAF",
- "TrafficManager",
- "AppSvc"
+ "WAF"
],
- "severity": "Medium",
- "text": "Do not store sensitive data on local disk",
- "waf": "Security"
+ "severity": "High",
+ "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
"services": [
- "WAF",
- "Entra",
- "AppSvc"
+ "VNet",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use an established Identity Provider for authentication",
- "waf": "Security"
+ "severity": "High",
+ "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc"
+ "Entra",
+ "ASR",
+ "VM",
+ "WAF"
],
"severity": "High",
- "text": "Deploy from a trusted environment",
- "waf": "Security"
+ "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).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"services": [
- "WAF",
- "Entra"
+ "SAP",
+ "WAF"
],
"severity": "High",
- "text": "Disable basic authentication",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
"services": [
- "WAF",
- "AKV",
- "Entra"
+ "SAP",
+ "WAF"
],
"severity": "High",
- "text": "Use Managed Identity to connect to resources",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"services": [
- "WAF",
- "ACR",
- "Entra"
+ "Storage",
+ "VM",
+ "WAF"
],
"severity": "High",
- "text": "Pull containers using a Managed Identity",
- "waf": "Security"
+ "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "Entra",
- "AppSvc"
+ "SAP",
+ "Storage",
+ "WAF"
],
- "severity": "Medium",
- "text": "Send App Service runtime logs to Log Analytics",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "Entra",
- "AppSvc"
+ "SAP",
+ "WAF"
],
- "severity": "Medium",
- "text": "Send App Service activity logs to Log Analytics",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
"services": [
- "VNet",
- "WAF",
- "Firewall",
- "Monitor",
- "NVA"
+ "LoadBalancer",
+ "SAP",
+ "WAF"
],
- "severity": "Medium",
- "text": "Outbound network access should be controlled",
- "waf": "Security"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
"services": [
- "PrivateLink",
- "Storage",
- "VNet",
- "WAF",
- "Firewall",
- "NVA"
+ "LoadBalancer",
+ "WAF"
],
- "severity": "Low",
- "text": "Ensure a stable IP for outbound communications towards internet addresses",
- "waf": "Security"
+ "severity": "High",
+ "text": "Make sure the Floating IP is enabled on the Load balancer",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc",
- "PrivateLink"
+ "WAF"
],
"severity": "High",
- "text": "Inbound network access should be controlled",
- "waf": "Security"
+ "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
"services": [
- "AppSvc",
- "AppGW",
- "WAF",
- "Monitor",
- "FrontDoor"
+ "Entra",
+ "SAP",
+ "VM",
+ "WAF"
],
"severity": "High",
- "text": "Use a WAF in front of App Service",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "PrivateLink"
+ "Entra",
+ "RBAC",
+ "VM",
+ "WAF"
],
"severity": "High",
- "text": "Avoid for WAF to be bypassed",
- "waf": "Security"
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Set minimum TLS policy to 1.2",
- "waf": "Security"
+ "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "AppSvc"
+ "VM",
+ "WAF"
],
"severity": "High",
- "text": "Use HTTPS only",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"services": [
- "Storage",
+ "Entra",
+ "SAP",
"WAF"
],
"severity": "High",
- "text": "Wildcards must not be used for CORS",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"services": [
+ "SAP",
+ "ACR",
"WAF"
],
"severity": "High",
- "text": "Turn off remote debugging",
- "waf": "Security"
+ "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"services": [
- "WAF",
- "Defender",
- "AppSvc"
+ "Entra",
+ "SAP",
+ "WAF"
],
- "severity": "Medium",
- "text": "Enable Defender for Cloud - Defender for App Service",
- "waf": "Security"
+ "severity": "High",
+ "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"services": [
- "EventHubs",
- "DDoS",
- "VNet",
- "AppGW",
- "WAF",
- "NVA"
+ "Entra",
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "Enable DDOS Protection Standard on the WAF VNet",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"services": [
- "WAF",
- "VNet",
- "ACR",
- "PrivateLink"
+ "Storage",
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "Pull containers over a Virtual Network",
- "waf": "Security"
+ "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"services": [
+ "SAP",
"WAF"
],
"severity": "Medium",
- "text": "Conduct a penetration test",
- "waf": "Security"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"services": [
+ "Storage",
"WAF"
],
- "severity": "Medium",
- "text": "Deploy validated code",
- "waf": "Security"
+ "severity": "High",
+ "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Storage",
"WAF"
],
"severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
"services": [
- "WAF",
- "Subscriptions",
- "Entra"
+ "SAP",
+ "Storage",
+ "ASR",
+ "WAF"
],
"severity": "High",
- "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "SAP",
+ "Storage",
+ "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",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
+ "Cost",
"WAF"
],
- "severity": "High",
- "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Automate SAP System Start-Stop to manage costs.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
"services": [
+ "Storage",
+ "VM",
+ "SAP",
+ "Cost",
"WAF"
],
- "severity": "Medium",
- "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
- "waf": "Security"
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
"services": [
+ "Storage",
+ "VM",
+ "SAP",
+ "Cost",
"WAF"
],
- "severity": "Medium",
- "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
- "waf": "Security"
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
"services": [
- "WAF",
- "Entra"
+ "RBAC",
+ "Subscriptions",
+ "WAF"
],
"severity": "High",
- "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
+ "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC",
- "AVS"
+ "Entra",
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "Has an RBAC model been created for use within VMware vSphere",
+ "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC"
+ "Entra",
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
+ "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.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
"services": [
- "VPN",
- "NetworkWatcher",
- "WAF",
- "Monitor",
- "ExpressRoute"
+ "SAP",
+ "AKV",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
"services": [
- "NetworkWatcher",
- "WAF",
- "Monitor",
- "AVS",
- "ExpressRoute",
- "VM"
+ "SAP",
+ "AKV",
+ "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",
- "waf": "Operations"
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
"services": [
- "NetworkWatcher",
- "WAF",
- "Monitor",
- "AVS",
- "VM"
+ "SAP",
+ "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",
- "waf": "Operations"
+ "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"services": [
- "WAF",
- "ARS"
+ "SAP",
+ "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).",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Implement SSO to SAP HANA",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC",
"Entra",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
+ "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.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC",
- "Entra",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
+ "severity": "Medium",
+ "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
"services": [
- "WAF",
"Entra",
- "AVS"
+ "SAP",
+ "WAF"
],
"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)",
+ "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.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
"services": [
+ "SAP",
"WAF"
],
- "severity": "High",
- "text": "Limit use of CloudAdmin account to emergency access only",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP BTP",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
"services": [
- "WAF",
- "RBAC"
+ "Entra",
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
+ "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.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Subscriptions",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
- "waf": "Security"
+ "text": "enforce existing Management Group policies to SAP Subscriptions",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"services": [
- "WAF",
- "VM",
- "Entra",
- "AVS"
+ "SAP",
+ "Subscriptions",
+ "WAF"
],
"severity": "High",
- "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
- "waf": "Security"
+ "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"services": [
+ "Subscriptions",
"WAF"
],
- "severity": "Medium",
- "text": "Is East-West traffic filtering implemented within NSX-T",
- "waf": "Security"
+ "severity": "High",
+ "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "AppGW",
- "Firewall",
- "AVS"
+ "VM",
+ "Subscriptions",
+ "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",
- "waf": "Security"
+ "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "WAF"
],
- "severity": "High",
- "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
- "waf": "Security"
+ "severity": "Low",
+ "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "AVS"
+ "VM",
+ "Subscriptions",
+ "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",
- "waf": "Security"
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"services": [
- "DDoS",
- "VNet",
- "VPN",
- "WAF",
- "ExpressRoute"
+ "WAF"
],
- "severity": "Medium",
- "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
- "waf": "Security"
+ "severity": "High",
+ "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "TrafficManager",
+ "Cost",
+ "WAF"
],
"severity": "Medium",
- "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
- "waf": "Security"
+ "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"services": [
- "WAF",
- "Defender",
- "AVS"
+ "Backup",
+ "WAF"
],
- "severity": "Medium",
- "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
- "waf": "Security"
+ "severity": "High",
+ "text": "Help protect your HANA database by using the Azure Backup service.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
"services": [
- "WAF",
- "Arc",
- "AVS"
+ "Entra",
+ "Storage",
+ "VM",
+ "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)",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"services": [
- "SQL",
- "WAF",
- "AVS"
+ "SAP",
+ "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)",
- "waf": "Security"
+ "severity": "High",
+ "text": "Ensure time-zone matches between the operating system and the SAP system.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
"services": [
- "WAF",
- "AKV"
- ],
- "severity": "Low",
- "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
- "waf": "Security"
+ "Entra",
+ "WAF"
+ ],
+ "severity": "Medium",
+ "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "Cost",
+ "WAF"
],
- "severity": "Medium",
- "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
"services": [
+ "Entra",
+ "SAP",
"WAF"
],
- "severity": "High",
- "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
- "waf": "Reliability"
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
"services": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
"services": [
- "WAF",
- "ASR"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Monitor",
+ "SQL",
"WAF"
],
"severity": "Medium",
- "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
"services": [
- "WAF",
- "AzurePolicy"
+ "Entra",
+ "VM",
+ "Monitor",
+ "SAP",
+ "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",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
"services": [
- "WAF",
- "Cost",
- "AVS"
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
- "waf": "Cost"
+ "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. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "Cost",
- "AVS"
+ "NetworkWatcher",
+ "SAP",
+ "Monitor",
+ "WAF"
],
- "severity": "Low",
- "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
- "waf": "Cost"
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VM",
"WAF"
],
"severity": "Medium",
- "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
- "waf": "Security"
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Subscriptions",
"WAF"
],
"severity": "High",
- "text": "Ensure all required resource reside within the same Azure availability zone(s)",
+ "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.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
"services": [
- "WAF",
- "VM",
- "Defender",
- "AVS"
+ "Storage",
+ "ASR",
+ "WAF"
],
"severity": "Medium",
- "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
- "waf": "Security"
+ "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "Arc",
- "VM",
- "AVS"
+ "SAP",
+ "Sentinel",
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "Cost",
+ "WAF"
],
- "severity": "High",
- "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "severity": "Medium",
+ "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
"services": [
- "WAF",
"Monitor",
"VM",
- "AVS"
- ],
- "severity": "Medium",
- "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "WAF checklist",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
- "services": [
- "AzurePolicy",
- "WAF",
- "Backup",
- "AVS",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"services": [
- "WAF",
+ "SAP",
"Monitor",
- "Defender",
- "AVS"
+ "ASR",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
- "waf": "Security"
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"services": [
- "WAF",
- "Defender"
+ "SAP",
+ "Storage",
+ "WAF"
],
"severity": "Medium",
- "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
- "waf": "Security"
+ "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.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Storage",
"WAF"
],
- "severity": "High",
- "text": "Are data processing implications (service provider / service consumer model) clear and documented",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "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": [
+ "SAP",
+ "SQL",
"WAF"
],
"severity": "Medium",
- "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
"services": [
- "WAF",
+ "SAP",
"Monitor",
- "AVS"
+ "ASR",
+ "WAF"
],
"severity": "High",
- "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "AVS"
+ "AppGW",
+ "AzurePolicy",
+ "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%)",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "AVS"
+ "DNS",
+ "SAP",
+ "VM",
+ "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",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor"
+ "DNS",
+ "SAP",
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "service": "SAP",
"services": [
- "Storage",
- "WAF",
- "AVS"
+ "SAP",
+ "ACR",
+ "VNet",
+ "WAF"
],
"severity": "Medium",
- "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
- "waf": "Operations"
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "SAP",
+ "NVA",
+ "WAF"
],
- "severity": "Low",
- "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
- "waf": "Operations"
+ "severity": "High",
+ "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "service": "SAP",
"services": [
- "Storage",
- "WAF",
- "VM",
- "AzurePolicy"
+ "VWAN",
+ "ACR",
+ "SAP",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "service": "SAP",
"services": [
+ "VNet",
+ "NVA",
"WAF"
],
"severity": "Medium",
- "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "service": "SAP",
"services": [
- "Storage",
+ "NVA",
+ "SAP",
+ "VNet",
"WAF",
- "Backup"
+ "VWAN"
],
"severity": "Medium",
- "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
"services": [
- "WAF",
- "Arc",
- "AVS"
+ "SAP",
+ "VM",
+ "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)",
+ "severity": "High",
+ "text": "Public IP assignment to VM running SAP Workload is not recommended.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Security"
+ },
+ {
+ "checklist": "WAF checklist",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "service": "SAP",
+ "services": [
+ "ASR",
+ "WAF"
+ ],
+ "severity": "High",
+ "text": "Consider reserving IP address on DR side when configuring ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor",
- "AVS"
+ "WAF"
],
- "severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
+ "severity": "High",
+ "text": "Avoid using overlapping IP address ranges for production and DR sites.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "Storage",
+ "VNet",
+ "WAF"
],
"severity": "Medium",
- "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
+ "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
- "Monitor",
- "AzurePolicy",
- "AVS"
+ "Firewall",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
- "waf": "Operations"
+ "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/training/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
+ "service": "SAP",
"services": [
- "WAF",
- "Defender",
- "AVS"
+ "SAP",
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
+ "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.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "Backup"
+ "FrontDoor",
+ "ACR",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
- "waf": "Reliability"
+ "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "SAP",
"services": [
+ "FrontDoor",
+ "AppGW",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "ASR"
+ "LoadBalancer",
+ "AppGW",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "SAP",
"services": [
+ "VWAN",
+ "ACR",
+ "SAP",
"WAF"
],
- "severity": "High",
- "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "SAP",
"services": [
- "WAF",
- "ASR"
+ "PrivateLink",
+ "Backup",
+ "Storage",
+ "ACR",
+ "VNet",
+ "WAF"
],
"severity": "Medium",
- "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VM",
"WAF"
],
"severity": "High",
- "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
- "waf": "Reliability"
+ "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
+ "service": "SAP",
"services": [
- "WAF",
- "ExpressRoute",
- "NVA",
- "AVS"
+ "LoadBalancer",
+ "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?",
- "waf": "Reliability"
+ "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "SAP",
"services": [
- "WAF",
- "Backup"
+ "VM",
+ "SAP",
+ "VNet",
+ "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/�. ]",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"services": [
- "WAF",
- "Backup",
- "AVS"
+ "SAP",
+ "VNet",
+ "WAF"
],
- "severity": "Medium",
- "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"services": [
- "WAF",
- "Backup"
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "Deploy your backup solution outside of vSan, on Azure native components",
- "waf": "Reliability"
+ "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "SAP",
+ "WAF"
],
- "severity": "Low",
- "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VNet",
+ "Cost",
"WAF"
],
- "severity": "Low",
- "text": "For manual deployments, all configuration and deployments must be documented",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "LoadBalancer",
+ "WAF"
],
- "severity": "Low",
- "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
- "waf": "Operations"
+ "severity": "High",
+ "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VNet",
"WAF"
],
- "severity": "Low",
- "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
- "waf": "Operations"
+ "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",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"services": [
+ "SAP",
+ "Backup",
+ "VM",
"WAF"
],
- "severity": "Low",
- "text": "For automated deployments, request or reserve quota prior to starting the deployment",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Review SAP HANA database backups for Azure VMs.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
"services": [
- "WAF",
- "AzurePolicy"
+ "SAP",
+ "Monitor",
+ "ASR",
+ "WAF"
],
- "severity": "Low",
- "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "severity": "Medium",
+ "text": "Review Site Recovery built-in monitoring, where used for SAP.",
+ "waf": "Cost"
+ },
+ {
+ "checklist": "WAF checklist",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
+ "service": "SAP",
+ "services": [
+ "SAP",
+ "Monitor",
+ "WAF"
+ ],
+ "severity": "High",
+ "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
+ "service": "SAP",
"services": [
- "WAF",
- "AKV"
+ "Backup",
+ "VM",
+ "WAF"
],
- "severity": "Low",
- "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "severity": "Medium",
+ "text": "Review Oracle Database in Azure Linux VM backup strategies.",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "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": [
- "WAF",
- "ExpressRoute",
- "AKV",
- "AVS"
+ "Storage",
+ "SQL",
+ "WAF"
],
- "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",
+ "severity": "Medium",
+ "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
+ "service": "SAP",
"services": [
- "WAF",
- "AVS"
+ "Backup",
+ "VM",
+ "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.",
+ "severity": "Medium",
+ "text": "Review the use of Automated Backup v2 for Azure VMs.",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
+ "service": "SAP",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "severity": "High",
+ "text": "Enabling Write accelerator for M series when using premium disks(V1)",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "service": "SAP",
"services": [
- "WAF",
- "Subscriptions",
- "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",
+ "text": "Test availability zone latency.",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
+ "service": "SAP",
"services": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "text": "Activate SAP EarlyWatch Alert for all SAP components.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
+ "service": "SAP",
"services": [
+ "SAP",
"WAF"
],
"severity": "Medium",
- "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
+ "service": "SAP",
"services": [
+ "Monitor",
+ "SQL",
"WAF"
],
"severity": "Medium",
- "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "text": "Review SQL Server performance monitoring using CCMS.",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VM",
"WAF"
],
"severity": "Medium",
- "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
+ "service": "SAP",
"services": [
- "WAF",
- "Monitor"
+ "SAP",
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
- "waf": "Operations"
+ "text": "Review SAP HANA studio alerts.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
+ "service": "SAP",
"services": [
- "WAF",
- "VM"
+ "SAP",
+ "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])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
"services": [
+ "VM",
"WAF"
],
- "severity": "High",
- "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
"services": [
- "WAF",
- "VPN"
+ "SAP",
+ "WAF"
],
"severity": "Medium",
- "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
- "waf": "Performance"
+ "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.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
"services": [
+ "SAP",
+ "SQL",
"WAF"
],
- "severity": "Medium",
- "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
- "waf": "Performance"
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "WAF checklist",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
+ "checklist": "WAF checklist",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
"services": [
+ "SQL",
"WAF"
],
- "severity": "Medium",
- "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
- "waf": "Reliability"
+ "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.",
+ "training": "https://me.sap.com/notes/3019299/E",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"services": [
+ "Backup",
+ "SQL",
"Storage",
- "WAF",
- "VM",
- "AVS"
+ "SAP",
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "SAP",
"services": [
"Storage",
- "WAF",
- "ExpressRoute"
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
- "waf": "Reliability"
+ "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "SAP",
"services": [
- "Storage",
- "WAF",
- "ExpressRoute"
+ "AKV",
+ "WAF"
],
- "severity": "Medium",
- "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Use Azure Key Vault to store your secrets and credentials",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "SAP",
"services": [
- "WAF",
- "ASR"
+ "RBAC",
+ "Subscriptions",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
- "waf": "Reliability"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "SAP",
"services": [
+ "AKV",
+ "AzurePolicy",
"WAF"
],
- "severity": "High",
- "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
+ "service": "SAP",
"services": [
- "WAF",
- "ExpressRoute"
+ "RBAC",
+ "AzurePolicy",
+ "WAF"
],
"severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
- "waf": "Reliability"
+ "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"services": [
- "WAF",
- "ExpressRoute"
+ "SAP",
+ "Storage",
+ "Defender",
+ "WAF"
],
"severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
+ "service": "SAP",
"services": [
+ "SAP",
+ "RBAC",
+ "Defender",
"WAF"
],
"severity": "High",
- "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
- "waf": "Reliability"
+ "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"services": [
+ "SAP",
"WAF"
],
- "severity": "High",
- "text": "Enable 2 replicas to have 99.9% availability for read operations",
- "waf": "Reliability"
+ "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",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
+ "service": "SAP",
"services": [
+ "AKV",
"WAF"
],
"severity": "Medium",
- "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
- "waf": "Reliability"
+ "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
+ "service": "SAP",
"services": [
+ "AKV",
"WAF"
],
"severity": "High",
- "text": "Leverage Availability Zones by enabling read and/or write replicas",
- "waf": "Reliability"
+ "text": "Use an Azure Key Vault per application per environment per region.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
+ "service": "SAP",
"services": [
- "WAF",
- "ACR"
+ "SAP",
+ "AKV",
+ "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",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
+ "service": "SAP",
"services": [
- "WAF",
- "ACR"
+ "SAP",
+ "RBAC",
+ "Subscriptions",
+ "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",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
+ "service": "SAP",
"services": [
- "WAF",
- "TrafficManager"
+ "PrivateLink",
+ "SAP",
+ "NVA",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Traffic Manager to coordinate requests",
- "waf": "Reliability"
+ "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",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Search/searchServices",
"checklist": "WAF checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "service": "SAP",
"services": [
"Storage",
- "WAF",
- "Backup"
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
+ "service": "SAP",
"services": [
+ "Defender",
"WAF"
],
- "severity": "Medium",
- "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"services": [
+ "SAP",
+ "VNet",
"WAF"
],
"severity": "High",
- "text": "Use zone redundant pipelines in regions that support Availability Zones",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"services": [
- "WAF",
- "Backup"
+ "SAP",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
+ "service": "SAP",
"services": [
- "WAF",
- "VM"
+ "SAP",
+ "AKV",
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
"services": [
- "WAF",
- "VNet"
+ "WAF"
],
"severity": "Medium",
- "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "WAF checklist",
- "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "services": [
- "WAF",
- "AKV"
- ],
- "severity": "Low",
- "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
- "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
- "service": "Azure Data Explorer",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
"services": [
- "Storage",
- "WAF",
- "Cost"
+ "TrafficManager",
+ "FrontDoor",
+ "WAF"
],
- "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "severity": "Medium",
+ "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
- "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
- "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
- "service": "Azure Data Explorer",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"services": [
- "Storage",
+ "ACR",
"WAF"
],
- "text": "To share data, explore Leader-follower cluster configuration",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
- "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
- "service": "Azure Data Explorer",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
"services": [
- "WAF",
- "ASR"
+ "WAF"
],
- "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
+ "severity": "Medium",
+ "text": "Use more than 1 app instance for your apps",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
- "service": "Azure Data Explorer",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
"services": [
- "Storage",
- "WAF",
- "RBAC"
+ "Monitor",
+ "WAF"
],
- "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "severity": "Medium",
+ "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
- "service": "Azure Data Explorer",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
"services": [
"WAF"
],
- "text": "Ingest data into each cluster in parallel",
+ "severity": "Medium",
+ "text": "Set up autoscaling in Spring Cloud Gateway",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
- "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
- "service": "Azure Data Explorer",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
"services": [
- "WAF",
- "ACR"
+ "WAF"
],
- "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "severity": "Low",
+ "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
+ "arm-service": "Microsoft.AppPlatform/Spring",
"checklist": "WAF checklist",
- "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
- "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
- "service": "Azure Data Explorer",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
"services": [
- "WAF",
- "ACR"
+ "WAF"
],
- "text": "For critical applications, create Active-Active configuration in two paired regions",
+ "severity": "Medium",
+ "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
- "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
- "service": "Azure Data Explorer",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
"services": [
+ "Entra",
"WAF"
],
- "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "severity": "Medium",
+ "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
- "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
- "service": "Azure Data Explorer",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"services": [
- "ASR",
- "Storage",
- "AzurePolicy",
- "WAF",
- "Cost"
+ "WAF"
],
- "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
+ "severity": "Medium",
+ "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
- "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
"services": [
- "WAF",
- "AzurePolicy"
- ],
- "text": "Wrap DevOps and source control around all your code",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Reliability"
+ "WAF"
+ ],
+ "severity": "Medium",
+ "text": "Custom brand assets should be hosted on a CDN",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
"services": [
"WAF"
],
- "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "severity": "Low",
+ "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"services": [
+ "VM",
"WAF"
],
- "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "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)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"services": [
- "WAF",
- "Backup",
- "AKV"
+ "WAF"
],
- "severity": "High",
- "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "severity": "Medium",
+ "text": "Don't replicate! Replication can create issues with directory synchronization",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Key Vault",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"services": [
- "WAF",
- "AKV",
- "ACR"
+ "WAF"
],
"severity": "Medium",
- "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
+ "text": "Have active-active for multi-regions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
- "service": "Key Vault",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"services": [
- "WAF",
- "AKV"
+ "Entra",
+ "WAF"
],
"severity": "Medium",
- "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
+ "text": "Add Azure AD Domain service stamps to additional regions and locations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
- "service": "Key Vault",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"services": [
- "WAF",
- "AKV",
- "AzurePolicy"
+ "WAF"
],
"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.",
+ "text": "Use Replica Sets for DR",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
- "service": "Key Vault",
+ "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
+ "service": "Service Bus",
"services": [
- "Subscriptions",
- "AKV",
- "Storage",
- "WAF",
- "Backup"
+ "ServiceBus",
+ "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.",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
+ "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
+ "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
+ "service": "Service Bus",
"services": [
- "WAF",
- "AKV"
+ "ServiceBus",
+ "WAF"
],
- "severity": "High",
- "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
+ "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
+ "service": "Service Bus",
"services": [
- "WAF",
- "AKV"
+ "Entra",
+ "AzurePolicy",
+ "TrafficManager",
+ "RBAC",
+ "ServiceBus",
+ "WAF"
],
- "severity": "Low",
- "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
+ "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
+ "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
+ "service": "Service Bus",
"services": [
- "WAF",
- "Backup",
- "AKV"
+ "Entra",
+ "AKV",
+ "Storage",
+ "VM",
+ "AppSvc",
+ "ServiceBus",
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
+ "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
+ "service": "Service Bus",
"services": [
- "WAF",
- "Backup",
- "AKV"
+ "Storage",
+ "RBAC",
+ "Subscriptions",
+ "ServiceBus",
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
- "service": "Key Vault",
+ "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
+ "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
+ "service": "Service Bus",
"services": [
- "EventHubs",
- "WAF",
- "AKV"
+ "Monitor",
+ "VNet",
+ "ServiceBus",
+ "WAF"
],
"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.",
- "waf": "Reliability"
+ "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
+ "service": "Service Bus",
"services": [
+ "PrivateLink",
+ "ServiceBus",
+ "VNet",
"WAF"
],
"severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
+ "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
"checklist": "WAF checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
+ "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
+ "service": "Service Bus",
"services": [
+ "ServiceBus",
"WAF"
],
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
"services": [
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Leverage Data-in replication for cross-region DR scenarios",
- "waf": "Reliability"
+ "text": "Implement an error handling policy at the global level",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "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",
- "FrontDoor",
- "AKV"
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "text": "Ensure all APIs policies include a element.",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW"
+ "ACR",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure you are using Application Gateway v2 SKU",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
"services": [
- "LoadBalancer",
"WAF"
],
"severity": "Medium",
- "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
- "waf": "Security"
+ "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"services": [
- "LoadBalancer",
+ "Monitor",
"WAF"
],
- "severity": "Medium",
- "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
- "waf": "Security"
+ "severity": "High",
+ "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"services": [
- "WAF",
- "VNet",
- "AppGW"
+ "WAF"
],
"severity": "Medium",
- "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "text": "Enable Application Insights for more detailed telemetry",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
"services": [
- "Subscriptions",
- "VNet",
- "AppGW",
- "WAF",
- "Entra",
- "NVA"
+ "Monitor",
+ "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Security"
+ "severity": "High",
+ "text": "Configure alerts on the most critical metrics",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
"services": [
- "WAF",
- "DDoS"
+ "AKV",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "severity": "High",
+ "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"services": [
+ "Entra",
"WAF"
],
- "severity": "Medium",
- "text": "Configure autoscaling with a minimum amount of instances of two.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Protect incoming requests to APIs (data plane) with Azure AD",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW",
- "ACR"
+ "Entra",
+ "WAF"
],
"severity": "Medium",
- "text": "Deploy Application Gateway across Availability Zones",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Create appropriate groups to control the visibility of the products",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW",
- "FrontDoor",
- "AzurePolicy"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "text": "Use Backends feature to eliminate redundant API backend configurations",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"services": [
- "WAF",
- "TrafficManager"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use Named Values to store common values that can be used in policies",
+ "waf": "Operations"
},
{
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"services": [
- "WAF",
- "AVD",
- "Entra"
+ "ACR",
+ "WAF"
],
- "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)?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
"services": [
- "WAF",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Security"
+ "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
- "FrontDoor",
- "AzurePolicy"
+ "Backup",
+ "WAF"
],
"severity": "High",
- "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
- "waf": "Security"
+ "text": "Ensure there is an automated backup routine",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
"services": [
- "WAF",
- "TrafficManager",
- "FrontDoor"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "EventHubs",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
- "waf": "Security"
+ "severity": "Low",
+ "text": "If you need to log at high performance levels, consider Event Hubs policy",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Low",
- "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
+ "severity": "Medium",
+ "text": "Apply throttling policies to control the number of requests per second",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
"waf": "Performance"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "Medium",
- "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
- "waf": "Reliability"
+ "text": "Configure autoscaling to scale out the number of instances when the load increases",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
- "severity": "Low",
- "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
+ "severity": "Medium",
+ "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
"waf": "Performance"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"services": [
- "LoadBalancer",
"WAF"
],
- "severity": "High",
- "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
+ "severity": "Medium",
+ "text": "Use the premium tier for production workloads.",
"waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "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",
- "Cost",
- "AKV",
- "FrontDoor"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "APIM",
+ "WAF"
],
- "severity": "Medium",
- "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Be aware of APIM's limits",
+ "waf": "Reliability"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "High",
- "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
- "waf": "Security"
+ "text": "Ensure that the self-hosted gateway deployments are resilient.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "APIM",
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
- "waf": "Security"
+ "text": "Use Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "Performance"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
+ "severity": "Medium",
+ "text": "Deploy the service within a Virtual Network (VNet)",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
- "FrontDoor"
+ "Entra",
+ "APIM",
+ "Monitor",
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
+ "severity": "Medium",
+ "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
- "FrontDoor",
- "AzurePolicy"
+ "Entra",
+ "PrivateLink",
+ "APIM",
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
+ "severity": "Medium",
+ "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "High",
- "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
+ "text": "Disable Public Network Access",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
- "severity": "High",
- "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Simplify management with PowerShell automation scripts",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "APIM",
+ "WAF"
],
"severity": "Medium",
- "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
- "waf": "Security"
+ "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "APIM",
+ "WAF"
],
"severity": "Medium",
- "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
- "waf": "Security"
+ "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "Medium",
- "text": "Use a high threshold for Azure Front Door 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. ",
- "waf": "Security"
+ "text": "Implement DevOps and CI/CD in your workflow",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
+ "severity": "Medium",
+ "text": "Secure APIs using client certificate authentication",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "Medium",
- "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
+ "text": "Secure backend services using client certificate authentication",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW"
+ "WAF"
],
- "severity": "High",
- "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
+ "severity": "Medium",
+ "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW",
- "AzurePolicy"
+ "WAF"
],
- "severity": "High",
- "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
+ "severity": "Medium",
+ "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW"
+ "WAF"
],
"severity": "High",
- "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
+ "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW",
- "AzurePolicy"
+ "AKV",
+ "WAF"
],
"severity": "High",
- "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
+ "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"services": [
- "WAF",
- "AppGW"
+ "Entra",
+ "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.",
+ "text": "Use managed identities to authenticate to other Azure resources whenever possible",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.ApiManagement/service",
"checklist": "WAF checklist",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
- "AppGW"
+ "Entra",
+ "APIM",
+ "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. ",
+ "severity": "High",
+ "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
"services": [
"WAF"
],
"severity": "Low",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "WAF checklist",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
- "services": [
- "WAF",
- "AppGW"
- ],
- "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.",
- "waf": "Security"
+ "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"services": [
- "WAF",
- "AppGW"
+ "Backup",
+ "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.",
- "waf": "Security"
+ "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "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"
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
+ "services": [
+ "WAF"
],
- "severity": "Medium",
- "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"services": [
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "Medium",
- "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
- "waf": "Operations"
+ "text": "Implement health checks",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
"services": [
- "Sentinel",
- "WAF",
- "AppGW"
+ "AppSvc",
+ "Backup",
+ "WAF"
],
- "severity": "Medium",
- "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Refer to backup and restore best practices for Azure App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
"services": [
- "Sentinel",
- "WAF",
- "FrontDoor"
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Implement Azure App Service reliability best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
"services": [
- "WAF",
- "AppGW"
+ "AppSvc",
+ "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.",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Familiarize with how to move an App Service app to another region During a disaster",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
"services": [
- "WAF",
- "AzurePolicy"
+ "AppSvc",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use WAF Policies instead of the legacy WAF configuration.",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Familiarize with reliability support in Azure App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"services": [
- "VNet",
- "AppGW",
- "VPN",
- "WAF",
- "ExpressRoute"
+ "AppSvc",
+ "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.",
- "waf": "Security"
+ "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"services": [
- "WAF",
- "FrontDoor"
+ "AppSvc",
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
- "waf": "Security"
+ "text": "Monitor App Service instances using Health checks",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"services": [
+ "Monitor",
"WAF"
],
- "severity": "High",
- "text": "You should encrypt traffic to the backend servers.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
"services": [
+ "Monitor",
"WAF"
],
- "severity": "High",
- "text": "You should use a Web Application Firewall.",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
+ "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"services": [
+ "AKV",
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Redirect HTTP to HTTPS",
+ "severity": "High",
+ "text": "Use Key Vault to store secrets",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"services": [
+ "Entra",
+ "AKV",
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Use Managed Identity to connect to Key Vault",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
+ "description": "Store the App Service TLS certificate in Key Vault.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
"services": [
+ "AKV",
+ "AppSvc",
"WAF"
],
"severity": "High",
- "text": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
+ "text": "Use Key Vault to store TLS certificate.",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
+ "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"services": [
+ "AppSvc",
+ "Subscriptions",
"WAF"
],
- "severity": "Low",
- "text": "Create custom error pages to display a personalized user experience",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Isolate systems that process sensitive information",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
+ "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"services": [
+ "AppSvc",
+ "TrafficManager",
"WAF"
],
"severity": "Medium",
- "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
+ "text": "Do not store sensitive data on local disk",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
+ "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"services": [
- "WAF",
- "FrontDoor"
+ "Entra",
+ "AppSvc",
+ "WAF"
],
"severity": "Medium",
- "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
- "waf": "Performance"
+ "text": "Use an established Identity Provider for authentication",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
+ "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
"services": [
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Use transport layer load balancing",
- "waf": "Performance"
+ "severity": "High",
+ "text": "Deploy from a trusted environment",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
+ "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"services": [
+ "Entra",
"WAF"
],
- "severity": "Medium",
- "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
+ "severity": "High",
+ "text": "Disable basic authentication",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
"services": [
- "WAF",
- "Entra"
+ "Entra",
+ "AKV",
+ "WAF"
],
- "severity": "Medium",
- "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
+ "severity": "High",
+ "text": "Use Managed Identity to connect to resources",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
+ "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "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": [
- "WAF",
- "AppGW"
+ "Entra",
+ "ACR",
+ "WAF"
],
- "severity": "Low",
- "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
+ "severity": "High",
+ "text": "Pull containers using a Managed Identity",
"waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"services": [
- "WAF",
- "Entra"
+ "Entra",
+ "AppSvc",
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
- "waf": "Reliability"
+ "text": "Send App Service runtime logs to Log Analytics",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
+ "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"services": [
+ "Entra",
+ "AppSvc",
+ "Monitor",
"WAF"
],
"severity": "Medium",
- "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
- "waf": "Reliability"
+ "text": "Send App Service activity logs to Log Analytics",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"services": [
+ "NVA",
+ "Monitor",
+ "VNet",
+ "Firewall",
"WAF"
],
"severity": "Medium",
- "text": "Custom brand assets should be hosted on a CDN",
- "waf": "Performance"
+ "text": "Outbound network access should be controlled",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
+ "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
"services": [
+ "PrivateLink",
+ "Storage",
+ "NVA",
+ "VNet",
+ "Firewall",
"WAF"
],
"severity": "Low",
- "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
- "waf": "Reliability"
- },
- {
- "checklist": "WAF checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "services": [
- "WAF",
- "VM"
- ],
- "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)",
- "waf": "Reliability"
+ "text": "Ensure a stable IP for outbound communications towards internet addresses",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"services": [
+ "PrivateLink",
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Don't replicate! Replication can create issues with directory synchronization",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Inbound network access should be controlled",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
"services": [
+ "AppGW",
+ "FrontDoor",
+ "Monitor",
+ "AppSvc",
"WAF"
],
- "severity": "Medium",
- "text": "Have active-active for multi-regions",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Use a WAF in front of App Service",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"services": [
- "WAF",
- "Entra"
+ "PrivateLink",
+ "WAF"
],
- "severity": "Medium",
- "text": "Add Azure AD Domain service stamps to additional regions and locations",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Avoid for WAF to be bypassed",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
"services": [
+ "AppSvc",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Use Replica Sets for DR",
- "waf": "Reliability"
+ "text": "Set minimum TLS policy to 1.2",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
- "service": "Service Bus",
+ "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
"services": [
- "ServiceBus",
+ "AppSvc",
"WAF"
],
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "severity": "High",
+ "text": "Use HTTPS only",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
- "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
- "service": "Service Bus",
+ "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
"services": [
- "ServiceBus",
+ "Storage",
"WAF"
],
- "severity": "Medium",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "severity": "High",
+ "text": "Wildcards must not be used for CORS",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
- "checklist": "WAF checklist",
- "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
- "service": "Service Bus",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "WAF checklist",
+ "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
"services": [
- "TrafficManager",
- "AzurePolicy",
- "ServiceBus",
- "WAF",
- "Entra",
- "RBAC"
+ "WAF"
],
- "severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "severity": "High",
+ "text": "Turn off remote debugging",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
- "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
- "service": "Service Bus",
+ "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
"services": [
- "AKV",
"AppSvc",
- "Storage",
- "ServiceBus",
- "WAF",
- "Entra",
- "VM"
+ "Defender",
+ "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "Enable Defender for Cloud - Defender for App Service",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
- "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
- "service": "Service Bus",
+ "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"services": [
- "Subscriptions",
- "Storage",
- "ServiceBus",
- "WAF",
- "RBAC"
+ "AppGW",
+ "DDoS",
+ "NVA",
+ "EventHubs",
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "severity": "Medium",
+ "text": "Enable DDOS Protection Standard on the WAF VNet",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
- "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
- "service": "Service Bus",
+ "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
"services": [
- "ServiceBus",
- "WAF",
- "Monitor",
- "VNet"
+ "PrivateLink",
+ "ACR",
+ "VNet",
+ "WAF"
],
"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)",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "text": "Pull containers over a Virtual Network",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
- "service": "Service Bus",
+ "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
"services": [
- "ServiceBus",
- "WAF",
- "VNet",
- "PrivateLink"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "Conduct a penetration test",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ServiceBus/namespaces",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
- "service": "Service Bus",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"services": [
- "ServiceBus",
"WAF"
],
"severity": "Medium",
- "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "text": "Deploy validated code",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
+ "arm-service": "microsoft.web/sites",
"checklist": "WAF checklist",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
"services": [
"WAF"
],
"severity": "High",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
+ "arm-service": "Microsoft.DBforMySQL/servers",
"checklist": "WAF checklist",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "severity": "Medium",
+ "text": "Leverage Flexible Server",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
+ "arm-service": "Microsoft.DBforMySQL/servers",
"checklist": "WAF checklist",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
"services": [
"WAF"
],
"severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "Leverage Availability Zones where regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
+ "arm-service": "Microsoft.DBforMySQL/servers",
"checklist": "WAF checklist",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"services": [
- "WAF",
- "AppSvc"
+ "WAF"
],
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "severity": "Medium",
+ "text": "Leverage Data-in replication for cross-region DR scenarios",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
+ "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
+ "service": "Azure Data Explorer",
"services": [
+ "Storage",
+ "Cost",
"WAF"
],
- "severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
- "waf": "Operations"
+ "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachineScaleSets",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
- "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
- "service": "VMSS",
+ "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
+ "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
+ "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "VM"
+ "Storage",
+ "WAF"
],
- "severity": "Low",
- "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
+ "text": "To share data, explore Leader-follower cluster configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
- "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
- "service": "VM",
+ "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
+ "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "Backup",
- "VM"
+ "ASR",
+ "WAF"
],
- "severity": "High",
- "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
+ "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
- "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "VM",
+ "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "VM"
+ "RBAC",
+ "Storage",
+ "WAF"
],
- "severity": "High",
- "text": "Use Premium or Ultra disks for production VMs",
+ "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
- "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
- "service": "VM",
+ "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "High",
- "text": "Ensure Managed Disks are used for all VMs",
+ "text": "Ingest data into each cluster in parallel",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
- "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
- "service": "VM",
+ "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
+ "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "Storage",
- "WAF",
- "SQL",
- "VM"
+ "ACR",
+ "WAF"
],
- "severity": "Medium",
- "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
- "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "VM",
+ "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
+ "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "Storage",
- "WAF",
"ACR",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "text": "For critical applications, create Active-Active configuration in two paired regions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
- "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "VM",
+ "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
+ "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
+ "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
- "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "VM",
+ "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
+ "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
+ "Storage",
"ASR",
- "VM"
+ "AzurePolicy",
+ "Cost",
+ "WAF"
],
- "severity": "High",
- "text": "Avoid running a production workload on a single VM",
+ "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
- "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
+ "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "ASR",
- "VM",
- "AVS"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
+ "text": "Wrap DevOps and source control around all your code",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
- "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
- "service": "VM",
+ "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
+ "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Kusto/clusters",
"checklist": "WAF checklist",
- "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
- "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
- "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
- "service": "VM",
+ "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
"services": [
- "WAF",
- "ASR",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Increase quotas in DR region before testing failover with ASR",
+ "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "microsoft.cache/redis",
"checklist": "WAF checklist",
- "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
- "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
- "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
- "service": "VM",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"services": [
- "WAF",
- "VM"
+ "ACR",
+ "WAF"
],
- "severity": "Low",
- "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.cache/redis",
"checklist": "WAF checklist",
- "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
- "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
"services": [
"Storage",
"WAF"
],
"severity": "Medium",
- "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
+ "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.cache/redis",
"checklist": "WAF checklist",
- "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
- "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"services": [
"Storage",
"WAF"
],
- "severity": "Low",
- "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "severity": "Medium",
+ "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.cache/redis",
"checklist": "WAF checklist",
- "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
- "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
"services": [
- "Storage",
+ "ASR",
"WAF"
],
- "severity": "Low",
- "text": "Enable soft delete for Storage Account Containers",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
- "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
"services": [
- "Storage",
+ "EventHubs",
"WAF"
],
"severity": "Low",
- "text": "Enable soft delete for blobs",
- "waf": "Reliability"
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
- "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
- "service": "Azure Backup",
+ "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "Backup"
+ "EventHubs",
+ "WAF"
],
"severity": "Medium",
- "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
- "waf": "Reliability"
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
- "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
- "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
- "service": "Azure Backup",
+ "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "Backup"
+ "Entra",
+ "AzurePolicy",
+ "RBAC",
+ "TrafficManager",
+ "EventHubs",
+ "WAF"
],
- "severity": "Low",
- "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
- "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
- "service": "Azure Backup",
+ "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
+ "services": [
+ "Entra",
+ "AKV",
+ "Storage",
+ "VM",
+ "EventHubs",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "WAF checklist",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "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": [
- "Storage",
- "WAF",
- "Backup"
+ "RBAC",
+ "EventHubs",
+ "WAF"
],
- "severity": "Low",
- "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
- "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
- "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
- "service": "DNS",
+ "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "ASR",
- "DNS",
- "ACR"
+ "EventHubs",
+ "Monitor",
+ "VNet",
+ "WAF"
],
- "severity": "Low",
- "text": "Implement DNS Failover using Azure DNS Private Resolvers",
- "waf": "Reliability"
+ "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",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.PowerBI/gateways",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
- "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
- "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
- "service": "Data Gateways",
+ "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "ACR"
+ "PrivateLink",
+ "EventHubs",
+ "VNet",
+ "WAF"
],
"severity": "Medium",
- "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
- "waf": "Reliability"
+ "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
- "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "NVA"
+ "EventHubs",
+ "WAF"
],
- "severity": "High",
- "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
- "service": "CosmosDB",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "FTA Resiliency Playbook",
+ "text": "Leverage FTA Resillency HandBook",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"services": [
+ "EventHubs",
+ "ACR",
"WAF"
],
"severity": "High",
- "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
- "service": "CosmosDB",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Run multiple replicas of the database (>1 ) in Prod",
+ "text": "Use the Premium or Dedicated SKUs for predicable performance",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
- "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
- "service": "CosmosDB",
+ "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "ACR"
+ "EventHubs",
+ "ASR",
+ "WAF"
],
- "severity": "Medium",
- "text": "Leverage Multi-Region Writes",
+ "severity": "High",
+ "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Span Cosmos account across two or more regions with multi-region writes",
- "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
"services": [
- "WAF",
- "ACR"
+ "EventHubs",
+ "ASR",
+ "WAF"
],
"severity": "Medium",
- "text": "Distribute your data globally",
+ "text": "For Business Critical Applications, use Active Active configuration",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "microsoft.eventhub/namespaces",
"checklist": "WAF checklist",
- "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
- "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
- "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
- "service": "CosmosDB",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"services": [
+ "EventHubs",
"WAF"
],
- "severity": "High",
- "text": "Choose from several well-defined consistency models",
+ "severity": "Medium",
+ "text": "Design Resilient Event Hubs",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
- "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
- "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
- "service": "CosmosDB",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"services": [
- "WAF",
- "CosmosDB"
+ "Entra",
+ "Subscriptions",
+ "WAF"
],
- "severity": "Medium",
- "text": "Enable Service managed failover",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
- "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
- "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
- "service": "CosmosDB",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"services": [
- "Storage",
- "WAF",
- "Backup",
- "CosmosDB"
+ "AVS",
+ "WAF"
],
"severity": "Medium",
- "text": "Enable Automatic Backups",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Reliability"
+ "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
- "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
- "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
- "service": "CosmosDB",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup"
+ "WAF"
],
- "severity": "Medium",
- "text": "Perform Periodic Backups",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
- "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
- "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
- "service": "CosmosDB",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup",
- "CosmosDB"
+ "WAF"
],
"severity": "Medium",
- "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Reliability"
+ "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Follow Metaprompting guardrails for resonsible AI",
- "waf": "Operational Excellence"
+ "severity": "Medium",
+ "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1",
- "link": "https://github.com/Azure-Samples/AI-Gateway",
- "service": "Azure OpenAI",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
"services": [
- "WAF",
- "APIM",
- "Entra"
+ "Entra",
+ "WAF"
],
"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"
+ "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor"
+ "RBAC",
+ "AVS",
+ "WAF"
],
- "severity": "High",
- "text": "Enable monitoring for your AOAI instances",
- "waf": "Operational Excellence"
+ "severity": "Medium",
+ "text": "Has an RBAC model been created for use within VMware vSphere",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "697cb391-ed16-4b2d-886f-0a0241addde6",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts",
- "service": "Azure OpenAI",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor",
- "Subscriptions",
- "AKV"
+ "RBAC",
+ "WAF"
],
- "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"
+ "severity": "Medium",
+ "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
- "service": "Azure OpenAI",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor"
+ "RBAC",
+ "AVS",
+ "WAF"
],
"severity": "High",
- "text": "Monitor token usage to prevent service disruptions due to capacity",
- "waf": "Operational Excellence"
+ "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
- "service": "Azure OpenAI",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor"
+ "RBAC",
+ "WAF"
],
- "severity": "Medium",
- "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
- "waf": "Operational Excellence"
+ "severity": "High",
+ "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"services": [
- "WAF",
- "APIM"
+ "AVS",
+ "WAF"
],
- "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"
+ "severity": "High",
+ "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54",
- "link": "https://github.com/Azure-Samples/openai-enterprise-iac",
- "service": "Azure OpenAI",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
"services": [
+ "NetworkWatcher",
+ "VPN",
+ "Monitor",
+ "ExpressRoute",
"WAF"
],
"severity": "High",
- "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources",
- "waf": "Operational Excellence"
+ "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4350d092-d234-4292-a752-8537a551c5bf",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity",
- "service": "Azure OpenAI",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"services": [
- "WAF",
- "Entra"
+ "NetworkWatcher",
+ "AVS",
+ "VM",
+ "Monitor",
+ "ExpressRoute",
+ "WAF"
],
- "severity": "High",
- "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key",
- "waf": "Security"
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"services": [
+ "NetworkWatcher",
+ "AVS",
+ "VM",
+ "Monitor",
"WAF"
],
- "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"
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
"services": [
+ "ARS",
"WAF"
],
"severity": "High",
- "text": "Evaluate usage of Provisioned throughput model ",
- "waf": "Performance"
+ "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).",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a",
- "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview",
- "service": "Azure OpenAI",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
"services": [
+ "Entra",
+ "RBAC",
+ "AVS",
"WAF"
],
"severity": "High",
- "text": "Review and implement Azure AI content safety",
- "waf": "Operational Excellence"
+ "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput",
- "service": "Azure OpenAI",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
"services": [
+ "Entra",
+ "RBAC",
+ "AVS",
"WAF"
],
"severity": "High",
- "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements",
- "waf": "Performance"
+ "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance",
- "service": "Azure OpenAI",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"services": [
+ "Entra",
+ "AVS",
"WAF"
],
"severity": "Medium",
- "text": "Improve latency of the system by limiting token sizes, streaming options",
- "waf": "Performance"
+ "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)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching",
- "service": "Azure OpenAI",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"services": [
- "Storage",
- "WAF",
- "ServiceBus"
+ "WAF"
],
- "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"
+ "severity": "High",
+ "text": "Limit use of CloudAdmin account to emergency access only",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "5bda4332-4f24-4811-9331-82ba51752694",
- "link": "https://github.com/Azure/azure-openai-benchmark/",
- "service": "Azure OpenAI",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
"services": [
+ "RBAC",
"WAF"
],
- "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"
+ "severity": "Medium",
+ "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"services": [
"WAF"
],
"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"
+ "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "WAF checklist",
- "guid": "e8a13f98-8794-424d-9267-86d60b96c97b",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "WAF checklist",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"services": [
+ "Entra",
+ "AVS",
+ "VM",
"WAF"
],
"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"
+ "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e9951904-8384-45c9-a6cb-2912156a1147",
- "link": "https://github.com/Azure/azure-openai-benchmark/",
- "service": "Azure OpenAI",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance",
- "waf": "Performance"
+ "text": "Is East-West traffic filtering implemented within NSX-T",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"services": [
- "WAF",
- "ACR"
+ "AVS",
+ "AppGW",
+ "Firewall",
+ "WAF"
],
- "severity": "Low",
- "text": "Deploy multiple OAI instances across regions",
- "waf": "Reliability"
+ "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",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"services": [
- "WAF",
- "APIM",
- "Entra"
+ "AVS",
+ "WAF"
],
"severity": "High",
- "text": "Implement retry & healthchecks with Gateway pattern like APIM",
- "waf": "Reliability"
+ "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"services": [
+ "Monitor",
+ "AVS",
"WAF"
],
"severity": "Medium",
- "text": "Ensure having adequate quotas of TPM & RPM for the workload",
- "waf": "Reliability"
+ "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ec723923-7a15-42d6-ac5e-402925387e5c",
- "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/",
- "service": "Azure OpenAI",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"services": [
+ "DDoS",
+ "VPN",
+ "ExpressRoute",
+ "VNet",
"WAF"
],
"severity": "Medium",
- "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution",
- "waf": "Operational Excellence"
+ "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "7f154e3a-a369-4282-ae7e-316183687a04",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
- "service": "Azure OpenAI",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
"services": [
- "WAF",
- "ACR"
+ "AVS",
+ "WAF"
],
"severity": "Medium",
- "text": "Deploy separate fine tuned models across regions if finetuning is employed",
- "waf": "Reliability"
+ "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "77a1f893-5bda-4433-84f2-4811633182ba",
- "link": "https://learn.microsoft.com/azure/backup/backup-overview",
- "service": "Azure OpenAI",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup",
- "ASR"
+ "AVS",
+ "Defender",
+ "WAF"
],
"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"
+ "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Arc",
"WAF"
],
- "severity": "High",
- "text": "Azure AI search service tiers should be choosen to have a SLA ",
- "waf": "Reliability"
+ "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)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a",
- "link": "https://learn.microsoft.com/purview/purview",
- "service": "Azure OpenAI",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
"services": [
+ "AVS",
+ "SQL",
"WAF"
],
"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",
+ "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)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely",
- "service": "Azure OpenAI",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
"services": [
+ "AKV",
"WAF"
],
- "severity": "High",
- "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK",
+ "severity": "Low",
+ "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f",
- "link": "https://learn.microsoft.com/azure/search/search-security-overview",
- "service": "Azure OpenAI",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"services": [
- "WAF",
- "ACR"
+ "AVS",
+ "WAF"
],
- "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",
+ "severity": "Medium",
+ "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control",
- "service": "Azure OpenAI",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"services": [
- "WAF",
- "RBAC"
+ "WAF"
],
"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"
+ "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices",
- "service": "Azure OpenAI",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
"services": [
+ "Storage",
+ "AzurePolicy",
"WAF"
],
- "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"
+ "severity": "High",
+ "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction",
- "service": "Azure OpenAI",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"services": [
- "Sentinel",
- "WAF",
- "Monitor",
- "Defender"
+ "ASR",
+ "WAF"
],
"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"
+ "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
"services": [
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"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"
+ "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a",
- "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection",
- "service": "Azure OpenAI",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"services": [
+ "AzurePolicy",
"WAF"
],
- "severity": "High",
- "text": "Implement Prompt shields and groundedness detection using Content Safety ",
- "waf": "Operational Excellence"
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876",
- "link": "https://learn.microsoft.com/azure/compliance/",
- "service": "Azure OpenAI",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Cost",
"WAF"
],
- "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"
+ "severity": "Medium",
+ "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "Azure OpenAI",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "services": [
+ "AVS",
+ "Cost",
+ "WAF"
+ ],
+ "severity": "Low",
+ "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
+ "waf": "Cost"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "WAF checklist",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"services": [
"WAF"
],
"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.",
+ "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"services": [
"WAF"
],
"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"
+ "text": "Ensure all required resource reside within the same Azure availability zone(s)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "Azure OpenAI",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"services": [
+ "AVS",
+ "VM",
+ "Defender",
"WAF"
],
"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",
+ "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "Azure OpenAI",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"services": [
- "WAF",
- "RBAC",
- "AzurePolicy"
+ "AVS",
+ "VM",
+ "Arc",
+ "WAF"
],
"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",
+ "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "Azure OpenAI",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
"services": [
+ "AVS",
"WAF"
],
"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"
+ "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control",
- "service": "Azure OpenAI",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"services": [
- "WAF",
- "RBAC"
+ "Monitor",
+ "AVS",
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"services": [
- "WAF",
- "PrivateLink"
+ "Backup",
+ "AVS",
+ "VM",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Configure private endpoint for AI services to restrict service access within your network",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"services": [
- "WAF",
- "VNet",
- "Firewall"
+ "Monitor",
+ "AVS",
+ "Defender",
+ "WAF"
],
- "severity": "High",
- "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points",
+ "severity": "Medium",
+ "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
- "service": "Azure OpenAI",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"services": [
+ "Defender",
"WAF"
],
- "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",
+ "severity": "Medium",
+ "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f",
- "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/",
- "service": "Azure OpenAI",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"services": [
+ "AVS",
"WAF"
],
- "severity": "Medium",
- "text": "Use prompt compression tools like LLMLingua or gprtrim",
- "waf": "Cost Optimization"
+ "severity": "High",
+ "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1102cac6-eae0-41e6-b842-e52f4721d928",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity",
- "service": "Azure OpenAI",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"services": [
- "WAF",
- "AKV",
- "Entra"
+ "WAF"
],
"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.",
+ "text": "Are data processing implications (service provider / service consumer model) clear and documented",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"services": [
"WAF"
],
"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",
+ "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor"
+ "Monitor",
+ "AVS",
+ "WAF"
],
- "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"
+ "severity": "High",
+ "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
"services": [
+ "Monitor",
+ "AVS",
"WAF"
],
- "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"
+ "severity": "High",
+ "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json",
- "service": "Azure OpenAI",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
"services": [
+ "Monitor",
+ "AVS",
"WAF"
],
- "severity": "Low",
- "text": "Azure AI Services are properly tagged for better management",
- "waf": "Operational Excellence"
+ "severity": "High",
+ "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations",
- "service": "Azure OpenAI",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"services": [
+ "Monitor",
"WAF"
],
- "severity": "Low",
- "text": "Azure AI Service accounts follows organizational naming conventions",
- "waf": "Operational Excellence"
+ "severity": "High",
+ "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging",
- "service": "Azure OpenAI",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Storage",
"WAF"
],
- "severity": "High",
- "text": "Diagnostic logs in Azure AI services resources should be enabled",
- "waf": "Operational Excellence"
+ "severity": "Medium",
+ "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/ai-services/authentication",
- "service": "Azure OpenAI",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
"services": [
- "WAF",
- "Entra"
+ "AVS",
+ "WAF"
],
- "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"
+ "severity": "Low",
+ "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Azure OpenAI",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
"services": [
- "WAF",
- "AKV",
- "Entra"
+ "Storage",
+ "VM",
+ "AzurePolicy",
+ "WAF"
],
"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"
+ "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Azure OpenAI",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"services": [
- "WAF",
- "AKV"
+ "WAF"
],
- "severity": "High",
- "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "adfe27be-e297-401a-a352-baaab79b088d",
- "link": "https://github.com/openai/tiktoken",
- "service": "Azure OpenAI",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"services": [
+ "Storage",
+ "Backup",
"WAF"
],
- "severity": "High",
- "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode",
- "waf": "Cost Optimization"
+ "severity": "Medium",
+ "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e",
- "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview",
- "service": "Azure OpenAI",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Arc",
"WAF"
],
- "severity": "High",
- "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations",
- "waf": "Security"
+ "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)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
"services": [
+ "Monitor",
+ "AVS",
"WAF"
],
- "severity": "High",
- "text": "Setup a process to regularly update and patch the LLM libraries and other system components",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e29711b1-352b-4eee-879b-588defc4972c",
- "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct",
- "service": "Azure OpenAI",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"services": [
- "WAF",
- "AzurePolicy"
+ "AVS",
+ "WAF"
],
- "severity": "High",
- "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases",
- "waf": "Operational Excellence"
+ "severity": "Medium",
+ "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"services": [
- "WAF",
- "Cost"
+ "Monitor",
+ "AVS",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Understand difference in cost of base models and fine tuned models and token step sizes",
- "waf": "Cost Optimization"
+ "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching",
- "service": "Azure OpenAI",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"services": [
- "WAF",
- "Cost"
+ "AVS",
+ "Defender",
+ "WAF"
],
- "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"
+ "severity": "Medium",
+ "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs",
- "service": "Azure OpenAI",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor",
- "Cost"
+ "Backup",
+ "WAF"
],
"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"
+ "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"services": [
"WAF"
],
"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"
+ "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2",
- "link": "https://learn.microsoft.com/azure/search/search-reliability",
- "service": "Azure OpenAI",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"services": [
+ "ASR",
"WAF"
],
"severity": "Medium",
- "text": "Review the guidance provided on setting up AI search for Reliability",
- "waf": "Operational Excellence"
+ "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde",
- "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota",
- "service": "Azure OpenAI",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
"services": [
- "Storage",
"WAF"
],
- "severity": "Medium",
- "text": "Plan and manage AI Search Vector storage",
- "waf": "Operational Excellence"
+ "severity": "High",
+ "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"services": [
+ "ASR",
"WAF"
],
"severity": "Medium",
- "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications",
- "waf": "Operational Excellence"
+ "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "High",
- "text": "Evaluate usage of billing models - PAYG vs PTU",
- "waf": "Cost Optimization"
+ "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"services": [
+ "AVS",
+ "ExpressRoute",
+ "NVA",
"WAF"
],
"severity": "Medium",
- "text": "Evaluate the quality of prompts and applications when switching between model versions",
- "waf": "Operational Excellence"
+ "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?",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"services": [
- "WAF",
- "Monitor"
+ "Backup",
+ "WAF"
],
"severity": "Medium",
- "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �",
- "waf": "Operational Excellence"
+ "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "294798b1-578b-4219-a46c-eb5443513592",
- "service": "Azure OpenAI",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Backup",
"WAF"
],
"severity": "Medium",
- "text": "Evaluate your Azure AI Search results based on different search parameters",
- "waf": "Operational Excellence"
+ "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "2744293b-b628-4537-a551-19b08e8f5854",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations",
- "service": "Azure OpenAI",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"services": [
+ "Backup",
"WAF"
],
"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"
+ "text": "Deploy your backup solution outside of vSan, on Azure native components",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
"services": [
+ "AVS",
"WAF"
],
- "severity": "Medium",
- "text": "Use prompt engineering techniques to improve the accuracy of LLM responses",
- "waf": "Operational Excellence"
+ "severity": "Low",
+ "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "e737897e-71ca-47da-acfa-962a1594946d",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming",
- "service": "Azure OpenAI",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Red team your GenAI applications",
- "waf": "Security"
+ "severity": "Low",
+ "text": "For manual deployments, all configuration and deployments must be documented",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e",
- "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/",
- "service": "Azure OpenAI",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
"services": [
+ "AVS",
"WAF"
],
- "severity": "Medium",
- "text": "Provide end users with scoring options for LLM responses and track these scores. ",
- "waf": "Operational Excellence"
+ "severity": "Low",
+ "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "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",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Consider Quota management practices",
- "waf": "Cost Optimization"
+ "severity": "Low",
+ "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410",
- "link": "https://github.com/Azure/aoai-apim/blob/main/README.md",
- "service": "Azure OpenAI",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
"services": [
- "APIM",
- "ACR",
- "LoadBalancer",
- "WAF",
- "Entra"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions",
- "waf": "Operational Excellence"
+ "severity": "Low",
+ "text": "For automated deployments, request or reserve quota prior to starting the deployment",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
- "service": "Cognitive Services",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
"services": [
+ "AzurePolicy",
"WAF"
],
- "severity": "Medium",
- "text": "Leverage FTA HandBook for Cognitive Services",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
- "service": "Cognitive Services",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup"
+ "AKV",
+ "WAF"
],
- "severity": "Medium",
- "text": "Backup Your Prompts",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
- "service": "Cognitive Services",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
"services": [
- "WAF",
- "ASR"
+ "AKV",
+ "AVS",
+ "ExpressRoute",
+ "WAF"
],
- "severity": "High",
- "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
- "waf": "Reliability"
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
- "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
- "service": "Cognitive Services",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup"
+ "AVS",
+ "WAF"
],
- "severity": "Medium",
- "text": "Backup Your ChatGPT conversations",
- "waf": "Reliability"
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
- "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
- "service": "Cognitive Services",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "services": [
+ "WAF"
+ ],
+ "severity": "Low",
+ "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "WAF checklist",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"services": [
+ "AVS",
+ "Subscriptions",
"WAF"
],
"severity": "Medium",
- "text": "CI/CD for custom speech",
- "waf": "Reliability"
+ "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",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "3687a046-7a1f-4893-9bda-43324f248116",
- "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
- "service": "Cognitive Services",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
"services": [
+ "Storage",
+ "AzurePolicy",
"WAF"
],
- "severity": "Low",
- "text": "Move a knowledge base using export-import",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
- "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
- "service": "Purview",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Leverage FTA Resillency Handbook",
- "waf": "Reliability"
+ "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Plan for Data Center level outage",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
- "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Practice Failover for BCDR",
- "waf": "Reliability"
+ "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup"
+ "Monitor",
+ "WAF"
],
- "severity": "High",
- "text": "Plan a backup strategy and take regular backups",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
- "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
- "service": "Purview",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"services": [
- "EventHubs",
+ "VM",
"WAF"
],
- "severity": "Low",
- "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
+ "severity": "High",
+ "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
- "link": "https://learn.microsoft.com/purview/deployment-best-practices",
- "service": "Purview",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Follow Purview accounts architectures and deployment best practices",
+ "severity": "High",
+ "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
- "service": "Purview",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
"services": [
+ "VPN",
"WAF"
],
"severity": "Medium",
- "text": "Follow Collection Architectures and best practices",
- "waf": "Reliability"
+ "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
- "service": "Purview",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Follow Assest lifecycle best practices",
- "waf": "Reliability"
+ "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
- "service": "Purview",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Follow automation best practices",
+ "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"services": [
- "WAF",
- "Backup"
+ "AVS",
+ "VM",
+ "Storage",
+ "WAF"
],
"severity": "Medium",
- "text": "Follow Backup and Migration Best practices",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
- "service": "Purview",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"services": [
+ "Storage",
+ "ExpressRoute",
"WAF"
],
"severity": "Medium",
- "text": "Follow Purview Glossary Best Practices",
+ "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
- "link": "https://learn.microsoft.com/purview/concept-workflow",
- "service": "Purview",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"services": [
+ "Storage",
+ "ExpressRoute",
"WAF"
],
- "severity": "Low",
- "text": "Leverage Workflows ",
+ "severity": "Medium",
+ "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
- "service": "Purview",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
"services": [
+ "ASR",
"WAF"
],
- "severity": "Medium",
- "text": "Follow Purview Security Best Practices",
+ "severity": "High",
+ "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
- "service": "Purview",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Follow Purview Data Lineage Best Practices",
+ "severity": "High",
+ "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
- "service": "Purview",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
"services": [
+ "ExpressRoute",
"WAF"
],
- "severity": "Medium",
- "text": "Follow Best Practices for Scanning Registered Sources",
+ "severity": "High",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
- "service": "Purview",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
"services": [
+ "ExpressRoute",
"WAF"
],
- "severity": "Medium",
- "text": "Follow Classification Best Practices in Governance Portal",
+ "severity": "High",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.AVS/privateClouds",
"checklist": "WAF checklist",
- "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
- "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
- "service": "Purview",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Perform Sensitivity Labelling in the Purview Data Map",
+ "severity": "High",
+ "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.Devices/IotHubs",
"checklist": "WAF checklist",
- "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
- "link": "https://learn.microsoft.com/purview/concept-data-share",
- "service": "Purview",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"services": [
- "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
+ "severity": "High",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.Devices/IotHubs",
"checklist": "WAF checklist",
- "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Leverage Data Estate Insights",
+ "severity": "Medium",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.Devices/IotHubs",
"checklist": "WAF checklist",
- "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
- "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
- "service": "Purview",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Use Data stewardship and Catalog adoption",
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.Devices/IotHubs",
"checklist": "WAF checklist",
- "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Use Inventory and Ownership",
+ "severity": "High",
+ "text": "Learn how to trigger a manual failover.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.Devices/IotHubs",
"checklist": "WAF checklist",
- "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
- "link": "https://learn.microsoft.com/purview/glossary-insights",
- "service": "Purview",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
+ "severity": "High",
+ "text": "Learn how to fail back after a failover.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
- "link": "https://learn.microsoft.com/purview/compliance-manager",
- "service": "Purview",
+ "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": [
"WAF"
],
- "severity": "Medium",
- "text": "Generate assessment scores",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Follow Metaprompting guardrails for resonsible AI",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
- "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
- "service": "Purview",
+ "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1",
+ "link": "https://github.com/Azure-Samples/AI-Gateway",
+ "service": "Azure OpenAI",
"services": [
+ "Entra",
+ "APIM",
"WAF"
],
- "severity": "Medium",
- "text": "Profiling- get summaries of data content",
- "waf": "Reliability"
+ "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.Purview/accounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
- "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
- "service": "Purview",
+ "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": [
- "WAF",
- "AzurePolicy"
+ "Monitor",
+ "WAF"
],
- "severity": "Low",
- "text": "Follow Microsoft Purview Data Owner access policies",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Enable monitoring for your AOAI instances",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Purview/accounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
- "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
- "service": "Purview",
+ "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": [
- "WAF",
- "AzurePolicy"
+ "AKV",
+ "Monitor",
+ "Subscriptions",
+ "WAF"
],
- "severity": "Low",
- "text": "Follow Self-service access policies",
- "waf": "Reliability"
+ "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.Purview/accounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
- "link": "https://learn.microsoft.com/purview/concept-policies-devops",
- "service": "Purview",
+ "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "AzurePolicy"
+ "Monitor",
+ "WAF"
],
- "severity": "Low",
- "text": "Follow DevOps policies",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Monitor token usage to prevent service disruptions due to capacity",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.BotService/botServices",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
+ "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
+ "service": "Azure OpenAI",
"services": [
+ "Monitor",
"WAF"
],
"severity": "Medium",
- "text": "Follow reliability support recommendations in Azure Bot Service",
- "waf": "Reliability"
+ "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.BotService/botServices",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "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",
"WAF"
],
- "severity": "Medium",
- "text": "Deploying bots with local data residency and regional compliance",
- "waf": "Reliability"
+ "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.BotService/botServices",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54",
+ "link": "https://github.com/Azure-Samples/openai-enterprise-iac",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
- "waf": "Reliability"
+ "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.DBforPostgreSQL/servers",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
- "service": "PostgreSQL",
+ "guid": "4350d092-d234-4292-a752-8537a551c5bf",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity",
+ "service": "Azure OpenAI",
"services": [
+ "Entra",
"WAF"
],
- "severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
- "service": "PostgreSQL",
+ "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": [
"WAF"
],
"severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
+ "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 Excellence"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "31b67c67-be59-4519-8083-845d587cb391",
- "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
- "service": "PostgreSQL",
+ "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": [
"WAF"
],
- "severity": "Medium",
- "text": "Leverage cross-region read replicas for BCDR",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Evaluate usage of Provisioned throughput model ",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
- "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
- "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
- "service": "ACR",
+ "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a",
+ "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "ACR"
+ "WAF"
],
"severity": "High",
- "text": "Disable Azure Container Registry image export",
- "waf": "Security"
+ "text": "Review and implement Azure AI content safety",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
- "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
- "service": "ACR",
+ "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": [
- "WAF",
- "ACR",
- "AzurePolicy"
+ "WAF"
],
"severity": "High",
- "text": "Enable Azure Policies for Azure Container Registry",
- "waf": "Security"
+ "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
- "guid": "d345293c-7639-4637-a551-c5c04e401955",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
- "service": "ACR",
+ "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "AKV",
- "ACR"
+ "WAF"
],
- "severity": "High",
- "text": "Sign and Verify containers with notation (Notary v2)",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Improve latency of the system by limiting token sizes, streaming options",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
- "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
- "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
- "service": "ACR",
+ "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "AKV",
- "ACR"
+ "Storage",
+ "ServiceBus",
+ "WAF"
],
"severity": "Medium",
- "text": "Encrypt registry with a customer managed key",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
- "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
+ "guid": "5bda4332-4f24-4811-9331-82ba51752694",
+ "link": "https://github.com/Azure/azure-openai-benchmark/",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "RBAC",
- "ACR",
- "Entra"
+ "WAF"
],
"severity": "High",
- "text": "Use Managed Identities to connect instead of Service Principals",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
- "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
+ "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": [
- "WAF",
- "RBAC"
+ "WAF"
],
- "severity": "High",
- "text": "Disable local authentication for management plane access",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
- "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
- "service": "ACR",
+ "guid": "e8a13f98-8794-424d-9267-86d60b96c97b",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "RBAC",
- "ACR",
- "Entra"
+ "WAF"
],
"severity": "High",
- "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Disable anonymous pull/push access",
- "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
- "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
- "service": "ACR",
+ "guid": "e9951904-8384-45c9-a6cb-2912156a1147",
+ "link": "https://github.com/Azure/azure-openai-benchmark/",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Disable Anonymous pull access",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
- "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
- "service": "ACR",
+ "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": [
- "WAF",
- "Entra"
+ "ACR",
+ "WAF"
],
- "severity": "High",
- "text": "Disable repository-scoped access tokens",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Deploy multiple OAI instances across regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
- "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
- "service": "ACR",
+ "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": [
- "EventHubs",
- "WAF",
- "ACR",
- "PrivateLink"
+ "Entra",
+ "APIM",
+ "WAF"
],
"severity": "High",
- "text": "Deploy images from a trusted environment",
- "waf": "Security"
+ "text": "Implement retry & healthchecks with Gateway pattern like APIM",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
- "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
- "service": "ACR",
+ "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": [
- "WAF",
- "ACR",
- "Entra",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Disable Azure ARM audience tokens for authentication",
- "waf": "Security"
+ "text": "Ensure having adequate quotas of TPM & RPM for the workload",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
- "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
- "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
- "service": "ACR",
+ "guid": "ec723923-7a15-42d6-ac5e-402925387e5c",
+ "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "Monitor",
- "ACR",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Enable diagnostics logging",
- "waf": "Security"
+ "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
- "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
- "service": "ACR",
+ "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": [
- "WAF",
- "VNet",
- "Firewall",
- "PrivateLink"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Control inbound network access with Private Link",
- "waf": "Security"
+ "text": "Deploy separate fine tuned models across regions if finetuning is employed",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Disable public network access if inbound network access is secured using Private Link",
- "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
- "service": "ACR",
+ "guid": "77a1f893-5bda-4433-84f2-4811633182ba",
+ "link": "https://learn.microsoft.com/azure/backup/backup-overview",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "PrivateLink"
+ "Backup",
+ "ASR",
+ "WAF"
],
"severity": "Medium",
- "text": "Disable Public Network access",
- "waf": "Security"
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Only the ACR Premium SKU supports Private Link access",
- "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
- "service": "ACR",
+ "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": [
- "WAF",
- "ACR",
- "PrivateLink"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
- "waf": "Security"
+ "severity": "High",
+ "text": "Azure AI search service tiers should be choosen to have a SLA ",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
- "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
- "service": "ACR",
+ "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a",
+ "link": "https://learn.microsoft.com/purview/purview",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "ACR",
- "Defender"
+ "WAF"
],
"severity": "Low",
- "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
+ "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.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
- "service": "ACR",
+ "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": [
"WAF"
],
- "severity": "Medium",
- "text": "Deploy validated container images",
+ "severity": "High",
+ "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
- "service": "ACR",
+ "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f",
+ "link": "https://learn.microsoft.com/azure/search/search-security-overview",
+ "service": "Azure OpenAI",
"services": [
+ "ACR",
"WAF"
],
"severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
+ "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": [
- "EventHubs",
+ "RBAC",
"WAF"
],
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
+ "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
"WAF"
],
"severity": "Medium",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
+ "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "TrafficManager",
- "AzurePolicy",
- "WAF",
- "Entra",
- "RBAC"
+ "Sentinel",
+ "Monitor",
+ "Defender",
+ "WAF"
],
- "severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
+ "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": [
- "EventHubs",
- "AKV",
- "Storage",
- "WAF",
- "Entra",
- "VM"
+ "AzurePolicy",
+ "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
+ "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a",
+ "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "WAF",
- "RBAC"
+ "WAF"
],
"severity": "High",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
+ "text": "Implement Prompt shields and groundedness detection using Content Safety ",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
+ "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876",
+ "link": "https://learn.microsoft.com/azure/compliance/",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "WAF",
- "Monitor",
- "VNet"
+ "WAF"
],
- "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",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "WAF",
- "VNet",
- "PrivateLink"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
+ "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
"WAF"
],
- "severity": "Medium",
- "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Leverage FTA Resillency HandBook",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "WAF checklist",
- "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "WAF",
- "ACR"
- ],
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"services": [
+ "RBAC",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Use the Premium or Dedicated SKUs for predicable performance",
- "waf": "Reliability"
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
+ "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "WAF",
- "ASR"
+ "WAF"
],
"severity": "High",
- "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "WAF checklist",
- "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "services": [
- "EventHubs",
- "WAF",
- "ASR"
- ],
- "severity": "Medium",
- "text": "For Business Critical Applications, use Active Active configuration",
- "waf": "Reliability"
+ "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.eventhub/namespaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
+ "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": [
- "EventHubs",
+ "RBAC",
"WAF"
],
- "severity": "Medium",
- "text": "Design Resilient Event Hubs",
- "waf": "Reliability"
+ "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.Insights/components",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
+ "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": [
- "WAF",
- "Monitor"
+ "PrivateLink",
+ "WAF"
],
- "severity": "Medium",
- "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Configure private endpoint for AI services to restrict service access within your network",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
+ "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "Backup"
+ "VNet",
+ "Firewall",
+ "WAF"
],
- "severity": "Medium",
- "text": "check backup instances with the underlying datasource not found",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
+ "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
- "waf": "Cost"
+ "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.RecoveryServices/vaults",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
+ "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f",
+ "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/",
+ "service": "Azure OpenAI",
"services": [
- "Storage",
- "WAF",
- "Backup",
- "ASR"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
- "waf": "Cost"
+ "text": "Use prompt compression tools like LLMLingua or gprtrim",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
+ "guid": "1102cac6-eae0-41e6-b842-e52f4721d928",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "Monitor"
+ "Entra",
+ "AKV",
+ "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 ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "Cost"
+ "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.Insights/components",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
+ "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": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "Azure OpenAI",
"services": [
- "Storage",
- "WAF",
- "Backup"
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "Cost"
+ "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.Storage/storageAccounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
+ "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
+ "service": "Azure OpenAI",
"services": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
+ "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Make sure advisor is configured for VM right sizing ",
- "waf": "Cost"
+ "severity": "Low",
+ "text": "Azure AI Services are properly tagged for better management",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "description": "check by searching the Meter Category Licenses in the Cost analysys",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
+ "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": [
- "WAF",
- "Cost",
- "VM",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
- "waf": "Cost"
+ "severity": "Low",
+ "text": "Azure AI Service accounts follows organizational naming conventions",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging",
+ "service": "Azure OpenAI",
"services": [
- "LoadBalancer",
"WAF"
],
- "severity": "Medium",
- "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Diagnostic logs in Azure AI services resources should be enabled",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/ai-services/authentication",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "VM"
+ "Entra",
+ "WAF"
],
- "severity": "Medium",
- "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
+ "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "Cost",
- "ARS",
- "VM"
+ "Entra",
+ "AKV",
+ "WAF"
],
- "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.",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
+ "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Azure OpenAI",
"services": [
+ "AKV",
"WAF"
],
- "severity": "Medium",
- "text": "Only larger disks can be reserved => 1 TiB -",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
+ "guid": "adfe27be-e297-401a-a352-baaab79b088d",
+ "link": "https://github.com/openai/tiktoken",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "After the right-sizing optimization",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.Sql/servers",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
+ "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e",
+ "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview",
+ "service": "Azure OpenAI",
"services": [
- "SQL",
- "WAF",
- "Cost",
- "AzurePolicy"
+ "WAF"
],
- "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",
- "waf": "Cost"
+ "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.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
+ "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": [
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Setup a process to regularly update and patch the LLM libraries and other system components",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
+ "guid": "e29711b1-352b-4eee-879b-588defc4972c",
+ "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "VM"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "text": "Consider using a VMSS to match demand rather than flat sizing",
- "waf": "Cost"
+ "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.containerservice/managedClusters",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
+ "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": [
- "AKS",
+ "Cost",
"WAF"
],
"severity": "Medium",
- "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
- "waf": "Cost"
+ "text": "Understand difference in cost of base models and fine tuned models and token step sizes",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
+ "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching",
+ "service": "Azure OpenAI",
"services": [
+ "Cost",
"WAF"
],
- "severity": "Medium",
- "text": "Move recovery points to vault-archive where applicable (Validate)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
+ "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.Databricks/workspaces",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
+ "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs",
+ "service": "Azure OpenAI",
"services": [
- "LoadBalancer",
- "WAF",
- "VM"
+ "Monitor",
+ "Cost",
+ "WAF"
],
"severity": "Medium",
- "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
- "waf": "Cost"
+ "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.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
+ "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": [
"WAF"
],
"severity": "Medium",
- "text": "Functions - Reuse connections",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Cost"
+ "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.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
+ "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Functions - Cache data locally",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Cost"
+ "text": "Review the guidance provided on setting up AI search for Reliability",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
+ "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",
"WAF"
],
"severity": "Medium",
- "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Cost"
+ "text": "Plan and manage AI Search Vector storage",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
+ "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": [
"WAF"
],
"severity": "Medium",
- "text": "Functions - Keep your functions warm",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Cost"
+ "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
+ "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": [
"WAF"
],
- "severity": "Medium",
- "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Evaluate usage of billing models - PAYG vs PTU",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
+ "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": [
"WAF"
],
"severity": "Medium",
- "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
- "waf": "Cost"
+ "text": "Evaluate the quality of prompts and applications when switching between model versions",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
+ "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",
"WAF"
],
"severity": "Medium",
- "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Cost"
+ "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
+ "service": "Azure OpenAI",
"services": [
- "EventHubs",
- "WAF",
- "FrontDoor"
+ "WAF"
],
"severity": "Medium",
- "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
- "waf": "Cost"
+ "text": "Evaluate your Azure AI Search results based on different search parameters",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
+ "guid": "2744293b-b628-4537-a551-19b08e8f5854",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "FrontDoor",
- "AppSvc"
+ "WAF"
],
"severity": "Medium",
- "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
- "waf": "Cost"
+ "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.Storage/storageAccounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
+ "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": [
"WAF"
],
"severity": "Medium",
- "text": "Consider archiving tiers for less used data",
- "waf": "Cost"
+ "text": "Use prompt engineering techniques to improve the accuracy of LLM responses",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
+ "guid": "e737897e-71ca-47da-acfa-962a1594946d",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
- "waf": "Cost"
+ "text": "Red team your GenAI applications",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
+ "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e",
+ "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/",
+ "service": "Azure OpenAI",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Consider using standard SSD rather than Premium or Ultra where possible",
- "waf": "Cost"
+ "text": "Provide end users with scoring options for LLM responses and track these scores. ",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
+ "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": [
- "Storage",
"WAF"
],
- "severity": "Medium",
- "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Consider Quota management practices",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "WAF checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
+ "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410",
+ "link": "https://github.com/Azure/aoai-apim/blob/main/README.md",
+ "service": "Azure OpenAI",
"services": [
- "WAF",
- "ASR"
+ "Entra",
+ "APIM",
+ "LoadBalancer",
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
- "waf": "Cost"
+ "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
+ "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
+ "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
+ "service": "Purview",
"services": [
- "Storage",
"WAF"
],
"severity": "Medium",
- "text": "Storage accounts: check hot tier and/or GRS necessary",
- "waf": "Cost"
+ "text": "Leverage FTA Resillency Handbook",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
+ "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Plan for Data Center level outage",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
+ "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
+ "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "EventHubs",
- "WAF",
- "Monitor",
- "Cost"
+ "WAF"
],
"severity": "Medium",
- "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
- "waf": "Cost"
+ "text": "Practice Failover for BCDR",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
+ "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "Storage",
- "WAF",
- "Cost"
+ "Backup",
+ "WAF"
],
- "severity": "Medium",
- "text": "Export cost data to a storage account for additional data analysis.",
- "waf": "Cost"
+ "severity": "High",
+ "text": "Plan a backup strategy and take regular backups",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
+ "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
+ "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
+ "service": "Purview",
"services": [
- "SQL",
- "WAF",
- "Cost"
+ "EventHubs",
+ "WAF"
],
- "severity": "Medium",
- "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
- "waf": "Cost"
+ "severity": "Low",
+ "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
+ "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
+ "link": "https://learn.microsoft.com/purview/deployment-best-practices",
+ "service": "Purview",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
- "waf": "Cost"
+ "text": "Follow Purview accounts architectures and deployment best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
+ "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
+ "service": "Purview",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Create multiple Apache Spark pool definitions of various sizes.",
- "waf": "Cost"
+ "text": "Follow Collection Architectures and best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
+ "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
+ "service": "Purview",
"services": [
- "WAF",
- "Cost"
+ "WAF"
],
"severity": "Medium",
- "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "Follow Assest lifecycle best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
+ "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
+ "service": "Purview",
"services": [
- "WAF",
- "Cost",
- "VM"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "Follow automation best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
+ "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "WAF",
- "VM"
+ "Backup",
+ "WAF"
],
"severity": "Medium",
- "text": "Right-sizing all VMs",
- "waf": "Cost"
+ "text": "Follow Backup and Migration Best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
+ "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
+ "service": "Purview",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
"severity": "Medium",
- "text": "Swap VM sized with normalized and most recent sizes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "text": "Follow Purview Glossary Best Practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
+ "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
+ "link": "https://learn.microsoft.com/purview/concept-workflow",
+ "service": "Purview",
"services": [
- "WAF",
- "Monitor",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
+ "severity": "Low",
+ "text": "Leverage Workflows ",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
+ "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
+ "service": "Purview",
"services": [
- "WAF",
- "VM"
+ "WAF"
],
"severity": "Medium",
- "text": "Containerizing an application can improve VM density and save money on scaling it",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Cost"
+ "text": "Follow Purview Security Best Practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
+ "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
+ "service": "Purview",
"services": [
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Implement an error handling policy at the global level",
- "waf": "Operations"
+ "text": "Follow Purview Data Lineage Best Practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
+ "service": "Purview",
"services": [
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Ensure all APIs policies include a element.",
- "waf": "Operations"
+ "text": "Follow Best Practices for Scanning Registered Sources",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
+ "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
+ "service": "Purview",
"services": [
- "WAF",
- "ACR",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
- "waf": "Operations"
+ "text": "Follow Classification Best Practices in Governance Portal",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
+ "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
+ "service": "Purview",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
- "waf": "Operations"
+ "text": "Perform Sensitivity Labelling in the Purview Data Map",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
+ "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
+ "link": "https://learn.microsoft.com/purview/concept-data-share",
+ "service": "Purview",
"services": [
- "WAF",
- "Monitor"
+ "Storage",
+ "WAF"
],
- "severity": "High",
- "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Enable Application Insights for more detailed telemetry",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Leverage Data Estate Insights",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
+ "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
+ "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
+ "service": "Purview",
"services": [
- "WAF",
- "Monitor"
+ "WAF"
],
- "severity": "High",
- "text": "Configure alerts on the most critical metrics",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Use Data stewardship and Catalog adoption",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
+ "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
"services": [
- "WAF",
- "AKV"
+ "WAF"
],
- "severity": "High",
- "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Use Inventory and Ownership",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
+ "link": "https://learn.microsoft.com/purview/glossary-insights",
+ "service": "Purview",
"services": [
- "WAF",
- "Entra"
+ "WAF"
],
- "severity": "High",
- "text": "Protect incoming requests to APIs (data plane) with Azure AD",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
+ "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
+ "link": "https://learn.microsoft.com/purview/compliance-manager",
+ "service": "Purview",
"services": [
- "WAF",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
- "waf": "Security"
+ "text": "Generate assessment scores",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
+ "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
+ "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
+ "service": "Purview",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Create appropriate groups to control the visibility of the products",
- "waf": "Security"
+ "text": "Profiling- get summaries of data content",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
+ "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
+ "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
+ "service": "Purview",
"services": [
+ "AzurePolicy",
"WAF"
],
- "severity": "Medium",
- "text": "Use Backends feature to eliminate redundant API backend configurations",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Follow Microsoft Purview Data Owner access policies",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
+ "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
+ "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
+ "service": "Purview",
"services": [
- "WAF",
- "AzurePolicy"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Named Values to store common values that can be used in policies",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Follow Self-service access policies",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "Microsoft.Purview/accounts",
"checklist": "WAF checklist",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
+ "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
+ "link": "https://learn.microsoft.com/purview/concept-policies-devops",
+ "service": "Purview",
"services": [
- "WAF",
- "ACR"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
+ "severity": "Low",
+ "text": "Follow DevOps policies",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
"services": [
+ "AKS",
"WAF"
],
- "severity": "Medium",
- "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
+ "severity": "Low",
+ "text": "If required for AKS Windows workloads HostProcess containers can be used",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
"services": [
- "WAF",
- "Backup"
+ "WAF"
],
- "severity": "High",
- "text": "Ensure there is an automated backup routine",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Use KEDA if running event-driven workloads",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
"services": [
- "WAF",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Use Dapr to ease microservice development",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"services": [
- "EventHubs",
- "WAF",
- "AzurePolicy"
+ "AKS",
+ "WAF"
],
- "severity": "Low",
- "text": "If you need to log at high performance levels, consider Event Hubs policy",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Use the SLA-backed AKS offering",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"services": [
- "WAF",
- "AzurePolicy"
+ "Cost",
+ "WAF"
],
- "severity": "Medium",
- "text": "Apply throttling policies to control the number of requests per second",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Use Disruption Budgets in your pod and deployment definitions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"services": [
+ "ACR",
"WAF"
],
- "severity": "Medium",
- "text": "Configure autoscaling to scale out the number of instances when the load increases",
- "waf": "Performance"
+ "severity": "High",
+ "text": "If using a private registry, configure region replication to store images in multiple regions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
"services": [
+ "Cost",
"WAF"
],
- "severity": "Medium",
- "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Use an external application such as kubecost to allocate costs to different users",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Use the premium tier for production workloads.",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Use scale down mode to delete/deallocate nodes",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"services": [
- "WAF",
- "AzurePolicy"
+ "AKS",
+ "WAF"
],
"severity": "Medium",
- "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
- "waf": "Reliability"
+ "text": "When required use multi-instance partitioning GPU on AKS Clusters",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "WAF checklist",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "WAF checklist",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
"services": [
- "WAF",
- "APIM",
- "Entra"
+ "WAF"
],
- "severity": "High",
- "text": "Be aware of APIM's limits",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "If running a Dev/Test cluster use NodePool Start/Stop",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
"services": [
+ "AKS",
+ "AzurePolicy",
"WAF"
],
- "severity": "High",
- "text": "Ensure that the self-hosted gateway deployments are resilient.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"services": [
- "WAF",
- "APIM",
- "FrontDoor",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Front Door in front of APIM for multi-region deployment",
- "waf": "Performance"
+ "text": "Separate applications from the control plane with user/system node pools",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"services": [
- "WAF",
- "VNet"
+ "WAF"
],
- "severity": "Medium",
- "text": "Deploy the service within a Virtual Network (VNet)",
+ "severity": "Low",
+ "text": "Add taint to your system nodepool to make it dedicated",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"services": [
- "APIM",
- "VNet",
- "WAF",
- "Monitor",
- "Entra"
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
+ "text": "Use a private registry for your images, such as ACR",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"services": [
- "APIM",
- "PrivateLink",
- "VNet",
- "WAF",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
+ "text": "Scan your images for vulnerabilities",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"services": [
"WAF"
],
"severity": "High",
- "text": "Disable Public Network Access",
+ "text": "Define app separation requirements (namespace/nodepool/cluster)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"services": [
+ "AKV",
"WAF"
],
"severity": "Medium",
- "text": "Simplify management with PowerShell automation scripts",
- "waf": "Operations"
+ "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"services": [
- "WAF",
- "APIM",
- "Entra"
+ "WAF"
],
- "severity": "Medium",
- "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
- "waf": "Operations"
+ "severity": "High",
+ "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"services": [
- "WAF",
- "APIM",
- "Entra"
+ "WAF"
],
"severity": "Medium",
- "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
- "waf": "Operations"
+ "text": "If required add Key Management Service etcd encryption",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
"services": [
+ "AKS",
"WAF"
],
- "severity": "Medium",
- "text": "Implement DevOps and CI/CD in your workflow",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "If required consider using Confidential Compute for AKS",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"services": [
+ "Defender",
"WAF"
],
"severity": "Medium",
- "text": "Secure APIs using client certificate authentication",
+ "text": "Consider using Defender for Containers",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"services": [
+ "Entra",
"WAF"
],
- "severity": "Medium",
- "text": "Secure backend services using client certificate authentication",
+ "severity": "High",
+ "text": "Use managed identities instead of Service Principals",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"services": [
+ "Entra",
"WAF"
],
"severity": "Medium",
- "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
+ "text": "Integrate authentication with AAD (using the managed integration)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
+ "text": "Limit access to admin kubeconfig (get-credentials --admin)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"services": [
+ "Entra",
+ "RBAC",
"WAF"
],
- "severity": "High",
- "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
+ "severity": "Medium",
+ "text": "Integrate authorization with AAD RBAC",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"services": [
- "WAF",
- "AKV"
+ "RBAC",
+ "AKS",
+ "WAF"
],
"severity": "High",
- "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
+ "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
"services": [
- "WAF",
- "Entra"
+ "Entra",
+ "WAF"
],
"severity": "Medium",
- "text": "Use managed identities to authenticate to other Azure resources whenever possible",
+ "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
"services": [
- "WAF",
- "APIM",
- "AppGW",
- "Entra"
+ "AKS",
+ "WAF"
],
- "severity": "High",
- "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
+ "severity": "Medium",
+ "text": "For AKS non-interactive logins use kubelogin (preview)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
"services": [
- "Storage",
+ "AKS",
"WAF"
],
"severity": "Medium",
- "text": "Consider the 'Azure security baseline for storage'",
+ "text": "Disable AKS local accounts",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "PrivateLink"
+ "WAF"
],
- "severity": "High",
- "text": "Consider using private endpoints for Azure Storage",
+ "severity": "Low",
+ "text": "Configure if required Just-in-time cluster access",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "RBAC",
- "Subscriptions"
+ "Entra",
+ "AKS",
+ "WAF"
],
- "severity": "Medium",
- "text": "Ensure older storage accounts are not using 'classic deployment model'",
+ "severity": "Low",
+ "text": "Configure if required AAD conditional access for AKS",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "Defender"
+ "AKS",
+ "WAF"
],
- "severity": "High",
- "text": "Enable Microsoft Defender for all of your storage accounts",
+ "severity": "Low",
+ "text": "If required for Windows AKS workloads configure gMSA ",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"services": [
- "Storage",
+ "Entra",
"WAF"
],
"severity": "Medium",
- "text": "Enable 'soft delete' for blobs",
+ "text": "For finer control consider using a managed Kubelet Identity",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"services": [
- "Storage",
+ "ACR",
+ "AppGW",
"WAF"
],
"severity": "Medium",
- "text": "Disable 'soft delete' for blobs",
- "waf": "Security"
+ "text": "If using AGIC, do not share an AppGW across clusters",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
"services": [
+ "AKS",
"WAF"
],
"severity": "High",
- "text": "Enable 'soft delete' for containers",
- "waf": "Security"
+ "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"services": [
- "Storage",
"WAF"
],
"severity": "Medium",
- "text": "Disable 'soft delete' for containers",
- "waf": "Security"
+ "text": "For Windows workloads use Accelerated Networking",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"services": [
- "Storage",
+ "LoadBalancer",
"WAF"
],
"severity": "High",
- "text": "Enable resource locks on storage accounts",
- "waf": "Security"
+ "text": "Use the standard ALB (as opposed to the basic one)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "Subscriptions",
- "AzurePolicy"
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Consider immutable blobs",
+ "severity": "Medium",
+ "text": "If using Azure CNI, consider using different Subnets for NodePools",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"services": [
- "Storage",
+ "PrivateLink",
+ "VNet",
"WAF"
],
- "severity": "High",
- "text": "Require HTTPS, i.e. disable port 80 on the storage account",
+ "severity": "Medium",
+ "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"services": [
- "Storage",
"WAF"
],
"severity": "High",
- "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
- "waf": "Security"
+ "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"services": [
- "Storage",
+ "VNet",
"WAF"
],
- "severity": "Medium",
- "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
- "waf": "Security"
+ "severity": "High",
+ "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "AAD tokens should be favored over shared access signatures, wherever possible",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "Entra"
+ "WAF"
],
"severity": "High",
- "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
- "waf": "Security"
+ "text": "If using Azure CNI, check the maximum pods/node (default 30)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
+ "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
"services": [
- "WAF",
- "RBAC"
+ "VNet",
+ "AKS",
+ "WAF"
],
- "severity": "Medium",
- "text": "Least privilege in IaM permissions",
+ "severity": "Low",
+ "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "Entra"
+ "WAF"
],
"severity": "High",
- "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
- "waf": "Security"
+ "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
"services": [
- "AKV",
- "Storage",
- "WAF",
- "Monitor",
- "Entra"
+ "WAF"
],
- "severity": "High",
- "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
+ "severity": "Low",
+ "text": "If required add your own CNI plugin",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
"services": [
- "AKV",
- "Storage",
- "AzurePolicy",
- "WAF",
- "Monitor"
+ "AKS",
+ "WAF"
],
- "severity": "High",
- "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
- "waf": "Security"
+ "severity": "Low",
+ "text": "If required configure Public IP per node in AKS",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "AKV",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "When using storage account keys, consider enabling a 'key expiration policy'",
- "waf": "Security"
+ "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
"services": [
- "WAF",
- "AzurePolicy"
+ "WAF"
],
- "severity": "Medium",
- "text": "Consider configuring an SAS expiration policy",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "AKV",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider linking SAS to a stored access policy",
- "waf": "Security"
+ "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "AKV"
+ "NVA",
+ "WAF"
],
- "severity": "Medium",
- "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
+ "severity": "High",
+ "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "Entra"
+ "WAF"
],
- "severity": "High",
- "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
+ "severity": "Medium",
+ "text": "If using a public API endpoint, restrict the IP addresses that can access it",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "WAF"
],
"severity": "High",
- "text": "Strive for short validity periods for ad-hoc SAS",
+ "text": "Use private clusters if your requirements mandate it",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"services": [
+ "AKS",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Apply a narrow scope to a SAS",
+ "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"services": [
+ "AKS",
+ "AzurePolicy",
"WAF"
],
- "severity": "Medium",
- "text": "Consider scoping SAS to a specific client IP address, wherever possible",
+ "severity": "High",
+ "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"services": [
- "Storage",
+ "AKS",
+ "AzurePolicy",
"WAF"
],
- "severity": "Low",
- "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
+ "severity": "High",
+ "text": "Use Kubernetes network policies to increase intra-cluster security",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "RBAC",
- "Entra"
+ "WAF"
],
"severity": "High",
- "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
+ "text": "Use a WAF for web workloads (UIs or APIs)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
"services": [
+ "AKS",
+ "VNet",
+ "DDoS",
"WAF"
],
"severity": "Medium",
- "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
+ "text": "Use DDoS Standard in the AKS Virtual Network",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
"services": [
- "Storage",
- "WAF",
- "AzurePolicy"
+ "WAF"
],
- "severity": "High",
- "text": "Avoid overly broad CORS policies",
+ "severity": "Low",
+ "text": "If required add company HTTP Proxy",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"services": [
- "Storage",
"WAF"
],
- "severity": "High",
- "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
+ "severity": "Medium",
+ "text": "Consider using a service mesh for advanced microservice communication management",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
"services": [
+ "Monitor",
"WAF"
],
- "severity": "Medium",
- "text": "Determine which/if platform encryption should be used.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
"services": [
+ "Entra",
"WAF"
],
- "severity": "Medium",
- "text": "Determine which/if client-side encryption should be used.",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Check regularly Azure Advisor for recommendations on your cluster",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
"services": [
- "Storage",
+ "AKS",
"WAF"
],
- "severity": "High",
- "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Enable AKS auto-certificate rotation",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
- "service": "Azure Storage",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
"services": [
- "Storage",
+ "AKS",
"WAF"
],
"severity": "High",
- "text": "Leverage a storagev2 account type for better performance and reliability",
- "waf": "Reliability"
+ "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
"services": [
- "Storage",
"WAF"
],
"severity": "High",
- "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
- "waf": "Reliability"
+ "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
- "service": "Azure Storage",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "For write operation after failover, use customer-Managed Failover ",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
- "service": "Azure Storage",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Understand Microsoft-Managed Failover details",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
- "service": "Azure Storage",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
"services": [
+ "AKS",
"WAF"
],
- "severity": "Medium",
- "text": "Enable Soft Delete",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Consider using AKS command invoke on private clusters",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
"service": "AKS",
"services": [
- "AKS",
"WAF"
],
"severity": "Low",
- "text": "If required for AKS Windows workloads HostProcess containers can be used",
- "waf": "Reliability"
+ "text": "For planned events consider using Node Auto Drain",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
"service": "AKS",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Use KEDA if running event-driven workloads",
- "waf": "Performance"
+ "severity": "High",
+ "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
"service": "AKS",
"services": [
"WAF"
],
"severity": "Low",
- "text": "Use Dapr to ease microservice development",
+ "text": "Use custom Node RG (aka 'Infra RG') name",
"waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
"service": "AKS",
"services": [
"AKS",
"WAF"
],
- "severity": "High",
- "text": "Use the SLA-backed AKS offering",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
"service": "AKS",
"services": [
- "WAF",
- "Cost"
+ "WAF"
],
"severity": "Low",
- "text": "Use Disruption Budgets in your pod and deployment definitions",
- "waf": "Reliability"
+ "text": "Taint Windows nodes",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
"services": [
- "WAF",
- "ACR"
+ "WAF"
],
- "severity": "High",
- "text": "If using a private registry, configure region replication to store images in multiple regions",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Keep windows containers patch level in sync with host patch level",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "description": "Via Diagnostic Settings at the cluster level",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
"service": "AKS",
"services": [
- "WAF",
- "Cost"
+ "Monitor",
+ "WAF"
],
"severity": "Low",
- "text": "Use an external application such as kubecost to allocate costs to different users",
- "waf": "Cost"
+ "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
"service": "AKS",
"services": [
"WAF"
],
"severity": "Low",
- "text": "Use scale down mode to delete/deallocate nodes",
+ "text": "If required use nodePool snapshots",
"waf": "Cost"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
"service": "AKS",
"services": [
- "AKS",
"WAF"
],
- "severity": "Medium",
- "text": "When required use multi-instance partitioning GPU on AKS Clusters",
- "waf": "Cost"
+ "severity": "Low",
+ "text": "Consider spot node pools for non time-sensitive workloads",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
"service": "AKS",
"services": [
+ "AKS",
"WAF"
],
"severity": "Low",
- "text": "If running a Dev/Test cluster use NodePool Start/Stop",
- "waf": "Cost"
+ "text": "Consider AKS virtual node for quick bursting",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
"service": "AKS",
"services": [
- "AKS",
- "WAF",
- "AzurePolicy"
+ "Monitor",
+ "WAF"
],
- "severity": "Medium",
- "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
- "waf": "Security"
+ "severity": "High",
+ "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
"service": "AKS",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Separate applications from the control plane with user/system node pools",
- "waf": "Security"
+ "severity": "High",
+ "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
"service": "AKS",
"services": [
+ "Monitor",
"WAF"
],
- "severity": "Low",
- "text": "Add taint to your system nodepool to make it dedicated",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Monitor CPU and memory utilization of the nodes",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
"service": "AKS",
"services": [
- "WAF",
- "ACR"
+ "Monitor",
+ "WAF"
],
"severity": "Medium",
- "text": "Use a private registry for your images, such as ACR",
- "waf": "Security"
+ "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
"services": [
+ "Storage",
+ "Monitor",
+ "EventHubs",
+ "ServiceBus",
"WAF"
],
"severity": "Medium",
- "text": "Scan your images for vulnerabilities",
- "waf": "Security"
+ "text": "Monitor OS disk queue depth in nodes",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
"service": "AKS",
"services": [
+ "LoadBalancer",
+ "Monitor",
+ "NVA",
"WAF"
],
- "severity": "High",
- "text": "Define app separation requirements (namespace/nodepool/cluster)",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
"service": "AKS",
"services": [
- "WAF",
- "AKV"
+ "AKS",
+ "WAF"
],
"severity": "Medium",
- "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
- "waf": "Security"
+ "text": "Subscribe to resource health notifications for your AKS cluster",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
"service": "AKS",
"services": [
"WAF"
],
"severity": "High",
- "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
- "waf": "Security"
+ "text": "Configure requests and limits in your pod specs",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
"service": "AKS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "If required add Key Management Service etcd encryption",
- "waf": "Security"
+ "text": "Enforce resource quotas for namespaces",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
"service": "AKS",
"services": [
- "AKS",
+ "Subscriptions",
"WAF"
],
- "severity": "Low",
- "text": "If required consider using Confidential Compute for AKS",
- "waf": "Security"
+ "severity": "High",
+ "text": "Ensure your subscription has enough quota to scale out your nodepools",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
+ "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
"service": "AKS",
"services": [
- "WAF",
- "Defender"
+ "WAF"
],
- "severity": "Medium",
- "text": "Consider using Defender for Containers",
- "waf": "Security"
+ "severity": "High",
+ "text": "Configure Liveness and Readiness probes for all deployments",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
"service": "AKS",
"services": [
- "WAF",
- "Entra"
+ "WAF"
],
- "severity": "High",
- "text": "Use managed identities instead of Service Principals",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Use the Cluster Autoscaler",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
"service": "AKS",
"services": [
- "WAF",
- "Entra"
+ "AKS",
+ "WAF"
],
- "severity": "Medium",
- "text": "Integrate authentication with AAD (using the managed integration)",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Customize node configuration for AKS node pools",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
"service": "AKS",
"services": [
"WAF"
],
"severity": "Medium",
- "text": "Limit access to admin kubeconfig (get-credentials --admin)",
- "waf": "Security"
+ "text": "Use the Horizontal Pod Autoscaler when required",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
"service": "AKS",
"services": [
- "WAF",
- "RBAC",
- "Entra"
+ "WAF"
],
- "severity": "Medium",
- "text": "Integrate authorization with AAD RBAC",
- "waf": "Security"
+ "severity": "High",
+ "text": "Consider an appropriate node size, not too large or too small",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
"service": "AKS",
"services": [
"AKS",
- "WAF",
- "RBAC"
+ "WAF"
],
- "severity": "High",
- "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
- "waf": "Security"
+ "severity": "Low",
+ "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
"service": "AKS",
"services": [
- "WAF",
- "Entra"
+ "AKS",
+ "WAF"
],
- "severity": "Medium",
- "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Consider subscribing to EventGrid Events for AKS automation",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
"service": "AKS",
"services": [
"AKS",
"WAF"
],
- "severity": "Medium",
- "text": "For AKS non-interactive logins use kubelogin (preview)",
- "waf": "Security"
+ "severity": "Low",
+ "text": "For long running operation on an AKS cluster consider event termination",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
"service": "AKS",
"services": [
"AKS",
"WAF"
],
- "severity": "Medium",
- "text": "Disable AKS local accounts",
- "waf": "Security"
+ "severity": "Low",
+ "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
"service": "AKS",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "Configure if required Just-in-time cluster access",
- "waf": "Security"
+ "severity": "High",
+ "text": "Use ephemeral OS disks",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
"service": "AKS",
"services": [
"AKS",
- "WAF",
- "Entra"
+ "WAF"
],
- "severity": "Low",
- "text": "Configure if required AAD conditional access for AKS",
- "waf": "Security"
+ "severity": "High",
+ "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
"service": "AKS",
"services": [
+ "Storage",
"AKS",
"WAF"
],
"severity": "Low",
- "text": "If required for Windows AKS workloads configure gMSA ",
- "waf": "Security"
+ "text": "For hyper performance storage option use Ultra Disks on AKS",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
"service": "AKS",
"services": [
- "WAF",
- "Entra"
+ "Storage",
+ "SQL",
+ "WAF"
],
"severity": "Medium",
- "text": "For finer control consider using a managed Kubelet Identity",
- "waf": "Security"
+ "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
"service": "AKS",
"services": [
- "WAF",
- "AppGW",
- "ACR"
+ "Storage",
+ "WAF"
],
"severity": "Medium",
- "text": "If using AGIC, do not share an AppGW across clusters",
- "waf": "Reliability"
+ "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
"service": "AKS",
"services": [
- "AKS",
+ "Storage",
+ "WAF"
+ ],
+ "severity": "Medium",
+ "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
+ "waf": "Performance"
+ },
+ {
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "WAF checklist",
+ "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "services": [
+ "AKV",
+ "Backup",
"WAF"
],
"severity": "High",
- "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
+ "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Key Vault",
"services": [
+ "AKV",
+ "ACR",
"WAF"
],
"severity": "Medium",
- "text": "For Windows workloads use Accelerated Networking",
- "waf": "Performance"
+ "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
+ "service": "Key Vault",
"services": [
- "LoadBalancer",
+ "AKV",
"WAF"
],
- "severity": "High",
- "text": "Use the standard ALB (as opposed to the basic one)",
+ "severity": "Medium",
+ "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
+ "service": "Key Vault",
"services": [
- "WAF",
- "VNet"
+ "AKV",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "If using Azure CNI, consider using different Subnets for NodePools",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
+ "service": "Key Vault",
"services": [
- "WAF",
- "VNet",
- "PrivateLink"
+ "AKV",
+ "Storage",
+ "Backup",
+ "Subscriptions",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"services": [
+ "AKV",
"WAF"
],
"severity": "High",
- "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
+ "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"services": [
- "WAF",
- "VNet"
+ "AKV",
+ "WAF"
],
- "severity": "High",
- "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
"services": [
+ "AKV",
+ "Backup",
"WAF"
],
- "severity": "High",
- "text": "If using Azure CNI, check the maximum pods/node (default 30)",
- "waf": "Performance"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
+ "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
"services": [
- "AKS",
- "WAF",
- "VNet"
+ "AKV",
+ "Backup",
+ "WAF"
],
"severity": "Low",
- "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
- "waf": "Security"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "WAF checklist",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
+ "service": "Key Vault",
"services": [
+ "AKV",
+ "EventHubs",
"WAF"
],
- "severity": "High",
- "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
+ "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "If required add your own CNI plugin",
+ "severity": "Medium",
+ "text": "Consider the 'Azure security baseline for storage'",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
+ "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "PrivateLink",
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "If required configure Public IP per node in AKS",
- "waf": "Performance"
+ "severity": "High",
+ "text": "Consider using private endpoints for Azure Storage",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
+ "services": [
+ "RBAC",
+ "Storage",
+ "Subscriptions",
+ "WAF"
+ ],
+ "severity": "Medium",
+ "text": "Ensure older storage accounts are not using 'classic deployment model'",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "WAF checklist",
+ "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"services": [
+ "Storage",
+ "Defender",
"WAF"
],
- "severity": "Medium",
- "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Enable Microsoft Defender for all of your storage accounts",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
+ "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Enable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
"severity": "Medium",
- "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
- "waf": "Reliability"
+ "text": "Disable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
+ "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "NVA"
+ "WAF"
],
"severity": "High",
- "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
+ "text": "Enable 'soft delete' for containers",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
"severity": "Medium",
- "text": "If using a public API endpoint, restrict the IP addresses that can access it",
+ "text": "Disable 'soft delete' for containers",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
"severity": "High",
- "text": "Use private clusters if your requirements mandate it",
+ "text": "Enable resource locks on storage accounts",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
"services": [
- "AKS",
- "WAF",
- "AzurePolicy"
+ "Storage",
+ "Subscriptions",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
+ "severity": "High",
+ "text": "Consider immutable blobs",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"services": [
- "AKS",
- "WAF",
- "AzurePolicy"
+ "Storage",
+ "WAF"
],
"severity": "High",
- "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
+ "text": "Require HTTPS, i.e. disable port 80 on the storage account",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
"services": [
- "AKS",
- "WAF",
- "AzurePolicy"
+ "Storage",
+ "WAF"
],
"severity": "High",
- "text": "Use Kubernetes network policies to increase intra-cluster security",
+ "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"services": [
+ "Storage",
+ "WAF"
+ ],
+ "severity": "Medium",
+ "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "WAF checklist",
+ "description": "AAD tokens should be favored over shared access signatures, wherever possible",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
+ "services": [
+ "Entra",
+ "Storage",
"WAF"
],
"severity": "High",
- "text": "Use a WAF for web workloads (UIs or APIs)",
+ "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"services": [
- "AKS",
- "WAF",
- "VNet",
- "DDoS"
+ "RBAC",
+ "WAF"
],
"severity": "Medium",
- "text": "Use DDoS Standard in the AKS Virtual Network",
+ "text": "Least privilege in IaM permissions",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
+ "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"WAF"
],
- "severity": "Low",
- "text": "If required add company HTTP Proxy",
+ "severity": "High",
+ "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"services": [
+ "Entra",
+ "AKV",
+ "Storage",
+ "Monitor",
"WAF"
],
- "severity": "Medium",
- "text": "Consider using a service mesh for advanced microservice communication management",
+ "severity": "High",
+ "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
"waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Monitor"
+ "AKV",
+ "Storage",
+ "AzurePolicy",
+ "Monitor",
+ "WAF"
],
"severity": "High",
- "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
- "waf": "Operations"
+ "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
+ "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Entra"
+ "AKV",
+ "Storage",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Low",
- "text": "Check regularly Azure Advisor for recommendations on your cluster",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "When using storage account keys, consider enabling a 'key expiration policy'",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
+ "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "AzurePolicy",
"WAF"
],
- "severity": "Low",
- "text": "Enable AKS auto-certificate rotation",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Consider configuring an SAS expiration policy",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
+ "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "AKV",
+ "Storage",
+ "AzurePolicy",
"WAF"
],
- "severity": "High",
- "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Consider linking SAS to a stored access policy",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"services": [
+ "AKV",
+ "Storage",
"WAF"
],
- "severity": "High",
- "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
+ "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"services": [
+ "Entra",
+ "Storage",
"WAF"
],
"severity": "High",
- "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
- "waf": "Operations"
+ "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
+ "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"services": [
+ "Storage",
+ "AzurePolicy",
"WAF"
],
- "severity": "Low",
- "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Strive for short validity periods for ad-hoc SAS",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
+ "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"services": [
- "AKS",
"WAF"
],
- "severity": "Low",
- "text": "Consider using AKS command invoke on private clusters",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Apply a narrow scope to a SAS",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
+ "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "For planned events consider using Node Auto Drain",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Consider scoping SAS to a specific client IP address, wherever possible",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
+ "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
- "severity": "High",
- "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"services": [
+ "Entra",
+ "RBAC",
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Use custom Node RG (aka 'Infra RG') name",
- "waf": "Operations"
+ "severity": "High",
+ "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"services": [
- "AKS",
"WAF"
],
"severity": "Medium",
- "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
- "waf": "Operations"
+ "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
+ "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
"services": [
+ "Storage",
+ "AzurePolicy",
"WAF"
],
- "severity": "Low",
- "text": "Taint Windows nodes",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Avoid overly broad CORS policies",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
+ "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Keep windows containers patch level in sync with host patch level",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "description": "Via Diagnostic Settings at the cluster level",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Monitor"
+ "WAF"
],
- "severity": "Low",
- "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Determine which/if platform encryption should be used.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "If required use nodePool snapshots",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Determine which/if client-side encryption should be used.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
+ "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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": [
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Consider spot node pools for non time-sensitive workloads",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Consider AKS virtual node for quick bursting",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Leverage a storagev2 account type for better performance and reliability",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Monitor"
+ "Storage",
+ "WAF"
],
"severity": "High",
- "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
- "waf": "Operations"
+ "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
+ "service": "Azure Storage",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "For write operation after failover, use customer-Managed Failover ",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Monitor"
+ "WAF"
],
"severity": "Medium",
- "text": "Monitor CPU and memory utilization of the nodes",
- "waf": "Operations"
+ "text": "Understand Microsoft-Managed Failover details",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
+ "service": "Azure Storage",
"services": [
- "WAF",
- "Monitor"
+ "WAF"
],
"severity": "Medium",
- "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
- "waf": "Operations"
+ "text": "Enable Soft Delete",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachineScaleSets",
"checklist": "WAF checklist",
- "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
+ "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
+ "service": "VMSS",
"services": [
- "EventHubs",
- "Storage",
- "ServiceBus",
- "WAF",
- "Monitor"
+ "VM",
+ "WAF"
],
- "severity": "Medium",
- "text": "Monitor OS disk queue depth in nodes",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
+ "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
+ "service": "VM",
"services": [
- "LoadBalancer",
- "WAF",
- "Monitor",
- "NVA"
+ "Backup",
+ "VM",
+ "WAF"
],
- "severity": "Medium",
- "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
+ "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "VM",
"services": [
- "AKS",
+ "VM",
"WAF"
],
- "severity": "Medium",
- "text": "Subscribe to resource health notifications for your AKS cluster",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Use Premium or Ultra disks for production VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
+ "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
+ "service": "VM",
"services": [
+ "VM",
"WAF"
],
"severity": "High",
- "text": "Configure requests and limits in your pod specs",
- "waf": "Operations"
+ "text": "Ensure Managed Disks are used for all VMs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
+ "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
+ "service": "VM",
"services": [
+ "SQL",
+ "Storage",
+ "VM",
"WAF"
],
"severity": "Medium",
- "text": "Enforce resource quotas for namespaces",
- "waf": "Operations"
+ "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
+ "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
+ "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "VM",
"services": [
- "WAF",
- "Subscriptions"
+ "ACR",
+ "Storage",
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure your subscription has enough quota to scale out your nodepools",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
- "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
- "service": "AKS",
+ "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
+ "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "VM",
"services": [
+ "VM",
"WAF"
],
- "severity": "High",
- "text": "Configure Liveness and Readiness probes for all deployments",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
+ "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "VM",
"services": [
+ "VM",
+ "ASR",
"WAF"
],
- "severity": "Medium",
- "text": "Use the Cluster Autoscaler",
- "waf": "Performance"
+ "severity": "High",
+ "text": "Avoid running a production workload on a single VM",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
+ "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
+ "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
"services": [
- "AKS",
+ "AVS",
+ "VM",
+ "ASR",
"WAF"
],
- "severity": "Low",
- "text": "Customize node configuration for AKS node pools",
- "waf": "Performance"
+ "severity": "High",
+ "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
+ "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
+ "service": "VM",
"services": [
"WAF"
],
- "severity": "Medium",
- "text": "Use the Horizontal Pod Autoscaler when required",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
+ "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
+ "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
+ "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
+ "service": "VM",
"services": [
+ "VM",
+ "ASR",
"WAF"
],
- "severity": "High",
- "text": "Consider an appropriate node size, not too large or too small",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Increase quotas in DR region before testing failover with ASR",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
+ "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
+ "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
+ "service": "VM",
"services": [
- "AKS",
+ "VM",
"WAF"
],
"severity": "Low",
- "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
- "waf": "Performance"
+ "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
+ "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
+ "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "Storage",
"WAF"
],
- "severity": "Low",
- "text": "Consider subscribing to EventGrid Events for AKS automation",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
+ "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
+ "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "Storage",
"WAF"
],
"severity": "Low",
- "text": "For long running operation on an AKS cluster consider event termination",
- "waf": "Performance"
+ "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
+ "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"services": [
- "AKS",
+ "Storage",
"WAF"
],
"severity": "Low",
- "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
- "waf": "Performance"
+ "text": "Enable soft delete for Storage Account Containers",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"services": [
+ "Storage",
"WAF"
],
- "severity": "High",
- "text": "Use ephemeral OS disks",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Enable soft delete for blobs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
+ "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
+ "service": "Azure Backup",
"services": [
- "AKS",
+ "Backup",
"WAF"
],
- "severity": "High",
- "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
+ "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
+ "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
+ "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
+ "service": "Azure Backup",
"services": [
- "AKS",
- "WAF",
- "Storage"
+ "Backup",
+ "WAF"
],
"severity": "Low",
- "text": "For hyper performance storage option use Ultra Disks on AKS",
- "waf": "Performance"
+ "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
+ "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
+ "service": "Azure Backup",
"services": [
- "SQL",
- "WAF",
- "Storage"
+ "Storage",
+ "Backup",
+ "WAF"
],
- "severity": "Medium",
- "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.Network/dnsZones",
"checklist": "WAF checklist",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
+ "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
+ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
+ "service": "DNS",
"services": [
- "Storage",
+ "DNS",
+ "ACR",
+ "ASR",
"WAF"
],
- "severity": "Medium",
- "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
- "waf": "Performance"
+ "severity": "Low",
+ "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
+ "arm-service": "Microsoft.PowerBI/gateways",
"checklist": "WAF checklist",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
+ "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
+ "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
+ "service": "Data Gateways",
"services": [
- "Storage",
+ "ACR",
"WAF"
],
"severity": "Medium",
- "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
- "waf": "Performance"
+ "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
+ "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
+ "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"services": [
+ "NVA",
"WAF"
],
- "severity": "Medium",
- "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
+ "severity": "High",
+ "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"services": [
- "WAF",
- "TrafficManager",
- "FrontDoor"
+ "AKV",
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
- "waf": "Reliability"
+ "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
"services": [
- "WAF",
- "ACR"
+ "AppGW",
+ "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.",
- "waf": "Reliability"
+ "text": "Ensure you are using Application Gateway v2 SKU",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "WAF checklist",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"services": [
+ "LoadBalancer",
"WAF"
],
"severity": "Medium",
- "text": "Use more than 1 app instance for your apps",
- "waf": "Reliability"
+ "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "WAF checklist",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
"services": [
- "WAF",
- "Monitor"
+ "LoadBalancer",
+ "WAF"
],
"severity": "Medium",
- "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
- "waf": "Reliability"
+ "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"services": [
+ "VNet",
+ "AppGW",
"WAF"
],
"severity": "Medium",
- "text": "Set up autoscaling in Spring Cloud Gateway",
- "waf": "Reliability"
+ "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
+ "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"services": [
+ "Entra",
+ "AppGW",
+ "NVA",
+ "Subscriptions",
+ "VNet",
"WAF"
],
- "severity": "Low",
- "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"services": [
+ "DDoS",
"WAF"
],
"severity": "Medium",
- "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
- "waf": "Reliability"
+ "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Select the right Function hosting plan based on your business & SLO requirements",
+ "severity": "Medium",
+ "text": "Configure autoscaling with a minimum amount of instances of two.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"services": [
+ "ACR",
+ "AppGW",
"WAF"
],
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
+ "severity": "Medium",
+ "text": "Deploy Application Gateway across Availability Zones",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
"services": [
+ "FrontDoor",
+ "AzurePolicy",
"WAF"
],
"severity": "Medium",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"services": [
- "WAF",
- "AppSvc"
+ "FrontDoor",
+ "AppGW",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
"checklist": "WAF checklist",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"services": [
- "WAF",
- "AppSvc"
+ "TrafficManager",
+ "WAF"
],
"severity": "High",
- "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
+ "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"services": [
- "Storage",
+ "Entra",
+ "AVD",
"WAF"
],
- "severity": "Medium",
- "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
- "waf": "Reliability"
+ "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)?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"services": [
+ "Entra",
"WAF"
],
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
- "waf": "Operations"
+ "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"services": [
+ "FrontDoor",
+ "AzurePolicy",
"WAF"
],
"severity": "High",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
"services": [
+ "TrafficManager",
+ "FrontDoor",
"WAF"
],
"severity": "High",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "Reliability"
+ "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
"services": [
+ "FrontDoor",
"WAF"
],
"severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
"services": [
- "WAF",
- "AppSvc"
+ "FrontDoor",
+ "WAF"
],
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Web/sites",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"services": [
+ "FrontDoor",
"WAF"
],
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
- "waf": "Operations"
+ "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.App/containerApps",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
- "service": "Container Apps",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
"services": [
+ "FrontDoor",
"WAF"
],
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.App/containerApps",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "WAF checklist",
- "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
- "service": "Container Apps",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"services": [
+ "LoadBalancer",
"WAF"
],
"severity": "High",
- "text": "Use more than one replica and enable Zone Redundancy.",
+ "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.App/containerApps",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
"services": [
+ "AKV",
+ "Cost",
+ "FrontDoor",
"WAF"
],
"severity": "High",
- "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
- "waf": "Reliability"
+ "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.App/containerApps",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"services": [
- "WAF",
- "TrafficManager",
- "FrontDoor"
+ "FrontDoor",
+ "WAF"
],
- "severity": "High",
- "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
+ "waf": "Operations"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
- "service": "SAP",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
"services": [
- "WAF",
- "SAP"
+ "FrontDoor",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
- "service": "SAP",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"services": [
- "WAF",
- "SAP"
+ "FrontDoor",
+ "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.",
- "training": "https://github.com/Azure/sap-automation",
- "waf": "Operations"
+ "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
- "service": "SAP",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
"services": [
- "WAF",
- "SAP"
+ "FrontDoor",
+ "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",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
- "service": "SAP",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
"services": [
- "WAF",
- "Backup"
+ "FrontDoor",
+ "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.",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "SAP",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
"services": [
- "ASR",
- "Storage",
- "SAP",
- "SQL",
- "WAF",
- "Backup"
+ "FrontDoor",
+ "AzurePolicy",
+ "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.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
"services": [
- "WAF",
- "SAP"
+ "FrontDoor",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "SAP",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
"services": [
- "WAF",
- "ASR",
- "ExpressRoute",
- "VPN"
+ "FrontDoor",
+ "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.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Reliability"
+ "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "SAP",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"services": [
- "WAF",
- "AKV",
- "ACR"
+ "FrontDoor",
+ "WAF"
],
- "severity": "Low",
- "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
- "service": "SAP",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
"services": [
- "WAF",
- "VNet",
- "ASR",
- "SAP"
+ "FrontDoor",
+ "WAF"
],
"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.",
- "waf": "Reliability"
+ "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
- "service": "SAP",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"services": [
- "Storage",
- "WAF",
- "SAP"
+ "FrontDoor",
+ "WAF"
],
- "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.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use a high threshold for Azure Front Door 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. ",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
- "service": "SAP",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"services": [
- "WAF",
- "VNet"
+ "FrontDoor",
+ "WAF"
],
- "severity": "High",
- "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
- "service": "SAP",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
"services": [
- "WAF",
- "ASR",
- "Entra",
- "VM"
+ "AppGW",
+ "WAF"
],
"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).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP"
+ "AppGW",
+ "AzurePolicy",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "Reliability"
+ "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
- "service": "SAP",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP"
+ "AppGW",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
+ "waf": "Security"
},
{
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "VM"
+ "AppGW",
+ "AzurePolicy",
+ "WAF"
],
"severity": "High",
- "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "Reliability"
+ "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
- "service": "SAP",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "SAP"
+ "AppGW",
+ "WAF"
],
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "Reliability"
+ "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.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
- "service": "SAP",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP"
+ "AppGW",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "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. ",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
- "service": "SAP",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
"services": [
- "LoadBalancer",
- "WAF",
- "SAP"
+ "WAF"
],
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
- "service": "SAP",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
"services": [
- "LoadBalancer",
+ "AppGW",
"WAF"
],
- "severity": "High",
- "text": "Make sure the Floating IP is enabled on the Load balancer",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "SAP",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
"services": [
+ "AppGW",
"WAF"
],
- "severity": "High",
- "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
- "service": "SAP",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "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",
- "Entra",
- "SAP",
- "VM"
+ "AppGW",
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
"services": [
- "WAF",
- "RBAC",
- "Entra",
- "VM"
+ "FrontDoor",
+ "WAF"
],
- "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",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
- "service": "SAP",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
"services": [
+ "Sentinel",
+ "AppGW",
"WAF"
],
"severity": "Medium",
- "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "Reliability"
+ "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"services": [
- "WAF",
- "VM"
+ "Sentinel",
+ "FrontDoor",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "AppGW",
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "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.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP",
- "ACR"
+ "AzurePolicy",
+ "WAF"
],
- "severity": "High",
- "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use WAF Policies instead of the legacy WAF configuration.",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "AppGW",
+ "VPN",
+ "ExpressRoute",
+ "VNet",
+ "WAF"
],
- "severity": "High",
- "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
- "service": "SAP",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"services": [
- "WAF",
- "Entra",
- "VM"
+ "FrontDoor",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "VM"
+ "WAF"
],
- "severity": "Medium",
- "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "You should encrypt traffic to the backend servers.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
- "service": "SAP",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
"services": [
- "WAF",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "You should use a Web Application Firewall.",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
"WAF"
],
- "severity": "High",
- "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Redirect HTTP to HTTPS",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
- "service": "SAP",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "SAP"
+ "WAF"
],
- "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.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
- "service": "SAP",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "ASR",
- "SAP"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "Reliability"
+ "text": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
"services": [
- "Storage",
- "WAF",
- "SAP"
+ "WAF"
],
- "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.",
- "waf": "Reliability"
+ "severity": "Low",
+ "text": "Create custom error pages to display a personalized user experience",
+ "waf": "Operations"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "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",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
"services": [
- "WAF",
- "Cost",
- "SAP"
+ "WAF"
],
"severity": "Medium",
- "text": "Automate SAP System Start-Stop to manage costs.",
- "waf": "Cost"
+ "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
- "SAP",
- "WAF",
- "Cost",
- "VM"
+ "FrontDoor",
+ "WAF"
],
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "waf": "Performance"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
"services": [
- "Storage",
- "SAP",
- "WAF",
- "Cost",
- "VM"
+ "WAF"
],
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Use transport layer load balancing",
+ "waf": "Performance"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
- "service": "SAP",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"services": [
- "WAF",
- "RBAC",
- "Subscriptions"
+ "WAF"
],
- "severity": "High",
- "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "severity": "Medium",
+ "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
"waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "Entra",
+ "WAF"
],
"severity": "Medium",
- "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
+ "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
"waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "WAF checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
- "services": [
- "WAF",
- "SAP",
- "Entra"
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
+ "services": [
+ "AppGW",
+ "WAF"
],
- "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.",
+ "severity": "Low",
+ "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
"waf": "Security"
},
{
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
"checklist": "WAF checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
+ "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
+ "service": "PostgreSQL",
"services": [
- "WAF",
- "SAP"
+ "WAF"
],
"severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "text": "Leverage Flexible Server",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
"checklist": "WAF checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
- "service": "SAP",
+ "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
+ "service": "PostgreSQL",
"services": [
- "WAF",
- "SAP"
+ "WAF"
],
- "severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Security"
+ "severity": "High",
+ "text": "Leverage Availability Zones where regionally applicable",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
"checklist": "WAF checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
+ "guid": "31b67c67-be59-4519-8083-845d587cb391",
+ "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
+ "service": "PostgreSQL",
"services": [
- "WAF",
- "SAP"
+ "WAF"
],
"severity": "Medium",
- "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "text": "Leverage cross-region read replicas for BCDR",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
- "service": "SAP",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP",
- "AKV"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Security"
+ "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
- "service": "SAP",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP",
- "AKV"
+ "WAF"
],
- "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.",
- "waf": "Security"
+ "severity": "High",
+ "text": "Use zone redundant pipelines in regions that support Availability Zones",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
- "service": "SAP",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP"
+ "Backup",
+ "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.",
- "waf": "Security"
+ "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
- "service": "SAP",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP"
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "Implement SSO to SAP HANA",
- "waf": "Security"
+ "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
- "service": "SAP",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "VNet",
+ "WAF"
],
"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.",
- "waf": "Security"
+ "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
+ "waf": "Reliability"
},
{
+ "arm-service": "Microsoft.DataFactory/datafactories",
"checklist": "WAF checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
- "service": "SAP",
+ "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
"services": [
- "WAF",
- "SAP"
+ "AKV",
+ "WAF"
],
- "severity": "Medium",
- "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
- "waf": "Security"
+ "severity": "Low",
+ "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "waf": "Reliability"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
- "service": "SAP",
+ "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
+ "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
+ "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
+ "service": "ACR",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "ACR",
+ "WAF"
],
- "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.",
+ "severity": "High",
+ "text": "Disable Azure Container Registry image export",
"waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
- "service": "SAP",
+ "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
+ "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
+ "service": "ACR",
"services": [
- "WAF",
- "SAP"
+ "ACR",
+ "AzurePolicy",
+ "WAF"
],
- "severity": "Medium",
- "text": "Implement SSO to SAP BTP",
+ "severity": "High",
+ "text": "Enable Azure Policies for Azure Container Registry",
"waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
- "service": "SAP",
+ "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
+ "guid": "d345293c-7639-4637-a551-c5c04e401955",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
+ "service": "ACR",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "AKV",
+ "ACR",
+ "WAF"
],
- "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.",
+ "severity": "High",
+ "text": "Sign and Verify containers with notation (Notary v2)",
"waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
- "service": "SAP",
+ "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
+ "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
+ "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
+ "service": "ACR",
"services": [
- "WAF",
- "Subscriptions",
- "SAP",
- "AzurePolicy"
+ "ACR",
+ "AKV",
+ "WAF"
],
"severity": "Medium",
- "text": "enforce existing Management Group policies to SAP Subscriptions",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "Operations"
+ "text": "Encrypt registry with a customer managed key",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
+ "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"services": [
- "WAF",
- "Subscriptions",
- "SAP"
+ "Entra",
+ "RBAC",
+ "ACR",
+ "WAF"
],
"severity": "High",
- "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "Operations"
+ "text": "Use Managed Identities to connect instead of Service Principals",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
+ "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"services": [
- "WAF",
- "Subscriptions"
+ "RBAC",
+ "WAF"
],
"severity": "High",
- "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "Operations"
+ "text": "Disable local authentication for management plane access",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
- "service": "SAP",
+ "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
+ "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
+ "service": "ACR",
"services": [
- "WAF",
- "Subscriptions",
- "VM"
+ "Entra",
+ "RBAC",
+ "ACR",
+ "WAF"
],
"severity": "High",
- "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "Operations"
+ "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
+ "description": "Disable anonymous pull/push access",
+ "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
+ "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
+ "service": "ACR",
"services": [
"WAF"
],
- "severity": "Low",
- "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Disable Anonymous pull access",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
- "service": "SAP",
+ "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
+ "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
+ "service": "ACR",
"services": [
- "WAF",
- "Subscriptions",
- "VM"
+ "Entra",
+ "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.",
- "waf": "Operations"
+ "text": "Disable repository-scoped access tokens",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
+ "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
+ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
+ "service": "ACR",
"services": [
+ "PrivateLink",
+ "EventHubs",
+ "ACR",
"WAF"
],
"severity": "High",
- "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
- "waf": "Operations"
+ "text": "Deploy images from a trusted environment",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
- "service": "SAP",
+ "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
+ "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
+ "service": "ACR",
"services": [
- "WAF",
- "TrafficManager",
- "Cost"
+ "Entra",
+ "ACR",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "text": "Disable Azure ARM audience tokens for authentication",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
+ "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
+ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
+ "service": "ACR",
"services": [
- "WAF",
- "Backup"
+ "Entra",
+ "ACR",
+ "Monitor",
+ "WAF"
],
- "severity": "High",
- "text": "Help protect your HANA database by using the Azure Backup service.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Enable diagnostics logging",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
- "service": "SAP",
+ "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
+ "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "service": "ACR",
"services": [
- "Storage",
- "WAF",
- "Entra",
- "VM"
+ "PrivateLink",
+ "VNet",
+ "Firewall",
+ "WAF"
],
"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.",
- "waf": "Reliability"
+ "text": "Control inbound network access with Private Link",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "description": "Disable public network access if inbound network access is secured using Private Link",
+ "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
+ "service": "ACR",
"services": [
- "WAF",
- "SAP"
+ "PrivateLink",
+ "WAF"
],
- "severity": "High",
- "text": "Ensure time-zone matches between the operating system and the SAP system.",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Disable Public Network access",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
- "service": "SAP",
+ "description": "Only the ACR Premium SKU supports Private Link access",
+ "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
+ "service": "ACR",
"services": [
- "WAF",
- "Entra"
+ "PrivateLink",
+ "ACR",
+ "WAF"
],
"severity": "Medium",
- "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
- "service": "SAP",
+ "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
+ "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "service": "ACR",
"services": [
- "WAF",
- "Cost"
+ "ACR",
+ "Defender",
+ "WAF"
],
"severity": "Low",
- "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
- "waf": "Cost"
+ "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
- "service": "SAP",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
+ "service": "ACR",
"services": [
- "WAF",
- "SAP",
- "Entra"
+ "WAF"
],
"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.",
- "waf": "Operations"
+ "text": "Deploy validated container images",
+ "waf": "Security"
},
{
+ "arm-service": "microsoft.containerregistry/registries",
"checklist": "WAF checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
- "service": "SAP",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
+ "service": "ACR",
"services": [
- "WAF",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "Operations"
+ "severity": "High",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "waf": "Security"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "WAF checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
- "service": "SAP",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
"services": [
- "WAF",
- "SAP"
+ "Monitor",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
- "service": "SAP",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
"services": [
- "SQL",
- "WAF",
- "Monitor",
- "SAP"
+ "Backup",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Operations"
+ "text": "check backup instances with the underlying datasource not found",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
"services": [
- "SAP",
- "WAF",
- "Monitor",
- "Entra",
- "VM"
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "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",
- "AzurePolicy"
+ "Storage",
+ "Backup",
+ "ASR",
+ "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. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operations"
+ "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "WAF checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
"services": [
- "NetworkWatcher",
- "WAF",
"Monitor",
- "SAP"
+ "WAF"
],
"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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operations"
+ "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 ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "WAF checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "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",
- "SAP",
- "VM"
+ "Storage",
+ "AzurePolicy",
+ "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.",
- "waf": "Operations"
+ "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
"services": [
- "WAF",
- "Subscriptions",
- "SAP"
+ "Storage",
+ "Backup",
+ "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.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
"services": [
"Storage",
- "WAF",
- "ASR"
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
- "waf": "Reliability"
+ "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
"services": [
- "Sentinel",
- "WAF",
- "Monitor",
- "SAP"
+ "VM",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
- "waf": "Security"
+ "text": "Make sure advisor is configured for VM right sizing ",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
+ "description": "check by searching the Meter Category Licenses in the Cost analysys",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
"services": [
- "WAF",
- "Cost"
+ "VM",
+ "Cost",
+ "AzurePolicy",
+ "WAF"
],
"severity": "Medium",
- "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operations"
+ "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
"services": [
- "WAF",
- "Monitor",
- "VM"
+ "LoadBalancer",
+ "WAF"
],
- "severity": "Low",
- "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
"services": [
- "WAF",
- "Monitor",
- "ASR",
- "SAP"
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Reliability"
+ "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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": [
- "Storage",
- "WAF",
- "SAP"
+ "ARS",
+ "VM",
+ "Cost",
+ "WAF"
],
"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.",
- "waf": "Performance"
+ "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.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
"services": [
- "WAF",
- "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.",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Only larger disks can be reserved => 1 TiB -",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
"services": [
- "Storage",
- "WAF",
- "SAP"
+ "WAF"
],
"severity": "Medium",
- "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Performance"
+ "text": "After the right-sizing optimization",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Sql/servers",
"checklist": "WAF checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
"services": [
+ "AzurePolicy",
"SQL",
- "WAF",
- "SAP"
+ "Cost",
+ "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.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Performance"
+ "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",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
"services": [
- "WAF",
- "Monitor",
- "ASR",
- "SAP"
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
"services": [
- "WAF",
- "AppGW",
- "AzurePolicy"
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
- "waf": "Security"
+ "text": "Consider using a VMSS to match demand rather than flat sizing",
+ "waf": "Cost"
},
{
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "WAF checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
"services": [
- "WAF",
- "SAP",
- "DNS",
- "VM"
+ "AKS",
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
"services": [
- "WAF",
- "VNet",
- "SAP",
- "DNS"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "text": "Move recovery points to vault-archive where applicable (Validate)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Databricks/workspaces",
"checklist": "WAF checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
"services": [
- "WAF",
- "VNet",
- "SAP",
- "ACR"
+ "LoadBalancer",
+ "VM",
+ "WAF"
],
"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",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
- "waf": "Reliability"
+ "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "SAP",
- "NVA"
+ "WAF"
],
- "severity": "High",
- "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Functions - Reuse connections",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "SAP",
- "VWAN",
- "ACR"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "Operations"
+ "text": "Functions - Cache data locally",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "VNet",
- "NVA"
+ "Storage",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "Operations"
+ "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
"services": [
- "VWAN",
- "VNet",
- "SAP",
- "WAF",
- "NVA"
+ "WAF"
],
"severity": "Medium",
- "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operations"
+ "text": "Functions - Keep your functions warm",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "SAP",
- "VM"
+ "WAF"
],
- "severity": "High",
- "text": "Public IP assignment to VM running SAP Workload is not recommended.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
"services": [
- "WAF",
- "ASR"
+ "WAF"
],
- "severity": "High",
- "text": "Consider reserving IP address on DR side when configuring ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Web/sites",
"checklist": "WAF checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
"services": [
"WAF"
],
- "severity": "High",
- "text": "Avoid using overlapping IP address ranges for production and DR sites.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Cost"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
"services": [
- "Storage",
- "WAF",
- "VNet"
+ "EventHubs",
+ "FrontDoor",
+ "WAF"
],
"severity": "Medium",
- "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operations"
+ "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
+ "waf": "Cost"
},
{
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "WAF checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
"services": [
- "WAF",
- "Firewall"
+ "AppSvc",
+ "FrontDoor",
+ "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)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
"services": [
- "WAF",
- "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.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
- "waf": "Security"
+ "text": "Consider archiving tiers for less used data",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
"services": [
- "WAF",
- "FrontDoor",
- "ACR",
- "AzurePolicy"
+ "WAF"
],
"severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
- "waf": "Security"
+ "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
"services": [
- "WAF",
- "AppGW",
- "FrontDoor",
- "AzurePolicy"
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "Security"
+ "text": "Consider using standard SSD rather than Premium or Ultra where possible",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
"services": [
- "LoadBalancer",
- "WAF",
- "AppGW"
+ "Storage",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "Security"
+ "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "WAF checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
"services": [
- "WAF",
- "SAP",
- "VWAN",
- "ACR"
+ "ASR",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Performance"
+ "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "WAF checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
"services": [
- "ACR",
- "PrivateLink",
"Storage",
- "VNet",
- "WAF",
- "Backup"
+ "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.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
- "waf": "Security"
+ "text": "Storage accounts: check hot tier and/or GRS necessary",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
"services": [
- "WAF",
- "SAP",
- "VM"
+ "WAF"
],
- "severity": "High",
- "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
"services": [
- "LoadBalancer",
+ "EventHubs",
+ "Monitor",
+ "Cost",
"WAF"
],
"severity": "Medium",
- "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Security"
+ "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
"services": [
- "WAF",
- "VNet",
- "SAP",
- "VM"
+ "Storage",
+ "Cost",
+ "WAF"
],
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
- "waf": "Security"
+ "text": "Export cost data to a storage account for additional data analysis.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
"services": [
- "WAF",
- "VNet",
- "SAP"
+ "SQL",
+ "Cost",
+ "WAF"
],
- "severity": "High",
- "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
"services": [
- "WAF",
- "SAP"
+ "WAF"
],
"severity": "Medium",
- "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Performance"
+ "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
"services": [
- "WAF",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Create multiple Apache Spark pool definitions of various sizes.",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Synapse/workspaces",
"checklist": "WAF checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
"services": [
- "WAF",
- "VNet",
"Cost",
- "SAP"
+ "WAF"
],
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "severity": "Medium",
+ "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
"services": [
- "LoadBalancer",
+ "VM",
+ "Cost",
"WAF"
],
- "severity": "High",
- "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Performance"
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
"services": [
- "WAF",
- "VNet",
- "SAP"
+ "VM",
+ "WAF"
],
"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",
- "waf": "Security"
+ "text": "Right-sizing all VMs",
+ "waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
"services": [
- "WAF",
- "Backup",
- "SAP",
- "VM"
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Review SAP HANA database backups for Azure VMs.",
+ "severity": "Medium",
+ "text": "Swap VM sized with normalized and most recent sizes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
"services": [
- "WAF",
"Monitor",
- "ASR",
- "SAP"
+ "VM",
+ "WAF"
],
"severity": "Medium",
- "text": "Review Site Recovery built-in monitoring, where used for SAP.",
+ "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "WAF checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
"services": [
- "WAF",
- "Monitor",
- "SAP"
+ "VM",
+ "WAF"
],
- "severity": "High",
- "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Containerizing an application can improve VM density and save money on scaling it",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Cost"
},
{
- "checklist": "WAF checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
- "services": [
- "WAF",
- "Backup",
- "VM"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
+ "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Review Oracle Database in Azure Linux VM backup strategies.",
- "waf": "Operations"
+ "subcategory": "Best Practices",
+ "text": "Leverage FTA Resillency Handbook",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "SQL",
- "WAF",
- "Storage"
+ "ASR"
],
- "severity": "Medium",
- "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
- "waf": "Operations"
+ "severity": "High",
+ "subcategory": "Disaster Recovery",
+ "text": "Plan for Data Center level outage",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
+ "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "WAF",
- "Backup",
- "VM"
+ "ASR"
],
"severity": "Medium",
- "text": "Review the use of Automated Backup v2 for Azure VMs.",
- "waf": "Operations"
+ "subcategory": "Disaster Recovery",
+ "text": "Practice Failover for BCDR",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "WAF"
+ "Backup"
],
"severity": "High",
- "text": "Enabling Write accelerator for M series when using premium disks(V1)",
- "waf": "Operations"
+ "subcategory": "Backup and Restore ",
+ "text": "Plan a backup strategy and take regular backups",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
+ "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
+ "service": "Purview",
"services": [
- "WAF"
+ "EventHubs"
],
+ "severity": "Low",
+ "subcategory": "Purview Accounts Replications",
+ "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
+ "link": "https://learn.microsoft.com/purview/deployment-best-practices",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Test availability zone latency.",
- "waf": "Performance"
+ "subcategory": "Data catalog",
+ "text": "Follow Purview accounts architectures and deployment best practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
- "services": [
- "WAF",
- "SAP"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Activate SAP EarlyWatch Alert for all SAP components.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "Performance"
+ "subcategory": "Data catalog",
+ "text": "Follow Collection Architectures and best practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "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"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Performance"
+ "subcategory": "Data catalog",
+ "text": "Follow Assest lifecycle best practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
- "services": [
- "SQL",
- "WAF",
- "Monitor"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Review SQL Server performance monitoring using CCMS.",
- "waf": "Performance"
+ "subcategory": "Data catalog",
+ "text": "Follow automation best practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"services": [
- "WAF",
- "SAP",
- "VM"
+ "Backup"
],
"severity": "Medium",
- "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "Performance"
+ "subcategory": "Data catalog",
+ "text": "Follow Backup and Migration Best practices",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
+ "service": "Purview",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Data catalog",
+ "text": "Follow Purview Glossary Best Practices",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
+ "link": "https://learn.microsoft.com/purview/concept-workflow",
+ "service": "Purview",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Data catalog",
+ "text": "Leverage Workflows ",
+ "waf": "Reliability"
+ },
+ {
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
+ "service": "Purview",
+ "services": [],
+ "severity": "Medium",
+ "subcategory": "Data catalog",
+ "text": "Follow Purview Security Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
- "services": [
- "WAF",
- "Monitor",
- "SAP"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Review SAP HANA studio alerts.",
- "waf": "Performance"
+ "subcategory": "Data Map",
+ "text": "Follow Purview Data Lineage Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
- "services": [
- "WAF",
- "SAP"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
- "waf": "Performance"
+ "subcategory": "Data Map",
+ "text": "Follow Best Practices for Scanning Registered Sources",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
- "services": [
- "WAF",
- "VM"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
+ "service": "Purview",
+ "services": [],
"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.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "waf": "Security"
+ "subcategory": "Data Map",
+ "text": "Follow Classification Best Practices in Governance Portal",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
- "services": [
- "WAF",
- "SAP"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
+ "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
+ "service": "Purview",
+ "services": [],
"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.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "Security"
+ "subcategory": "Data Map",
+ "text": "Perform Sensitivity Labelling in the Purview Data Map",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
+ "link": "https://learn.microsoft.com/purview/concept-data-share",
+ "service": "Purview",
"services": [
- "SQL",
- "WAF",
- "SAP"
+ "Storage"
],
"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.",
- "waf": "Security"
+ "subcategory": "Data Sharing",
+ "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "services": [
- "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.",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Data Estate",
+ "text": "Leverage Data Estate Insights",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "services": [
- "Storage",
- "SAP",
- "SQL",
- "WAF",
- "Backup"
- ],
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
+ "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
+ "service": "Purview",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Data Estate",
+ "text": "Use Data stewardship and Catalog adoption",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
- "services": [
- "Storage",
- "WAF"
- ],
- "severity": "Medium",
- "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Data Estate",
+ "text": "Use Inventory and Ownership",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
- "services": [
- "WAF",
- "AKV"
- ],
- "severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
+ "link": "https://learn.microsoft.com/purview/glossary-insights",
+ "service": "Purview",
+ "services": [],
+ "severity": "Low",
+ "subcategory": "Data Estate",
+ "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
- "services": [
- "WAF",
- "RBAC",
- "Subscriptions",
- "AzurePolicy"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
+ "link": "https://learn.microsoft.com/purview/compliance-manager",
+ "service": "Purview",
+ "services": [],
"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).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
- "waf": "Security"
+ "subcategory": "Data Quality ",
+ "text": "Generate assessment scores",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
- "services": [
- "WAF",
- "AKV",
- "AzurePolicy"
- ],
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
+ "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
+ "service": "Purview",
+ "services": [],
"severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "subcategory": "Data Quality ",
+ "text": "Profiling- get summaries of data content",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
+ "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
+ "service": "Purview",
"services": [
- "WAF",
- "RBAC",
"AzurePolicy"
],
- "severity": "High",
- "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "Security"
- },
- {
- "checklist": "WAF checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "services": [
- "Storage",
- "WAF",
- "SAP",
- "Defender"
- ],
- "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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
- "waf": "Security"
- },
- {
- "checklist": "WAF checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "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"
- ],
- "severity": "High",
- "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Data Policy",
+ "text": "Follow Microsoft Purview Data Owner access policies",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
+ "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
+ "service": "Purview",
"services": [
- "WAF",
- "SAP"
+ "AzurePolicy"
],
"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",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
- "waf": "Security"
+ "subcategory": "Data Policy",
+ "text": "Follow Self-service access policies",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "category": "Operations management",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
+ "link": "https://learn.microsoft.com/purview/concept-policies-devops",
+ "service": "Purview",
"services": [
- "WAF",
- "AKV"
+ "AzurePolicy"
],
- "severity": "Medium",
- "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "severity": "Low",
+ "subcategory": "Data Policy",
+ "text": "Follow DevOps policies",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
- "services": [
- "WAF",
- "AKV"
- ],
+ "category": "BC and DR",
+ "checklist": "Device Update Review",
+ "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
+ "services": [],
"severity": "High",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
- "services": [
- "WAF",
- "SAP",
- "AKV"
- ],
+ "category": "BC and DR",
+ "checklist": "Device Update Review",
+ "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
+ "services": [],
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
- "services": [
- "WAF",
- "RBAC",
- "Subscriptions",
- "SAP"
- ],
+ "category": "BC and DR",
+ "checklist": "Device Update Review",
+ "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Device Update for IoT Hub",
+ "services": [],
"severity": "High",
- "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
+ "category": "BC and DR",
+ "checklist": "Device Update Review",
+ "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Device Update for IoT Hub",
"services": [
- "WAF",
- "SAP",
- "NVA",
- "PrivateLink"
+ "AppSvc"
],
"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",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
- "services": [
- "Storage",
- "WAF",
- "VM"
- ],
- "severity": "Low",
- "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
- "waf": "Security"
+ "category": "BC and DR",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "services": [
- "WAF",
- "Defender"
- ],
- "severity": "Low",
- "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
- "waf": "Security"
+ "category": "BC and DR",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
+ "services": [],
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
- "services": [
- "WAF",
- "VNet",
- "SAP"
- ],
+ "category": "BC and DR",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
+ "services": [],
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "Security"
+ "subcategory": "High Availability",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "category": "BC and DR",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"services": [
- "WAF",
- "SAP"
+ "AppSvc"
],
- "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.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
- "waf": "Security"
+ "severity": "High",
+ "subcategory": "High Availability",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "checklist": "WAF checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
- "services": [
- "WAF",
- "Monitor",
- "SAP",
- "AKV"
- ],
+ "category": "Application Deployment",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
+ "services": [],
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Security"
+ "subcategory": "CI/CD",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "waf": "Operations"
}
],
"metadata": {
"name": "Master checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/checklists/network_appdelivery_checklist.en.json b/checklists/network_appdelivery_checklist.en.json
index 865b67d2d..f89e9c89c 100644
--- a/checklists/network_appdelivery_checklist.en.json
+++ b/checklists/network_appdelivery_checklist.en.json
@@ -186,7 +186,7 @@
{
"category": "Network Topology and Connectivity",
"subcategory": "Front Door",
- "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
+ "text": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic.",
"waf": "Security",
"service": "Front Door",
"guid": "ae248989-b306-4591-9186-de482e3f0f0e",
@@ -330,7 +330,7 @@
{
"category": "Network Topology and Connectivity",
"subcategory": "Front Door",
- "text": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
+ "text": "Tune the Azure Front Door WAF for your workload by configuring the WAF in Detection mode to reduce and fix false positive detections.",
"waf": "Security",
"service": "Front Door",
"guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
@@ -433,7 +433,7 @@
{
"category": "Network Topology and Connectivity",
"subcategory": "App Gateway",
- "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
+ "text": "Enable the Azure Application Gateway WAF bot protection rule set. The bot rules detect good and bad bots.",
"waf": "Security",
"service": "App Gateway",
"guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
@@ -458,7 +458,7 @@
{
"category": "Network Topology and Connectivity",
"subcategory": "App Gateway",
- "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
+ "text": "Tune the Azure Application Gateway WAF in detection mode for your workload. Reduce false positive detections.",
"waf": "Security",
"service": "App Gateway",
"guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
@@ -670,7 +670,7 @@
{
"category": "Network Topology and Connectivity",
"subcategory": "App Gateway",
- "text": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
+ "text": "Enable connection draining during planned service updates to prevent connection loss to existing members of the backend pool",
"waf": "Security",
"service": "App Gateway",
"guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
@@ -823,6 +823,6 @@
"name": "Azure Application Delivery Networking",
"state": "GA",
"waf": "all",
- "timestamp": "March 15, 2024"
+ "timestamp": "August 08, 2024"
}
}
\ No newline at end of file
diff --git a/checklists/network_appdelivery_checklist.es.json b/checklists/network_appdelivery_checklist.es.json
index 6720132f4..fe1399650 100644
--- a/checklists/network_appdelivery_checklist.es.json
+++ b/checklists/network_appdelivery_checklist.es.json
@@ -1,12 +1,12 @@
{
"categories": [
{
- "name": "Topología y conectividad de red"
+ "name": "Topología de red y conectividad"
}
],
"items": [
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
"id": "A01.01",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
@@ -17,18 +17,18 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
"id": "A01.02",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
"severity": "Medio",
"subcategory": "Entrega de aplicaciones",
- "text": "Realice la entrega de aplicaciones dentro de las zonas de aterrizaje tanto para aplicaciones internas (corporativas) como externas (en línea).",
+ "text": "Realice la entrega de aplicaciones dentro de las zonas de aterrizaje para aplicaciones internas (corporativas) y externas (en línea).",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
"guid": "553585a6-abe0-11ed-afa1-0242ac120002",
"id": "A01.03",
@@ -41,7 +41,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
"guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
"id": "A01.04",
@@ -49,22 +49,22 @@
"service": "Load Balancer",
"severity": "Medio",
"subcategory": "Equilibrador de carga",
- "text": "Asegúrese de que usa la SKU estándar para Azure Load Balancers",
+ "text": "Asegúrese de que usa la SKU estándar para los equilibradores de carga de Azure",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "9432621a-8397-4654-a882-5bc856b7ef83",
"id": "A01.05",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
"service": "Load Balancer",
"severity": "Medio",
"subcategory": "Equilibrador de carga",
- "text": "Asegúrese de que las direcciones IP de front-end de Load Balancers tengan redundancia de zona (a menos que necesite front-end zonal).",
+ "text": "Asegúrese de que las direcciones IP de front-end de los equilibradores de carga sean con redundancia de zona (a menos que necesite front-end zonal).",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
"id": "A01.06",
@@ -77,32 +77,32 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
- "description": "La administración de proxies inversos en general y de WAF en particular está más cerca de la aplicación que de la red, por lo que pertenecen a la misma suscripción que la aplicación. La centralización de Application Gateway y WAF en la suscripción de conectividad puede ser correcta si la administra un solo equipo.",
+ "category": "Topología de red y conectividad",
+ "description": "La administración de proxies inversos en general y WAF en particular está más cerca de la aplicación que de la red, por lo que pertenecen a la misma suscripción que la aplicación. La centralización de Application Gateway y WAF en la suscripción de conectividad puede ser correcta si la administra un solo equipo.",
"guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
"id": "A01.07",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Implemente Azure Application Gateway v2 o aplicaciones virtuales de red de asociados que se usan para proxy de conexiones HTTP(S) entrantes dentro de la red virtual de la zona de aterrizaje y con las aplicaciones que están protegiendo.",
+ "text": "Implemente Azure Application Gateway v2 o NVA de asociados que se usan para proxy de conexiones HTTP(S) entrantes dentro de la red virtual de la zona de aterrizaje y con las aplicaciones que protegen.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
"id": "A01.08",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Use una red DDoS o planes de protección IP para todas las direcciones IP públicas en las zonas de aterrizaje de la aplicación.",
+ "text": "Utilice una red DDoS o planes de protección IP para todas las direcciones IP públicas en las zonas de aterrizaje de aplicaciones.",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
"guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
"id": "A01.09",
@@ -115,7 +115,7 @@
"waf": "Fiabilidad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
"guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
"id": "A01.10",
@@ -128,7 +128,7 @@
"waf": "Fiabilidad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
"id": "A01.11",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -140,7 +140,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "3f29812b-2363-4cef-b179-b599de0d5973",
"id": "A01.12",
"link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
@@ -153,7 +153,7 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
"id": "A01.13",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -165,7 +165,7 @@
"waf": "Fiabilidad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
"id": "A01.14",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
@@ -177,20 +177,20 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
"id": "A01.15",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "Medio",
"subcategory": "Entrega de aplicaciones",
- "text": "Para reducir el número de puertos de firewall abiertos para las conexiones entrantes en la red, considere la posibilidad de usar Microsoft Entra ID Application Proxy para proporcionar a los usuarios remotos acceso seguro y autenticado a las aplicaciones internas.",
+ "text": "Para reducir el número de puertos de firewall abiertos para las conexiones entrantes en la red, considere la posibilidad de usar el proxy de aplicación de identificador de Microsoft Entra para proporcionar a los usuarios remotos acceso seguro y autenticado a las aplicaciones internas.",
"training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "ae248989-b306-4591-9186-de482e3f0f0e",
"id": "A01.16",
@@ -198,12 +198,12 @@
"service": "Front Door",
"severity": "Alto",
"subcategory": "Puerta",
- "text": "Implemente la directiva de WAF para Front Door en modo de \"prevención\".",
+ "text": "Implemente la directiva de WAF para Front Door en modo de \"Prevención\" para que el firewall de aplicaciones web tome las medidas adecuadas para permitir o denegar el tráfico.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
"id": "A01.17",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
@@ -215,18 +215,18 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
"id": "A01.18",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
"service": "Front Door",
"severity": "Alto",
"subcategory": "Puerta",
- "text": "Use el mismo nombre de dominio en Azure Front Door y su origen. Los nombres de host no coincidentes pueden causar errores sutiles.",
+ "text": "Use el mismo nombre de dominio en Azure Front Door y en su origen. Los nombres de host no coincidentes pueden causar errores sutiles.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
"id": "A01.19",
@@ -234,11 +234,11 @@
"service": "Front Door",
"severity": "Bajo",
"subcategory": "Puerta",
- "text": "Deshabilite los sondeos de estado cuando solo haya un origen en un grupo de orígenes de Azure Front Door.",
+ "text": "Deshabilite los sondeos de estado cuando solo haya un origen en un grupo de origen de Azure Front Door.",
"waf": "Rendimiento"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
"id": "A01.20",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
@@ -249,7 +249,7 @@
"waf": "Fiabilidad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
"id": "A01.21",
@@ -262,7 +262,7 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
"guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
"id": "A01.22",
@@ -270,12 +270,12 @@
"service": "Load Balancer",
"severity": "Alto",
"subcategory": "Equilibrador de carga",
- "text": "Use Azure NAT Gateway en lugar de reglas de salida de Load Balancer para mejorar la escalabilidad de SNAT",
+ "text": "Use Azure NAT Gateway en lugar de las reglas de salida de Load Balancer para mejorar la escalabilidad de SNAT",
"waf": "Fiabilidad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
"id": "A01.23",
@@ -287,7 +287,7 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
"id": "A01.24",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
@@ -299,7 +299,7 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
"id": "A01.25",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
@@ -310,19 +310,19 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
"id": "A01.26",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
"service": "Front Door",
"severity": "Medio",
"subcategory": "Puerta",
- "text": "Use el redireccionamiento de HTTP a HTTPS con Azure Front Door. Apoye a los clientes más antiguos redirigiéndolos automáticamente a una solicitud HTTPS.",
+ "text": "Use el redireccionamiento de HTTP a HTTPS con Azure Front Door. Apoye a los clientes más antiguos redirigiéndolos a una solicitud HTTPS automáticamente.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
"id": "A01.27",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
@@ -334,19 +334,19 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
"id": "A01.28",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
"service": "Front Door",
"severity": "Alto",
"subcategory": "Puerta",
- "text": "Ajuste el WAF de Azure Front Door para su carga de trabajo. Reduzca las detecciones de falsos positivos.",
+ "text": "Ajuste el WAF de Azure Front Door para su carga de trabajo configurando el WAF en modo de detección para reducir y corregir las detecciones de falsos positivos.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
"id": "A01.29",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
@@ -358,52 +358,52 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
"id": "A01.30",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
"service": "Front Door",
"severity": "Alto",
"subcategory": "Puerta",
- "text": "Habilite los conjuntos de reglas predeterminados de WAF de Azure Front Door. Los conjuntos de reglas predeterminados detectan y bloquean los ataques comunes.",
+ "text": "Habilite los conjuntos de reglas predeterminadas de WAF de Azure Front Door. Los conjuntos de reglas predeterminados detectan y bloquean ataques comunes.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
"id": "A01.31",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
"service": "Front Door",
"severity": "Alto",
"subcategory": "Puerta",
- "text": "Habilite el conjunto de reglas de protección contra bots de Azure Front Door WAF. Las reglas de bots detectan bots buenos y malos.",
+ "text": "Habilite el conjunto de reglas de protección contra bots de WAF de Azure Front Door. Las reglas de bots detectan bots buenos y malos.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
"id": "A01.32",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
"service": "Front Door",
"severity": "Medio",
"subcategory": "Puerta",
- "text": "Use la versión más reciente del conjunto de reglas de WAF de Azure Front Door. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
+ "text": "Use la versión más reciente del conjunto de reglas de Azure Front Door WAF. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "b9620385-1cde-418f-914b-a84a06982ffc",
"id": "A01.33",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
"service": "Front Door",
"severity": "Medio",
"subcategory": "Puerta",
- "text": "Agregue limitación de velocidad al WAF de Azure Front Door. La limitación de velocidad bloquea a los clientes que envían accidental o intencionadamente grandes cantidades de tráfico en un corto período de tiempo.",
+ "text": "Agregue la limitación de velocidad al WAF de Azure Front Door. La limitación de velocidad bloquea a los clientes que envían accidental o intencionalmente grandes cantidades de tráfico en un corto período de tiempo.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
"id": "A01.34",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
@@ -414,7 +414,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
"id": "A01.35",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
@@ -425,7 +425,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "00acd8a9-6975-414f-8491-2be6309893b8",
"id": "A01.36",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
@@ -437,7 +437,7 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
"id": "A01.37",
@@ -445,12 +445,12 @@
"service": "App Gateway",
"severity": "Alto",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Habilitación del conjunto de reglas de protección contra bots de WAF de Azure Application Gateway Las reglas de bots detectan bots buenos y malos.",
+ "text": "Habilite el conjunto de reglas de protección contra bots de WAF de Azure Application Gateway. Las reglas de bots detectan bots buenos y malos.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
"id": "A01.38",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
@@ -462,19 +462,19 @@
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
"id": "A01.39",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
"severity": "Alto",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Ajuste el WAF de Azure Application Gateway para la carga de trabajo. Reduzca las detecciones de falsos positivos.",
+ "text": "Ajuste el WAF de Azure Application Gateway en modo de detección para la carga de trabajo. Reduzca las detecciones de falsos positivos.",
"waf": "Seguridad"
},
{
"ammp": true,
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"graph": "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",
"guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
"id": "A01.40",
@@ -482,33 +482,33 @@
"service": "App Gateway",
"severity": "Alto",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Implemente la directiva de WAF para Application Gateway en modo de \"prevención\".",
+ "text": "Implemente la directiva de WAF para Application Gateway en modo \"Prevención\".",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
"id": "A01.41",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Agregue limitación de velocidad al WAF de Azure Application Gateway. La limitación de velocidad bloquea a los clientes que envían accidental o intencionadamente grandes cantidades de tráfico en un corto período de tiempo.",
+ "text": "Agregue la limitación de velocidad al WAF de Azure Application Gateway. La limitación de velocidad bloquea a los clientes que envían accidental o intencionalmente grandes cantidades de tráfico en un corto período de tiempo.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
"id": "A01.42",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Use un umbral alto para los límites de frecuencia de WAF de Azure Application Gateway. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
+ "text": "Use un umbral alto para los límites de velocidad de WAF de Azure Application Gateway. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "99937189-ff78-492a-b9ca-18d828d82b37",
"id": "A01.43",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
@@ -519,7 +519,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
"id": "A01.44",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
@@ -530,7 +530,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
"id": "A01.45",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
@@ -541,7 +541,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
"id": "A01.46",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
@@ -552,7 +552,7 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
"id": "A01.47",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
@@ -563,7 +563,7 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "92664c60-47e3-4591-8b1b-8d557656e686",
"id": "A01.48",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
@@ -574,7 +574,7 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "845f5f91-9c21-4674-a725-5ce890850e20",
"id": "A01.49",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
@@ -585,7 +585,7 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
"id": "A01.50",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
@@ -596,18 +596,18 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
"id": "A01.51",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Utilice directivas de WAF en lugar de la configuración de WAF heredada.",
+ "text": "Utilice las políticas de WAF en lugar de la configuración de WAF heredada.",
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
"id": "A01.52",
"link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
@@ -618,18 +618,18 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
"id": "A01.53",
"link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
"service": "Front Door",
"severity": "Medio",
"subcategory": "Puerta",
- "text": "Asegúrese de que los orígenes solo toman tráfico de la instancia de Azure Front Door.",
+ "text": "Asegúrese de que los orígenes solo reciben tráfico de la instancia de Azure Front Door.",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
"id": "A01.54",
"link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
@@ -640,7 +640,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
"id": "A01.55",
"link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
@@ -651,7 +651,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
"id": "A01.56",
"link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
@@ -662,7 +662,7 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
"id": "A01.57",
"link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
@@ -673,29 +673,29 @@
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
"id": "A01.58",
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
"service": "App Gateway",
"severity": "Alto",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Habilite el drenaje de conexiones durante las actualizaciones de servicio planificadas para evitar la pérdida de conexión a los miembros existentes del grupo de back-end",
+ "text": "Habilite el drenaje de conexiones durante las actualizaciones de servicio planeadas para evitar la pérdida de conexión con los miembros existentes del grupo de back-end",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
"id": "A01.59",
"link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
"service": "App Gateway",
"severity": "Bajo",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Crear páginas de error personalizadas para mostrar una experiencia de usuario personalizada",
+ "text": "Cree páginas de error personalizadas para mostrar una experiencia de usuario personalizada",
"waf": "Operaciones"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
"id": "A01.60",
"link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
@@ -706,29 +706,29 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
"id": "A01.61",
"link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Configure Front Door para optimizar el enrutamiento del tráfico web global y el rendimiento del usuario final de primer nivel, así como la confiabilidad a través de una rápida conmutación por error global",
+ "text": "Configure Front Door para optimizar el enrutamiento del tráfico web global y el rendimiento y la confiabilidad del usuario final de primer nivel a través de una rápida conmutación por error global",
"waf": "Rendimiento"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "29dcc19f-a8fa-4c35-8281-290577538793",
"id": "A01.62",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Usar el equilibrio de carga de la capa de transporte",
+ "text": "Uso del equilibrio de carga de la capa de transporte",
"waf": "Rendimiento"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
"id": "A01.63",
"link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
@@ -739,18 +739,18 @@
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
"id": "A01.64",
"link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
"service": "App Gateway",
"severity": "Medio",
"subcategory": "Puerta de enlace de aplicaciones",
- "text": "Centralice la administración de certificados SSL para reducir la sobrecarga de cifrado y descifrado de una granja de servidores back-end",
+ "text": "Centralice la administración de certificados SSL para reducir la sobrecarga de cifrado y descifrado de una granja de servidores backend",
"waf": "Seguridad"
},
{
- "category": "Topología y conectividad de red",
+ "category": "Topología de red y conectividad",
"guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
"id": "A01.65",
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
@@ -764,7 +764,7 @@
"metadata": {
"name": "Azure Application Delivery Networking",
"state": "GA",
- "timestamp": "March 15, 2024",
+ "timestamp": "August 08, 2024",
"waf": "all"
},
"severities": [
@@ -780,7 +780,7 @@
],
"status": [
{
- "description": "Esta comprobación aún no se ha examinado",
+ "description": "Este control aún no se ha examinado",
"name": "No verificado"
},
{
diff --git a/checklists/network_appdelivery_checklist.ja.json b/checklists/network_appdelivery_checklist.ja.json
index 825e1ba93..b075632f2 100644
--- a/checklists/network_appdelivery_checklist.ja.json
+++ b/checklists/network_appdelivery_checklist.ja.json
@@ -1,34 +1,34 @@
{
"categories": [
{
- "name": "ネットワークトポロジと接続性"
+ "name": "ネットワーク トポロジと接続性"
}
],
"items": [
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
"id": "A01.01",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door でカスタマー マネージド TLS 証明書を使用する場合は、\"最新\" の証明書バージョンを使用します。証明書の手動更新によって引き起こされる停止のリスクを軽減",
+ "text": "Azure Front Door でカスタマー マネージド TLS 証明書を使用する場合は、\"最新\" の証明書バージョンを使用します。証明書の手動更新による停止のリスクを軽減",
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
"id": "A01.02",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
"severity": "中程度",
- "subcategory": "アプリ配信",
- "text": "内部向けアプリ (corp) と外部向けアプリ (online) の両方のランディング ゾーン内でアプリ配信を実行します。",
+ "subcategory": "アプリの配信",
+ "text": "ランディング ゾーン内で、内部向けアプリ (corp) と外部向けアプリ (online) の両方のアプリ配信を実行します。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
"guid": "553585a6-abe0-11ed-afa1-0242ac120002",
"id": "A01.03",
@@ -41,7 +41,7 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
"guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
"id": "A01.04",
@@ -49,11 +49,11 @@
"service": "Load Balancer",
"severity": "中程度",
"subcategory": "ロードバランサー",
- "text": "Azure Load Balancer に Standard SKU を使用していることを確認する",
+ "text": "Azure Load Balancers に Standard SKU を使用していることを確認します",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "9432621a-8397-4654-a882-5bc856b7ef83",
"id": "A01.05",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
@@ -64,7 +64,7 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
"id": "A01.06",
@@ -72,37 +72,37 @@
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Application Gateway v2 は、IP プレフィックスが /24 以上のサブネットにデプロイする必要があります",
+ "text": "Application Gateways v2 は、IP プレフィックスが /24 以上のサブネットにデプロイする必要があります",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
- "description": "リバースプロキシ全般、特にWAFの管理は、ネットワークよりもアプリケーションに近いため、アプリと同じサブスクリプションに属します。Application Gateway と WAF を接続サブスクリプションに一元化することは、1 つのチームによって管理されている場合は問題ない場合があります。",
+ "category": "ネットワーク トポロジと接続性",
+ "description": "リバースプロキシの管理全般、特にWAFの管理は、ネットワーキングよりもアプリケーションに近いため、アプリと同じサブスクリプションに属します。Application Gateway と WAF を接続サブスクリプションに一元化することは、1 つのチームによって管理されている場合は問題ない可能性があります。",
"guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
"id": "A01.07",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "ランディング ゾーン仮想ネットワーク内およびそれらがセキュリティで保護しているアプリと共に、受信 HTTP(S) 接続のプロキシに使用される Azure Application Gateway v2 またはパートナーの NVA をデプロイします。",
+ "text": "ランディング ゾーン仮想ネットワーク内の受信 HTTP(S) 接続のプロキシに使用される Azure Application Gateway v2 またはパートナー NVA と、それらがセキュリティ保護しているアプリをデプロイします。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
"id": "A01.08",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "アプリケーション ランディング ゾーン内のすべてのパブリック IP アドレスに対して DDoS ネットワークまたは IP 保護プランを使用します。",
+ "text": "アプリケーション ランディング ゾーン内のすべてのパブリック IP アドレスに対して、DDoS ネットワークまたは IP 保護プランを使用します。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
"guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
"id": "A01.09",
@@ -110,12 +110,12 @@
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "最小数のインスタンスが 2 つになる自動スケーリングを構成します。",
+ "text": "自動スケールは、最小インスタンス数が 2 になるように構成します。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "確実"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
"guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
"id": "A01.10",
@@ -128,32 +128,32 @@
"waf": "確実"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
"id": "A01.11",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door と WAF ポリシーを使用して、複数の Azure リージョンにまたがるグローバル HTTP/S アプリを配信し、保護します。",
+ "text": "Azure Front Door と WAF ポリシーを使用して、複数の Azure リージョンにまたがるグローバル HTTP/S アプリを提供し、保護します。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "3f29812b-2363-4cef-b179-b599de0d5973",
"id": "A01.12",
"link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "Front Door",
"severity": "中程度",
- "subcategory": "アプリ配信",
+ "subcategory": "アプリの配信",
"text": "Front Door と Application Gateway を使用して HTTP/S アプリを保護する場合は、Front Door で WAF ポリシーを使用します。Application Gateway をロックダウンして、Front Door からのトラフィックのみを受信します。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
"id": "A01.13",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -165,32 +165,32 @@
"waf": "確実"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
"id": "A01.14",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "低い",
- "subcategory": "アプリ配信",
- "text": "ユーザーが内部アプリケーションへのアクセスのみを必要とする場合、Microsoft Entra ID アプリケーション プロキシは Azure Virtual Desktop (AVD) の代替として検討されていますか?",
+ "subcategory": "アプリの配信",
+ "text": "ユーザーが内部アプリケーションへのアクセスのみを必要とする場合、Microsoft Entra ID アプリケーション プロキシは Azure Virtual Desktop (AVD) の代替手段として検討されていますか?",
"training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
"id": "A01.15",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "中程度",
- "subcategory": "アプリ配信",
- "text": "ネットワーク内の着信接続用に開かれているファイアウォール ポートの数を減らすには、Microsoft Entra ID アプリケーション プロキシを使用して、リモート ユーザーに内部アプリケーションへの安全で認証されたアクセスを提供することを検討してください。",
+ "subcategory": "アプリの配信",
+ "text": "ネットワーク内の着信接続用に開かれるファイアウォール ポートの数を減らすには、Microsoft Entra ID アプリケーション プロキシを使用して、リモート ユーザーに内部アプリケーションへの安全で認証されたアクセスを提供することを検討してください。",
"training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "ae248989-b306-4591-9186-de482e3f0f0e",
"id": "A01.16",
@@ -198,24 +198,24 @@
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Front Door の WAF ポリシーを \"防止\" モードでデプロイします。",
+ "text": "Front Door の WAF ポリシーを \"防止\" モードでデプロイし、Web アプリケーション ファイアウォールがトラフィックを許可または拒否するための適切なアクションを実行するようにします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
"id": "A01.17",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Azure Traffic Manager と Azure Front Door の組み合わせは避けてください。",
+ "text": "Azure Traffic Manager と Azure Front Door を組み合わせることは避けてください。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
"id": "A01.18",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
@@ -226,7 +226,7 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
"id": "A01.19",
@@ -234,22 +234,22 @@
"service": "Front Door",
"severity": "低い",
"subcategory": "フロントドア",
- "text": "Azure Front Door 配信元グループに配信元が 1 つしかない場合は、正常性プローブを無効にします。",
+ "text": "Azure Front Door の配信元グループに配信元が 1 つしかない場合は、正常性プローブを無効にします。",
"waf": "パフォーマンス"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
"id": "A01.20",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door に適した正常性プローブ エンドポイントを選択します。アプリケーションのすべての依存関係をチェックする正常性エンドポイントを構築することを検討してください。",
+ "text": "Azure Front Door の適切な正常性プローブ エンドポイントを選択します。アプリケーションのすべての依存関係をチェックする正常性エンドポイントの構築を検討してください。",
"waf": "確実"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
"id": "A01.21",
@@ -262,7 +262,7 @@
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
"guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
"id": "A01.22",
@@ -270,12 +270,12 @@
"service": "Load Balancer",
"severity": "高い",
"subcategory": "ロードバランサー",
- "text": "Load Balancer の送信規則の代わりに Azure NAT Gateway を使用して、SNAT のスケーラビリティを向上させる",
+ "text": "Load Balancer のアウトバウンド規則の代わりに Azure NAT Gateway を使用して SNAT のスケーラビリティを向上させる",
"waf": "確実"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
"id": "A01.23",
@@ -287,42 +287,42 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
"id": "A01.24",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF の構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
+ "text": "Azure Front Door WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
"waf": "オペレーションズ"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
"id": "A01.25",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Azure Front Door でエンド ツー エンドの TLS を使用します。クライアントから Front Door への接続、および Front Door から配信元への接続には TLS を使用します。",
+ "text": "Azure Front Door でエンド ツー エンド TLS を使用します。クライアントから Front Door への接続、および Front Door から配信元への接続には TLS を使用します。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
"id": "A01.26",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door で HTTP から HTTPS へのリダイレクトを使用します。古いクライアントをHTTPSリクエストに自動的にリダイレクトすることでサポートします。",
+ "text": "Azure Front Door で HTTP から HTTPS へのリダイレクトを使用します。古いクライアントを自動的に HTTPS リクエストにリダイレクトすることで、クライアントをサポートします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
"id": "A01.27",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
@@ -334,110 +334,110 @@
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
"id": "A01.28",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "ワークロードに合わせて Azure Front Door WAF を調整します。誤検知を減らします。",
+ "text": "ワークロードに合わせて Azure Front Door WAF を調整するには、検出モードで WAF を構成して誤検知の検出を減らして修正します。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
"id": "A01.29",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF ポリシーで要求本文検査機能を有効にします。",
+ "text": "Azure Front Door WAF ポリシーで有効になっている要求本文の検査機能を有効にします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
"id": "A01.30",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF の既定の規則セットを有効にします。既定のルール セットは、一般的な攻撃を検出してブロックします。",
+ "text": "Azure Front Door WAF の既定のルール セットを有効にします。デフォルトのルールセットは、一般的な攻撃を検出してブロックします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
"id": "A01.31",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
"service": "Front Door",
"severity": "高い",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF ボット保護ルール セットを有効にします。ボットルールは、良いボットと悪いボットを検出します。",
+ "text": "Azure Front Door WAF ボット保護ルール セットを有効にします。ボット ルールは、良いボットと悪いボットを検出します。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
"id": "A01.32",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "最新の Azure Front Door WAF ルール セット バージョンを使用します。ルール セットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
+ "text": "最新の Azure Front Door WAF ルール セット バージョンを使用します。ルールセットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "b9620385-1cde-418f-914b-a84a06982ffc",
"id": "A01.33",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF にレート制限を追加します。レート制限は、クライアントが短期間に大量のトラフィックを誤ってまたは意図的に送信することをブロックします。",
+ "text": "Azure Front Door WAF にレート制限を追加します。レート制限は、クライアントが誤ってまたは意図的に短時間に大量のトラフィックを送信するのをブロックします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
"id": "A01.34",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF のレート制限には、高いしきい値を使用します。高いレート制限しきい値は、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多数の要求に対する保護を提供します。",
+ "text": "Azure Front Door WAF のレート制限には高いしきい値を使用します。レート制限のしきい値を高くすると、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多くのリクエストに対する保護を提供します。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
"id": "A01.35",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
"service": "Front Door",
"severity": "低い",
"subcategory": "フロントドア",
- "text": "すべての地域からのトラフィックが想定されていない場合は、地域フィルタを使用して、想定外の国からのトラフィックをブロックします。",
+ "text": "すべての地理的地域からのトラフィックを想定していない場合は、geo フィルタを使用して、想定外の国からのトラフィックをブロックします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "00acd8a9-6975-414f-8491-2be6309893b8",
"id": "A01.36",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "Azure Front Door WAF を使用してトラフィックをジオフィルター処理するときに、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致させることができない場合に、正当な要求を誤ってブロックしないようにします。",
+ "text": "Azure Front Door WAF を使用してトラフィックを geo フィルタリングする場合は、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致できない場合に、正当な要求を誤ってブロックしないようにします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
"id": "A01.37",
@@ -445,36 +445,36 @@
"service": "App Gateway",
"severity": "高い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway WAF ボット保護ルール セットを有効にする ボット ルールは、良いボットと悪いボットを検出します。",
+ "text": "Azure Application Gateway WAF ボット保護ルール セットを有効にします。ボット ルールは、良いボットと悪いボットを検出します。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
"id": "A01.38",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "App Gateway",
"severity": "高い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway WAF ポリシーで有効になっている要求本文検査機能を有効にします。",
+ "text": "Azure Application Gateway WAF ポリシーで有効になっている要求本文の検査機能を有効にします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
"id": "A01.39",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
"severity": "高い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "ワークロードに合わせて Azure Application Gateway WAF を調整します。誤検知を減らします。",
+ "text": "ワークロードの検出モードで Azure Application Gateway WAF を調整します。誤検出を減らします。",
"waf": "安全"
},
{
"ammp": true,
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"graph": "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",
"guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
"id": "A01.40",
@@ -486,73 +486,73 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
"id": "A01.41",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway WAF にレート制限を追加します。レート制限は、クライアントが短期間に大量のトラフィックを誤ってまたは意図的に送信することをブロックします。",
+ "text": "Azure Application Gateway WAF にレート制限を追加します。レート制限は、クライアントが誤ってまたは意図的に短時間に大量のトラフィックを送信するのをブロックします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
"id": "A01.42",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway の WAF レート制限には高いしきい値を使用します。高いレート制限しきい値は、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多数の要求に対する保護を提供します。",
+ "text": "Azure Application Gateway WAF のレート制限には高いしきい値を使用します。レート制限のしきい値を高くすると、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多くのリクエストに対する保護を提供します。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "99937189-ff78-492a-b9ca-18d828d82b37",
"id": "A01.43",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
"service": "App Gateway",
"severity": "低い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "すべての地域からのトラフィックが想定されていない場合は、地域フィルタを使用して、想定外の国からのトラフィックをブロックします。",
+ "text": "すべての地理的地域からのトラフィックを想定していない場合は、geo フィルタを使用して、想定外の国からのトラフィックをブロックします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
"id": "A01.44",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway WAF でトラフィックを geo フィルタリングするときに、不明 (ZZ) の場所を指定します。IP アドレスを地理的に一致させることができない場合に、正当な要求を誤ってブロックしないようにします。",
+ "text": "Azure Application Gateway WAF を使用してトラフィックを geo フィルタリングする場合は、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致できない場合に、正当な要求を誤ってブロックしないようにします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
"id": "A01.45",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "最新バージョンの Azure Application Gateway WAF ルール セットを使用します。ルール セットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
+ "text": "最新の Azure Application Gateway WAF ルール セット バージョンを使用します。ルールセットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
"id": "A01.46",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "診断設定を追加して、Azure Application Gateway の WAF ログを保存します。",
+ "text": "診断設定を追加して、Azure Application Gateway WAF ログを保存します。",
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
"id": "A01.47",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
@@ -563,7 +563,7 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "92664c60-47e3-4591-8b1b-8d557656e686",
"id": "A01.48",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
@@ -574,7 +574,7 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "845f5f91-9c21-4674-a725-5ce890850e20",
"id": "A01.49",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
@@ -585,18 +585,18 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
"id": "A01.50",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Azure Application Gateway の WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
+ "text": "Azure Application Gateway WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
"id": "A01.51",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
@@ -607,40 +607,40 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
"id": "A01.52",
"link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "バックエンドの受信トラフィックをフィルター処理して、Application Gateway サブネットからの接続 (NSG など) のみを受け入れるようにします。",
+ "text": "バックエンドの受信トラフィックをフィルター処理して、Application Gateway サブネット (NSG など) からの接続のみを受け入れるようにします。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
"id": "A01.53",
"link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
"service": "Front Door",
"severity": "中程度",
"subcategory": "フロントドア",
- "text": "配信元が Azure Front Door インスタンスからのトラフィックのみを受け取るようにします。",
+ "text": "配信元が Azure Front Door インスタンスからのトラフィックのみを受け取ることを確認します。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
"id": "A01.54",
"link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
"service": "App Gateway",
"severity": "高い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "バックエンド・サーバーへのトラフィックを暗号化する必要があります。",
+ "text": "バックエンド サーバーへのトラフィックを暗号化する必要があります。",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
"id": "A01.55",
"link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
@@ -651,29 +651,29 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
"id": "A01.56",
"link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "HTTPをHTTPSにリダイレクトする",
+ "text": "HTTP を HTTPS にリダイレクトする",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
"id": "A01.57",
"link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "ゲートウェイ管理の Cookie を使用して、ユーザー セッションから同じサーバーにトラフィックを送信して処理する",
+ "text": "ゲートウェイで管理される Cookie を使用して、ユーザーセッションからのトラフィックを同じサーバーに転送して処理する",
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
"id": "A01.58",
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
@@ -684,7 +684,7 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
"id": "A01.59",
"link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
@@ -695,29 +695,29 @@
"waf": "オペレーションズ"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
"id": "A01.60",
"link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "HTTPリクエストとレスポンスヘッダーを編集して、クライアントとサーバー間のルーティングと情報交換を容易にします",
+ "text": "HTTP 要求と応答ヘッダーを編集して、クライアントとサーバー間のルーティングと情報交換を容易にします",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
"id": "A01.61",
"link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Front Door を構成して、グローバルな Web トラフィック ルーティングとトップレベルのエンド ユーザーのパフォーマンスを最適化し、迅速なグローバル フェールオーバーを通じて信頼性を確保します",
+ "text": "Front Door を構成して、グローバル Web トラフィックのルーティングと最上位のエンドユーザーのパフォーマンス、および迅速なグローバル フェイルオーバーによる信頼性を最適化する",
"waf": "パフォーマンス"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "29dcc19f-a8fa-4c35-8281-290577538793",
"id": "A01.62",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
@@ -728,7 +728,7 @@
"waf": "パフォーマンス"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
"id": "A01.63",
"link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
@@ -739,32 +739,32 @@
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
"id": "A01.64",
"link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
"service": "App Gateway",
"severity": "中程度",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "SSL証明書管理を一元化して、バックエンドサーバーファームからの暗号化と復号化のオーバーヘッドを削減",
+ "text": "SSL証明書管理を一元化して、バックエンドサーバーファームからの暗号化と復号化のオーバーヘッドを削減します",
"waf": "安全"
},
{
- "category": "ネットワークトポロジと接続性",
+ "category": "ネットワーク トポロジと接続性",
"guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
"id": "A01.65",
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
"service": "App Gateway",
"severity": "低い",
"subcategory": "アプリケーション・ゲートウェイ",
- "text": "Application Gateway を使用して WebSocket と HTTP/2 プロトコルをネイティブにサポートする",
+ "text": "Application Gateway を使用して WebSocket プロトコルと HTTP/2 プロトコルをネイティブにサポートする",
"waf": "安全"
}
],
"metadata": {
"name": "Azure Application Delivery Networking",
"state": "GA",
- "timestamp": "March 15, 2024",
+ "timestamp": "August 08, 2024",
"waf": "all"
},
"severities": [
@@ -780,7 +780,7 @@
],
"status": [
{
- "description": "このチェックはまだ検討されていません",
+ "description": "このチェックはまだ見ていません",
"name": "未確認"
},
{
@@ -788,12 +788,12 @@
"name": "開ける"
},
{
- "description": "このチェックは検証済みで、これ以上のアクションアイテムは関連付けられていません",
+ "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません",
"name": "達成"
},
{
- "description": "推奨事項は理解されているが、現在の要件では不要",
- "name": "必要なし"
+ "description": "推奨事項は理解されているが、現在の要件では必要ではない",
+ "name": "必須ではありません"
},
{
"description": "現在のデザインには適用されません",
diff --git a/checklists/network_appdelivery_checklist.ko.json b/checklists/network_appdelivery_checklist.ko.json
index 78aeb20b1..94c51c874 100644
--- a/checklists/network_appdelivery_checklist.ko.json
+++ b/checklists/network_appdelivery_checklist.ko.json
@@ -1,12 +1,12 @@
{
"categories": [
{
- "name": "네트워크 토폴로지 및 연결"
+ "name": "네트워크 토폴로지 및 연결성"
}
],
"items": [
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
"id": "A01.01",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
@@ -17,18 +17,18 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
"id": "A01.02",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
"severity": "보통",
"subcategory": "앱 제공",
- "text": "랜딩 존 내에서 내부 연결(corp) 및 외부 연결 앱(온라인) 모두에 대해 앱 배달을 수행합니다.",
+ "text": "내부 연결(corp) 및 외부 연결 앱(온라인) 모두에 대해 landing zone 내에서 앱 배달을 수행합니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
"guid": "553585a6-abe0-11ed-afa1-0242ac120002",
"id": "A01.03",
@@ -41,7 +41,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
"guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
"id": "A01.04",
@@ -53,7 +53,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "9432621a-8397-4654-a882-5bc856b7ef83",
"id": "A01.05",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
@@ -64,7 +64,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
"id": "A01.06",
@@ -72,12 +72,12 @@
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "Application Gateway v2는 IP 접두사가 /24보다 크거나 같은 서브넷에 배포해야 합니다.",
+ "text": "Application Gateways v2는 IP 접두사가 /24보다 크거나 같은 서브넷에 배포해야 합니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"description": "일반적으로 역방향 프록시 및 특히 WAF의 관리는 네트워킹보다 애플리케이션에 더 가깝기 때문에 앱과 동일한 구독에 속합니다. 연결 구독에서 Application Gateway 및 WAF를 중앙 집중화하는 것은 단일 팀에서 관리하는 경우 괜찮을 수 있습니다.",
"guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
"id": "A01.07",
@@ -85,12 +85,12 @@
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "랜딩 영역 가상 네트워크 내에서 그리고 보안 중인 앱을 사용하여 인바운드 HTTP(S) 연결을 프록시하는 데 사용되는 Azure Application Gateway v2 또는 파트너 NVA를 배포합니다.",
+ "text": "랜딩 존 가상 네트워크 내에서 그리고 보안 중인 앱을 사용하여 인바운드 HTTP(S) 연결을 프록시하는 데 사용되는 Azure Application Gateway v2 또는 파트너 NVA를 배포합니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
"id": "A01.08",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -102,7 +102,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
"guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
"id": "A01.09",
@@ -110,12 +110,12 @@
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "최소 인스턴스 수를 2개로 자동 크기 조정을 구성합니다.",
+ "text": "최소 2개의 인스턴스로 자동 크기 조정을 구성합니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "신뢰도"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
"guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
"id": "A01.10",
@@ -123,12 +123,12 @@
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "가용성 영역에 Application Gateway 배포",
+ "text": "가용성 영역에 Application Gateway 배포Deploy Application Gateway across Availability Zones",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "신뢰도"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
"id": "A01.11",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -140,7 +140,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "3f29812b-2363-4cef-b179-b599de0d5973",
"id": "A01.12",
"link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
@@ -153,7 +153,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
"id": "A01.13",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -165,19 +165,19 @@
"waf": "신뢰도"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
"id": "A01.14",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "낮다",
"subcategory": "앱 제공",
- "text": "사용자가 내부 애플리케이션에만 액세스해야 하는 경우 Microsoft Entra ID 애플리케이션 프록시가 AVD(Azure Virtual Desktop)의 대안으로 고려되었나요?",
+ "text": "사용자가 내부 애플리케이션에만 액세스해야 하는 경우 Microsoft Entra ID 애플리케이션 프록시를 AVD(Azure Virtual Desktop)의 대안으로 고려했나요?",
"training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
"id": "A01.15",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
@@ -190,7 +190,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "ae248989-b306-4591-9186-de482e3f0f0e",
"id": "A01.16",
@@ -198,12 +198,12 @@
"service": "Front Door",
"severity": "높다",
"subcategory": "정문",
- "text": "'방지' 모드에서 Front Door에 대한 WAF 정책을 배포합니다.",
+ "text": "Web Application Firewall이 트래픽을 허용하거나 거부하기 위해 적절한 조치를 취하도록 Front Door에 대한 WAF 정책을 '방지' 모드'에 배포합니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
"id": "A01.17",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
@@ -215,18 +215,18 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
"id": "A01.18",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
"service": "Front Door",
"severity": "높다",
"subcategory": "정문",
- "text": "Azure Front Door 및 원본에서 동일한 도메인 이름을 사용합니다. 호스트 이름이 일치하지 않으면 미묘한 버그가 발생할 수 있습니다.",
+ "text": "Azure Front Door 및 원본에서 동일한 도메인 이름을 사용합니다. 일치하지 않는 호스트 이름은 미묘한 버그를 유발할 수 있습니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
"id": "A01.19",
@@ -238,18 +238,18 @@
"waf": "공연"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
"id": "A01.20",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
"service": "Front Door",
"severity": "보통",
"subcategory": "정문",
- "text": "Azure Front Door에 대한 양호한 상태 프로브 엔드포인트를 선택합니다. 애플리케이션의 모든 종속성을 확인하는 상태 엔드포인트를 빌드하는 것이 좋습니다.",
+ "text": "Azure Front Door에 대한 양호한 상태 프로브 엔드포인트를 선택합니다. 애플리케이션의 모든 종속성을 확인하는 상태 엔드포인트를 구축하는 것이 좋습니다.",
"waf": "신뢰도"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
"id": "A01.21",
@@ -262,7 +262,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
"guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
"id": "A01.22",
@@ -275,7 +275,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
"id": "A01.23",
@@ -287,7 +287,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
"id": "A01.24",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
@@ -299,7 +299,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
"id": "A01.25",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
@@ -310,43 +310,43 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
"id": "A01.26",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
"service": "Front Door",
"severity": "보통",
"subcategory": "정문",
- "text": "Azure Front Door에서 HTTP에서 HTTPS로 리디렉션을 사용합니다. 이전 클라이언트를 HTTPS 요청으로 자동 리디렉션하여 지원합니다.",
+ "text": "Azure Front Door에서 HTTP를 HTTPS로 리디렉션을 사용합니다. 이전 클라이언트를 HTTPS 요청으로 자동으로 리디렉션하여 지원합니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
"id": "A01.27",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
"service": "Front Door",
"severity": "높다",
"subcategory": "정문",
- "text": "Azure Front Door WAF를 사용하도록 설정합니다. 다양한 공격으로부터 애플리케이션을 보호합니다.",
+ "text": "Azure Front Door WAF를 사용하도록 설정합니다. 다양한 공격으로부터 응용 프로그램을 보호합니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
"id": "A01.28",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
"service": "Front Door",
"severity": "높다",
"subcategory": "정문",
- "text": "워크로드에 맞게 Azure Front Door WAF를 튜닝합니다. 가양성 탐지를 줄입니다.",
+ "text": "검색 모드에서 WAF를 구성하여 가양성 검색을 줄이고 수정하여 워크로드에 맞게 Azure Front Door WAF를 조정합니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
"id": "A01.29",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
@@ -358,7 +358,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
"id": "A01.30",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
@@ -370,7 +370,7 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
"id": "A01.31",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
@@ -381,7 +381,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
"id": "A01.32",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
@@ -392,7 +392,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "b9620385-1cde-418f-914b-a84a06982ffc",
"id": "A01.33",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
@@ -403,41 +403,41 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
"id": "A01.34",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
"service": "Front Door",
"severity": "보통",
"subcategory": "정문",
- "text": "Azure Front Door WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호 기능을 제공합니다. ",
+ "text": "Azure Front Door WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호를 제공합니다. ",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
"id": "A01.35",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
"service": "Front Door",
"severity": "낮다",
"subcategory": "정문",
- "text": "모든 지역에서 트래픽이 발생하지 않을 것으로 예상되는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
+ "text": "모든 지역에서 트래픽이 발생할 것으로 예상되지 않는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "00acd8a9-6975-414f-8491-2be6309893b8",
"id": "A01.36",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
"service": "Front Door",
"severity": "보통",
"subcategory": "정문",
- "text": "Azure Front Door WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 않도록 합니다.",
+ "text": "Azure Front Door WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 마세요.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
"id": "A01.37",
@@ -445,12 +445,12 @@
"service": "App Gateway",
"severity": "높다",
"subcategory": "앱 게이트웨이",
- "text": "Azure Application Gateway WAF 봇 보호 규칙 집합 사용Enable the Azure Application Gateway WAF bot protection rule set 봇 규칙은 좋은 봇과 나쁜 봇을 검색합니다.",
+ "text": "Azure Application Gateway WAF 봇 보호 규칙 집합을 사용하도록 설정합니다. 봇 규칙은 좋은 봇과 나쁜 봇을 감지합니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
"id": "A01.38",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
@@ -462,19 +462,19 @@
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
"id": "A01.39",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
"severity": "높다",
"subcategory": "앱 게이트웨이",
- "text": "워크로드에 대한 Azure Application Gateway WAF를 조정합니다. 가양성 탐지를 줄입니다.",
+ "text": "워크로드에 대한 검색 모드에서 Azure Application Gateway WAF를 조정합니다. 거짓 긍정 탐지를 줄입니다.",
"waf": "안전"
},
{
"ammp": true,
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"graph": "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",
"guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
"id": "A01.40",
@@ -486,7 +486,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
"id": "A01.41",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
@@ -497,40 +497,40 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
"id": "A01.42",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "Azure Application Gateway WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호 기능을 제공합니다. ",
+ "text": "Azure Application Gateway WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호를 제공합니다. ",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "99937189-ff78-492a-b9ca-18d828d82b37",
"id": "A01.43",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
"service": "App Gateway",
"severity": "낮다",
"subcategory": "앱 게이트웨이",
- "text": "모든 지역에서 트래픽이 발생하지 않을 것으로 예상되는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
+ "text": "모든 지역에서 트래픽이 발생할 것으로 예상되지 않는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
"id": "A01.44",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "Azure Application Gateway WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 않도록 합니다.",
+ "text": "Azure Application Gateway WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 마세요.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
"id": "A01.45",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
@@ -541,7 +541,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
"id": "A01.46",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
@@ -552,7 +552,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
"id": "A01.47",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
@@ -563,7 +563,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "92664c60-47e3-4591-8b1b-8d557656e686",
"id": "A01.48",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
@@ -574,7 +574,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "845f5f91-9c21-4674-a725-5ce890850e20",
"id": "A01.49",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
@@ -585,7 +585,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
"id": "A01.50",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
@@ -596,7 +596,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
"id": "A01.51",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
@@ -607,18 +607,18 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
"id": "A01.52",
"link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "Application Gateway 서브넷의 연결(예: NSG 사용)만 허용하도록 백 엔드에서 인바운드 트래픽을 필터링합니다.",
+ "text": "예를 들어 NSG를 사용하여 Application Gateway 서브넷의 연결만 허용하도록 백 엔드에서 인바운드 트래픽을 필터링합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
"id": "A01.53",
"link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
@@ -629,18 +629,18 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
"id": "A01.54",
"link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
"service": "App Gateway",
"severity": "높다",
"subcategory": "앱 게이트웨이",
- "text": "백 엔드 서버에 대한 트래픽을 암호화해야 합니다.",
+ "text": "백엔드 서버에 대한 트래픽을 암호화해야 합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
"id": "A01.55",
"link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
@@ -651,7 +651,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
"id": "A01.56",
"link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
@@ -662,7 +662,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
"id": "A01.57",
"link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
@@ -673,7 +673,7 @@
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
"id": "A01.58",
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
@@ -684,62 +684,62 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
"id": "A01.59",
"link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
"service": "App Gateway",
"severity": "낮다",
"subcategory": "앱 게이트웨이",
- "text": "사용자 지정 오류 페이지를 만들어 개인화된 사용자 환경 표시",
+ "text": "사용자 지정 오류 페이지를 만들어 개인화된 사용자 환경을 표시합니다.",
"waf": "작업"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
"id": "A01.60",
"link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "HTTP 요청 및 응답 헤더를 편집하여 클라이언트와 서버 간의 라우팅 및 정보 교환을 보다 쉽게 할 수 있습니다.",
+ "text": "클라이언트와 서버 간의 더 쉬운 라우팅 및 정보 교환을 위해 HTTP 요청 및 응답 헤더를 편집합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
"id": "A01.61",
"link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "빠른 글로벌 장애 조치(failover)를 통해 글로벌 웹 트래픽 라우팅 및 최상위 계층 최종 사용자 성능 및 안정성을 최적화하도록 Front Door 구성",
+ "text": "Front Door를 구성하여 글로벌 웹 트래픽 라우팅, 최상위 최종 사용자 성능 및 빠른 글로벌 장애 조치(failover)를 통해 안정성을 최적화합니다.",
"waf": "공연"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "29dcc19f-a8fa-4c35-8281-290577538793",
"id": "A01.62",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "전송 계층 부하 분산 사용Use transport layer load balancing",
+ "text": "전송 계층 부하 분산 사용",
"waf": "공연"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
"id": "A01.63",
"link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
"service": "App Gateway",
"severity": "보통",
"subcategory": "앱 게이트웨이",
- "text": "단일 게이트웨이에서 여러 웹 응용 프로그램에 대한 호스트 또는 도메인 이름을 기반으로 라우팅 구성Configure routing based on host or domain name for multiple web applications on a single gateway",
+ "text": "단일 게이트웨이에서 여러 웹 응용 프로그램에 대한 호스트 또는 도메인 이름을 기반으로 라우팅을 구성합니다.",
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
"id": "A01.64",
"link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
@@ -750,7 +750,7 @@
"waf": "안전"
},
{
- "category": "네트워크 토폴로지 및 연결",
+ "category": "네트워크 토폴로지 및 연결성",
"guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
"id": "A01.65",
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
@@ -764,7 +764,7 @@
"metadata": {
"name": "Azure Application Delivery Networking",
"state": "GA",
- "timestamp": "March 15, 2024",
+ "timestamp": "August 08, 2024",
"waf": "all"
},
"severities": [
@@ -792,7 +792,7 @@
"name": "성취"
},
{
- "description": "권장 사항은 이해되었지만 현재 요구 사항에 필요하지 않음",
+ "description": "권장 사항을 이해하지만 현재 요구 사항에 필요하지 않음",
"name": "필요 없음"
},
{
diff --git a/checklists/network_appdelivery_checklist.pt.json b/checklists/network_appdelivery_checklist.pt.json
index 78c0f3099..c305ace3b 100644
--- a/checklists/network_appdelivery_checklist.pt.json
+++ b/checklists/network_appdelivery_checklist.pt.json
@@ -1,159 +1,159 @@
{
"categories": [
{
- "name": "Topologia de rede e conectividade"
+ "name": "Topologia e conectividade de rede"
}
],
"items": [
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
"id": "A01.01",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Se você usar certificados TLS gerenciados pelo cliente com o Azure Front Door, use a versão de certificado 'Mais recente'. Reduzir o risco de paralisações causadas pela renovação manual de certificados",
+ "subcategory": "Porta da frente",
+ "text": "Se você usar certificados TLS gerenciados pelo cliente com o Azure Front Door, use a versão do certificado 'Mais recente'. Reduza o risco de interrupções causadas pela renovação manual de certificados",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "b71ca41b-3a80-48f3-a6cd-22cdf197c1cf",
"id": "A01.02",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
"severity": "Média",
"subcategory": "Entrega de aplicativos",
- "text": "Execute a entrega de aplicativos dentro das zonas de aterrissagem para aplicativos internos (corp) e externos (online).",
+ "text": "Execute a entrega de aplicativos em zonas de destino para aplicativos internos (corporativos) e externos (online).",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
"guid": "553585a6-abe0-11ed-afa1-0242ac120002",
"id": "A01.03",
"link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Verifique se você está usando o SKU do Application Gateway v2",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Verifique se você está usando o SKU do Gateway de Aplicativo v2",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
"guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
"id": "A01.04",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "Load Balancer",
"severity": "Média",
- "subcategory": "Balanceador de Carga",
- "text": "Verifique se você está usando a SKU padrão para seus Balanceadores de Carga do Azure",
+ "subcategory": "Balanceador de carga",
+ "text": "Verifique se você está usando o SKU Standard para seus Azure Load Balancers",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "9432621a-8397-4654-a882-5bc856b7ef83",
"id": "A01.05",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
"service": "Load Balancer",
"severity": "Média",
- "subcategory": "Balanceador de Carga",
- "text": "Verifique se os endereços IP de front-end dos Load Balancers são redundantes por zona (a menos que você precise de frontends zonais).",
+ "subcategory": "Balanceador de carga",
+ "text": "Verifique se os endereços IP de front-end dos Load Balancers têm redundância de zona (a menos que você precise de front-ends zonais).",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
"id": "A01.06",
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Seus Application Gateways v2 devem ser implantados em sub-redes com prefixos IP iguais ou maiores que /24",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Seus Gateways de Aplicativo v2 devem ser implantados em sub-redes com prefixos IP iguais ou maiores que /24",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
- "description": "A administração de proxies reversos em geral e do WAF em particular está mais próxima do aplicativo do que da rede, portanto, eles pertencem à mesma assinatura que o aplicativo. Centralizar o Application Gateway e o WAF na assinatura de conectividade pode ser OK se for gerenciado por uma única equipe.",
+ "category": "Topologia e conectividade de rede",
+ "description": "A administração de proxies reversos em geral e WAF em particular está mais próxima do aplicativo do que da rede, portanto, eles pertencem à mesma assinatura que o aplicativo. Centralizar o Gateway de Aplicativo e o WAF na assinatura de conectividade pode ser OK se ele for gerenciado por uma única equipe.",
"guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
"id": "A01.07",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Implante o Gateway de Aplicativo do Azure v2 ou NVAs de parceiros usados para fazer proxy de conexões HTTP(S) de entrada na rede virtual da zona de aterrissagem e com os aplicativos que eles estão protegendo.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Implante o Gateway de Aplicativo do Azure v2 ou NVAs de parceiros usados para proxy de conexões HTTP(S) de entrada na rede virtual da zona de destino e com os aplicativos que eles estão protegendo.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
"id": "A01.08",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Use uma rede DDoS ou planos de proteção IP para todos os endereços IP públicos nas zonas de aterrissagem do aplicativo.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Use uma rede DDoS ou planos de proteção de IP para todos os endereços IP públicos em zonas de destino do aplicativo.",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
"guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
"id": "A01.09",
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Configure o dimensionamento automático com uma quantidade mínima de duas instâncias.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Configure o dimensionamento automático com uma quantidade mínima de instâncias de duas.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Fiabilidade"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
"guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
"id": "A01.10",
"link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Implantar o Application Gateway em zonas de disponibilidade",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Implantar o Gateway de Aplicativo em Zonas de Disponibilidade",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Fiabilidade"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
"id": "A01.11",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Use o Azure Front Door com políticas WAF para fornecer e ajudar a proteger aplicativos HTTP/S globais que abrangem várias regiões do Azure.",
+ "subcategory": "Porta da frente",
+ "text": "Use o Azure Front Door com políticas do WAF para fornecer e ajudar a proteger aplicativos HTTP/S globais que abrangem várias regiões do Azure.",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "3f29812b-2363-4cef-b179-b599de0d5973",
"id": "A01.12",
"link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "Front Door",
"severity": "Média",
"subcategory": "Entrega de aplicativos",
- "text": "Ao usar o Front Door e o Application Gateway para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Front Door. Bloqueie o Application Gateway para receber tráfego somente do Front Door.",
+ "text": "Ao usar o Front Door e o Gateway de Aplicativo para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Front Door. Bloqueie o Gateway de Aplicativo para receber tráfego somente do Front Door.",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
"id": "A01.13",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
@@ -165,606 +165,606 @@
"waf": "Fiabilidade"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
"id": "A01.14",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "Baixo",
"subcategory": "Entrega de aplicativos",
- "text": "Se os usuários precisarem apenas de acesso a aplicativos internos, o Proxy de Aplicativo de ID do Microsoft Entra foi considerado uma alternativa à Área de Trabalho Virtual (AVD) do Azure?",
+ "text": "Se os usuários precisarem apenas de acesso a aplicativos internos, o Proxy de Aplicativo de ID do Microsoft Entra foi considerado como uma alternativa à AVD (Área de Trabalho Virtual) do Azure?",
"training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
"id": "A01.15",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "Entra",
"severity": "Média",
"subcategory": "Entrega de aplicativos",
- "text": "Para reduzir o número de portas de firewall abertas para conexões de entrada em sua rede, considere o uso do Microsoft Entra ID Application Proxy para dar aos usuários remotos acesso seguro e autenticado a aplicativos internos.",
+ "text": "Para reduzir o número de portas de firewall abertas para conexões de entrada em sua rede, considere usar o Proxy de Aplicativo de ID do Microsoft Entra para fornecer aos usuários remotos acesso seguro e autenticado a aplicativos internos.",
"training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "ae248989-b306-4591-9186-de482e3f0f0e",
"id": "A01.16",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Implante sua política de WAF para Front Door no modo 'Prevenção'.",
+ "subcategory": "Porta da frente",
+ "text": "Implante sua política de WAF para o Front Door no modo 'Prevenção' para que o Firewall de Aplicativo Web tome as medidas apropriadas para permitir ou negar o tráfego.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
"id": "A01.17",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Evite combinar o Gerenciador de Tráfego do Azure e o Azure Front Door.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
"id": "A01.18",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Use o mesmo nome de domínio no Azure Front Door e sua origem. Nomes de host incompatíveis podem causar bugs sutis.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
"id": "A01.19",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
"service": "Front Door",
"severity": "Baixo",
- "subcategory": "Porta da Frente",
- "text": "Desabilite os testes de integridade quando houver apenas uma origem em um grupo de origem do Azure Front Door.",
+ "subcategory": "Porta da frente",
+ "text": "Desabilite as investigações de integridade quando houver apenas uma origem em um grupo de origens do Azure Front Door.",
"waf": "Desempenho"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
"id": "A01.20",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Selecione bons pontos de extremidade de teste de integridade para o Azure Front Door. Considere a criação de pontos de extremidade de integridade que verifiquem todas as dependências do seu aplicativo.",
+ "subcategory": "Porta da frente",
+ "text": "Selecione pontos de extremidade de investigação de integridade boa para o Azure Front Door. Considere a criação de pontos de extremidade de integridade que verifiquem todas as dependências do aplicativo.",
"waf": "Fiabilidade"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
"id": "A01.21",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
"service": "Front Door",
"severity": "Baixo",
- "subcategory": "Porta da Frente",
- "text": "Use testes de integridade do HEAD com o Azure Front Door para reduzir o tráfego que o Front Door envia para seu aplicativo.",
+ "subcategory": "Porta da frente",
+ "text": "Use investigações de integridade HEAD com o Azure Front Door para reduzir o tráfego que o Front Door envia para seu aplicativo.",
"waf": "Desempenho"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
"guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
"id": "A01.22",
"link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
"service": "Load Balancer",
"severity": "Alto",
- "subcategory": "Balanceador de Carga",
- "text": "Usar o Gateway NAT do Azure em vez das regras de saída do Load Balancer para melhor escalabilidade do SNAT",
+ "subcategory": "Balanceador de carga",
+ "text": "Usar o Gateway NAT do Azure em vez das regras de saída do Load Balancer para melhorar a escalabilidade SNAT",
"waf": "Fiabilidade"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
"id": "A01.23",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Use certificados TLS gerenciados com o Azure Front Door. Reduza o custo operacional e o risco de paralisações devido a renovações de certificados.",
+ "subcategory": "Porta da frente",
+ "text": "Use certificados TLS gerenciados com o Azure Front Door. Reduza o custo operacional e o risco de interrupções devido a renovações de certificados.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
"id": "A01.24",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Defina sua configuração do WAF do Azure Front Door como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
+ "subcategory": "Porta da frente",
+ "text": "Defina a configuração do WAF do Azure Front Door como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
"waf": "Operações"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
"id": "A01.25",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Use o TLS de ponta a ponta com o Azure Front Door. Use o TLS para conexões de seus clientes com o Front Door e do Front Door com sua origem.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
"id": "A01.26",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Use o redirecionamento HTTP para HTTPS com o Azure Front Door. Ofereça suporte a clientes mais antigos redirecionando-os para uma solicitação HTTPS automaticamente.",
+ "subcategory": "Porta da frente",
+ "text": "Use o redirecionamento de HTTP para HTTPS com o Azure Front Door. Ofereça suporte a clientes mais antigos redirecionando-os para uma solicitação HTTPS automaticamente.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
"id": "A01.27",
"link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Habilite o WAF do Azure Front Door. Proteja seu aplicativo contra uma série de ataques.",
+ "subcategory": "Porta da frente",
+ "text": "Habilite o WAF do Azure Front Door. Proteja seu aplicativo contra uma variedade de ataques.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
"id": "A01.28",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Ajuste o WAF do Azure Front Door para sua carga de trabalho. Reduza as detecções de falsos positivos.",
+ "subcategory": "Porta da frente",
+ "text": "Ajuste o WAF do Azure Front Door para sua carga de trabalho configurando o WAF no modo de detecção para reduzir e corrigir detecções de falsos positivos.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
"id": "A01.29",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Habilite o recurso de inspeção do corpo de solicitação habilitado na política WAF do Azure Front Door.",
+ "subcategory": "Porta da frente",
+ "text": "Habilite o recurso de inspeção do corpo da solicitação habilitado na política do WAF do Azure Front Door.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
"id": "A01.30",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Habilite os conjuntos de regras padrão do WAF do Azure Front Door. Os conjuntos de regras padrão detectam e bloqueiam ataques comuns.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
"id": "A01.31",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
"service": "Front Door",
"severity": "Alto",
- "subcategory": "Porta da Frente",
- "text": "Habilite o conjunto de regras de proteção de bot do WAF do Azure Front Door. As regras de bot detectam bots bons e ruins.",
+ "subcategory": "Porta da frente",
+ "text": "Habilite o conjunto de regras de proteção contra bot do WAF do Azure Front Door. As regras de bot detectam bots bons e ruins.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
"id": "A01.32",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Use a versão mais recente do conjunto de regras do WAF do Azure Front Door. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário atual de ameaças.",
+ "subcategory": "Porta da frente",
+ "text": "Use a versão mais recente do conjunto de regras do WAF do Azure Front Door. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário de ameaças atual.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "b9620385-1cde-418f-914b-a84a06982ffc",
"id": "A01.33",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Adicione o limite de taxa ao WAF do Azure Front Door. A limitação de taxa bloqueia clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
+ "subcategory": "Porta da frente",
+ "text": "Adicione a limitação de taxa ao WAF do Azure Front Door. A limitação de taxa bloqueia os clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
"id": "A01.34",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Use um limite alto para os limites de taxa do WAF do Azure Front Door. Limites de limite de taxa alta evitam o bloqueio de tráfego legítimo, ao mesmo tempo em que fornecem proteção contra um número extremamente alto de solicitações que podem sobrecarregar sua infraestrutura. ",
+ "subcategory": "Porta da frente",
+ "text": "Use um limite alto para os limites de taxa do WAF do Azure Front Door. Os limites de limite de taxa altos evitam o bloqueio do tráfego legítimo, ao mesmo tempo em que fornecem proteção contra números extremamente altos de solicitações que podem sobrecarregar sua infraestrutura. ",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
"id": "A01.35",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
"service": "Front Door",
"severity": "Baixo",
- "subcategory": "Porta da Frente",
- "text": "Se você não está esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
+ "subcategory": "Porta da frente",
+ "text": "Se você não estiver esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "00acd8a9-6975-414f-8491-2be6309893b8",
"id": "A01.36",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Azure Front Door. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
"id": "A01.37",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
- "text": "Habilitar o conjunto de regras de proteção de bot WAF do Gateway de Aplicativo do Azure As regras de bot detectam bots bons e ruins.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Habilite o conjunto de regras de proteção contra bot do WAF do Gateway de Aplicativo do Azure. As regras de bot detectam bots bons e ruins.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
"id": "A01.38",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
- "text": "Habilite o recurso de inspeção do corpo de solicitação habilitado na política WAF do Gateway de Aplicativo do Azure.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Habilite o recurso de inspeção do corpo da solicitação habilitado na política do WAF do Gateway de Aplicativo do Azure.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
"id": "A01.39",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
- "text": "Ajuste o WAF do Gateway de Aplicativo do Azure para sua carga de trabalho. Reduza as detecções de falsos positivos.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Ajuste o WAF do Gateway de Aplicativo do Azure no modo de detecção para sua carga de trabalho. Reduza as detecções de falsos positivos.",
"waf": "Segurança"
},
{
"ammp": true,
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"graph": "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",
"guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
"id": "A01.40",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
- "text": "Implante sua política de WAF para o Application Gateway no modo 'Prevenção'.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Implante sua política de WAF para Gateway de Aplicativo no modo 'Prevenção'.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
"id": "A01.41",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Adicione o limite de taxa ao WAF do Gateway de Aplicativo do Azure. A limitação de taxa bloqueia clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Adicione a limitação de taxa ao WAF do Gateway de Aplicativo do Azure. A limitação de taxa bloqueia os clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
"id": "A01.42",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Use um limite alto para os limites de taxa do WAF do Gateway de Aplicativo do Azure. Limites de limite de taxa alta evitam o bloqueio de tráfego legítimo, ao mesmo tempo em que fornecem proteção contra um número extremamente alto de solicitações que podem sobrecarregar sua infraestrutura. ",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Use um limite alto para os limites de taxa do WAF do Gateway de Aplicativo do Azure. Os limites de limite de taxa altos evitam o bloqueio do tráfego legítimo, ao mesmo tempo em que fornecem proteção contra números extremamente altos de solicitações que podem sobrecarregar sua infraestrutura. ",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "99937189-ff78-492a-b9ca-18d828d82b37",
"id": "A01.43",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
"service": "App Gateway",
"severity": "Baixo",
- "subcategory": "Gateway de aplicativo",
- "text": "Se você não está esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Se você não estiver esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
"id": "A01.44",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Gateway de Aplicativo do Azure. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
"id": "A01.45",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Use a versão mais recente do conjunto de regras do WAF do Gateway de Aplicativo do Azure. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário atual de ameaças.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Use a versão mais recente do conjunto de regras do WAF do Gateway de Aplicativo do Azure. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário de ameaças atual.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
"id": "A01.46",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Adicione configurações de diagnóstico para salvar seus logs WAF do Gateway de Aplicativo do Azure.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Adicione configurações de diagnóstico para salvar os logs do WAF do Gateway de Aplicativo do Azure.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
"id": "A01.47",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Adicione configurações de diagnóstico para salvar seus logs do WAF do Azure Front Door.",
+ "subcategory": "Porta da frente",
+ "text": "Adicione configurações de diagnóstico para salvar os logs do WAF do Azure Front Door.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "92664c60-47e3-4591-8b1b-8d557656e686",
"id": "A01.48",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Envie logs do WAF do Gateway de Aplicativo do Azure para o Microsoft Sentinel.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "845f5f91-9c21-4674-a725-5ce890850e20",
"id": "A01.49",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
+ "subcategory": "Porta da frente",
"text": "Envie logs do WAF do Azure Front Door para o Microsoft Sentinel.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
"id": "A01.50",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Defina sua configuração do WAF do Gateway de Aplicativo do Azure como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Defina a configuração do WAF do Gateway de Aplicativo do Azure como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
"id": "A01.51",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Use políticas de WAF em vez da configuração de WAF herdada.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Use as Políticas do WAF em vez da configuração herdada do WAF.",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
"id": "A01.52",
"link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Filtre o tráfego de entrada nos back-ends para que eles só aceitem conexões da sub-rede do Application Gateway, por exemplo, com NSGs.",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Filtre o tráfego de entrada nos back-ends para que eles aceitem apenas conexões da sub-rede do Gateway de Aplicativo, por exemplo, com NSGs.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
"id": "A01.53",
"link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
"service": "Front Door",
"severity": "Média",
- "subcategory": "Porta da Frente",
- "text": "Certifique-se de que suas origens recebam apenas o tráfego de sua instância do Azure Front Door.",
+ "subcategory": "Porta da frente",
+ "text": "Verifique se suas origens recebem apenas o tráfego da instância do Azure Front Door.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
"id": "A01.54",
"link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Você deve criptografar o tráfego para os servidores de back-end.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
"id": "A01.55",
"link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Você deve usar um Web Application Firewall.",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
"id": "A01.56",
"link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Redirecionar HTTP para HTTPS",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
"id": "A01.57",
"link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Usar cookies gerenciados por gateway para direcionar o tráfego de uma sessão de usuário para o mesmo servidor para processamento",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Use cookies gerenciados por gateway para direcionar o tráfego de uma sessão de usuário para o mesmo servidor para processamento",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
"id": "A01.58",
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
"service": "App Gateway",
"severity": "Alto",
- "subcategory": "Gateway de aplicativo",
- "text": "Habilite a drenagem de conexão durante as atualizações de serviço planejadas para evitar a perda de conexão com membrs existentes do pool de back-end",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Habilitar a drenagem de conexão durante atualizações de serviço planejadas para evitar a perda de conexão para membros existentes do pool de back-end",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
"id": "A01.59",
"link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
"service": "App Gateway",
"severity": "Baixo",
- "subcategory": "Gateway de aplicativo",
- "text": "Criar páginas de erro personalizadas para exibir uma experiência de usuário personalizada",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Crie páginas de erro personalizadas para exibir uma experiência de usuário personalizada",
"waf": "Operações"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
"id": "A01.60",
"link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
+ "subcategory": "Gateway de Aplicativo",
"text": "Edite solicitações HTTP e cabeçalhos de resposta para facilitar o roteamento e a troca de informações entre o cliente e o servidor",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
"id": "A01.61",
"link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Configure o Front Door para otimizar o roteamento de tráfego global da Web e o desempenho do usuário final de nível superior e a confiabilidade por meio de failover global rápido",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Configure o Front Door para otimizar o roteamento de tráfego da Web global e o desempenho e a confiabilidade do usuário final de nível superior por meio de failover global rápido",
"waf": "Desempenho"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "29dcc19f-a8fa-4c35-8281-290577538793",
"id": "A01.62",
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Usar balanceamento de carga da camada de transporte",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Usar o balanceamento de carga da camada de transporte",
"waf": "Desempenho"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
"id": "A01.63",
"link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Configurar o roteamento com base no host ou nome de domínio para vários aplicativos Web em um único gateway",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Configurar o roteamento com base no host ou no nome de domínio para vários aplicativos Web em um único gateway",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
"id": "A01.64",
"link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
"service": "App Gateway",
"severity": "Média",
- "subcategory": "Gateway de aplicativo",
- "text": "Centralize o gerenciamento de certificados SSL para reduzir a sobrecarga de criptografia e descriptografia de um farm de servidores back-end",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Centralize o gerenciamento de certificados SSL para reduzir a sobrecarga de criptografia e descriptografia de um farm de servidores de back-end",
"waf": "Segurança"
},
{
- "category": "Topologia de rede e conectividade",
+ "category": "Topologia e conectividade de rede",
"guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
"id": "A01.65",
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
"service": "App Gateway",
"severity": "Baixo",
- "subcategory": "Gateway de aplicativo",
- "text": "Usar o Application Gateway para suporte nativo para protocolos WebSocket e HTTP/2",
+ "subcategory": "Gateway de Aplicativo",
+ "text": "Usar o Gateway de Aplicativo para obter suporte nativo para protocolos WebSocket e HTTP/2",
"waf": "Segurança"
}
],
"metadata": {
"name": "Azure Application Delivery Networking",
"state": "GA",
- "timestamp": "March 15, 2024",
+ "timestamp": "August 08, 2024",
"waf": "all"
},
"severities": [
@@ -788,7 +788,7 @@
"name": "Abrir"
},
{
- "description": "Essa verificação foi verificada e não há outros itens de ação associados a ela",
+ "description": "Essa verificação foi verificada e não há mais itens de ação associados a ela",
"name": "Cumprido"
},
{
@@ -796,7 +796,7 @@
"name": "Não é necessário"
},
{
- "description": "Não aplicável ao projeto atual",
+ "description": "Não aplicável para o projeto atual",
"name": "N/A"
}
],
diff --git a/checklists/network_appdelivery_checklist.zh-Hant.json b/checklists/network_appdelivery_checklist.zh-Hant.json
index ad6337422..79dccb460 100644
--- a/checklists/network_appdelivery_checklist.zh-Hant.json
+++ b/checklists/network_appdelivery_checklist.zh-Hant.json
@@ -13,7 +13,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "如果將客戶管理的 TLS 證書用於 Azure Front Door,請使用“最新”證書版本。降低手動續訂證書導致的中斷風險",
+ "text": "如果將客戶管理的 TLS 證書用於 Azure Front Door,請使用“最新”證書版本。降低手動證書續訂導致的中斷風險",
"waf": "操作"
},
{
@@ -23,7 +23,7 @@
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
"severity": "中等",
"subcategory": "應用交付",
- "text": "在面向內部 (corp) 和面向外部的應用 (online) 的登陸區域內執行應用交付。",
+ "text": "在登陸區域內為面向內部 (corp) 和面向外部的應用 (online) 執行應用交付。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
@@ -35,7 +35,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "確保使用應用程式閘道 v2 SKU",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
@@ -49,7 +49,7 @@
"service": "Load Balancer",
"severity": "中等",
"subcategory": "負載均衡器",
- "text": "確保將標準 SKU 用於 Azure 負載均衡器",
+ "text": "請確保對 Azure 負載均衡器使用標準 SKU",
"waf": "安全"
},
{
@@ -60,7 +60,7 @@
"service": "Load Balancer",
"severity": "中等",
"subcategory": "負載均衡器",
- "text": "確保負載均衡器前端IP位址是區域冗餘的(除非需要區域性前端)。",
+ "text": "確保負載均衡器前端IP位址是區域冗餘的(除非需要區域前端)。",
"waf": "安全"
},
{
@@ -71,21 +71,21 @@
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "應用程式閘道 v2 應部署在IP前綴等於或大於 /24 的子網中",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
"category": "網路拓撲和連接",
- "description": "一般而言,反向代理的管理,特別是 WAF 的管理更接近應用程式而不是網路,因此它們與應用程式屬於同一訂閱。如果應用程式閘道和 WAF 由單個團隊管理,則在連接訂閱中集中應用程式閘道和 WAF 可能是可以的。",
+ "description": "一般而言,反向代理(尤其是 WAF)的管理更接近應用程式,而不是網路,因此它們與應用程式屬於同一訂閱。如果應用程式閘道和 WAF 由一個團隊管理,則在連接訂閱中集中管理應用程式閘道和 WAF 可能是可以的。",
"guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
"id": "A01.07",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "部署 Azure 應用程式閘道 v2 或合作夥伴 NVA,用於在登陸區域虛擬網路中代理入站 HTTP(S) 連接,並使用它們所保護的應用。",
+ "subcategory": "應用閘道",
+ "text": "部署 Azure 應用程式閘道 v2 或合作夥伴 NVA,用於在登陸區域虛擬網路中代理入站 HTTP(S) 連接,並與其保護的應用一起使用。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
@@ -96,7 +96,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "對應用程式登陸區域中的所有公共IP位址使用 DDoS 網路或IP保護計畫。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
@@ -109,8 +109,8 @@
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "使用至少兩個實例數配置自動縮放。",
+ "subcategory": "應用閘道",
+ "text": "配置自動縮放,最小實例數為 2。",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "可靠性"
},
@@ -122,7 +122,7 @@
"link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "跨可用性區域部署應用程式閘道",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "可靠性"
@@ -135,7 +135,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "將 Azure Front Door 與 WAF 策略配合使用,以交付和幫助保護跨多個 Azure 區域的全域 HTTP/S 應用。",
+ "text": "將 Azure Front Door 與 WAF 策略結合使用,以交付並幫助保護跨多個 Azure 區域的全球 HTTP/S 應用。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
@@ -160,7 +160,7 @@
"service": "Traffic Manager",
"severity": "高",
"subcategory": "流量管理員",
- "text": "使用流量管理器提供跨 HTTP/S 以外的協定的全域應用。",
+ "text": "使用流量管理器交付跨 HTTP/S 以外的協定的全域應用。",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "可靠性"
},
@@ -172,7 +172,7 @@
"service": "Entra",
"severity": "低",
"subcategory": "應用交付",
- "text": "如果使用者只需要訪問內部應用程式,是否考慮將 Microsoft Entra ID 應用程式代理作為 Azure 虛擬桌面 (AVD) 的替代方法?",
+ "text": "如果使用者只需要存取內部應用程式,Microsoft Entra ID 應用程式代理是否被視為 Azure 虛擬桌面 (AVD) 的替代方案?",
"training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "安全"
},
@@ -184,7 +184,7 @@
"service": "Entra",
"severity": "中等",
"subcategory": "應用交付",
- "text": "若要減少為網路中的傳入連接打開的防火牆埠數,請考慮使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對內部應用程式的安全且經過身份驗證的訪問。",
+ "text": "若要減少為網路中的傳入連接打開的防火牆埠數,請考慮使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對內部應用程式的安全和經過身份驗證的訪問。",
"training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "安全"
},
@@ -198,7 +198,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "在「預防」模式下部署 Front Door 的 WAF 策略。",
+ "text": "在「預防」模式下部署 Front Door 的 WAF 策略,以便 Web 應用程式防火牆採取適當的措施來允許或拒絕流量。",
"waf": "安全"
},
{
@@ -210,7 +210,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "避免將 Azure 流量管理器和 Azure Front Door 結合使用。",
+ "text": "避免結合使用 Azure 流量管理器和 Azure Front Door。",
"waf": "安全"
},
{
@@ -245,7 +245,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "為 Azure Front Door 選擇良好的運行狀況探測終結點。請考慮構建運行狀況終結點,以檢查應用程式的所有依賴項。",
+ "text": "為 Azure Front Door 選擇良好的運行狀況探測終結點。請考慮構建用於檢查應用程式的所有依賴項的運行狀況終結點。",
"waf": "可靠性"
},
{
@@ -270,7 +270,7 @@
"service": "Load Balancer",
"severity": "高",
"subcategory": "負載均衡器",
- "text": "使用 Azure NAT 閘道而不是負載均衡器出站規則,以獲得更好的 SNAT 可伸縮性",
+ "text": "使用 Azure NAT 閘道而不是負載均衡器出站規則來提高 SNAT 可伸縮性",
"waf": "可靠性"
},
{
@@ -283,7 +283,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "將託管 TLS 證書與 Azure Front Door 配合使用。降低運營成本和因證書續訂而導致的中斷風險。",
+ "text": "將託管 TLS 證書與 Azure Front Door 配合使用。降低運營成本和因證書續訂而導致的停機風險。",
"waf": "操作"
},
{
@@ -306,7 +306,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "將端到端 TLS 與 Azure Front Door 配合使用。使用 TLS 進行從用戶端到 Front Door 的連接,以及從 Front Door 到源的連接。",
+ "text": "將端到端 TLS 與 Azure Front Door 配合使用。使用 TLS 建立從用戶端到 Front Door 的連接,以及從 Front Door 到源的連接。",
"waf": "安全"
},
{
@@ -317,7 +317,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "將 HTTP 到 HTTPS 重定向與 Azure Front Door 配合使用。通過自動將較舊的用戶端重定向到 HTTPS 請求來支援它們。",
+ "text": "將 HTTP 到 HTTPS 重定向與 Azure Front Door 配合使用。通過自動將舊用戶端重定向到 HTTPS 請求來支持它們。",
"waf": "安全"
},
{
@@ -341,7 +341,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "針對工作負載優化 Azure Front Door WAF。減少誤報檢測。",
+ "text": "通過在檢測模式下配置 WAF,為工作負載優化 Azure Front Door WAF,以減少和修復誤報檢測。",
"waf": "安全"
},
{
@@ -377,7 +377,7 @@
"service": "Front Door",
"severity": "高",
"subcategory": "前門",
- "text": "啟用 Azure Front Door WAF 機器人保護規則集。機器人規則檢測好的和壞的機器人。",
+ "text": "啟用 Azure Front Door WAF 機器人保護規則集。機器人規則可檢測好的和壞的機器人。",
"waf": "安全"
},
{
@@ -399,7 +399,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "向 Azure Front Door WAF 添加速率限制。速率限制會阻止客戶端在短時間內意外或有意發送大量流量。",
+ "text": "向 Azure Front Door WAF 添加速率限制。速率限制可阻止客戶端在短時間內意外或有意發送大量流量。",
"waf": "安全"
},
{
@@ -410,7 +410,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "對 Azure Front Door WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可針對可能使基礎結構不堪重負的大量請求提供保護。",
+ "text": "對 Azure Front Door WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可防止可能使基礎結構不堪重負的極大量請求。",
"waf": "安全"
},
{
@@ -421,7 +421,7 @@
"service": "Front Door",
"severity": "低",
"subcategory": "前門",
- "text": "如果您不希望收到來自所有地理區域的流量,請使用地理篩選器來阻止來自非預期國家/地區的流量。",
+ "text": "如果您不希望來自所有地理區域的流量,請使用地理篩檢程式來阻止來自非預期國家/地區的流量。",
"waf": "安全"
},
{
@@ -432,7 +432,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "使用 Azure Front Door WAF 對流量進行地理篩選時,請指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
+ "text": "使用 Azure Front Door WAF 對流量進行地理篩選時,指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
"waf": "安全"
},
{
@@ -444,8 +444,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "啟用 Azure 應用程式閘道 WAF 機器人保護規則集 機器人規則可檢測好機器人和壞機器人。",
+ "subcategory": "應用閘道",
+ "text": "啟用 Azure 應用程式閘道 WAF 機器人保護規則集。機器人規則可檢測好的和壞的機器人。",
"waf": "安全"
},
{
@@ -456,8 +456,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "啟用 Azure 應用程式閘道 WAF 策略中啟用的請求正文檢查功能。",
+ "subcategory": "應用閘道",
+ "text": "啟用在 Azure 應用程式閘道 WAF 策略中啟用的請求正文檢查功能。",
"waf": "安全"
},
{
@@ -468,8 +468,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "針對工作負載優化 Azure 應用程式閘道 WAF。減少誤報檢測。",
+ "subcategory": "應用閘道",
+ "text": "在檢測模式下針對工作負載優化 Azure 應用程式閘道 WAF。減少誤報檢測。",
"waf": "安全"
},
{
@@ -481,8 +481,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "在「防護」模式下部署應用程式閘道的 WAF 策略。",
+ "subcategory": "應用閘道",
+ "text": "在「預防」模式下部署應用程式閘道的 WAF 策略。",
"waf": "安全"
},
{
@@ -492,8 +492,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "向 Azure 應用程式閘道 WAF 添加速率限制。速率限制會阻止客戶端在短時間內意外或有意發送大量流量。",
+ "subcategory": "應用閘道",
+ "text": "向 Azure 應用程式閘道 WAF 添加速率限制。速率限制可阻止客戶端在短時間內意外或有意發送大量流量。",
"waf": "安全"
},
{
@@ -503,8 +503,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "對 Azure 應用程式閘道 WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可針對可能使基礎結構不堪重負的大量請求提供保護。",
+ "subcategory": "應用閘道",
+ "text": "對 Azure 應用程式閘道 WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可防止可能使基礎結構不堪重負的極大量請求。",
"waf": "安全"
},
{
@@ -514,8 +514,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
"service": "App Gateway",
"severity": "低",
- "subcategory": "應用程式閘道",
- "text": "如果您不希望收到來自所有地理區域的流量,請使用地理篩選器來阻止來自非預期國家/地區的流量。",
+ "subcategory": "應用閘道",
+ "text": "如果您不希望來自所有地理區域的流量,請使用地理篩檢程式來阻止來自非預期國家/地區的流量。",
"waf": "安全"
},
{
@@ -525,8 +525,8 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "使用 Azure 應用程式閘道 WAF 對流量進行地理篩選時,請指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
+ "subcategory": "應用閘道",
+ "text": "使用 Azure 應用程式閘道 WAF 對流量進行地理篩選時,指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
"waf": "安全"
},
{
@@ -536,7 +536,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "使用最新的 Azure 應用程式閘道 WAF 規則集版本。規則集更新會定期更新,以考慮當前的威脅形勢。",
"waf": "安全"
},
@@ -547,7 +547,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "添加診斷設置以保存 Azure 應用程式閘道 WAF 紀錄。",
"waf": "操作"
},
@@ -569,7 +569,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "將 Azure 應用程式閘道 WAF 紀錄發送到 Microsoft Sentinel。",
"waf": "操作"
},
@@ -591,7 +591,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "將 Azure 應用程式閘道 WAF 設定定義為代碼。通過使用代碼,您可以更輕鬆地採用新的規則集版本並獲得額外的保護。",
"waf": "操作"
},
@@ -602,7 +602,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "使用 WAF 策略而不是舊版 WAF 配置。",
"waf": "操作"
},
@@ -613,8 +613,8 @@
"link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "篩選後端中的入站流量,以便它們僅接受來自應用程式閘道子網的連接,例如使用NSG。",
+ "subcategory": "應用閘道",
+ "text": "篩選後端中的入站流量,以便它們僅接受來自應用程式閘道子網的連接,例如與 NSG 的連接。",
"waf": "安全"
},
{
@@ -625,7 +625,7 @@
"service": "Front Door",
"severity": "中等",
"subcategory": "前門",
- "text": "確保源僅從 Azure Front Door 實例獲取流量。",
+ "text": "確保源僅接收來自 Azure Front Door 實例的流量。",
"waf": "安全"
},
{
@@ -635,8 +635,8 @@
"link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "您應該對發往後端伺服器的流量進行加密。",
+ "subcategory": "應用閘道",
+ "text": "您應該對流向後端伺服器的流量進行加密。",
"waf": "安全"
},
{
@@ -646,7 +646,7 @@
"link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "您應該使用 Web 應用程式防火牆。",
"waf": "安全"
},
@@ -657,7 +657,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "將 HTTP 重定向到 HTTPS",
"waf": "安全"
},
@@ -668,7 +668,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "使用閘道管理的 Cookie 將流量從使用者工作階段定向到同一伺服器進行處理",
"waf": "操作"
},
@@ -679,8 +679,8 @@
"link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
"service": "App Gateway",
"severity": "高",
- "subcategory": "應用程式閘道",
- "text": "在計劃的服務更新期間啟用連接耗盡,以防止與後端池的現有 membr 的連接丟失",
+ "subcategory": "應用閘道",
+ "text": "在計劃的服務更新期間啟用連接耗盡,以防止與後端池的現有成員的連接丟失",
"waf": "安全"
},
{
@@ -690,7 +690,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
"service": "App Gateway",
"severity": "低",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "創建自訂錯誤頁面以顯示個人化的用戶體驗",
"waf": "操作"
},
@@ -701,7 +701,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "編輯 HTTP 請求和回應標頭,以便更輕鬆地在用戶端和伺服器之間進行路由和資訊交換",
"waf": "安全"
},
@@ -712,8 +712,8 @@
"link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "配置 Front Door,通過快速全域故障轉移優化全球 Web 流量路由和頂級最終使用者性能和可靠性",
+ "subcategory": "應用閘道",
+ "text": "配置 Front Door 以優化全球 Web 流量路由和頂級最終使用者性能,並通過快速全域故障轉移實現可靠性",
"waf": "性能"
},
{
@@ -723,8 +723,8 @@
"link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
- "text": "使用傳輸層負載平衡",
+ "subcategory": "應用閘道",
+ "text": "使用傳輸層負載均衡",
"waf": "性能"
},
{
@@ -734,7 +734,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "根據主機名或域名為單個閘道上的多個 Web 應用程式配置路由",
"waf": "安全"
},
@@ -745,7 +745,7 @@
"link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
"service": "App Gateway",
"severity": "中等",
- "subcategory": "應用程式閘道",
+ "subcategory": "應用閘道",
"text": "集中管理 SSL 證書,以減少後端伺服器場的加密和解密開銷",
"waf": "安全"
},
@@ -756,15 +756,15 @@
"link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
"service": "App Gateway",
"severity": "低",
- "subcategory": "應用程式閘道",
- "text": "使用應用程式閘道對 WebSocket 和 HTTP/2 協定提供本機支援",
+ "subcategory": "應用閘道",
+ "text": "使用應用程式閘道獲得對 WebSocket 和 HTTP/2 協定的本機支援",
"waf": "安全"
}
],
"metadata": {
"name": "Azure Application Delivery Networking",
"state": "GA",
- "timestamp": "March 15, 2024",
+ "timestamp": "August 08, 2024",
"waf": "all"
},
"severities": [
@@ -784,11 +784,11 @@
"name": "未驗證"
},
{
- "description": "有一個與此檢查關聯的措施項",
+ "description": "有一個與此檢查關聯的操作項",
"name": "打開"
},
{
- "description": "此檢查已通過驗證,並且沒有與之關聯的進一步操作項",
+ "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項",
"name": "實現"
},
{
@@ -797,7 +797,7 @@
},
{
"description": "不適用於當前設計",
- "name": "不適用"
+ "name": "N/A"
}
],
"waf": [
diff --git a/checklists/waf_checklist.en.json b/checklists/waf_checklist.en.json
index 086f94e74..acb339bc5 100644
--- a/checklists/waf_checklist.en.json
+++ b/checklists/waf_checklist.en.json
@@ -1,10407 +1,8721 @@
{
"items": [
{
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
- "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Devices/deviceUpdateServices",
- "checklist": "Device Update Review",
- "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Device Update for IoT Hub",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Implement an error handling policy at the global level",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use one Entra tenant for managing your Azure resources, unless you have a clear regulatory or business requirement for multi-tenants.",
+ "text": "Ensure all APIs policies include a element.",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "Low",
- "text": "Use Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
"waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"severity": "High",
- "text": "If you give a partner access to administer your tenant, use Azure Lighthouse.",
- "waf": "Cost"
+ "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
- "severity": "High",
- "text": "Enforce a RBAC model that aligns to your cloud operating model. Scope and Assign across Management Groups and Subscriptions.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Enable Application Insights for more detailed telemetry",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
"severity": "High",
- "text": "Only use the authentication type Work or school account for all account types. Avoid using the Microsoft account",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
- "severity": "Medium",
- "text": "Only use groups to assign permissions. Add on-premises groups to the Entra ID only group if a group management system is already in place.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Security"
+ "text": "Configure alerts on the most critical metrics",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
"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/",
+ "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Security"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"severity": "High",
- "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/",
+ "text": "Protect incoming requests to APIs (data plane) with Azure AD",
"waf": "Security"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
"waf": "Security"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"severity": "Medium",
- "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/",
+ "text": "Create appropriate groups to control the visibility of the products",
"waf": "Security"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"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.",
- "waf": "Security"
- },
- {
- "ammp": true,
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
- "severity": "High",
- "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"
+ "text": "Use Backends feature to eliminate redundant API backend configurations",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "Medium",
- "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"
+ "text": "Use Named Values to store common values that can be used in policies",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"severity": "Medium",
- "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"
+ "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
"severity": "Medium",
- "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"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
- "severity": "High",
- "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"
+ "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
"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"
+ "text": "Ensure there is an automated backup routine",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
"severity": "Medium",
- "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance.",
+ "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
- "severity": "Low",
- "text": "If you need transit between ExpressRoute and VPN gateways in hub and spoke scenarios, use Azure Route Server.",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.Network/virtualHubs",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
"severity": "Low",
- "text": "If using Route Server, use a /27 prefix for the Route Server subnet.",
- "waf": "Security"
+ "text": "If you need to log at high performance levels, consider Event Hubs policy",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"severity": "Medium",
- "text": "For network architectures with multiple hub-and-spoke topologies across Azure regions, use global virtual network peerings between the hub VNets to connect the regions to each other.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "text": "Apply throttling policies to control the number of requests per second",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Monitor for Networks to monitor the end-to-end state of the networks on Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Operations"
+ "text": "Configure autoscaling to scale out the number of instances when the load increases",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"severity": "Medium",
- "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"
+ "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"severity": "Medium",
- "text": "Limit the number of routes per route table to 400.",
+ "text": "Use the premium tier for production workloads.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
- "severity": "High",
- "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
- "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.",
- "waf": "Security"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
+ "severity": "High",
+ "text": "Be aware of APIM's limits",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
+ "severity": "High",
+ "text": "Ensure that the self-hosted gateway deployments are resilient.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
"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"
+ "text": "Use Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "High",
- "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/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Deploy the service within a Virtual Network (VNet)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
"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/",
+ "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
- "severity": "High",
- "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"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "Medium",
+ "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "High",
- "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"
+ "text": "Disable Public Network Access",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"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').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "text": "Simplify management with PowerShell automation scripts",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "Medium",
- "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"
+ "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
- "severity": "Low",
- "text": "Special workloads that require and deploy their own DNS (such as Red Hat OpenShift) should use their preferred DNS solution.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Implement DevOps and CI/CD in your workflow",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Bastion to securely connect to your network.",
+ "text": "Secure APIs using client certificate authentication",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Bastion in a subnet /26 or larger.",
+ "text": "Secure backend services using client certificate authentication",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"severity": "High",
- "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/",
+ "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"severity": "High",
- "text": "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
- "severity": "High",
- "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"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
- "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/",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
+ "severity": "Medium",
+ "text": "Use managed identities to authenticate to other Azure resources whenever possible",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
"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.",
+ "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
"severity": "Medium",
- "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"
+ "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "description": "You can use AS-path prepending and connection weights to influence traffic from Azure to on-premises, and the full range of BGP attributes in your own routers to influence traffic from on-premises to Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
"severity": "Medium",
- "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/",
+ "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"severity": "Medium",
- "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"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
- "severity": "High",
- "text": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost.",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
- "severity": "High",
- "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"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Use more than 1 app instance for your apps",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "For scenarios that require bandwidth higher than 10 Gbps or dedicated 10/100-Gbps ports, use ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
+ "text": "Set up autoscaling in Spring Cloud Gateway",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
- "severity": "Medium",
- "text": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "Low",
+ "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
"severity": "Medium",
- "text": "Use redundant VPN appliances on-premises (active/active or active/passive).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"severity": "High",
- "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"
+ "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Monitor ExpressRoute availability and utilization using built-in Express Route Insights.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Use Connection Monitor for connectivity monitoring across the network, especially between on-premises and Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Use ExpressRoute circuits from different peering locations for redundancy.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Use site-to-site VPN as failover of ExpressRoute, if only using a single ExpressRoute circuit.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
- "severity": "High",
- "text": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
- "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.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Ensure the two physical links of your ExpressRoute circuit are connected to two distinct edge devices in your network.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "severity": "Medium",
- "text": "Ensure Bidirectional Forwarding Detection (BFD) is enabled and configured on customer or provider edge routing devices.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
"severity": "High",
- "text": "Connect the ExpressRoute Gateway to two or more circuits from different peering locations for higher resiliency.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Reliability"
+ "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Configure diagnostic logs and alerts for ExpressRoute virtual network gateway.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operations"
+ "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Do not use ExpressRoute circuits for VNet-to-VNet communication.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Performance"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "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"
+ "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
"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).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Has an RBAC model been created for use within VMware vSphere",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"severity": "High",
- "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.",
+ "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
"severity": "High",
- "text": "Use Azure Firewall Premium to enable additional security features.",
+ "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"severity": "High",
- "text": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection.",
- "waf": "Security"
+ "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
"severity": "High",
- "text": "Configure Azure Firewall IDPS mode to Deny for additional protection.",
- "waf": "Security"
+ "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
- "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.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "Medium",
- "text": "Add diagnostic settings to save logs, using the Resource Specific destination table, for all Azure Firewall deployments.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "Important",
- "text": "Migrate from Azure Firewall Classic rules (if exist) to Firewall Policy.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
+ "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).",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
"severity": "High",
- "text": "Use a /26 prefix for your Azure Firewall subnets.",
+ "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
- "severity": "Medium",
- "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
- "severity": "Medium",
- "text": "Use IP Groups or IP prefixes to reduce number of IP table rules.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
- "severity": "Medium",
- "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": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
- "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.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
"severity": "High",
- "text": "If you are using Azure Firewall Premium, enable TLS Inspection.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "severity": "Low",
- "text": "Use web categories to allow or deny outbound access to specific topics.",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
- "severity": "Medium",
- "text": "As part of your TLS inspection, plan for receiving traffic from Azure App Gateways for inspection.",
- "waf": "Performance"
+ "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"severity": "Medium",
- "text": "Enable Azure Firewall DNS proxy configuration.",
+ "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)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"severity": "High",
- "text": "Integrate Azure Firewall with Azure Monitor and enable diagnostic logging to store and analyze firewall logs.",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
- "severity": "Low",
- "text": "Implement backups for your firewall rules",
- "waf": "Operations"
+ "text": "Limit use of CloudAdmin account to emergency access only",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
- "severity": "High",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"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",
+ "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "text": "Is East-West traffic filtering implemented within NSX-T",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"severity": "High",
- "text": "Use at least a /27 prefix for your Gateway subnets.",
+ "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",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"severity": "High",
- "text": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity.",
+ "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use NSGs to help protect traffic across subnets, as well as east/west traffic across the platform (traffic between landing zones).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
"severity": "Medium",
- "text": "Enable VNet Flow Logs and feed them into Traffic Analytics to gain insights into internal and external traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
- "severity": "Medium",
- "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"
- },
- {
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"severity": "Medium",
- "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"
+ "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
"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"
+ "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)",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
- "severity": "Medium",
- "text": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
+ "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)",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
- "severity": "Medium",
- "text": "Ensure that your virtual WAN network architecture aligns to an identified architecture scenario.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
- "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.",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"severity": "Medium",
- "text": "Do not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.",
- "waf": "Reliability"
+ "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
- "severity": "Medium",
- "text": "Use AS-Path as hub routing preference, since it is more flexible than ExpressRoute or VPN.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
- "severity": "Medium",
- "text": "Configure label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "High",
- "text": "Assign at least a /23 prefix to virtual hubs to ensure enough IP space is available.",
+ "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "High",
- "text": "Leverage Azure Policy strategically, define controls for your environment, using Policy Initiatives to group related policies.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"severity": "Medium",
- "text": "Map regulatory and compliance requirements to Azure Policy definitions and Azure role assignments.",
- "waf": "Security"
+ "text": "Ensure that you have a policy around ESXi host density and efficiency, keeping in mind the lead time for requesting new nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "Medium",
- "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes.",
- "waf": "Security"
+ "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "High",
- "text": "Manage policy assignments at the highest appropriate level with exclusions at bottom levels, if required.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "Low",
- "text": "Use Azure Policy to control which services users can provision at the subscription/management group level.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"severity": "High",
- "text": "Use built-in policies where possible to minimize operational overhead.",
- "waf": "Security"
+ "text": "Ensure all required resource reside within the same Azure availability zone(s)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "description": "Assigning the Resource Policy Contributor role to specific scopes allows you to delegate policy management to relevant teams. For instance, a central IT team may oversee management group-level policies, while application teams handle policies for their subscriptions, enabling distributed governance with adherence to organizational standards.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "Medium",
- "text": "Assign the built-in Resource Policy Contributor role at a particular scope to enable application-level governance.",
+ "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"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.",
+ "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
- "severity": "Medium",
- "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"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, deploy sovereignty policy baseline and assign at correct management group level.",
- "waf": "Security"
+ "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, document Sovereign Control objectives to policy mapping.",
- "waf": "Security"
+ "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, ensure process is in place for management of 'Sovereign Control objectives to policy mapping'.",
+ "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"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.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Operations"
+ "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"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"
+ "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "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.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Are data processing implications (service provider / service consumer model) clear and documented",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs in Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operations"
+ "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
- "severity": "Medium",
- "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs outside of Azure using Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/networkWatchers",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
- "severity": "Medium",
- "text": "Use Network Watcher to proactively monitor traffic flows.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
- "severity": "Medium",
- "text": "Use Azure Monitor Logs for insights and reporting.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "Medium",
- "text": "Use Azure Monitor alerts for the generation of operational alerts.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"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.",
+ "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
"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"
+ "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
- "severity": "Medium",
- "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.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"severity": "Medium",
- "text": "Monitor VM security configuration drift via Azure Policy.",
- "waf": "Security"
+ "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure Site Recovery for Azure-to-Azure Virtual Machines disaster recovery scenarios. This enables you to replicate workloads across regions.",
+ "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Azure-native backup capabilities, or an Azure-compatible, 3rd-party backup solution.",
+ "text": "Ensure workloads running on Azure VMware Solution are hybrid managed using Azure Arc for Servers (Arc for Azure VMware Solution is in preview)",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "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.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"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.",
+ "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
- "severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials.",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use different Azure Key Vaults for different applications and regions to avoid transaction scale limits and restrict access to secrets.",
- "waf": "Security"
+ "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
+ "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
"waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
"severity": "Medium",
- "text": "Follow a least privilege model by limiting authorization to permanently delete keys, secrets, and certificates to specialized custom Microsoft Entra ID roles.",
- "waf": "Security"
+ "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"severity": "Medium",
- "text": "Automate the certificate management and renewal process with public certificate authorities to ease administration.",
- "waf": "Security"
+ "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"severity": "Medium",
- "text": "Establish an automated process for key and certificate rotation.",
- "waf": "Security"
+ "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Enable firewall and virtual network service endpoint or private endpoint on the vault to control access to the key vault.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use the platform-central Azure Monitor Log Analytics workspace to audit key, certificate, and secret usage within each instance of Key Vault.",
- "waf": "Security"
+ "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Delegate Key Vault instantiation and privileged access and use Azure Policy to enforce a consistent compliant configuration.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "waf": "Security"
+ "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?",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"severity": "Medium",
- "text": "If you want to bring your own keys, this might not be supported across all considered services. Implement relevant mitigation so that inconsistencies don't hinder desired outcomes. Choose appropriate region pairs and disaster recovery regions that minimize latency.",
- "waf": "Security"
+ "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"severity": "Medium",
- "text": "For Sovereign Landing Zone, use Azure Key Vault managed HSM to store your secrets and credentials.",
- "waf": "Security"
+ "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Microsoft Entra ID reporting capabilities to generate access control audit reports.",
- "waf": "Security"
+ "text": "Deploy your backup solution outside of vSan, on Azure native components",
+ "waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
- "severity": "High",
- "text": "Enable Defender Cloud Security Posture Management for all subscriptions.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
+ "waf": "Reliability"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
- "severity": "High",
- "text": "Enable a Defender Cloud Workload Protection Plan for Servers on all subscriptions.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For manual deployments, all configuration and deployments must be documented",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
- "severity": "High",
- "text": "Enable Defender Cloud Workload Protection Plans for Azure Resources on all subscriptions.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "severity": "High",
- "text": "Enable Endpoint Protection on IaaS Servers.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
- "severity": "Medium",
- "text": "Monitor base operating system patching drift via Azure Monitor Logs and Defender for Cloud.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployments, request or reserve quota prior to starting the deployment",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
- "severity": "Medium",
- "text": "Connect default resource configurations to a centralized Azure Monitor Log Analytics workspace.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
- "severity": "Medium",
- "text": "For Sovereign Landing Zone, enable transparancy logs on the Entra ID tenant.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
+ "waf": "Operations"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
- "severity": "Medium",
- "text": "For Sovereign Landing Zone, enable customer Lockbox on the Entra ID tenant.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "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",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
- "severity": "High",
- "text": "Enable secure transfer to storage accounts.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
- "severity": "High",
- "text": "Enable container soft delete for the storage account to recover a deleted container and its contents.",
- "waf": "Security"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "severity": "Low",
+ "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "High",
- "text": "Use Key Vault secrets to avoid hard-coding sensitive information such as credentials (virtual machines user passwords), certificates or keys.",
- "waf": "Operations"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
+ "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",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
- "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.",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
"severity": "Medium",
- "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
- "waf": "Reliability"
+ "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
- "waf": "Reliability"
+ "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"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.",
- "waf": "Reliability"
+ "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
"severity": "Medium",
- "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
- "waf": "Reliability"
+ "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "High",
- "text": "Learn how to trigger a manual failover.",
+ "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
- "severity": "High",
- "text": "Learn how to fail back after a failover.",
- "waf": "Reliability"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "Low",
- "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
+ "waf": "Performance"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"severity": "Medium",
- "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
+ "severity": "Medium",
+ "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"severity": "Medium",
- "text": "Implement health checks",
+ "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
"severity": "High",
- "text": "Refer to backup and restore best practices for Azure App Service",
+ "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"severity": "High",
- "text": "Implement Azure App Service reliability best practices",
+ "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
- "severity": "Low",
- "text": "Familiarize with how to move an App Service app to another region During a disaster",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
+ "severity": "High",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
"severity": "High",
- "text": "Familiarize with reliability support in Azure App Service",
+ "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
- "severity": "Medium",
- "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
+ "severity": "High",
+ "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
- "severity": "Medium",
- "text": "Monitor App Service instances using Health checks",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
+ "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
+ "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Disable Azure Container Registry image export",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
- "severity": "Medium",
- "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
- "severity": "Low",
- "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
+ "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Enable Azure Policies for Azure Container Registry",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
+ "guid": "d345293c-7639-4637-a551-c5c04e401955",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
+ "service": "ACR",
"severity": "High",
- "text": "Use Key Vault to store secrets",
+ "text": "Sign and Verify containers with notation (Notary v2)",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "High",
- "text": "Use Managed Identity to connect to Key Vault",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
+ "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
+ "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Encrypt registry with a customer managed key",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Store the App Service TLS certificate in Key Vault.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
+ "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
"severity": "High",
- "text": "Use Key Vault to store TLS certificate.",
+ "text": "Use Managed Identities to connect instead of Service Principals",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
- "severity": "Medium",
- "text": "Isolate systems that process sensitive information",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
+ "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Disable local authentication for management plane access",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
- "severity": "Medium",
- "text": "Do not store sensitive data on local disk",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
+ "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
+ "service": "ACR",
+ "severity": "High",
+ "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable anonymous pull/push access",
+ "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
+ "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
+ "service": "ACR",
"severity": "Medium",
- "text": "Use an established Identity Provider for authentication",
+ "text": "Disable Anonymous pull access",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
+ "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
+ "service": "ACR",
"severity": "High",
- "text": "Deploy from a trusted environment",
+ "text": "Disable repository-scoped access tokens",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
+ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
+ "service": "ACR",
"severity": "High",
- "text": "Disable basic authentication",
+ "text": "Deploy images from a trusted environment",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
- "severity": "High",
- "text": "Use Managed Identity to connect to resources",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
+ "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Disable Azure ARM audience tokens for authentication",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
- "severity": "High",
- "text": "Pull containers using a Managed Identity",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
+ "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
+ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Enable diagnostics logging",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
+ "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
+ "service": "ACR",
"severity": "Medium",
- "text": "Send App Service runtime logs to Log Analytics",
+ "text": "Control inbound network access with Private Link",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Disable public network access if inbound network access is secured using Private Link",
+ "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
+ "service": "ACR",
"severity": "Medium",
- "text": "Send App Service activity logs to Log Analytics",
+ "text": "Disable Public Network access",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Only the ACR Premium SKU supports Private Link access",
+ "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
+ "service": "ACR",
"severity": "Medium",
- "text": "Outbound network access should be controlled",
+ "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
+ "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
+ "service": "ACR",
"severity": "Low",
- "text": "Ensure a stable IP for outbound communications towards internet addresses",
+ "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
+ "service": "ACR",
+ "severity": "Medium",
+ "text": "Deploy validated container images",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure Container Registry Security Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
+ "service": "ACR",
"severity": "High",
- "text": "Inbound network access should be controlled",
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
- "severity": "High",
- "text": "Use a WAF in front of App Service",
- "waf": "Security"
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
+ "severity": "Medium",
+ "text": "Follow reliability support recommendations in Azure Bot Service",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
- "severity": "High",
- "text": "Avoid for WAF to be bypassed",
- "waf": "Security"
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
+ "severity": "Medium",
+ "text": "Deploying bots with local data residency and regional compliance",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
"severity": "Medium",
- "text": "Set minimum TLS policy to 1.2",
- "waf": "Security"
+ "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
- "severity": "High",
- "text": "Use HTTPS only",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
+ "service": "Service Bus",
+ "severity": "Low",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
- "severity": "High",
- "text": "Wildcards must not be used for CORS",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
+ "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
- "severity": "High",
- "text": "Turn off remote debugging",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
+ "service": "Service Bus",
+ "severity": "Medium",
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
+ "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Enable Defender for Cloud - Defender for App Service",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
- "severity": "Medium",
- "text": "Enable DDOS Protection Standard on the WAF VNet",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
+ "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
+ "service": "Service Bus",
+ "severity": "High",
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
+ "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Pull containers over a Virtual Network",
+ "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Conduct a penetration test",
+ "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "arm-service": "Microsoft.ServiceBus/namespaces",
+ "checklist": "Service Bus Review Checklist",
+ "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
+ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
+ "service": "Service Bus",
"severity": "Medium",
- "text": "Deploy validated code",
+ "text": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Security"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Security"
+ "text": "Select the right Function hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "High",
- "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure",
- "waf": "Security"
+ "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
"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",
- "waf": "Security"
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "High",
- "text": "Ensure that vCenter is connected to ADDS to enable authentication based on 'named user accounts'",
- "waf": "Security"
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
+ "severity": "High",
+ "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "Medium",
- "text": "Ensure that the connection from vCenter to ADDS is using a secure protocol (LDAPS)",
- "waf": "Security"
+ "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"severity": "Medium",
- "text": "CloudAdmin account in vCenter IdP is used only as an emergency account (break-glass)",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure that NSX-Manager is integrated with an external Identity provider (LDAPS)",
- "waf": "Security"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
+ "service": "Cognitive Services",
"severity": "Medium",
- "text": "Has an RBAC model been created for use within VMware vSphere",
- "waf": "Security"
+ "text": "Leverage FTA HandBook for Cognitive Services",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
+ "service": "Cognitive Services",
"severity": "Medium",
- "text": "RBAC permissions should be granted on ADDS groups and not on specific users",
- "waf": "Security"
+ "text": "Backup Your Prompts",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
+ "service": "Cognitive Services",
"severity": "High",
- "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only",
- "waf": "Security"
+ "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations",
- "waf": "Security"
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
+ "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
+ "service": "Cognitive Services",
+ "severity": "Medium",
+ "text": "Backup Your ChatGPT conversations",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "severity": "High",
- "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand",
- "waf": "Performance"
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
+ "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
+ "service": "Cognitive Services",
+ "severity": "Medium",
+ "text": "CI/CD for custom speech",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'",
- "waf": "Operations"
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Cognitive Services Review Checklist",
+ "guid": "3687a046-7a1f-4893-9bda-43324f248116",
+ "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
+ "service": "Cognitive Services",
+ "severity": "Low",
+ "text": "Move a knowledge base using export-import",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
- "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",
- "waf": "Operations"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "Low",
+ "text": "Refer to baseline highly available zone-redundant web application architecture for best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"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",
- "waf": "Operations"
+ "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
"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).",
- "waf": "Operations"
+ "text": "Leverage Availability Zones where regionally applicable (requires Premium v2 or v3 tier)",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
+ "severity": "Medium",
+ "text": "Implement health checks",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
"severity": "High",
- "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)",
- "waf": "Security"
+ "text": "Refer to backup and restore best practices for Azure App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
"severity": "High",
- "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles",
- "waf": "Security"
+ "text": "Implement Azure App Service reliability best practices",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
- "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)",
- "waf": "Security"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
+ "severity": "Low",
+ "text": "Familiarize with how to move an App Service app to another region During a disaster",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
"severity": "High",
- "text": "Limit use of CloudAdmin account to emergency access only",
- "waf": "Security"
+ "text": "Familiarize with reliability support in Azure App Service",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"severity": "Medium",
- "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter",
- "waf": "Security"
+ "text": "Ensure \"Always On\" is enabled for Function Apps running on a app service plan",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "Medium",
- "text": "Is a process defined to regularly rotate cloudadmin (vCenter) and admin (NSX) credentials",
- "waf": "Security"
+ "text": "Monitor App Service instances using Health checks",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
- "severity": "High",
- "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution",
- "waf": "Security"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
+ "severity": "Medium",
+ "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
- "severity": "Medium",
- "text": "Is East-West traffic filtering implemented within NSX-T",
- "waf": "Security"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
+ "severity": "Low",
+ "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use Azure Key Vault to store any secrets the application needs. Key Vault provides a safe and audited environment for storing secrets and is well-integrated with App Service through the Key Vault SDK or App Service Key Vault References.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"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",
+ "text": "Use Key Vault to store secrets",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use a Managed Identity to connect to Key Vault either using the Key Vault SDK or through App Service Key Vault References.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"severity": "High",
- "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
- "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",
+ "text": "Use Managed Identity to connect to Key Vault",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
- "severity": "Medium",
- "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Store the App Service TLS certificate in Key Vault.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Use Key Vault to store TLS certificate.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Systems that process sensitive information should be isolated. To do so, use separate App Service Plans or App Service Environments and consider the use of different subscriptions or management groups.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "Medium",
- "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager",
+ "text": "Isolate systems that process sensitive information",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Local disks on App Service are not encrypted and sensitive data should not be stored on those. (For example: D:\\\\Local and %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"severity": "Medium",
- "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution",
+ "text": "Do not store sensitive data on local disk",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "For authenticated web application, use a well established Identity Provider like Azure AD or Azure AD B2C. Leverage the application framework of your choice to integrate with this provider or use the App Service Authentication / Authorization feature.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"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)",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
- "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)",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
- "severity": "Low",
- "text": "When in-guest encryption is used, store encryption keys in Azure Key vault when possible",
+ "text": "Use an established Identity Provider for authentication",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
- "severity": "Medium",
- "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy code to App Service from a controlled and trusted environment, like a well-managed and secured DevOps deployment pipeline. This avoids code that was not version controlled and verified to be deployed from a malicious host.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Deploy from a trusted environment",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Disable basic authentication for both FTP/FTPS and for WebDeploy/SCM. This disables access to these services and enforces the use of Azure AD secured endpoints for deployment. Note that the SCM site can also be opened using Azure AD credentials.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"severity": "High",
- "text": "Ensure that the appropriate vSAN Data redundancy method is used (RAID specification)",
- "waf": "Reliability"
+ "text": "Disable basic authentication",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where possible use Managed Identity to connect to Azure AD secured resources. If this is not possible, store secrets in Key Vault and connect to Key Vault using a Managed Identity instead.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
"severity": "High",
- "text": "Ensure that the Failure-to-tolerate policy is in place to meet your vSAN storage needs",
- "waf": "Reliability"
+ "text": "Use Managed Identity to connect to resources",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these using a Managed Identity.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
"severity": "High",
- "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement",
- "waf": "Reliability"
+ "text": "Pull containers using a Managed Identity",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "By configuring the diagnostic settings of App Service, you can send all telemetry to Log Analytics as the central destination for logging and monitoring. This allows you to monitor runtime activity of App Service such as HTTP logs, application logs, platform logs, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "Medium",
- "text": "Ensure that access constraints to ESXi are understood, there are access limits which might affect 3rd party solutions.",
- "waf": "Operations"
+ "text": "Send App Service runtime logs to Log Analytics",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Set up a diagnostic setting to send the activity log to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the App Service resource itself.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"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",
- "waf": "Operations"
+ "text": "Send App Service activity logs to Log Analytics",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Control outbound network access using a combination of regional VNet integration, network security groups and UDR's. Traffic should be routed to an NVA such as Azure Firewall. Ensure to monitor the Firewall's logs.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "Medium",
- "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used",
- "waf": "Cost"
+ "text": "Outbound network access should be controlled",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "You can provide a stable outbound IP by using VNet integration and using a VNet NAT Gateway or an NVA like Azure Firewall. This allows the receiving party to allow-list based on IP, should that be needed. Note that for communications towards Azure Services often there's no need to depend on the IP address and mechanics like Service Endpoints should be used instead. (Also the use of private endpoints on the receiving end avoids for SNAT to happen and provides a stable outbound IP range.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
"severity": "Low",
- "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution",
- "waf": "Cost"
+ "text": "Ensure a stable IP for outbound communications towards internet addresses",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
- "severity": "Medium",
- "text": "Consider the use of Azure Private-Link when using other Azure Native Services",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Control inbound network access using a combination of App Service Access Restrictions, Service Endpoints or Private Endpoints. Different access restrictions can be required and configured for the web app itself and the SCM site.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Inbound network access should be controlled",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Protect against malicious inbound traffic using a Web Application Firewall like Application Gateway or Azure Front Door. Make sure to monitor the WAF's logs.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
"severity": "High",
- "text": "Ensure all required resource reside within the same Azure availability zone(s)",
- "waf": "Performance"
+ "text": "Use a WAF in front of App Service",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
- "severity": "Medium",
- "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Make sure the WAF cannot be bypassed by locking down access to only the WAF. Use a combination of Access Restrictions, Service Endpoints and Private Endpoints.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Avoid for WAF to be bypassed",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Set minimum TLS policy to 1.2 in App Service configuration.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
"severity": "Medium",
- "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads",
+ "text": "Set minimum TLS policy to 1.2",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure App Service to use HTTPS only. This causes App Service to redirect from HTTP to HTTPS. Strongly consider the use of HTTP Strict Transport Security (HSTS) in your code or from your WAF, which informs browsers that the site should only be accessed using HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
"severity": "High",
- "text": "Enable Diagnostic and metric logging on Azure VMware Solution",
- "waf": "Operations"
+ "text": "Use HTTPS only",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
- "severity": "Medium",
- "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads",
- "waf": "Operations"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Do not use wildcards in your CORS configuration, as this allows all origins to access the service (thereby defeating the purpose of CORS). Specifically only allow the origins that you expect to be able to access the service.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Wildcards must not be used for CORS",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads",
- "waf": "Operations"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Remote debugging must not be turned on in production as this opens additional ports on the service which increases the attack surface. Note that the service does turn of remote debugging automatically after 48 hours.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
+ "severity": "High",
+ "text": "Turn off remote debugging",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Enable Defender for App Service. This (amongst other threats) detects communications to known malicious IP addresses. Review the recommendations from Defender for App Service as part of your operations.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
"severity": "Medium",
- "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution",
+ "text": "Enable Defender for Cloud - Defender for App Service",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure provides DDoS Basic protection on its network, which can be improved with intelligent DDoS Standard capabilities which learns about normal traffic patterns and can detect unusual behavior. DDoS Standard applies to a Virtual Network so it must be configured for the network resource in front of the app, such as Application Gateway or an NVA.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"severity": "Medium",
- "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud",
+ "text": "Enable DDOS Protection Standard on the WAF VNet",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
- "severity": "High",
- "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Where using images stored in Azure Container Registry, pull these over a virtual network from Azure Container Registry using its private endpoint and the app setting 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
+ "severity": "Medium",
+ "text": "Pull containers over a Virtual Network",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
- "severity": "High",
- "text": "Are data processing implications (service provider / service consumer model) clear and documented",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Conduct a penetration test on the web application following the penetration testing rules of engagement.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
+ "severity": "Medium",
+ "text": "Conduct a penetration test",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"severity": "Medium",
- "text": "Consider using CMK (Customer Managed Key) for vSAN only if needed for compliance reason(s).",
+ "text": "Deploy validated code",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
- "severity": "High",
- "text": "Create dashboards to enable core Azure VMware Solution monitoring insights",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
"severity": "High",
- "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)",
- "waf": "Operations"
+ "text": "Use up-to-date platforms, languages, protocols and frameworks",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
- "severity": "High",
- "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
+ "severity": "Medium",
+ "text": "Consider the 'Azure security baseline for storage'",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"severity": "High",
- "text": "Ensure alerts are configured for Azure Service Health alerts and notifications",
- "waf": "Operations"
+ "text": "Consider using private endpoints for Azure Storage",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "Low",
- "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?",
- "waf": "Operations"
+ "text": "Ensure older storage accounts are not using 'classic deployment model'",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"severity": "High",
- "text": "Ensure the vSAN storage policy for VM's is NOT the default storage policy as this policy applies thick provisioning",
- "waf": "Operations"
+ "text": "Enable Microsoft Defender for all of your storage accounts",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Ensure vSphere content libraries are not placed on vSAN as vSAN is a finite resource",
- "waf": "Operations"
+ "text": "Enable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Ensure data repositories for the backup solution are stored outside of vSAN storage. Either in Azure native or on a disk pool-backed datastore",
- "waf": "Operations"
+ "text": "Disable 'soft delete' for blobs",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
- "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)",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Enable 'soft delete' for containers",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor",
- "waf": "Operations"
+ "text": "Disable 'soft delete' for containers",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
- "severity": "Medium",
- "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Enable resource locks on storage accounts",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
- "severity": "Medium",
- "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Consider immutable blobs",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Require HTTPS, i.e. disable port 80 on the storage account",
"waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
- "severity": "Medium",
- "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Have all DR solutions been considered and a solution that is best for your business been decided upon? [SRM/JetStream/Zerto/Veeam/...]",
- "waf": "Reliability"
+ "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "AAD tokens should be favored over shared access signatures, wherever possible",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
- "waf": "Reliability"
+ "text": "Least privilege in IaM permissions",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"severity": "High",
- "text": "Use Automated recovery plans with either of the Disaster solutions, avoid manual tasks as much as possible",
- "waf": "Reliability"
+ "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "Medium",
- "text": "Use the geopolitical region pair as the secondary disaster recovery environment",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"severity": "High",
- "text": "Use 2 different address spaces between the regions, for example: 10.0.0.0/16 and 192.168.0.0/16 for the different regions",
- "waf": "Reliability"
+ "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"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?",
- "waf": "Reliability"
+ "text": "When using storage account keys, consider enabling a 'key expiration policy'",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"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/�. ]",
- "waf": "Reliability"
+ "text": "Consider configuring an SAS expiration policy",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
- "waf": "Reliability"
+ "text": "Consider linking SAS to a stored access policy",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Deploy your backup solution outside of vSan, on Azure native components",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "Low",
- "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?",
- "waf": "Reliability"
+ "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "Low",
- "text": "For manual deployments, all configuration and deployments must be documented",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "Low",
- "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployments, deploy a minimal private cloud and scale as needed",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployments, request or reserve quota prior to starting the deployment",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "Low",
- "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Strive for short validity periods for ad-hoc SAS",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "Low",
- "text": "Implement human understandable names for ExR authorization keys to allow for easy identification of the keys purpose/use",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
+ "severity": "Medium",
+ "text": "Apply a narrow scope to a SAS",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "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",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
+ "severity": "Medium",
+ "text": "Consider scoping SAS to a specific client IP address, wherever possible",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
"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.",
- "waf": "Operations"
+ "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "Low",
- "text": "When performing automated configuration of NSX-T segments with a single Tier-1 gateway, use Azure Portal APIs instead of NSX-Manager APIs",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"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",
- "waf": "Performance"
+ "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
- "severity": "Medium",
- "text": "When intending to use automated scale-in, be sure to take storage policy requirements into account before performing such action",
- "waf": "Performance"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Avoid overly broad CORS policies",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
- "severity": "Medium",
- "text": "Scaling operations always need to be serialized within a single SDDC as only one scale operation can be performed at a time (even when multiple clusters are used)",
- "waf": "Performance"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
+ "severity": "High",
+ "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
- "waf": "Performance"
+ "text": "Determine which/if platform encryption should be used.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Define and enforce scale in/out maximum limits for your environment in the automations",
- "waf": "Performance"
+ "text": "Determine which/if client-side encryption should be used.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
- "severity": "Medium",
- "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses",
- "waf": "Operations"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
+ "severity": "High",
+ "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
+ "service": "Azure Storage",
"severity": "High",
- "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "text": "Leverage a storagev2 account type for better performance and reliability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"severity": "High",
- "text": "When using MON, you cannot enable MON on more than 100 Network extensions",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.",
- "waf": "Performance"
+ "text": "For write operation after failover, use customer-Managed Failover ",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "For low connectivity regions connecting into Azure (500Mbps or less), considering deploying the HCX WAN optimization appliance",
- "waf": "Performance"
+ "text": "Understand Microsoft-Managed Failover details",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Storage Review Checklist",
+ "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
+ "service": "Azure Storage",
"severity": "Medium",
- "text": "Ensure that migrations are started from the on-premises appliance and NOT from the Cloud appliance (do NOT perform a reverse migration)",
+ "text": "Enable Soft Delete",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "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.",
- "waf": "Reliability"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
+ "severity": "Low",
+ "text": "Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Ensure that a dedicated ExpressRoute Gateway is being used for external data storage solutions",
- "waf": "Reliability"
+ "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Ensure that FastPath is enabled on the ExpressRoute Gateway that is being used for external data storage solutions",
- "waf": "Reliability"
+ "text": "Avoid using root account when it is not necessary",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor",
- "waf": "Reliability"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
+ "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",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
+ "service": "Event Hubs",
"severity": "High",
- "text": "If using stretched cluster, ensure that the SLA provided will meet your requirements",
- "waf": "Reliability"
+ "text": "Use least privilege data plane RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.",
- "waf": "Reliability"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
+ "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",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "High",
- "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.",
- "waf": "Reliability"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "severity": "High",
- "text": "Have site disaster tolerance settings been properly considered and changed for your business if needed.",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
+ },
+ {
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
+ "severity": "Medium",
+ "text": "Leverage FTA Resillency HandBook",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"severity": "High",
- "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "text": "Leverage Availability Zones if regionally applicable",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
"severity": "Medium",
- "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "text": "Use the Premium or Dedicated SKUs for predicable performance",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
"severity": "High",
- "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
"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",
+ "text": "For Business Critical Applications, use Active Active configuration",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"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",
+ "text": "Design Resilient Event Hubs",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Use Azure Traffic Manager to coordinate requests",
- "waf": "Reliability"
+ "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
- "severity": "High",
- "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
+ "severity": "Medium",
+ "text": "Ensure you are using Application Gateway v2 SKU",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "Medium",
- "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
- "waf": "Reliability"
+ "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "High",
- "text": "Use zone redundant pipelines in regions that support Availability Zones",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
+ "severity": "Medium",
+ "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
- "waf": "Reliability"
+ "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
- "waf": "Reliability"
+ "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "severity": "Low",
- "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
+ "severity": "Medium",
+ "text": "Configure autoscaling with a minimum amount of instances of two.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
- "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
- "service": "Azure Data Explorer",
- "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
+ "severity": "Medium",
+ "text": "Deploy Application Gateway across Availability Zones",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
- "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
- "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
- "service": "Azure Data Explorer",
- "text": "To share data, explore Leader-follower cluster configuration",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
- "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
- "service": "Azure Data Explorer",
- "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
- "service": "Azure Data Explorer",
- "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
+ "severity": "High",
+ "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
- "service": "Azure Data Explorer",
- "text": "Ingest data into each cluster in parallel",
- "waf": "Reliability"
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "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)?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
- "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
- "service": "Azure Data Explorer",
- "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
- "waf": "Reliability"
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "Medium",
+ "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
- "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
- "service": "Azure Data Explorer",
- "text": "For critical applications, create Active-Active configuration in two paired regions",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
- "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
- "service": "Azure Data Explorer",
- "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
- "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
- "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
- "service": "Azure Data Explorer",
- "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
- "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
- "text": "Wrap DevOps and source control around all your code",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
- "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
- "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Kusto/clusters",
- "checklist": "Azure Data Explorer Review Checklist",
- "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
- "link": "https://learn.microsoft.com/azure/data-explorer/devops",
- "service": "Azure Data Explorer",
- "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Reliability"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"severity": "High",
- "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Key Vault",
- "severity": "Medium",
- "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"severity": "Medium",
- "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
- "waf": "Reliability"
+ "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
- "service": "Key Vault",
- "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.",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"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.",
- "waf": "Reliability"
+ "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
"severity": "High",
- "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "Key Vault",
- "severity": "Low",
- "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
- "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.",
- "waf": "Reliability"
+ "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
- "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
- "service": "Key Vault",
- "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.",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Tune the Azure Front Door WAF for your workload by configuring the WAF in Detection mode to reduce and fix false positive detections.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Key Vault",
- "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
- "service": "Key Vault",
- "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.",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
- "severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
+ "severity": "High",
+ "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
"severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
+ "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Leverage Data-in replication for cross-region DR scenarios",
- "waf": "Reliability"
+ "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
+ "waf": "Security"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
"service": "Front Door",
"severity": "Medium",
- "text": "If you use customer-managed TLS certificates with Azure Front Door, use the 'Latest' certificate version. Reduce the risk of outages caused by manual certificate renewal",
- "waf": "Operations"
+ "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Ensure you are using Application Gateway v2 SKU",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "Use a high threshold for Azure Front Door 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. ",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
- "severity": "Medium",
- "text": "Ensure you are using the Standard SKU for your Azure Load Balancers",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "Low",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
"waf": "Security"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "Medium",
- "text": "Ensure your Load Balancers frontend IP addresses are zone-redundant (unless you require zonal frontends).",
+ "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
"waf": "Security"
},
{
+ "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
"service": "App Gateway",
- "severity": "Medium",
- "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "High",
+ "text": "Enable the Azure Application Gateway WAF bot protection rule set. The bot rules detect good and bad bots.",
"waf": "Security"
},
{
+ "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "description": "Administration of reverse proxies in general and WAF in particular is closer to the application than to networking, so they belong in the same subscription as the app. Centralizing the Application Gateway and WAF in the connectivity subscription might be OK if it is managed by one single team.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
"service": "App Gateway",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "severity": "High",
+ "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
"waf": "Security"
},
{
+ "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
"service": "App Gateway",
- "severity": "Medium",
- "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "severity": "High",
+ "text": "Tune the Azure Application Gateway WAF in detection mode for your workload. Reduce false positive detections.",
"waf": "Security"
},
{
+ "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
"service": "App Gateway",
- "severity": "Medium",
- "text": "Configure autoscaling with a minimum amount of instances of two.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
+ "severity": "High",
+ "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
+ "waf": "Security"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
"service": "App Gateway",
"severity": "Medium",
- "text": "Deploy Application Gateway across Availability Zones",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Use Azure Front Door with WAF policies to deliver and help protect global HTTP/S apps that span multiple Azure regions.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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.",
"waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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. ",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "High",
- "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Reliability"
- },
- {
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
"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)?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
"waf": "Security"
},
{
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "To reduce the number of firewall ports open for incoming connections in your network, consider using Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Security"
- },
- {
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "High",
- "text": "Deploy your WAF policy for Front Door in 'Prevention' mode.",
+ "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.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
- "severity": "High",
- "text": "Avoid combining Azure Traffic Manager and Azure Front Door.",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
+ "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.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "High",
- "text": "Use the same domain name on Azure Front Door and your origin. Mismatched host names can cause subtle bugs.",
- "waf": "Security"
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
+ "severity": "Medium",
+ "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "Front Door",
- "severity": "Low",
- "text": "Disable health probes when there is only one origin in an Azure Front Door origin group.",
- "waf": "Performance"
+ "severity": "Medium",
+ "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "Select good health probe endpoints for Azure Front Door. Consider building health endpoints that check all of your application's dependencies.",
- "waf": "Reliability"
+ "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
"service": "Front Door",
- "severity": "Low",
- "text": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application.",
- "waf": "Performance"
- },
- {
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "High",
- "text": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
+ "waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "High",
- "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
+ "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.",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
"severity": "Medium",
- "text": "Define your Azure Front Door WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.",
+ "text": "Use WAF Policies instead of the legacy WAF configuration.",
"waf": "Operations"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "severity": "High",
- "text": "Use end-to-end TLS with Azure Front Door. Use TLS for connections from your clients to Front Door, and from Front Door to your origin.",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
+ "severity": "Medium",
+ "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
"waf": "Security"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
"service": "Front Door",
"severity": "Medium",
- "text": "Use HTTP to HTTPS redirection with Azure Front Door. Support older clients by redirecting them to an HTTPS request automatically.",
+ "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "High",
- "text": "Enable the Azure Front Door WAF. Protect your application from a range of attacks.",
+ "text": "You should encrypt traffic to the backend servers.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
"severity": "High",
- "text": "Tune the Azure Front Door WAF for your workload. Reduce false positive detections.",
+ "text": "You should use a Web Application Firewall.",
"waf": "Security"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
- "severity": "High",
- "text": "Enable request body inspection feature enabled in Azure Front Door WAF policy.",
- "waf": "Security"
- },
- {
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
- "severity": "High",
- "text": "Enable the Azure Front Door WAF default rule sets. The default rule sets detect and block common attacks.",
- "waf": "Security"
- },
- {
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
- "severity": "High",
- "text": "Enable the Azure Front Door WAF bot protection rule set. The bot rules detect good and bad bots.",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Use the latest Azure Front Door WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Add rate limiting to the Azure Front Door WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Use a high threshold for Azure Front Door 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. ",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "Low",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Front Door WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.",
- "waf": "Security"
- },
- {
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
"service": "App Gateway",
- "severity": "High",
- "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.",
+ "severity": "Medium",
+ "text": "Redirect HTTP to HTTPS",
"waf": "Security"
},
{
- "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
"service": "App Gateway",
- "severity": "High",
- "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
+ "waf": "Operations"
},
{
- "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
"service": "App Gateway",
"severity": "High",
- "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.",
+ "text": "Enable connection draining during planned service updates to prevent connection loss to existing members of the backend pool",
"waf": "Security"
},
{
- "ammp": true,
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
"service": "App Gateway",
- "severity": "High",
- "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.",
- "waf": "Security"
+ "severity": "Low",
+ "text": "Create custom error pages to display a personalized user experience",
+ "waf": "Operations"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
"service": "App Gateway",
"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.",
+ "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
"waf": "Security"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "App Gateway",
"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. ",
- "waf": "Security"
+ "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
"service": "App Gateway",
- "severity": "Low",
- "text": "If you are not expecting traffic from all geographical regions, use geo-filters to block traffic from non-expected countries.",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Use transport layer load balancing",
+ "waf": "Performance"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
"service": "App Gateway",
"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.",
+ "text": "Configure routing based on host or domain name for multiple web applications on a single gateway",
"waf": "Security"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
"service": "App Gateway",
"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.",
+ "text": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
"waf": "Security"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
"service": "App Gateway",
- "severity": "Medium",
- "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Add diagnostic settings to save your Azure Front Door WAF logs.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
+ "severity": "High",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Send Azure Application Gateway WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
+ "severity": "High",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
- "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.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
+ "severity": "High",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"severity": "Medium",
- "text": "Use WAF Policies instead of the legacy WAF configuration.",
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
"waf": "Operations"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.",
- "waf": "Security"
+ "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Make sure your origins only take traffic from your Azure Front Door instance.",
- "waf": "Security"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
+ "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": "You should encrypt traffic to the backend servers.",
- "waf": "Security"
+ "text": "Enable monitoring for your AOAI instances",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
+ "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": "You should use a Web Application Firewall.",
- "waf": "Security"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Redirect HTTP to HTTPS",
- "waf": "Security"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "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": "Use gateway-managed cookies to direct traffic from a user session to the same server for processing",
- "waf": "Operations"
+ "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
- "severity": "High",
- "text": "Enable connection draining during planned service updates to prevent connection loss to existing membrs of the backend pool",
- "waf": "Security"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
- "severity": "Low",
- "text": "Create custom error pages to display a personalized user experience",
- "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": "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Edit HTTP requests and response headers for easier routing and information exchange between the client and server",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Configure Front Door to optimize global web traffic routing and top-tier end-user performance, and reliability through quick global failover",
+ "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 Excellence"
+ },
+ {
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
- "severity": "Medium",
- "text": "Use transport layer load balancing",
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
+ "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": "Configure routing based on host or domain name for multiple web applications on a single gateway",
- "waf": "Security"
+ "text": "Improve latency of the system by limiting token sizes, streaming options",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "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": "Centralize SSL certificate management to reduce encryption and decryption overhead from a backend server farm",
- "waf": "Security"
+ "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "Low",
- "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols",
- "waf": "Security"
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "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": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
- "waf": "Reliability"
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
- "severity": "Medium",
- "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
- "waf": "Reliability"
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "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": "Custom brand assets should be hosted on a CDN",
+ "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance",
"waf": "Performance"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
+ "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": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
+ "text": "Deploy multiple OAI instances across regions",
"waf": "Reliability"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "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)",
+ "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"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "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": "Don't replicate! Replication can create issues with directory synchronization",
+ "text": "Ensure having adequate quotas of TPM & RPM for the workload",
"waf": "Reliability"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "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": "Have active-active for multi-regions",
- "waf": "Reliability"
+ "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution",
+ "waf": "Operational Excellence"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "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": "Add Azure AD Domain service stamps to additional regions and locations",
+ "text": "Deploy separate fine tuned models across regions if finetuning is employed",
"waf": "Reliability"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "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": "Use Replica Sets for DR",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus Premium provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "87af4a79-1f89-439b-ba47-768e14c11567",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/configure-customer-managed-key",
- "service": "Service Bus",
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Security"
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Communication between a client application and an Azure Service Bus namespace is encrypted using Transport Layer Security (TLS). Azure Service Bus namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Service Bus namespace to require that clients send and receive data with a newer version of TLS.",
- "guid": "5c1ea55b-46a9-448f-b8ae-7d7e4b475b6c",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/transport-layer-security-enforce-minimum-version",
- "service": "Service Bus",
- "severity": "Medium",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "When you create a Service Bus namespace, a SAS rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has Manage permissions for the entire namespace. It's recommended that you treat this rule like an administrative root account and don't use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "8bcbf59b-ce65-4de8-a03f-97879468d66a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies",
- "service": "Service Bus",
- "severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "A Service Bus client app running inside an Azure App Service application or in a virtual machine with enabled managed entities for Azure resources support does not need to handle SAS rules and keys, or any other access tokens. The client app only needs the endpoint address of the Service Bus Messaging namespace. ",
- "guid": "786d60f9-6c96-4ad8-a55d-04c2b39c986b",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity",
- "service": "Service Bus",
- "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Service Bus. Permissions in Azure Service Bus can and should be scoped to the individual resource level e.g. queue, topic or subscription. ",
- "guid": "f615658d-e558-4f93-9249-b831112dbd7e",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus",
- "service": "Service Bus",
+ "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 least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus resource logs include operational logs, virtual network and IP filtering logs. Runtime audit logs capture aggregated diagnostic information for various data plane access operations (such as send or receive messages) in Service Bus.",
- "guid": "af12e7f9-43f6-4304-922d-929c2b1cd622",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference",
- "service": "Service Bus",
+ "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": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "Azure Service Bus by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Service Bus traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "9ae669ca-48e4-4a85-b222-3ece8bb12307",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service",
- "service": "Service Bus",
- "severity": "Medium",
- "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.ServiceBus/namespaces",
- "checklist": "Service Bus Review Checklist",
- "description": "With IP firewall, you can restrict the public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "ca5f06f1-58e3-4ea3-a92c-2de7e2165c3a",
- "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-ip-filtering",
- "service": "Service Bus",
+ "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": "Consider only allowing access to Azure Service Bus namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "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.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
+ "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": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "text": "Implement Prompt shields and groundedness detection using Content Safety ",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "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": "Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "Reliability"
+ "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.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
+ "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.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
+ "service": "Azure OpenAI",
"severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "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.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "Azure OpenAI",
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
- "waf": "Operations"
+ "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.Compute/virtualMachineScaleSets",
- "checklist": "Resiliency Review",
- "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
- "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
- "service": "VMSS",
- "severity": "Low",
- "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
- "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
- "service": "VM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
+ "service": "Azure OpenAI",
"severity": "High",
- "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
- "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "VM",
+ "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": "Use Premium or Ultra disks for production VMs",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
- "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
- "service": "VM",
+ "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": "Ensure Managed Disks are used for all VMs",
- "waf": "Reliability"
+ "text": "Configure private endpoint for AI services to restrict service access within your network",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
- "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
- "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
- "service": "VM",
- "severity": "Medium",
- "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
- "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Leverage Availability Zones for your VMs in regions where they are supported",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
- "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "VM",
+ "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": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
- "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "VM",
- "severity": "High",
- "text": "Avoid running a production workload on a single VM",
- "waf": "Reliability"
+ "text": "Use prompt compression tools like LLMLingua or gprtrim",
+ "waf": "Cost Optimization"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
- "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "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": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
- "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
- "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
- "service": "VM",
- "severity": "Low",
- "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
- "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
- "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
- "service": "VM",
+ "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": "Increase quotas in DR region before testing failover with ASR",
- "waf": "Reliability"
+ "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.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
- "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
- "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
- "service": "VM",
- "severity": "Low",
- "text": "Utilize Scheduled Events to prepare for VM maintenance",
- "waf": "Reliability"
+ "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.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
- "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
+ "service": "Azure OpenAI",
"severity": "Medium",
- "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
- "waf": "Reliability"
+ "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.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
- "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "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": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
- "waf": "Reliability"
+ "text": "Azure AI Services are properly tagged for better management",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
- "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "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": "Enable soft delete for Storage Account Containers",
- "waf": "Reliability"
+ "text": "Azure AI Service accounts follows organizational naming conventions",
+ "waf": "Operational Excellence"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Resiliency Review",
- "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
- "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
- "severity": "Low",
- "text": "Enable soft delete for blobs",
- "waf": "Reliability"
+ "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.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
- "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
- "service": "Azure Backup",
- "severity": "Medium",
- "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
- "waf": "Reliability"
+ "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.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
- "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
- "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
- "service": "Azure Backup",
- "severity": "Low",
- "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Resiliency Review",
- "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
- "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
- "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
- "service": "Azure Backup",
- "severity": "Low",
- "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Resiliency Review",
- "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
- "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
- "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
- "service": "DNS",
- "severity": "Low",
- "text": "Implement DNS Failover using Azure DNS Private Resolvers",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.PowerBI/gateways",
- "checklist": "Resiliency Review",
- "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
- "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
- "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
- "service": "Data Gateways",
- "severity": "Medium",
- "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Resiliency Review",
- "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
- "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "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": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "FTA Resiliency Playbook",
- "waf": "Reliability"
+ "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.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
+ "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": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Run multiple replicas of the database (>1 ) in Prod",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
- "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Leverage Multi-Region Writes",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Span Cosmos account across two or more regions with multi-region writes",
- "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
- "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Distribute your data globally",
- "waf": "Reliability"
+ "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
- "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
- "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
- "service": "CosmosDB",
+ "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": "Choose from several well-defined consistency models",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
- "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
- "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Enable Service managed failover",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
- "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
- "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Enable Automatic Backups",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
- "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
- "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Perform Periodic Backups",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.documentdb/databaseAccounts",
- "checklist": "CosmosDB Review Checklist",
- "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
- "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
- "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
- "service": "CosmosDB",
- "severity": "Medium",
- "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
- "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
- "waf": "Reliability"
+ "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": "a85b86ad-884f-48e3-9273-4b875ba18f10",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails",
+ "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e",
+ "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview",
"service": "Azure OpenAI",
"severity": "High",
- "text": "Follow Metaprompting guardrails for resonsible AI",
- "waf": "Operational Excellence"
+ "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": "d4391898-cd28-48be-b6b1-7cb8245451e1",
- "link": "https://github.com/Azure-Samples/AI-Gateway",
+ "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": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging",
- "waf": "Operational Excellence"
+ "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": "aed3453a-ec72-4392-97a1-52d6cc5e4029",
- "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850",
+ "guid": "e29711b1-352b-4eee-879b-588defc4972c",
+ "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct",
"service": "Azure OpenAI",
"severity": "High",
- "text": "Enable monitoring for your AOAI instances",
+ "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": "697cb391-ed16-4b2d-886f-0a0241addde6",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts",
+ "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": "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"
+ "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": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
+ "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": "Monitor token usage to prevent service disruptions due to capacity",
- "waf": "Operational Excellence"
+ "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": "a3aec2c4-e243-46b0-936c-b45e17960eee",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring",
+ "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": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit",
- "waf": "Operational Excellence"
+ "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": "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",
+ "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": "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"
+ "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": "3af30ed3-2947-498b-8178-a2c5a46ceb54",
- "link": "https://github.com/Azure-Samples/openai-enterprise-iac",
+ "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability",
"service": "Azure OpenAI",
- "severity": "High",
- "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources",
+ "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": "4350d092-d234-4292-a752-8537a551c5bf",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity",
+ "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": "High",
- "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key",
- "waf": "Security"
+ "severity": "Medium",
+ "text": "Plan and manage AI Search Vector storage",
+ "waf": "Operational Excellence"
},
{
"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",
+ "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": "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.",
+ "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": "68889535-e327-4897-b31b-67d67be5962a",
- "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency",
+ "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 Provisioned throughput model ",
- "waf": "Performance"
+ "text": "Evaluate usage of billing models - PAYG vs PTU",
+ "waf": "Cost Optimization"
},
{
"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",
+ "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": "High",
- "text": "Review and implement Azure AI content safety",
+ "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": "1193846d-697c-4b39-8ed1-6b2d186f0a02",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput",
+ "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": "High",
- "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements",
- "waf": "Performance"
+ "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": "41addde6-8a47-47cd-bb48-61bc3bc10ae6",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
"service": "Azure OpenAI",
"severity": "Medium",
- "text": "Improve latency of the system by limiting token sizes, streaming options",
- "waf": "Performance"
+ "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": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching",
+ "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": "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"
+ "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": "5bda4332-4f24-4811-9331-82ba51752694",
- "link": "https://github.com/Azure/azure-openai-benchmark/",
+ "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": "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"
+ "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": "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",
+ "guid": "e737897e-71ca-47da-acfa-962a1594946d",
+ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming",
"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"
+ "text": "Red team your GenAI applications",
+ "waf": "Security"
},
{
"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",
+ "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e",
+ "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/",
"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"
+ "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": "e9951904-8384-45c9-a6cb-2912156a1147",
- "link": "https://github.com/Azure/azure-openai-benchmark/",
+ "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": "Medium",
- "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance",
- "waf": "Performance"
+ "severity": "High",
+ "text": "Consider Quota management practices",
+ "waf": "Cost Optimization"
},
{
"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",
+ "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410",
+ "link": "https://github.com/Azure/aoai-apim/blob/main/README.md",
"service": "Azure OpenAI",
- "severity": "Low",
- "text": "Deploy multiple OAI instances across regions",
- "waf": "Reliability"
+ "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": "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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "High",
- "text": "Implement retry & healthchecks with Gateway pattern like APIM",
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled)",
"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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "Medium",
- "text": "Ensure having adequate quotas of TPM & RPM for the workload",
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the IoT hubs from an affected region to the corresponding geo-paired region.",
"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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
+ "severity": "High",
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
"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.",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "severity": "High",
+ "text": "Learn how to trigger a manual failover.",
"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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
"severity": "High",
- "text": "Azure AI search service tiers should be choosen to have a SLA ",
+ "text": "Learn how to fail back after a failover.",
"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.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
+ "service": "Container Apps",
+ "severity": "High",
+ "text": "Leverage Availability Zones if regionally applicable",
+ "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": "Azure OpenAI",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
+ "service": "Container Apps",
"severity": "High",
- "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK",
- "waf": "Security"
+ "text": "Use more than one replica and enable Zone Redundancy.",
+ "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": "Azure OpenAI",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Container Apps",
"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"
+ "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
+ "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": "Azure OpenAI",
+ "arm-service": "Microsoft.App/containerApps",
+ "checklist": "Container Apps Review",
+ "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Container Apps",
"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"
+ "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
+ "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": "Azure OpenAI",
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
+ "service": "PostgreSQL",
"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"
+ "text": "Leverage Flexible Server",
+ "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": "Azure OpenAI",
+ "arm-service": "Microsoft.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
+ "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
+ "service": "PostgreSQL",
"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"
+ "text": "Leverage Availability Zones where regionally applicable",
+ "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": "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.DBforPostgreSQL/servers",
+ "checklist": "PostgreSQL Review Checklist",
+ "guid": "31b67c67-be59-4519-8083-845d587cb391",
+ "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
+ "service": "PostgreSQL",
+ "severity": "Medium",
+ "text": "Leverage cross-region read replicas for BCDR",
+ "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": "Azure OpenAI",
- "severity": "High",
- "text": "Implement Prompt shields and groundedness detection using Content Safety ",
- "waf": "Operational Excellence"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required for AKS Windows workloads HostProcess containers can be used",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use KEDA if running event-driven workloads",
+ "waf": "Performance"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use Dapr to ease microservice development",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"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"
+ "text": "Use the SLA-backed AKS offering",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use Disruption Budgets in your pod and deployment definitions",
+ "waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"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"
+ "text": "If using a private registry, configure region replication to store images in multiple regions",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use an external application such as kubecost to allocate costs to different users",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Use scale down mode to delete/deallocate nodes",
+ "waf": "Cost"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"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"
+ "text": "When required use multi-instance partitioning GPU on AKS Clusters",
+ "waf": "Cost"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If running a Dev/Test cluster use NodePool Start/Stop",
+ "waf": "Cost"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Separate applications from the control plane with user/system node pools",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Add taint to your system nodepool to make it dedicated",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Use a private registry for your images, such as ACR",
"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",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "Medium",
- "text": "Use prompt compression tools like LLMLingua or gprtrim",
- "waf": "Cost Optimization"
+ "text": "Scan your images for vulnerabilities",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"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.",
+ "text": "Define app separation requirements (namespace/nodepool/cluster)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"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",
+ "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
+ "severity": "High",
+ "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
"waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"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",
+ "text": "If required add Key Management Service etcd encryption",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
"severity": "Low",
- "text": "Azure AI Services are properly tagged for better management",
- "waf": "Operational Excellence"
+ "text": "If required consider using Confidential Compute for AKS",
+ "waf": "Security"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Consider using Defender for Containers",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "High",
- "text": "Diagnostic logs in Azure AI services resources should be enabled",
- "waf": "Operational Excellence"
+ "text": "Use managed identities instead of Service Principals",
+ "waf": "Security"
},
{
- "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. ",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Integrate authentication with AAD (using the managed integration)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Limit access to admin kubeconfig (get-credentials --admin)",
"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.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Integrate authorization with AAD RBAC",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"severity": "High",
- "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode",
- "waf": "Cost Optimization"
+ "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For AKS non-interactive logins use kubelogin (preview)",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Disable AKS local accounts",
+ "waf": "Security"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Configure if required Just-in-time cluster access",
+ "waf": "Security"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Configure if required AAD conditional access for AKS",
+ "waf": "Security"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required for Windows AKS workloads configure gMSA ",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"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"
+ "text": "For finer control consider using a managed Kubelet Identity",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"severity": "Medium",
- "text": "Review the guidance provided on setting up AI search for Reliability",
- "waf": "Operational Excellence"
+ "text": "If using AGIC, do not share an AppGW across clusters",
+ "waf": "Reliability"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"severity": "Medium",
- "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications",
- "waf": "Operational Excellence"
+ "text": "For Windows workloads use Accelerated Networking",
+ "waf": "Performance"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"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"
+ "text": "Use the standard ALB (as opposed to the basic one)",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"severity": "Medium",
- "text": "Use prompt engineering techniques to improve the accuracy of LLM responses",
- "waf": "Operational Excellence"
+ "text": "If using Azure CNI, consider using different Subnets for NodePools",
+ "waf": "Security"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"severity": "Medium",
- "text": "Red team your GenAI applications",
+ "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
+ "waf": "Reliability"
},
{
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "High",
- "text": "Consider Quota management practices",
- "waf": "Cost Optimization"
+ "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
+ "waf": "Performance"
},
{
- "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "High",
+ "text": "If using Azure CNI, check the maximum pods/node (default 30)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "21c30d25-ffb7-4f6a-b9ea-b3fec328f787",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-cog_svcs_v1.docx",
- "service": "Cognitive Services",
- "severity": "Medium",
- "text": "Leverage FTA HandBook for Cognitive Services",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "78c34698-16b2-4763-aefe-1b9b599de0d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions",
- "service": "Cognitive Services",
- "severity": "Medium",
- "text": "Backup Your Prompts",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "750ab2ab-039d-4a6d-95d7-c892adb107d5",
- "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery",
- "service": "Cognitive Services",
- "severity": "High",
- "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required add your own CNI plugin",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "325af625-ca44-4e46-a5e2-223ace8bb123",
- "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations",
- "service": "Cognitive Services",
- "severity": "Medium",
- "text": "Backup Your ChatGPT conversations",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required configure Public IP per node in AKS",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "07ca5f17-f154-4e3a-a369-2829e7e31618",
- "link": "https://learn.microsoft.com/azure/ai-services/speech-service/how-to-custom-speech-continuous-integration-continuous-deployment",
- "service": "Cognitive Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"severity": "Medium",
- "text": "CI/CD for custom speech",
+ "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Cognitive Services Review Checklist",
- "guid": "3687a046-7a1f-4893-9bda-43324f248116",
- "link": "https://learn.microsoft.com/azure/ai-services/qnamaker/tutorials/export-knowledge-base",
- "service": "Cognitive Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
"severity": "Low",
- "text": "Move a knowledge base using export-import",
+ "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
- "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
"severity": "Medium",
- "text": "Leverage FTA Resillency Handbook",
+ "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "High",
- "text": "Plan for Data Center level outage",
- "waf": "Reliability"
+ "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
- "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
"severity": "Medium",
- "text": "Practice Failover for BCDR",
- "waf": "Reliability"
- },
+ "text": "If using a public API endpoint, restrict the IP addresses that can access it",
+ "waf": "Security"
+ },
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"severity": "High",
- "text": "Plan a backup strategy and take regular backups",
- "waf": "Reliability"
+ "text": "Use private clusters if your requirements mandate it",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
- "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
- "service": "Purview",
- "severity": "Low",
- "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
- "link": "https://learn.microsoft.com/purview/deployment-best-practices",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview accounts architectures and deployment best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Collection Architectures and best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Use Kubernetes network policies to increase intra-cluster security",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Assest lifecycle best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Use a WAF for web workloads (UIs or APIs)",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
"severity": "Medium",
- "text": "Follow automation best practices",
- "waf": "Reliability"
+ "text": "Use DDoS Standard in the AKS Virtual Network",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
- "link": "https://learn.microsoft.com/purview/disaster-recovery",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Backup and Migration Best practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required add company HTTP Proxy",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "Medium",
- "text": "Follow Purview Glossary Best Practices",
- "waf": "Reliability"
+ "text": "Consider using a service mesh for advanced microservice communication management",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
- "link": "https://learn.microsoft.com/purview/concept-workflow",
- "service": "Purview",
- "severity": "Low",
- "text": "Leverage Workflows ",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview Security Best Practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Check regularly Azure Advisor for recommendations on your cluster",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Purview Data Lineage Best Practices",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Enable AKS auto-certificate rotation",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Best Practices for Scanning Registered Sources",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
- "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
- "service": "Purview",
- "severity": "Medium",
- "text": "Follow Classification Best Practices in Governance Portal",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
- "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
- "service": "Purview",
- "severity": "Medium",
- "text": "Perform Sensitivity Labelling in the Purview Data Map",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
- "link": "https://learn.microsoft.com/purview/concept-data-share",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
"severity": "Low",
- "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
- "waf": "Reliability"
+ "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
"severity": "Low",
- "text": "Leverage Data Estate Insights",
- "waf": "Reliability"
+ "text": "Consider using AKS command invoke on private clusters",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
- "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
"severity": "Low",
- "text": "Use Data stewardship and Catalog adoption",
- "waf": "Reliability"
+ "text": "For planned events consider using Node Auto Drain",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
- "link": "https://learn.microsoft.com/purview/concept-insights",
- "service": "Purview",
- "severity": "Low",
- "text": "Use Inventory and Ownership",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
- "link": "https://learn.microsoft.com/purview/glossary-insights",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
"severity": "Low",
- "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
- "waf": "Reliability"
+ "text": "Use custom Node RG (aka 'Infra RG') name",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
- "link": "https://learn.microsoft.com/purview/compliance-manager",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "Medium",
- "text": "Generate assessment scores",
- "waf": "Reliability"
+ "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
- "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
- "service": "Purview",
- "severity": "Medium",
- "text": "Profiling- get summaries of data content",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Taint Windows nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
- "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
"severity": "Low",
- "text": "Follow Microsoft Purview Data Owner access policies",
- "waf": "Reliability"
+ "text": "Keep windows containers patch level in sync with host patch level",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
- "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Via Diagnostic Settings at the cluster level",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
"severity": "Low",
- "text": "Follow Self-service access policies",
- "waf": "Reliability"
+ "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Purview/accounts",
- "checklist": "Microsoft Purview Review Checklist",
- "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
- "link": "https://learn.microsoft.com/purview/concept-policies-devops",
- "service": "Purview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
"severity": "Low",
- "text": "Follow DevOps policies",
- "waf": "Reliability"
+ "text": "If required use nodePool snapshots",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
- "severity": "Medium",
- "text": "Follow reliability support recommendations in Azure Bot Service",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider spot node pools for non time-sensitive workloads",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider AKS virtual node for quick bursting",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
+ "waf": "Operations"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
"severity": "Medium",
- "text": "Deploying bots with local data residency and regional compliance",
- "waf": "Reliability"
+ "text": "Monitor CPU and memory utilization of the nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Medium",
- "text": "Azure Bot Service runs in active-active mode for both global and regional services. When an outage occurs, you don't need to detect errors or manage the service. Azure Bot Service automatically performs auto failover and auto recovery in a multi-region geographical architecture. For the EU bot regional service, Azure Bot Service provides two full regions inside Europe with active/active replication to ensure redundancy. For the global bot service, all available regions/geographies can be served as the global footprint.",
- "waf": "Reliability"
+ "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "65285269-441c-44bf-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview",
- "service": "PostgreSQL",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
"severity": "Medium",
- "text": "Leverage Flexible Server",
- "waf": "Reliability"
+ "text": "Monitor OS disk queue depth in nodes",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "016ccf31-ae5a-41eb-9888-9535e227896d",
- "link": "https://learn.microsoft.com/azure/postgresql/flexible-server/overview#architecture-and-high-availability",
- "service": "PostgreSQL",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable",
- "waf": "Reliability"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.DBforPostgreSQL/servers",
- "checklist": "PostgreSQL Review Checklist",
- "guid": "31b67c67-be59-4519-8083-845d587cb391",
- "link": "https://learn.microsoft.com/azure/postgresql/single-server/concepts-business-continuity#cross-region-read-replicas",
- "service": "PostgreSQL",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "Medium",
- "text": "Leverage cross-region read replicas for BCDR",
- "waf": "Reliability"
+ "text": "Subscribe to resource health notifications for your AKS cluster",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable image export to prevent data exfiltration. Note that this will prevent image import of images into another ACR instance.",
- "guid": "ab91932c-9fc9-4d1b-a880-37f5e6bfcb9e",
- "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention",
- "service": "ACR",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "High",
- "text": "Disable Azure Container Registry image export",
- "waf": "Security"
+ "text": "Configure requests and limits in your pod specs",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Enable audit compliance visibility by enabling Azure Policy for Azure Container Registry",
- "guid": "d503547c-d447-4e82-9128-a7100f1cac6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy",
- "service": "ACR",
- "severity": "High",
- "text": "Enable Azure Policies for Azure Container Registry",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "The Azure Key Vault (AKV) is used to store a signing key that can be utilized by?notation?with the notation AKV plugin (azure-kv) to sign and verify container images and other artifacts. The Azure Container Registry (ACR) allows you to attach these signatures using the?az?or?oras?CLI commands.",
- "guid": "d345293c-7639-4637-a551-c5c04e401955",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push",
- "service": "ACR",
- "severity": "High",
- "text": "Sign and Verify containers with notation (Notary v2)",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Container Registry automatically encrypts images and other artifacts that you store. By default, Azure automatically encrypts the registry content at rest by using service-managed keys. By using a customer-managed key, you can supplement default encryption with an additional encryption layer.",
- "guid": "0bd05dc2-efd5-4d76-8d41-d2500cc47b49",
- "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys",
- "service": "ACR",
- "severity": "Medium",
- "text": "Encrypt registry with a customer managed key",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use managed identities to secure ACRPull/Push RBAC access from client applications",
- "guid": "8f42d78e-79dc-47b3-9bd2-a1a27e7a8e90",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "severity": "High",
- "text": "Use Managed Identities to connect instead of Service Principals",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "The local Administrator account is disabled by default and should not be enabled. Use either Token or RBAC-based access methods instead",
- "guid": "be0e38ce-e297-411b-b363-caaab79b198d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity",
- "service": "ACR",
- "severity": "High",
- "text": "Disable local authentication for management plane access",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable Administrator account and assign RBAC roles to principals for ACR Pull/Push operations",
- "guid": "387e5ced-126c-4d13-8af5-b20c6998a646",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli",
- "service": "ACR",
- "severity": "High",
- "text": "Assign AcrPull & AcrPush RBAC roles rather than granting Administrative access to identity principals",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable anonymous pull/push access",
- "guid": "e338997e-41c7-47d7-acf6-a62a1194956d",
- "link": "https://learn.microsoft.com/azure/container-registry/anonymous-pull-access#configure-anonymous-pull-access",
- "service": "ACR",
- "severity": "Medium",
- "text": "Disable Anonymous pull access",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Token authentication doesn't support assignment to an AAD principal. Any tokens provided are able to be used by anyone who can access the token",
- "guid": "698dc3a2-fd27-4b2e-8870-1a1252beedf6",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication?tabs=azure-cli",
- "service": "ACR",
- "severity": "High",
- "text": "Disable repository-scoped access tokens",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy container images to an ACR behind a Private endpoint within a trusted network",
- "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee",
- "service": "ACR",
- "severity": "High",
- "text": "Deploy images from a trusted environment",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only tokens with an ACR audience can be used for authentication. Used when enabling Conditional access policies for ACR",
- "guid": "3a041fd3-2947-498b-8288-b3c6a56ceb54",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy",
- "service": "ACR",
- "severity": "Medium",
- "text": "Disable Azure ARM audience tokens for authentication",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Set up a diagnostic setting to send 'repositoryEvents' & 'LoginEvents' to Log Analytics as the central destination for logging and monitoring. This allows you to monitor control plane activity on the ACR resource itself.",
- "guid": "8a488cde-c486-42bc-9bd2-1be77f26e5e6",
- "link": "https://learn.microsoft.com/azure/container-registry/monitor-service",
- "service": "ACR",
- "severity": "Medium",
- "text": "Enable diagnostics logging",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Service supports disabling public network access either through using service-level IP ACL filtering rule (not NSG or Azure Firewall) or using a 'Disable Public Network Access' toggle switch",
- "guid": "21d41d25-00b7-407a-b9ea-b40fd3290798",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link",
- "service": "ACR",
- "severity": "Medium",
- "text": "Control inbound network access with Private Link",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Disable public network access if inbound network access is secured using Private Link",
- "guid": "cd289ced-6b17-4db8-8554-62f2aee4553a",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access",
- "service": "ACR",
- "severity": "Medium",
- "text": "Disable Public Network access",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Only the ACR Premium SKU supports Private Link access",
- "guid": "fc833934-8b26-42d6-ac5f-512925498f6d",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus",
- "service": "ACR",
- "severity": "Medium",
- "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Azure Defender for containers or equivalent service should be used to scan container images for vulnerabilities",
- "guid": "bad37dac-43bc-46ce-8d7a-a9b24604489a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction",
- "service": "ACR",
- "severity": "Low",
- "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Deploy trusted code that was validated and scanned for vulnerabilities according to DevSecOps practices.",
- "guid": "4451e1a2-d345-4293-a763-9637a551c5c0",
- "service": "ACR",
- "severity": "Medium",
- "text": "Deploy validated container images",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure Container Registry Security Review",
- "description": "Use the latest versions of supported platforms, programming languages, protocols, and frameworks.",
- "guid": "4e401955-387e-45ce-b126-cd132af5b20c",
- "service": "ACR",
- "severity": "High",
- "text": "Use up-to-date platforms, languages, protocols and frameworks",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub provides encryption of data at rest. If you use your own key, the data is still encrypted using the Microsoft-managed key, but in addition the Microsoft-managed key will be encrypted using the customer-managed key. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
- "severity": "Low",
- "text": "Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hubs namespaces permit clients to send and receive data with TLS 1.0 and above. To enforce stricter security measures, you can configure your Event Hubs namespace to require that clients send and receive data with a newer version of TLS. If an Event Hubs namespace requires a minimum version of TLS, then any requests made with an older version will fail. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "When you create an Event Hubs namespace, a policy rule named RootManageSharedAccessKey is automatically created for the namespace. This policy has manage permissions for the entire namespace. It�s recommended that you treat this rule like an administrative root account and don�t use it in your application. Using AAD as an authentication provider with RBAC is recommended. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Avoid using root account when it is not necessary",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Managed identities for Azure resources can authorize access to Event Hubs resources using Azure AD credentials from applications running in Azure Virtual Machines (VMs), Function apps, Virtual Machine Scale Sets, and other services. By using managed identities for Azure resources together with Azure AD authentication, you can avoid storing credentials with your applications that run in the cloud. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
- "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",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "When creating permissions, provide fine-grained control over a client's access to Azure Event Hub. Permissions in Azure Event Hub can and should be scoped to the individual resource level e.g. consumer group, event hub entity, event hub namespaces, etc.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Use least privilege data plane RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub resource logs include operational logs, virtual network and Kafka logs. Runtime audit logs capture aggregated diagnostic information for all data plane access operations (such as send or receive events) in Event Hubs.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
- "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",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub by default has a public IP address and is Internet-reachable. Private endpoints allow traffic between your virtual network and Azure Event Hub traverses over the Microsoft backbone network. In addition to that, you should disable public endpoints if those are not used. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "With IP firewall, you can restrict public endpoint further to only a set of IPv4 addresses or IPv4 address ranges in CIDR (Classless Inter-Domain Routing) notation. ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Security"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Leverage FTA Resillency HandBook",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": " This will be turned on automatically for a new EH namespace created from the portal with Premium, Dedicated, or Standard SKUs in a zone-enabled region. Both the EH metadata and the event data itself are replicated across zones",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Use the Premium or Dedicated SKUs for predicable performance",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "The built-in geo-disaster recovery feature, when enabled, ensures that the entire configuration of anamespace (Event Hubs, Consumer Groups and settings) is continuously replicated from a primary namespace to a secondary namespace, and it allows a once-only failover move from the primary to the secondary at any time. Active/Passive feature is designed to make it easier to recover from and abandon a failed Azure region without having to change application configurations",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
- "severity": "High",
- "text": "Plan for Geo Disaster Recovery using Active Passive configuration",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Should be used for DR configurations where an outage or loss of event data in the downed region cannot be tolerated. For these cases, follow the replication guidance and do not use the built-in geo-disaster recovery capability (active/passive). With Active/Active, Maintain multiple Event Hubs in different regions and namespaces, and events will be replicated between the hubs",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "For Business Critical Applications, use Active Active configuration",
- "waf": "Reliability"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
- "severity": "Medium",
- "text": "Design Resilient Event Hubs",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "severity": "Medium",
- "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "severity": "Medium",
- "text": "check backup instances with the underlying datasource not found",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "severity": "Medium",
- "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "severity": "Medium",
- "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "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 ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "severity": "Medium",
- "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "severity": "Medium",
- "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Make sure advisor is configured for VM right sizing ",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "check by searching the Meter Category Licenses in the Cost analysys",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "severity": "Medium",
- "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "severity": "Medium",
- "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "severity": "Medium",
- "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "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.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Only larger disks can be reserved => 1 TiB -",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "severity": "Medium",
- "text": "After the right-sizing optimization",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "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",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "severity": "Medium",
- "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "severity": "Medium",
- "text": "Consider using a VMSS to match demand rather than flat sizing",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "severity": "Medium",
- "text": "Move recovery points to vault-archive where applicable (Validate)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "severity": "Medium",
- "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Functions - Reuse connections",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Functions - Cache data locally",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Functions - Keep your functions warm",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "severity": "Medium",
- "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
- "waf": "Cost"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "severity": "Medium",
- "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider archiving tiers for less used data",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "severity": "Medium",
- "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "severity": "Medium",
- "text": "Consider using standard SSD rather than Premium or Ultra where possible",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "severity": "Medium",
- "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "severity": "Medium",
- "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "severity": "Medium",
- "text": "Storage accounts: check hot tier and/or GRS necessary",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Export cost data to a storage account for additional data analysis.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Create multiple Apache Spark pool definitions of various sizes.",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "severity": "Medium",
- "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "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.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Right-sizing all VMs",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "severity": "Medium",
- "text": "Swap VM sized with normalized and most recent sizes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "severity": "Medium",
- "text": "Containerizing an application can improve VM density and save money on scaling it",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Cost"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
- "severity": "Medium",
- "text": "Implement an error handling policy at the global level",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
- "severity": "Medium",
- "text": "Ensure all APIs policies include a element.",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
- "severity": "Medium",
- "text": "If you are planning to monetize your APIs, review the 'monetization support' article for best practices",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
- "severity": "High",
- "text": "Enable Diagnostics Settings to export logs to Azure Monitor",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
- "severity": "Medium",
- "text": "Enable Application Insights for more detailed telemetry",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "severity": "High",
- "text": "Configure alerts on the most critical metrics",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
- "severity": "High",
- "text": "Ensure that custom SSL certificates are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
- "severity": "High",
- "text": "Protect incoming requests to APIs (data plane) with Azure AD",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Microsoft Entra ID to authenticate users in the Developer Portal",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "severity": "Medium",
- "text": "Create appropriate groups to control the visibility of the products",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "Medium",
- "text": "Use Backends feature to eliminate redundant API backend configurations",
+ "text": "Enforce resource quotas for namespaces",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Named Values to store common values that can be used in policies",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Ensure your subscription has enough quota to scale out your nodepools",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
- "severity": "Medium",
- "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "Medium",
- "text": "Deploy at least one unit in two or more availability zones for an increased SLA of 99.99%",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
+ "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
+ "service": "AKS",
"severity": "High",
- "text": "Ensure there is an automated backup routine",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "Low",
- "text": "If you need to log at high performance levels, consider Event Hubs policy",
+ "text": "Configure Liveness and Readiness probes for all deployments",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
- "severity": "Medium",
- "text": "Apply throttling policies to control the number of requests per second",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
- "severity": "Medium",
- "text": "Configure autoscaling to scale out the number of instances when the load increases",
- "waf": "Performance"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medium",
- "text": "Deploy self-hosted gateways where Azure doesn't have a region close to the backend APIs.",
+ "text": "Use the Cluster Autoscaler",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use the premium tier for production workloads.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
- "severity": "Medium",
- "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
- "severity": "High",
- "text": "Be aware of APIM's limits",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
- "severity": "High",
- "text": "Ensure that the self-hosted gateway deployments are resilient.",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Azure Front Door in front of APIM for multi-region deployment",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Customize node configuration for AKS node pools",
"waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "severity": "Medium",
- "text": "Deploy the service within a Virtual Network (VNet)",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
- "severity": "Medium",
- "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
- "severity": "Medium",
- "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
- "severity": "High",
- "text": "Disable Public Network Access",
- "waf": "Security"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "severity": "Medium",
- "text": "Simplify management with PowerShell automation scripts",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "Medium",
- "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator",
- "waf": "Operations"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medium",
- "text": "Promote usage of Visual Studio Code APIM extension for faster API development",
- "waf": "Operations"
+ "text": "Use the Horizontal Pod Autoscaler when required",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
- "severity": "Medium",
- "text": "Implement DevOps and CI/CD in your workflow",
- "waf": "Operations"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
+ "severity": "High",
+ "text": "Consider an appropriate node size, not too large or too small",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "severity": "Medium",
- "text": "Secure APIs using client certificate authentication",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
- "severity": "Medium",
- "text": "Secure backend services using client certificate authentication",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "Consider subscribing to EventGrid Events for AKS automation",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
- "severity": "Medium",
- "text": "Review 'Recommendations to mitigate OWASP API Security Top 10 threats' article and check what is applicable to your APIs",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "For long running operation on an AKS cluster consider event termination",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use Authorizations feature to simplify management of OAuth 2.0 token for your backend APIs",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
"severity": "High",
- "text": "Use the latest TLS version when encrypting information in transit. Disable outdated and unnecessary protocols and ciphers when possible.",
- "waf": "Security"
+ "text": "Use ephemeral OS disks",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
"severity": "High",
- "text": "Ensure that secrets (Named values) are stored an Azure Key Vault so they can be securely accessed and updated",
- "waf": "Security"
+ "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
- "severity": "Medium",
- "text": "Use managed identities to authenticate to other Azure resources whenever possible",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "severity": "Low",
+ "text": "For hyper performance storage option use Ultra Disks on AKS",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
- "severity": "High",
- "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Apply guidance from the Microsoft cloud security benchmark related to Storage",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
"severity": "Medium",
- "text": "Consider the 'Azure security baseline for storage'",
- "waf": "Security"
+ "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Azure Storage by default has a public IP address and is Internet-reachable. Private endpoints allow to securely expose Azure Storage only to those Azure Compute resources that need access, thus eliminating exposure to the public Internet",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Consider using private endpoints for Azure Storage",
- "waf": "Security"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
+ "severity": "Medium",
+ "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Newly created storage accounts are created using the ARM deployment model, so that RBAC, auditing etc. are all enabled. Ensure that there are no old storage accounts with classic deployment model in a subscription",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
"severity": "Medium",
- "text": "Ensure older storage accounts are not using 'classic deployment model'",
- "waf": "Security"
+ "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Microsoft Defender to learn about suspicious activity and misconfigurations.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Enable Microsoft Defender for all of your storage accounts",
- "waf": "Security"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "severity": "Medium",
+ "text": "check backup instances with the underlying datasource not found",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "The soft-delete mechanism allows to recover accidentally deleted blobs.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
"severity": "Medium",
- "text": "Enable 'soft delete' for blobs",
- "waf": "Security"
+ "text": "Delete or archive unassociated services (disks, nics, ip addresses etc)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
"severity": "Medium",
- "text": "Disable 'soft delete' for blobs",
- "waf": "Security"
+ "text": "Consider a good balance between site recovery storage and backup for non mission critical applications",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Soft delete for containers enables you to recover a container after it has been deleted, for example recover from an accidental delete operation.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Enable 'soft delete' for containers",
- "waf": "Security"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "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 ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider selectively disabling 'soft delete' for certain blob containers, for example if the application must ensure that deleted information is immediately deleted, e.g. for confidentiality, privacy or compliance reasons. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
"severity": "Medium",
- "text": "Disable 'soft delete' for containers",
- "waf": "Security"
+ "text": "Enforce a purging log policy and automation (if needed, logs can be moved to cold storage)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Prevents accidental deletion of a storage account, by forcing the user to first remove the deletion lock, prior to deletion",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Enable resource locks on storage accounts",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Check that the disks are really needed, if not: delete. If they are needed, find lower storage tiers or use backup -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Cost"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider 'legal hold' or 'time-based retention' policies for blobs, so that is is impossible to delete the blob, the container, or the storage account. Please note that 'impossible' actually means 'impossible'; once a storage account contains an immutable blob, the only way to 'get rid' of that storage account is by cancelling the Azure subscription.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Consider immutable blobs",
- "waf": "Security"
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Consider moving unused storage to lower tier, with customized rule - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Consider disabling unprotected HTTP/80 access to the storage account, so that all data transfers are encrypted, integrity protected, and the server is authenticated. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Require HTTPS, i.e. disable port 80 on the storage account",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Make sure advisor is configured for VM right sizing ",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When configuring a custom domain (hostname) on a storage account, check whether you need TLS/HTTPS; if so, you might have to put Azure CDN in front of your storage account.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
- "severity": "High",
- "text": "When enforcing HTTPS (disabling HTTP), check that you do not use custom domains (CNAME) for the storage account.",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "check by searching the Meter Category Licenses in the Cost analysys",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "run the script on all windows VMs https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- consider implementing a policy if windows VMs are created frequently",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Requiring HTTPS when a client uses a SAS token to access blob data helps to minimize the risk of credential loss.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
"severity": "Medium",
- "text": "Limit shared access signature (SAS) tokens to HTTPS connections only",
- "waf": "Security"
+ "text": " this can be also put under AHUB if you already have licenses https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "AAD tokens should be favored over shared access signatures, wherever possible",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Use Azure Active Directory (Azure AD) tokens for blob access",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When assigning a role to a user, group, or application, grant that security principal only those permissions that are necessary for them to perform their tasks. Limiting access to resources helps prevent both unintentional and malicious misuse of your data.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
"severity": "Medium",
- "text": "Least privilege in IaM permissions",
- "waf": "Security"
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A user delegation SAS is secured with Azure Active Directory (Azure AD) credentials and also by the permissions specified for the SAS. A user delegation SAS is analogous to a service SAS in terms of its scope and function, but offers security benefits over the service SAS. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
- "severity": "High",
- "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Only larger disks can be reserved => 1 TiB -",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage account keys ('shared keys') have very little audit capabilities. While it can be monitored on who/when fetched a copy of the keys, once the keys are in the hands of multiple people, it is impossible to attribute usage to a specific user. Solely relying on AAD authentication makes it easier to tie storage access to a user. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "After the right-sizing optimization",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use Activity Log data to identify 'when', 'who', 'what' and 'how' the security of your storage account is being viewed or changed (i.e. storage account keys, access policies, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Consider using Azure Monitor to audit control plane operations on the storage account",
- "waf": "Security"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "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",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A key expiration policy enables you to set a reminder for the rotation of the account access keys. The reminder is displayed if the specified interval has elapsed and the keys have not yet been rotated.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
"severity": "Medium",
- "text": "When using storage account keys, consider enabling a 'key expiration policy'",
- "waf": "Security"
+ "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS expiration policy specifies a recommended interval over which the SAS is valid. SAS expiration policies apply to a service SAS or an account SAS. When a user generates service SAS or an account SAS with a validity interval that is larger than the recommended interval, they'll see a warning.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
"severity": "Medium",
- "text": "Consider configuring an SAS expiration policy",
- "waf": "Security"
+ "text": "Consider using a VMSS to match demand rather than flat sizing",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Stored access policies give you the option to revoke permissions for a service SAS without having to regenerate the storage account keys. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
"severity": "Medium",
- "text": "Consider linking SAS to a stored access policy",
- "waf": "Security"
+ "text": "Use AKS autoscaler to match your clusters usage (make sure the pods requirements match the scaler)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
"severity": "Medium",
- "text": "Consider configuring your application's source code repository to detect checked-in connection strings and storage account keys.",
- "waf": "Security"
+ "text": "Move recovery points to vault-archive where applicable (Validate)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Cost"
+ },
+ {
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "severity": "Medium",
+ "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Ideally, your application should be using a managed identity to authenticate to Azure Storage. If that is not possible, consider having the storage credential (connection string, storage account key, SAS, service principal credential) in Azure KeyVault or an equivalent service.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)",
- "waf": "Security"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "severity": "Medium",
+ "text": "Functions - Reuse connections",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Use near-term expiration times on an ad hoc SAS service SAS or account SAS. In this way, even if a SAS is compromised, it's valid only for a short time. This practice is especially important if you cannot reference a stored access policy. Near-term expiration times also limit the amount of data that can be written to a blob by limiting the time available to upload to it.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Strive for short validity periods for ad-hoc SAS",
- "waf": "Security"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "severity": "Medium",
+ "text": "Functions - Cache data locally",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When creating a SAS, be as specific and restrictive as possible. Prefer a SAS for a single resource and operation over a SAS which gives much broader access.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
"severity": "Medium",
- "text": "Apply a narrow scope to a SAS",
- "waf": "Security"
+ "text": "Functions - Cold starts-Use the 'Run from package' functionality. This way, the code is downloaded as a single zip file. This can, for example, result in significant improvements with Javascript functions, which have a lot of node modules.Use language specific tools to reduce the package size, for example, tree shaking Javascript applications.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS can include parameters on which client IP addresses or address ranges are authorized to request a resource using the SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
"severity": "Medium",
- "text": "Consider scoping SAS to a specific client IP address, wherever possible",
- "waf": "Security"
+ "text": "Functions - Keep your functions warm",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "A SAS cannot constrain how much data a client uploads; given the pricing model of amount of storage over time, it might make sense to validate whether clients uploaded maliciously large contents.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "severity": "Low",
- "text": "Consider checking uploaded data, after clients used a SAS to upload a file. ",
- "waf": "Security"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "severity": "Medium",
+ "text": "When using autoscale with different functions, there might be one driving all the autoscale for all the resources - consider moving it to a separate consumption plan (and consider higher plan for CPU)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "When accessing blob storage via SFTP using a 'local user account', the 'usual' RBAC controls do not apply. Blob access via NFS or REST might be more restrictive than SFTP access. Unfortunately, as of early 2023, local users are the only form of identity management that is currently supported for the SFTP endpoint",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "severity": "High",
- "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.",
- "waf": "Security"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "severity": "Medium",
+ "text": "Function apps in a given plan are all scaled together, so any issues with scaling can affect all apps in the plan.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
"severity": "Medium",
- "text": "SFTP: The SFTP endpoint does not support POSIX-like ACLs.",
- "waf": "Security"
+ "text": "Am I billed for 'await time'? This question is typically asked in the context of a C# function that does an async operation and waits for the result, e.g. await Task.Delay(1000) or await client.GetAsync('http://google.com'). The answer is yes - the GB second calculation is based on the start and end time of the function and the memory usage over that period. What actually happens over that time in terms of CPU activity is not factored into the calculation.One exception to this rule is if you are using durable functions. You are not billed for time spent at awaits in orchestrator functions.apply demand shaping techinques where possible (dev environments?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Storage supports CORS (Cross-Origin Resource Sharing), i.e. an HTTP feature that enables web apps from a different domain to loosen the same-origin policy. When enabling CORS, keep the CorsRules to the least privilege.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Avoid overly broad CORS policies",
- "waf": "Security"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Frontdoor - Turn off the default homepageIn the application settings of your App, set AzureWebJobsDisableHomepage to true. This will return a 204 (No Content) to the PoP so only header data is returned.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Data at rest is always encrypted server-side, and in addition might be encrypted client-side as well. Server-side encryption might happen using a platform-managed key (default) or customer-managed key. Client-side encryption might happen by either having the client supply an encryption/decryption key on a per-blob basis to Azure storage, or by completely handling encryption on the client-side. thus not relying on Azure Storage at all for confidentiality guarantees.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Determine how data at rest should be encrypted. Understand the thread model for data.",
- "waf": "Security"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
+ "severity": "Medium",
+ "text": "Frontdoor - Route to something that returns nothing. Either set up a Function, Function Proxy, or add a route in your WebApp that returns 200 (OK) and sends no or minimal content. The advantage of this is you will be able to log out when it is called.",
+ "waf": "Cost"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
"severity": "Medium",
- "text": "Determine which/if platform encryption should be used.",
- "waf": "Security"
+ "text": "Consider archiving tiers for less used data",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
"severity": "Medium",
- "text": "Determine which/if client-side encryption should be used.",
- "waf": "Security"
+ "text": "Check disk sizes where the size does not match the tier (i.e. A 513 GiB disk will pay a P30 (1TiB) and consider resizing",
+ "waf": "Cost"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "description": "Leverage Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) to find storage accounts which allow anonymous blob access.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
- "severity": "High",
- "text": "Consider whether public blob access is needed, or whether it can be disabled for certain storage accounts. ",
- "waf": "Security"
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "Consider using standard SSD rather than Premium or Ultra where possible",
+ "waf": "Cost"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "cb8eb8c0-aa62-4a25-a495-6eaa8dc4a243",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-upgrade?tabs=azure-portal",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Leverage a storagev2 account type for better performance and reliability",
- "waf": "Reliability"
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "severity": "Medium",
+ "text": "For storage accounts, make sure that the chosen tier is not adding up transaction charges (it might be cheaper to move to the next tier)",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "e05bbe20-9d49-4fda-9777-8424d116785c",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Azure Storage",
- "severity": "High",
- "text": "Leverage GRS, ZRS or GZRS storage for the highest availability",
- "waf": "Reliability"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "severity": "Medium",
+ "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it",
+ "waf": "Cost"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "2fa56c56-ad48-4408-be72-734c486ba280",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance",
- "service": "Azure Storage",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
"severity": "Medium",
- "text": "For write operation after failover, use customer-Managed Failover ",
- "waf": "Reliability"
+ "text": "Storage accounts: check hot tier and/or GRS necessary",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "dc0590cf-65de-48e1-909c-cbd579266bcc",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-disaster-recovery-guidance#microsoft-managed-failover",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
"severity": "Medium",
- "text": "Understand Microsoft-Managed Failover details",
- "waf": "Reliability"
+ "text": "Disks - validate use of Premium SSD disks everywhere: for example, non-prod could swap to Standard SSD or on-demand Premium SSD ",
+ "waf": "Cost"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "severity": "Medium",
+ "text": "Create budgets to manage costs and create alerts that automatically notify stakeholders of spending anomalies and overspending risks.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Storage Review Checklist",
- "guid": "a274faa1-abfe-49d5-9d04-c3c4919cb1b3",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable?tabs=azure-portal",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
"severity": "Medium",
- "text": "Enable Soft Delete",
- "waf": "Reliability"
+ "text": "Export cost data to a storage account for additional data analysis.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "Low",
- "text": "If required for AKS Windows workloads HostProcess containers can be used",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "severity": "Medium",
+ "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "Low",
- "text": "Use KEDA if running event-driven workloads",
- "waf": "Performance"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "severity": "Medium",
+ "text": "Enable the serverless Apache Spark automatic pause feature and set your timeout value accordingly.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Dapr to ease microservice development",
- "waf": "Operations"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "severity": "Medium",
+ "text": "Create multiple Apache Spark pool definitions of various sizes.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
- "severity": "High",
- "text": "Use the SLA-backed AKS offering",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "severity": "Medium",
+ "text": "Purchase Azure Synapse commit units (SCU) for one year with a pre-purchase plan to save on your Azure Synapse Analytics costs.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Disruption Budgets in your pod and deployment definitions",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "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.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
- "severity": "High",
- "text": "If using a private registry, configure region replication to store images in multiple regions",
- "waf": "Reliability"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Right-sizing all VMs",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "Low",
- "text": "Use an external application such as kubecost to allocate costs to different users",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "Swap VM sized with normalized and most recent sizes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "Low",
- "text": "Use scale down mode to delete/deallocate nodes",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
"severity": "Medium",
- "text": "When required use multi-instance partitioning GPU on AKS Clusters",
+ "text": "Containerizing an application can improve VM density and save money on scaling it",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "Low",
- "text": "If running a Dev/Test cluster use NodePool Start/Stop",
- "waf": "Cost"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Enable 2 replicas to have 99.9% availability for read operations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Use Azure Policy for Kubernetes to ensure cluster compliance",
- "waf": "Security"
+ "text": "Enable 3 replicas to have 99.9% availability for read/write operations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Medium",
- "text": "Separate applications from the control plane with user/system node pools",
- "waf": "Security"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Leverage Availability Zones by enabling read and/or write replicas",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Low",
- "text": "Add taint to your system nodepool to make it dedicated",
- "waf": "Security"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Use a private registry for your images, such as ACR",
- "waf": "Security"
+ "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",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"severity": "Medium",
- "text": "Scan your images for vulnerabilities",
- "waf": "Security"
+ "text": "Use Azure Traffic Manager to coordinate requests",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
+ "severity": "High",
+ "text": "Backup and Restore an Azure Cognitive Search Index. Use this sample code to back up index definition and snapshot to a series of Json files",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
- "severity": "High",
- "text": "Define app separation requirements (namespace/nodepool/cluster)",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Using the correct approach to feed a datalake with cold data and having the Kusto query engine at your disposal at the same time, as in the short-term storage",
+ "guid": "ba7da7be-9951-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export",
+ "service": "Azure Data Explorer",
+ "text": "Leverage External Tables and Continuous data export overview to reduce costs",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
- "severity": "Medium",
- "text": "Store your secrets in Azure Key Vault with the CSI Secrets Store driver",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer provides an optional follower capability for a leader cluster to be followed by other follower clusters for read-only access to the leader's data and metadata. Changes in the leader, such as create, append, and drop are automatically synchronized to the follower. While the leaders could span Azure regions, the follower clusters should be hosted in the same region(s) as the leader. If the leader cluster is down or databases or tables are accidentally dropped, the follower clusters will lose access until access is recovered in the leader.",
+ "guid": "56a22586-f490-4641-addd-ea8a377cdeb3",
+ "link": "https://learn.microsoft.com/azure/data-explorer/follower?tabs=csharp",
+ "service": "Azure Data Explorer",
+ "text": "To share data, explore Leader-follower cluster configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
- "severity": "High",
- "text": "If using Service Principals for the cluster, refresh credentials periodically (like quarterly)",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "Azure Data Explorer doesn't support automatic protection against the outage of an entire Azure region. This disruption can happen during a natural disaster, like an earthquake. If you require a solution for a disaster recovery situation, do the following steps to ensure business continuity. In these steps, you'll replicate your clusters, management, and data ingestion in two Azure paired regions.",
+ "guid": "861bb2bc-14ae-4a6e-95d8-d9a3adc218e6",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters",
+ "service": "Azure Data Explorer",
+ "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
- "severity": "Medium",
- "text": "If required add Key Management Service etcd encryption",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "436b0635-cb45-4e57-a603-324ace8cc123",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities",
+ "service": "Azure Data Explorer",
+ "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "Low",
- "text": "If required consider using Confidential Compute for AKS",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "18ca6017-0265-4f4b-a46a-393af7f31728",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution",
+ "service": "Azure Data Explorer",
+ "text": "Ingest data into each cluster in parallel",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
- "severity": "Medium",
- "text": "Consider using Defender for Containers",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is also called 'always-on'. For critical application deployments with no tolerance for outages, you should use multiple Azure Data Explorer clusters across Azure paired regions.",
+ "guid": "58a9c279-9c42-4bb6-9d0c-65556246b338",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration",
+ "service": "Azure Data Explorer",
+ "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
- "severity": "High",
- "text": "Use managed identities instead of Service Principals",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This configuration is identical to the active-active-active configuration, but only involves two Azure paired regions. Configure dual ingestion, processing, and curation. Users are routed to the nearest region. The cluster SKU must be the same across regions.",
+ "guid": "563a4dc7-4a74-48b6-922a-d190916a6649",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration",
+ "service": "Azure Data Explorer",
+ "text": "For critical applications, create Active-Active configuration in two paired regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
- "severity": "Medium",
- "text": "Integrate authentication with AAD (using the managed integration)",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "The Active-Hot configuration is similar to the Active-Active configuration in dual ingest, processing, and curation. While the standby cluster is online for ingestion, process, and curation, it isn't available to query. The standby cluster doesn't need to be in the same SKU as the primary cluster. It can be of a smaller SKU and scale, which may result in it being less performant. In a disaster scenario, users are redirected to the standby cluster, which can optionally be scaled up to increase performance.",
+ "guid": "8fadfe27-7de2-483b-8ac3-52baa9b75708",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-hot-standby-configuration",
+ "service": "Azure Data Explorer",
+ "text": "For applications, which required only read during failure, create Active-Hot standby configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
- "severity": "Medium",
- "text": "Limit access to admin kubeconfig (get-credentials --admin)",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "This solution offers the least resiliency (highest RPO and RTO), is the lowest in cost and highest in effort. In this configuration, there's no data recovery cluster. Configure continuous export of curated data (unless raw and intermediate data is also required) to a storage account that is configured GRS (Geo Redundant Storage). A data recovery cluster is spun up if there is a disaster recovery scenario. At that time, DDLs, configuration, policies, and processes are applied. Data is ingested from storage with the ingestion property kustoCreationTime to over-ride the ingestion time that defaults to system time.",
+ "guid": "49aa8092-dc8e-4b9d-8bb7-3b26a5a67eba",
+ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration",
+ "service": "Azure Data Explorer",
+ "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
- "severity": "Medium",
- "text": "Integrate authorization with AAD RBAC",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "description": "All database objects, policies, and configurations should be persisted in source control so they can be released to the cluster from your release automation tool.",
+ "guid": "5a907e1e-348e-4f25-9c27-d32e8bbac757",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
+ "text": "Wrap DevOps and source control around all your code",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
- "severity": "High",
- "text": "Use namespaces for restricting RBAC privilege in Kubernetes",
- "waf": "Security"
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "1559ab91-53e8-4908-ae28-b84c33b6b780",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
+ "text": "Design, develop, and implement validation routines to ensure all clusters are in-sync from a data perspective.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-active-directory/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "arm-service": "Microsoft.Kusto/clusters",
+ "checklist": "Azure Data Explorer Review Checklist",
+ "guid": "8b9fe5c4-1049-4d40-9a82-2c3474d00f18",
+ "link": "https://learn.microsoft.com/azure/data-explorer/devops",
+ "service": "Azure Data Explorer",
+ "text": "Be fully cognizant of what it takes to build a cluster from scratch. Leverage Infrastructure as a Code for your deployments",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Reliability"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
"severity": "Medium",
- "text": "For Pod Identity Access Management use Azure AD Workload Identity (preview)",
- "waf": "Security"
+ "text": "Use long-live revocable token, cache your token and acquire your silently using Microsoft Identity Library",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"severity": "Medium",
- "text": "For AKS non-interactive logins use kubelogin (preview)",
- "waf": "Security"
+ "text": "Make sure that your sign-in user flows are backed up and resilient. Make sure that the code that you use to sign-in your users are backed up and recoverable. Resilient interfaces with external processes",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
"severity": "Medium",
- "text": "Disable AKS local accounts",
- "waf": "Security"
+ "text": "Custom brand assets should be hosted on a CDN",
+ "waf": "Performance"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
"severity": "Low",
- "text": "Configure if required Just-in-time cluster access",
- "waf": "Security"
+ "text": "Have multiple identiy providers (i.e., login with your microsoft, google, facebook accounts)",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Configure if required AAD conditional access for AKS",
- "waf": "Security"
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "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)",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "Low",
- "text": "If required for Windows AKS workloads configure gMSA ",
- "waf": "Security"
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "Medium",
+ "text": "Don't replicate! Replication can create issues with directory synchronization",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"severity": "Medium",
- "text": "For finer control consider using a managed Kubelet Identity",
- "waf": "Security"
+ "text": "Have active-active for multi-regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "Medium",
- "text": "If using AGIC, do not share an AppGW across clusters",
+ "text": "Add Azure AD Domain service stamps to additional regions and locations",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
- "severity": "High",
- "text": "Do not use AKS HTTP Routing Add-On, use instead the managed NGINX ingress with the application routing add-on.",
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "severity": "Medium",
+ "text": "Use Replica Sets for DR",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "43e52f47-22d9-428c-8b1c-d521e54a29a9",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/pass-foundations-playbooks-CosmosDB_v1.docx",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "For Windows workloads use Accelerated Networking",
- "waf": "Performance"
+ "text": "FTA Resiliency Playbook",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "de39ac0e-7c28-4dc9-9565-7202bff4564b",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
"severity": "High",
- "text": "Use the standard ALB (as opposed to the basic one)",
+ "text": "Leverage Availablity Zones where regionally applicable and ofcourse if the service offers it",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "guid": "0d934a34-8b26-43e7-bd60-513a3649906e",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#replica-outages",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "If using Azure CNI, consider using different Subnets for NodePools",
- "waf": "Security"
+ "text": "Run multiple replicas of the database (>1 ) in Prod",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Multi-region writes capability allows you to take advantage of the provisioned throughput for your databases and containers across the globe",
+ "guid": "bad38ead-53cc-47de-8d8a-aab3571449ab",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions",
+ "service": "CosmosDB",
"severity": "Medium",
- "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster",
- "waf": "Security"
+ "text": "Leverage Multi-Region Writes",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "High",
- "text": "Choose the best CNI network plugin for your requirements (Azure CNI recommended)",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Span Cosmos account across two or more regions with multi-region writes",
+ "guid": "8153d89f-89dc-47b3-9be2-b1a27f7b9e91",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas",
+ "service": "CosmosDB",
+ "severity": "Medium",
+ "text": "Distribute your data globally",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Choose from various consistency levels such as Eventual, Consistent Prefix, Session, Bounded Staleness and strong",
+ "guid": "9f8ea848-25ec-4140-bc32-2758e6ee9ac0",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/consistency-levels",
+ "service": "CosmosDB",
"severity": "High",
- "text": "If using Azure CNI, size your subnet accordingly considering the maximum number of pods per node",
- "waf": "Performance"
+ "text": "Choose from several well-defined consistency models",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "High",
- "text": "If using Azure CNI, check the maximum pods/node (default 30)",
- "waf": "Performance"
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Maintain business continuity during regional outages. Azure Cosmos DB supports service-managed failover during a regional outage. During a regional outage, Azure Cosmos DB continues to maintain its latency, availability, consistency, and throughput SLAs. To help make sure that your entire application is highly available, Azure Cosmos DB offers a manual failover API to simulate a regional outage. By using this API, you can carry out regular business continuity drills.",
+ "guid": "a47e4d1e-bb79-43f9-bf87-69e1032b72fe",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover",
+ "service": "CosmosDB",
+ "severity": "Medium",
+ "text": "Enable Service managed failover",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "For internal apps organizations often open the whole AKS subnet in their firewalls. This opens network access to the nodes too, and potentially to the pods as well (if using Azure CNI). If LoadBalancer IPs are in a different subnet, only this one needs to be available to the app clients. Another reason is that if the IP addresses in the AKS subnet are a scarce resource, consuming its IP addresses for services will reduce the maximum scalability of the cluster .",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "Low",
- "text": "If using private-IP LoadBalancer services, use a dedicated subnet (not the AKS subnet)",
- "waf": "Security"
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Azure Cosmos DB automatically takes backups of your data at regular intervals. The automatic backups are taken without affecting the performance or availability of the database operations. All the backups are stored separately in a storage service.",
+ "guid": "3499c9c1-133d-42f7-a4b1-a5bd06ff1a90",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore",
+ "service": "CosmosDB",
+ "severity": "Medium",
+ "text": "Enable Automatic Backups",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "High",
- "text": "Size the service IP address range accordingly (it is going to limit the cluster scalability)",
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "This mode is the default backup mode for all existing accounts. In this mode, backup is taken at a periodic interval and the data is restored by creating a request with the support team. In this mode, you configure a backup interval and retention for your account. The maximum retention period extends to a month. The minimum backup interval can be one hour.",
+ "guid": "a6eb33f6-005c-4d92-9286-7655672d6121",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction",
+ "service": "CosmosDB",
+ "severity": "Medium",
+ "text": "Perform Periodic Backups",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "Low",
- "text": "If required add your own CNI plugin",
- "waf": "Security"
+ "arm-service": "microsoft.documentdb/databaseAccounts",
+ "checklist": "CosmosDB Review Checklist",
+ "description": "Continous 7 day retention and 30 day retention backups. Azure Cosmos DB performs data backup in the background without consuming any extra provisioned throughput (RUs) or affecting the performance and availability of your database. Continuous backups are taken in every region where the account exists.",
+ "guid": "d43918a8-cd28-49be-b6b1-7cb8245461e1",
+ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction",
+ "service": "CosmosDB",
+ "severity": "Medium",
+ "text": "Continous Backup with point-in-time restore in Azure Cosmos DB",
+ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "Low",
- "text": "If required configure Public IP per node in AKS",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
+ "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.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "Operations"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
+ "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",
+ "waf": "Reliability"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use an ingress controller to expose web-based apps instead of exposing them with LoadBalancer-type services",
+ "text": "Test the backup and recovery times to verify that they meet your RTO requirements for restoring all systems simultaneously after a disaster.",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "Low",
- "text": "Use Azure NAT Gateway as outboundType for scaling egress traffic",
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use Dynamic allocations of IPs in order to avoid Azure CNI IP exhaustion",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
"severity": "High",
- "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it",
- "waf": "Security"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using a public API endpoint, restrict the IP addresses that can access it",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
- "severity": "High",
- "text": "Use private clusters if your requirements mandate it",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "Medium",
- "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "High",
- "text": "Enable a Kubernetes Network Policy option (Calico/Azure)",
- "waf": "Security"
+ "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
"severity": "High",
- "text": "Use Kubernetes network policies to increase intra-cluster security",
- "waf": "Security"
+ "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
"severity": "High",
- "text": "Use a WAF for web workloads (UIs or APIs)",
- "waf": "Security"
+ "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).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
- "severity": "Medium",
- "text": "Use DDoS Standard in the AKS Virtual Network",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "Low",
- "text": "If required add company HTTP Proxy",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
- "severity": "Medium",
- "text": "Consider using a service mesh for advanced microservice communication management",
- "waf": "Security"
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
"severity": "High",
- "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "Low",
- "text": "Check regularly Azure Advisor for recommendations on your cluster",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "Low",
- "text": "Enable AKS auto-certificate rotation",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
"severity": "High",
- "text": "Have a regular process to upgrade your kubernetes version periodically (quarterly, for example), or use the AKS autoupgrade feature",
- "waf": "Operations"
+ "text": "Make sure the Floating IP is enabled on the Load balancer",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
"severity": "High",
- "text": "Use kured for Linux node upgrades in case you are not using node-image upgrade",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"severity": "High",
- "text": "Have a regular process to upgrade the cluster node images periodically (weekly, for example)",
- "waf": "Operations"
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider gitops to deploy applications or cluster configuration to multiple clusters",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider using AKS command invoke on private clusters",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "Low",
- "text": "For planned events consider using Node Auto Drain",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "High",
- "text": "Develop own governance practices to make sure no changes are performed by operators in the node RG (aka 'infra RG')",
- "waf": "Operations"
+ "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "Low",
- "text": "Use custom Node RG (aka 'Infra RG') name",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "Medium",
- "text": "Do not use deprecated Kubernetes APIs in your YAML manifests",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "Low",
- "text": "Taint Windows nodes",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "severity": "Low",
- "text": "Keep windows containers patch level in sync with host patch level",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Via Diagnostic Settings at the cluster level",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "Low",
- "text": "If required use nodePool snapshots",
- "waf": "Cost"
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider spot node pools for non time-sensitive workloads",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider AKS virtual node for quick bursting",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "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.",
+ "waf": "Reliability"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "High",
- "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
+ "severity": "Medium",
+ "text": "Automate SAP System Start-Stop to manage costs.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "High",
- "text": "Store and analyze your cluster logs with Container Insights (or other tools like Telegraf/ElasticSearch)",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
- "severity": "Medium",
- "text": "Monitor CPU and memory utilization of the nodes",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "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.",
+ "waf": "Cost"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using Azure CNI, monitor % of pod IPs consumed per node",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "I/O in the OS disk is a critical resource. If the OS in the nodes gets throttled on I/O, this could lead to unpredictable behavior, typically ending up in node being declared NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "Medium",
- "text": "Monitor OS disk queue depth in nodes",
- "waf": "Operations"
+ "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "Medium",
- "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports",
- "waf": "Operations"
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Subscribe to resource health notifications for your AKS cluster",
- "waf": "Operations"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "High",
- "text": "Configure requests and limits in your pod specs",
- "waf": "Operations"
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
"severity": "Medium",
- "text": "Enforce resource quotas for namespaces",
- "waf": "Operations"
+ "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
- "severity": "High",
- "text": "Ensure your subscription has enough quota to scale out your nodepools",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4fd0602-7ab5-46f1-b66a-e9dea9654a65",
- "link": "https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
- "service": "AKS",
- "severity": "High",
- "text": "Configure Liveness and Readiness probes for all deployments",
- "waf": "Operations"
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use the Cluster Autoscaler",
- "waf": "Performance"
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
- "severity": "Low",
- "text": "Customize node configuration for AKS node pools",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use the Horizontal Pod Autoscaler when required",
- "waf": "Performance"
+ "text": "Implement SSO to SAP HANA",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Larger nodes will bring higher performance and features such as ephemeral disks and accelerated networking, but they will increase the blast radius and decrease the scaling granularity",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "High",
- "text": "Consider an appropriate node size, not too large or too small",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "Low",
- "text": "If more than 5000 nodes are required for scalability then consider using an additional AKS cluster",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "Low",
- "text": "Consider subscribing to EventGrid Events for AKS automation",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "Low",
- "text": "For long running operation on an AKS cluster consider event termination",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Implement SSO to SAP BTP",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "Low",
- "text": "If required consider using Azure Dedicated Hosts for AKS nodes",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
+ "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.",
+ "waf": "Security"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "High",
- "text": "Use ephemeral OS disks",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "enforce existing Management Group policies to SAP Subscriptions",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "checklist": "SAP Checklist",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"severity": "High",
- "text": "For non-ephemeral disks, use high IOPS and larger OS disks for the nodes when running many pods/node since it requires high performance for running multiple pods and will generate huge logs with default AKS log rotation thresholds",
- "waf": "Performance"
+ "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
- "severity": "Low",
- "text": "For hyper performance storage option use Ultra Disks on AKS",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
- "severity": "Medium",
- "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using AzFiles Standard, consider AzFiles Premium and/or ANF for performance reasons",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
+ "waf": "Operations"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
- "severity": "Medium",
- "text": "If using Azure Disks and AZs, consider having nodepools within a zone for LRS disk with VolumeBindingMode:WaitForFirstConsumer for provisioning storage in right zone or use ZRS disk for nodepools spanning multiple zones",
- "waf": "Performance"
+ "checklist": "SAP Checklist",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "Medium",
- "text": "Azure Spring Apps permits two deployments for every app, only one of which receives production traffic. You can achieve zero downtime with blue green deployment strategies. Blue green deployment is only available in Standard and Enterprise tiers. You could automate deployment using CI/CD with ADO/GitHub actions",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
"severity": "Medium",
- "text": "Azure Spring Apps instances could be created in multiple regions for your applications and traffic could be routed by Traffic Manager/Front Door.",
- "waf": "Reliability"
+ "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
- "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.",
+ "checklist": "SAP Checklist",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Help protect your HANA database by using the Azure Backup service.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use more than 1 app instance for your apps",
+ "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.",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
- "severity": "Medium",
- "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Ensure time-zone matches between the operating system and the SAP system.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
"severity": "Medium",
- "text": "Set up autoscaling in Spring Cloud Gateway",
+ "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
"severity": "Low",
- "text": "Enable autoscale for the apps with Standard consumption & dedicated plan.",
- "waf": "Reliability"
+ "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
+ "waf": "Cost"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "checklist": "SAP Checklist",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
"severity": "Medium",
- "text": "Use Enterprise plan for commercial support of spring boot for mission critical apps. With other tiers you get OSS support.",
- "waf": "Reliability"
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "High",
- "text": "Select the right Function hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "High",
- "text": "Leverage Availability Zones where regionally applicable (not available for Consumption tier)",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
"severity": "Medium",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
- "waf": "Reliability"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
"severity": "High",
- "text": "Ensure 'Always On' is enabled for all Function Apps running on App Service Plan",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
"severity": "Medium",
- "text": "Pair a Function App to its own storage account. Try not to re-use storage accounts for Function Apps unless they are tightly coupled",
- "waf": "Reliability"
+ "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. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Function App code",
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
- "severity": "High",
- "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
+ "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.",
+ "waf": "Operations"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "High",
- "text": "Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "Reliability"
+ "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.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "severity": "High",
- "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "checklist": "SAP Checklist",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
- "severity": "High",
- "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "waf": "Security"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
"waf": "Operations"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "af416482-663c-4ed6-b195-b44c7068e09c",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#availability-zone-support",
- "service": "Container Apps",
- "severity": "High",
- "text": "Leverage Availability Zones if regionally applicable",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "95bc80ec-6499-4d14-a7d2-7d296b1d8abc",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#set-up-zone-redundancy-in-your-container-apps-environment",
- "service": "Container Apps",
- "severity": "High",
- "text": "Use more than one replica and enable Zone Redundancy.",
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "Medium",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "Reliability"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "ccaa4fc2-fdbc-4432-8bb7-f7e6469e4dc3",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
- "severity": "High",
- "text": "For cross-region DR, deploy container apps in multiple regions and follow active/active or active/passive application guidance.",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "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.",
+ "waf": "Performance"
},
{
- "arm-service": "Microsoft.App/containerApps",
- "checklist": "Container Apps Review",
- "guid": "2ffada86-c031-4933-bf7d-0c45bc4e5919",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity",
- "service": "Container Apps",
- "severity": "High",
- "text": "Use Front Door or Traffic Manager to route traffic to the closest region",
- "waf": "Reliability"
+ "checklist": "SAP Checklist",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
+ "severity": "Low",
+ "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operations"
+ "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
"service": "SAP",
"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.",
- "training": "https://github.com/Azure/sap-automation",
+ "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.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "Performance"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "High",
+ "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "SAP",
"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",
- "waf": "Reliability"
+ "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "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",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
"waf": "Reliability"
},
{
"checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Reliability"
+ "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
"service": "SAP",
- "severity": "Low",
- "text": "Replicate key vault contents like certificates, secrets, or keys across regions so you can decrypt data in the DR region.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"severity": "High",
- "text": "Native database replication technology should be used to synchronize the database in a HA pair.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "text": "Public IP assignment to VM running SAP Workload is not recommended.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"service": "SAP",
"severity": "High",
- "text": "The CIDR for the primary virtual network (VNet) shouldn't conflict or overlap with the CIDR of the DR site's VNet",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Reliability"
+ "text": "Consider reserving IP address on DR side when configuring ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"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).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Reliability"
+ "text": "Avoid using overlapping IP address ranges for production and DR sites.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "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)",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
"service": "SAP",
- "severity": "High",
- "text": "Azure doesn't support architectures in which the primary and secondary VMs share storage for DBMS data. For the DBMS layer, the common architecture pattern is to replicate databases at the same time and with different storage stacks than the ones that the primary and secondary VMs use.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "SAP",
- "severity": "High",
- "text": "Make sure the Floating IP is enabled on the Load balancer",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
"service": "SAP",
- "severity": "High",
- "text": "Before you deploy your high-availability infrastructure, and depending on the region you choose, determine whether to deploy with an Azure availability set or an availability zone.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
"service": "SAP",
- "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",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"service": "SAP",
"severity": "Medium",
- "text": "You can't deploy Azure availability sets within an Azure availability zone unless you use proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Reliability"
+ "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
"link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
"service": "SAP",
- "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.",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "High",
- "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "High",
- "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
"service": "SAP",
- "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.",
+ "severity": "High",
+ "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
"training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Medium",
- "text": "Deploy both VMs in the high-availability pair in an availability set or in availability zones. These VMs should be the same size and have the same storage configuration.",
- "waf": "Reliability"
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
"service": "SAP",
"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).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
- "severity": "High",
- "text": "Run all production systems on Premium managed SSDs and use Azure NetApp Files or Ultra Disk Storage. At least the OS disk should be on the Premium tier so you can achieve better performance and the best SLA.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Reliability"
+ "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",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Reliability"
+ "text": "Review SAP HANA database backups for Azure VMs.",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "Reliability"
+ "severity": "Medium",
+ "text": "Review Site Recovery built-in monitoring, where used for SAP.",
+ "waf": "Cost"
},
{
"checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
"service": "SAP",
"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.",
- "waf": "Reliability"
+ "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/optimize-your-azure-costs-by-automating-sap-system-start-stop/ba-p/2120675",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
"service": "SAP",
"severity": "Medium",
- "text": "Automate SAP System Start-Stop to manage costs.",
- "waf": "Cost"
+ "text": "Review Oracle Database in Azure Linux VM backup strategies.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
"service": "SAP",
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
"service": "SAP",
- "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.",
- "waf": "Cost"
+ "severity": "Medium",
+ "text": "Review the use of Automated Backup v2 for Azure VMs.",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
"service": "SAP",
"severity": "High",
- "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Security"
+ "text": "Enabling Write accelerator for M series when using premium disks(V1)",
+ "waf": "Operations"
},
{
"checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
"service": "SAP",
"severity": "Medium",
- "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "Security"
+ "text": "Test availability zone latency.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
"service": "SAP",
"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.",
- "waf": "Security"
+ "text": "Activate SAP EarlyWatch Alert for all SAP components.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Security"
+ "text": "Review SQL Server performance monitoring using CCMS.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
"service": "SAP",
"severity": "Medium",
- "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Security"
+ "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Security"
+ "text": "Review SAP HANA studio alerts.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
"service": "SAP",
"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.",
- "waf": "Security"
+ "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
+ "waf": "Performance"
},
{
"checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP HANA",
+ "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.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
- "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.",
+ "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.",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
- "severity": "Medium",
- "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.",
+ "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.",
+ "training": "https://me.sap.com/notes/3019299/E",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "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.",
+ "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.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
"service": "SAP",
"severity": "Medium",
- "text": "Implement SSO to SAP BTP",
+ "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
"service": "SAP",
- "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.",
+ "severity": "High",
+ "text": "Use Azure Key Vault to store your secrets and credentials",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
"service": "SAP",
"severity": "Medium",
- "text": "enforce existing Management Group policies to SAP Subscriptions",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "Operations"
+ "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).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
"service": "SAP",
- "severity": "High",
- "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "Operations"
+ "severity": "Medium",
+ "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
"service": "SAP",
"severity": "High",
- "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "Operations"
+ "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"severity": "High",
- "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
- "severity": "Low",
- "text": "The Quota API is a REST API that you can use to view and manage quotas for Azure services. Consider using it if necessary.",
- "waf": "Operations"
+ "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.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
"service": "SAP",
"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.",
- "waf": "Operations"
+ "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "severity": "High",
- "text": "Ensure required services and features are available within the chosen deployment regions eg. ANF , Zone etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
- "waf": "Operations"
+ "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",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
"service": "SAP",
"severity": "Medium",
- "text": "Leverage Azure resource tag for cost categorization and resource grouping (: BillTo, Department (or Business Unit), Environment (Production, Stage, Development), Tier (Web Tier, Application Tier), Application Owner, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Operations"
+ "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
"service": "SAP",
"severity": "High",
- "text": "Help protect your HANA database by using the Azure Backup service.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Reliability"
+ "text": "Use an Azure Key Vault per application per environment per region.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
"service": "SAP",
- "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.",
- "waf": "Reliability"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
"service": "SAP",
"severity": "High",
- "text": "Ensure time-zone matches between the operating system and the SAP system.",
- "waf": "Operations"
+ "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
"service": "SAP",
- "severity": "Medium",
- "text": "Don't group different application services in the same cluster. For example, don't combine DRBD and central services clusters on the same cluster. However, you can use the same Pacemaker cluster to manage approximately five different central services (multi-SID cluster).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Reliability"
+ "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",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
"service": "SAP",
"severity": "Low",
- "text": "Consider running dev/test systems in a snooze model to save and optimize Azure run costs.",
- "waf": "Cost"
+ "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
"service": "SAP",
- "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.",
- "waf": "Operations"
+ "severity": "Low",
+ "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "waf": "Security"
},
{
"checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
"service": "SAP",
"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.",
+ "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.",
"training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Operations"
+ "waf": "Security"
},
{
- "checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
"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. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operations"
+ "text": "Configure data persistence for an Azure Cache for Redis instance. Because your cache data is stored in memory, a rare and unplanned failure of multiple nodes can cause all the data to be dropped. To avoid losing data completely, Redis persistence allows you to take periodic snapshots of in-memory data, and store it to your storage account.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operations"
+ "text": "Use Geo-redundant storage account to persist Azure Cache for Redis data, or zonally redundant where geo-redundancy is not available",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
"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.",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
- "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.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "Performance"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"severity": "Medium",
- "text": "Run the Resiliency Report to ensure that the configuration of the entire provisioned Azure infrastructure (Compute, Database, Networking, Storage, Site Recovery) complies with the configuration defined by Cloud Adaption Framework for Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "text": "Leverage FTA Resiliency Playbook for Azure Data Factory",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "High",
+ "text": "Use zone redundant pipelines in regions that support Availability Zones",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"severity": "Medium",
- "text": "Azure tagging can be leveraged to logically group and track resources, automate their deployments, and most importantly, provide visibility on the incurred costs.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operations"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
- "severity": "Low",
- "text": "Use inter-VM latency monitoring for latency-sensitive applications.",
- "waf": "Performance"
+ "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "Medium",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"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.",
- "waf": "Performance"
+ "text": "Make sure you replicate or duplicate your network in the sister region. You have to make a copy of your Vnet in another region",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "If your ADF Pipelines use Key Vault you don't have to do anything to replicate Key Vault. Key Vault is a managed service and Microsoft takes care of it for you",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
"severity": "Low",
- "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.",
- "waf": "Performance"
+ "text": "If using Keyvault integration, use SLA of Keyvault to understand your availablity",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "Medium",
- "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Performance"
+ "text": "Leverage Flexible Server",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
+ "severity": "High",
+ "text": "Leverage Availability Zones where regionally applicable",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"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.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Performance"
+ "text": "Leverage Data-in replication for cross-region DR scenarios",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "6d37a33b-531c-4a91-871a-b69d8044f04e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "High",
- "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operations"
+ "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "7ba4d380-7b9e-4a8b-a0c3-2d8e49c11872",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Key Vault",
"severity": "Medium",
- "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
- "waf": "Security"
+ "text": "Key Vault is a managed service and Microsoft will handle the failover within and across region. Familiarize yourself with the Key Vault's availability and redundancy.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "17fb86a2-eb45-42a4-9c34-52b92a2a1842",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#data-replication",
+ "service": "Key Vault",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "text": "The contents of your key vault are replicated within the region and to a secondary region at least 150 miles away, but within the same geography to maintain high durability of your keys and secrets. Familiarize yourself with the Key Vault's data replication.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "614682ca-6e0c-4f34-9f03-c6d3f2b99a32",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions",
+ "service": "Key Vault",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "9ef2b0d2-3206-4c94-b47a-4f07e6a1c509",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations",
+ "service": "Key Vault",
"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",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "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.",
"waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "2df045b1-c0f6-47d3-9a9b-99cf6999684e",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
"severity": "High",
- "text": "It is not supported to deploy any NVA between SAP application and SAP Database server",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "Performance"
+ "text": "If you want protection against accidental or malicious deletion of your secrets, configure soft-delete and purge protection features on your key vault.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "Operations"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "cbfa96b0-5249-4e6f-947c-d0e79509708c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "Key Vault",
+ "severity": "Low",
+ "text": "Key Vault's soft-deleted resources are retained for a set period of 90 calendar days. Familiarize yourself with the Key Vault's soft-delete guidance.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "Operations"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "e8659d11-7e02-4db0-848c-c6541dbab68c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "45c25e29-d0ef-4f07-aa04-0f8c64cbcc04",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations",
+ "service": "Key Vault",
+ "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.",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Key Vault",
+ "guid": "0f15640b-31e5-4de6-85a7-d2c652fa09d3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection",
+ "service": "Key Vault",
"severity": "Medium",
- "text": "Virtual WAN manages connectivity between spoke VNets for virtual-WAN-based topologies (no need to set up user-defined routing [UDR] or NVAs), and maximum network throughput for VNet-to-VNet traffic in the same virtual hub is 50 gigabits per second. If necessary, SAP landing zones can use VNet peering to connect to other landing zones and overcome this bandwidth limitation.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operations"
+ "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.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachineScaleSets",
+ "checklist": "Resiliency Review",
+ "description": "Automatic instance repairs ensure that unhealthy instances are promptly identified and replaced, maintaining a set of healthy instances within your scale set.",
+ "guid": "7e13c105-675c-41e9-95b4-59837ff7ae7c",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs",
+ "service": "VMSS",
+ "severity": "Low",
+ "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Ensure that Azure Backup is utilized appropriately to meet your organization's resiliency requirements for Azure virtual machines (VMs).",
+ "guid": "4d874a74-8b66-42d6-b150-512a66498f6d",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction",
+ "service": "VM",
"severity": "High",
- "text": "Public IP assignment to VM running SAP Workload is not recommended.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Security"
+ "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Single Instance VMs using Premium SSD or Ultra Disk for all Operating System Disks and Data Disks are guaranteed to have Virtual Machine Connectivity of at least 99.9%",
+ "guid": "8052d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "VM",
"severity": "High",
- "text": "Consider reserving IP address on DR side when configuring ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Operations"
+ "text": "Use Premium or Ultra disks for production VMs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure automatically replicates managed disks within a region to ensure data durability and protect against single-point failures.",
+ "guid": "b31e38c3-f298-412b-8363-cffe179b599d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview",
+ "service": "VM",
"severity": "High",
- "text": "Avoid using overlapping IP address ranges for production and DR sites.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operations"
+ "text": "Ensure Managed Disks are used for all VMs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Temporary disks are intended for short-term storage of non-persistent data such as page files, swap files, or SQL Server tempdb. Storing persistent data on temporary disks can lead to data loss during maintenance events or VM redeployment.",
+ "guid": "e0d5973c-d4ce-432c-8881-37f6f7c4c0d4",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk",
+ "service": "VM",
"severity": "Medium",
- "text": "While Azure does help you to create multiple delegated subnets in a VNet, only one delegated subnet can exist in a VNet for Azure NetApp Files. Attempts to create a new volume will fail if you use more than one delegated subnet for Azure NetApp Files.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operations"
+ "text": "Do not use the Temp disk for anything that is not acceptable to be lost",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Co-locate your compute, storage, networking, and data resources across an availability zone, and replicate this arrangement in other availability zones.",
+ "guid": "e514548d-2447-4ec6-9138-b8200f1ce16e",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "VM",
"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)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
- "waf": "Security"
+ "text": "Leverage Availability Zones for your VMs in regions where they are supported",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Use at least two VMs in Availability Sets to isolate VMs on different fault and update domains.",
+ "guid": "5a785d6f-e96c-496a-b884-4cf3b2b38c88",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "VM",
+ "severity": "Medium",
+ "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets",
+ "waf": "Reliability"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure provides multiple options for VM redundancy to meet different requirements (Availability Zones, Virtual Machine Scale Sets, Availability Sets, Azure Site Recovery)",
+ "guid": "6ba2c021-4991-414a-9d3c-e574dccbd979",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "VM",
+ "severity": "High",
+ "text": "Avoid running a production workload on a single VM",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
- "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.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Azure Site Recovery enables you to achieve low RTO (Recovery Time Objective) for your Azure and hybrid VMs by providing continuous replication and failover capabilities.",
+ "guid": "2a6bcca2-b5fe-4a1e-af3d-d95d48c7c891",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
+ "severity": "High",
+ "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "Medium",
- "text": "Use Azure Front Door and WAF policies to provide global protection across Azure regions for inbound HTTP/S connections to a landing zone.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "By using Capacity Reservations, you can effectively manage capacity for critical workloads, ensuring resource availability in specified regions.",
+ "guid": "bd7bb012-f7b9-45e0-9e15-8e3ea3992c2d",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/capacity-reservation-overview",
+ "service": "VM",
+ "severity": "Low",
+ "text": "Use Capacity Reservations for critical workloads that require guaranteed capacity",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "By ensuring that the necessary quotas are increased in your DR region before testing failover with ASR, you can avoid any potential resource constraints during the recovery process for failed over VMs.",
+ "guid": "e6e2065b-3a76-4af4-a691-e8939ada4666",
+ "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests",
+ "service": "VM",
"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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "Security"
+ "text": "Increase quotas in DR region before testing failover with ASR",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "Scheduled Events is an Azure Metadata Service that provides information about upcoming maintenance events for virtual machines (VMs). By leveraging Scheduled Events, you can proactively prepare your applications for VM maintenance, minimizing disruption and improving the availability of your VMs.",
+ "guid": "6d3b475a-5c7a-4cbe-99bb-e64dd8902e87",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events",
+ "service": "VM",
+ "severity": "Low",
+ "text": "Utilize Scheduled Events to prepare for VM maintenance",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Use Zone-redundant Storage (ZRS) in the primary region for scenarios that require high availability and for restricting replication to a particular country or region. For protection against regional disasters, use Geo-zone-redundant Storage (GZRS), which combines ZRS in the primary region with geo-replication to a secondary region?.",
+ "guid": "48c7c891-dcb1-4f7d-9769-ae568ba38d4a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Azure Storage",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Performance"
+ "text": "Choose the most appropriate data redundancy option for Azure Storage based on your requirements",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Assigning a Delete lock to your storage account helps protect the availability of your data, minimizing the risk of disruptions to your business operations.",
+ "guid": "85e2213d-bd7b-4b01-8f7b-95e06e158e3e",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
+ "severity": "Low",
+ "text": "Apply a Delete lock to prevent accidental or malicious deletion of storage accounts",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
- "severity": "High",
- "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Performance"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Container soft delete protects your data from being accidentally deleted by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "a3992c2d-e6e2-4065-a3a7-6af4a691e893",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
+ "severity": "Low",
+ "text": "Enable soft delete for Storage Account Containers",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
- "severity": "Medium",
- "text": "Make sure that internal deployments for Azure Load Balancer are set up to use Direct Server Return (DSR). This setting (Enabling Floating IP) will reduce latency when internal load balancer configurations are used for high-availability configurations on the DBMS layer.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Resiliency Review",
+ "description": "Blob soft delete protects an individual blob and its versions, snapshots, and metadata from accidental deletes or overwrites by maintaining the deleted data in the system for a specified period of time.",
+ "guid": "9ada4666-7e13-4c10-96b9-153d89f89dc7",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
+ "severity": "Low",
+ "text": "Enable soft delete for blobs",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup enhanced soft delete provides critical protection against ransomware attacks by retaining deleted backups, enabling recovery from potential ransomware encryption or deletion.",
+ "guid": "b44be3b1-a27f-48b9-b91b-e1038df03a82",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about",
+ "service": "Azure Backup",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
- "waf": "Security"
+ "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "High",
- "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Backup's multi-user authorization enables fine-grained control over user access to backup resources, allowing you to restrict privileges and ensure proper authentication and authorization for backup operations.",
+ "guid": "2cd463cb-bbc8-4ac2-a9eb-c92a43da1dae",
+ "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept",
+ "service": "Azure Backup",
+ "severity": "Low",
+ "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Medium",
- "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Performance"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Resiliency Review",
+ "description": "Azure Immutable Storage provides an additional layer of security by ensuring that backup data stored in the vault cannot be modified or deleted for a specified retention period. This helps safeguard your backups from ransomware attacks that may attempt to compromise or manipulate your backup data.",
+ "guid": "2cc88147-0607-4c1c-aa0e-614658dd458e",
+ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault",
+ "service": "Azure Backup",
+ "severity": "Low",
+ "text": "Implement Immutable Storage for your vaults to protect against ransomware and prevent unauthorized modifications to backups",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Performance"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Resiliency Review",
+ "description": "To eliminate a single point of failure in your on-premises DNS services and ensure reliable DNS resolution during business continuity and disaster recovery scenarios, it is recommended to utilize Azure DNS Private Resolvers in multiple regions. By deploying two or more Azure DNS private resolvers across different regions, you can enable DNS failover and achieve resiliency in your DNS infrastructure.",
+ "guid": "43da1dae-2cc8-4814-9060-7c1cca0e6146",
+ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover",
+ "service": "DNS",
+ "severity": "Low",
+ "text": "Implement DNS Failover using Azure DNS Private Resolvers",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Cost"
+ "arm-service": "Microsoft.PowerBI/gateways",
+ "checklist": "Resiliency Review",
+ "description": "Use an on-premises data gateway cluster to avoid single points of failure and to load balance traffic across gateways.",
+ "guid": "89f89dc7-b44b-4e3b-8a27-f8b9e91be103",
+ "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters",
+ "service": "Data Gateways",
+ "severity": "Medium",
+ "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Resiliency Review",
+ "description": "When choosing the best option for deploying NVAs in Azure, it is crucial to consider the vendor's recommendations and validate that the specific design has been vetted and validated by the NVA vendor. The vendor should also provide the necessary NVA configuration for seamless integration in Azure.",
+ "guid": "8b1188b3-c6a4-46ce-a544-451e192d3442",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"severity": "High",
- "text": "If using Load Balancer with Linux guest operating systems, check that the Linux network parameter net.ipv4.tcp_timestamps is set to 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Performance"
+ "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "1fc2fc14-eea6-4e69-b8d9-a3edc218e687",
+ "link": "https://polite-sea-0995b240f.2.azurestaticapps.net/technical-delivery-playbook/azure-services/analytics/purview/",
+ "service": "Purview",
"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",
- "waf": "Security"
+ "text": "Leverage FTA Resillency Handbook",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ab067acb-49e5-4b96-8332-4ecf8cc13318",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "High",
- "text": "Review SAP HANA database backups for Azure VMs.",
- "waf": "Cost"
+ "text": "Plan for Data Center level outage",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "description": "1. Create the new account 2. Migrate configuration items 3. Run scans 4. Migrate custom typedefs and custom assets 5. Migrate relationships 6. Migrate glossary terms 7. Assign classifications to assets 8. Assign contacts to assets",
+ "guid": "da611702-69f4-4fb4-aa3d-3ef7f3176c4b",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review Site Recovery built-in monitoring, where used for SAP.",
- "waf": "Cost"
+ "text": "Practice Failover for BCDR",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "97b15b8a-219a-44ab-bb57-879024d22678",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "High",
- "text": "Review the Monitoring the SAP HANA System Landscape guidance.",
- "waf": "Operations"
+ "text": "Plan a backup strategy and take regular backups",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
- "severity": "Medium",
- "text": "Review Oracle Database in Azure Linux VM backup strategies.",
- "waf": "Operations"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "6d20b56c-56a9-4581-89bf-8d8e5c586b7d",
+ "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cdc15ac-c075-4ee9-a130-a8889579e76b",
+ "link": "https://learn.microsoft.com/purview/deployment-best-practices",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review the use of Azure Blob Storage with SQL Server 2016.",
- "waf": "Operations"
+ "text": "Follow Purview accounts architectures and deployment best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "896e710a-7da7-4be9-a56d-14d3c49d997c",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-collections",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review the use of Automated Backup v2 for Azure VMs.",
- "waf": "Operations"
+ "text": "Follow Collection Architectures and best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
- "severity": "High",
- "text": "Enabling Write accelerator for M series when using premium disks(V1)",
- "waf": "Operations"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b3d1325a-a225-4c6f-9e06-85edddea8a4b",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-asset-lifecycle",
+ "service": "Purview",
+ "severity": "Medium",
+ "text": "Follow Assest lifecycle best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "7cdeb3c6-1fc2-4fc1-9eea-6e69d8d9a3ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-automation",
+ "service": "Purview",
"severity": "Medium",
- "text": "Test availability zone latency.",
- "waf": "Performance"
+ "text": "Follow automation best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c218e687-ab06-47ac-a49e-5b9603324ecf",
+ "link": "https://learn.microsoft.com/purview/disaster-recovery",
+ "service": "Purview",
"severity": "Medium",
- "text": "Activate SAP EarlyWatch Alert for all SAP components.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "Performance"
+ "text": "Follow Backup and Migration Best practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "8cc13318-da61-4170-869f-4fb4aa3d3ef7",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-glossary",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Performance"
+ "text": "Follow Purview Glossary Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
- "severity": "Medium",
- "text": "Review SQL Server performance monitoring using CCMS.",
- "waf": "Performance"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "f3176c4b-97b1-45b8-a219-a4abeb578790",
+ "link": "https://learn.microsoft.com/purview/concept-workflow",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Workflows ",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "24d22678-6d20-4b56-a56a-958119bf8d8e",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-security",
+ "service": "Purview",
"severity": "Medium",
- "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "Performance"
+ "text": "Follow Purview Security Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "5c586b7d-8cdc-415a-ac07-5ee9b130a888",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-lineage-azure-data-factory",
+ "service": "Purview",
"severity": "Medium",
- "text": "Review SAP HANA studio alerts.",
- "waf": "Performance"
+ "text": "Follow Purview Data Lineage Best Practices",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "9579e76b-896e-4710-a7da-7be9956d14d3",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-scanning",
+ "service": "Purview",
"severity": "Medium",
- "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.",
- "waf": "Performance"
+ "text": "Follow Best Practices for Scanning Registered Sources",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "c49d997c-b3d1-4325-aa22-5c6f4e0685ed",
+ "link": "https://learn.microsoft.com/purview/concept-best-practices-classification",
+ "service": "Purview",
"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.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "waf": "Security"
+ "text": "Follow Classification Best Practices in Governance Portal",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "ddea8a4b-7cde-4b3c-91fc-2fc14eea6e69",
+ "link": "https://learn.microsoft.com/purview/sensitivity-labels-frequently-asked-questions",
+ "service": "Purview",
"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.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "Security"
+ "text": "Perform Sensitivity Labelling in the Purview Data Map",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "d8d9a3ed-c218-4e68-9ab0-67acb49e5b96",
+ "link": "https://learn.microsoft.com/purview/concept-data-share",
+ "service": "Purview",
"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.",
- "waf": "Security"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "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.",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "Security"
+ "text": "Leverage Azure Storage in-place data sharing with Microsoft Purview",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "03324ecf-8cc1-4331-ada6-1170269f4fb4",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Data Estate Insights",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
- "severity": "Medium",
- "text": "Azure Storage encryption is enabled for all Azure Resource Manager and classic storage accounts, and can't be disabled. Because your data is encrypted by default, you don't need to modify your code or applications to use Azure Storage encryption.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "aa3d3ef7-f317-46c4-a97b-15b8a219a4ab",
+ "link": "https://learn.microsoft.com/purview/catalog-adoption-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Data stewardship and Catalog adoption",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
- "severity": "High",
- "text": "Use Azure Key Vault to store your secrets and credentials",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "eb578790-24d2-4267-a6d2-0b56c56a9581",
+ "link": "https://learn.microsoft.com/purview/concept-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Use Inventory and Ownership",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
- "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).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "19bf8d8e-5c58-46b7-b8cd-c15acc075ee9",
+ "link": "https://learn.microsoft.com/purview/glossary-insights",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Leverage Insights for Glossary, Classifications, Sensitivity Labels",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b130a888-9579-4e76-a896-e710a7da7be9",
+ "link": "https://learn.microsoft.com/purview/compliance-manager",
+ "service": "Purview",
"severity": "Medium",
- "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
- "severity": "High",
- "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "Security"
+ "text": "Generate assessment scores",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "956d14d3-c49d-4997-ab3d-1325aa225c6f",
+ "link": "https://learn.microsoft.com/purview/compliance-manager-scoring",
+ "service": "Purview",
+ "severity": "Medium",
+ "text": "Profiling- get summaries of data content",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
- "severity": "High",
- "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4e0685ed-ddea-48a4-a7cd-eb3c61fc2fc1",
+ "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Follow Microsoft Purview Data Owner access policies",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "4eea6e69-d8d9-4a3e-bc21-8e687ab067ac",
+ "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy",
+ "service": "Purview",
"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",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
- "waf": "Security"
+ "text": "Follow Self-service access policies",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
- "severity": "Medium",
- "text": "Default to Microsoft-managed keys for principal encryption functionality and use customer-managed keys when required.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Purview/accounts",
+ "checklist": "Microsoft Purview Review Checklist",
+ "guid": "b49e5b96-0332-44ec-b8cc-13318da61170",
+ "link": "https://learn.microsoft.com/purview/concept-policies-devops",
+ "service": "Purview",
+ "severity": "Low",
+ "text": "Follow DevOps policies",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "0e03f5ee-4648-423c-bb86-7239480f9171",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"severity": "High",
- "text": "Use an Azure Key Vault per application per environment per region.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "text": "Leverage Availability Zones if regionally applicable (this is automatically enabled).",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "c0c273bd-00ad-419a-9f2f-fc72fb181e55",
+ "link": "https://learn.microsoft.com/en-us/azure/iot-dps/iot-dps-ha-dr#high-availability",
+ "service": "Device Update for IoT Hub",
"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.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
- "waf": "Security"
+ "text": "Be aware of Microsoft-initiated failovers. These are exercised by Microsoft in rare situations to fail over all the DPS instances from an affected region to the corresponding geo-paired region.",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "3af8abe6-07eb-4287-b393-6c4abe3702eb",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Device Update for IoT Hub",
"severity": "High",
- "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
- "waf": "Security"
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/deviceUpdateServices",
+ "checklist": "Device Update Review",
+ "guid": "bd91245c-fe32-4e98-a085-794a40f4bfe1",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Device Update for IoT Hub",
"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",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
- "waf": "Security"
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
- "severity": "Low",
- "text": "Consider using Microsoft anti-malware software on Azure to protect your virtual machines from malicious files, adware, and other threats.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
- "waf": "Security"
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "severity": "Low",
- "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"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.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "Security"
+ "text": "Consider a Cross-Region DR strategy for critical workloads",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "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.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
- "waf": "Security"
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
+ "severity": "High",
+ "text": "If deploying to an Isolated environment, use or migrate to App Service Environment (ASE) v3",
+ "waf": "Reliability"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"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.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Security"
+ "text": "Leverage Azure DevOps or GitHub to streamline CI/CD and safeguard your Logic App code",
+ "waf": "Operations"
}
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/checklists/waf_checklist.es.json b/checklists/waf_checklist.es.json
index 881e01bc7..2e5c33a23 100644
--- a/checklists/waf_checklist.es.json
+++ b/checklists/waf_checklist.es.json
@@ -1,5582 +1,5408 @@
{
"items": [
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario para las cargas de trabajo de Windows de AKS, se pueden usar contenedores HostProcess",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Utilice KEDA si ejecuta cargas de trabajo controladas por eventos",
- "waf": "Rendimiento"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
+ "service": "Entra",
+ "severity": "Medio",
+ "text": "Use un inquilino de Entra para administrar los recursos de Azure, a menos que tenga un requisito normativo o empresarial claro para varios inquilinos.",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Entra",
"severity": "Bajo",
- "text": "Uso de Dapr para facilitar el desarrollo de microservicios",
+ "text": "Use el enfoque de automatización multiinquilino para administrar los inquilinos de Microsoft Entra ID.",
"waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "Entra",
"severity": "Alto",
- "text": "Uso de la oferta de AKS respaldada por SLA",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Uso de presupuestos de interrupción en el pod y las definiciones de implementación",
- "waf": "Fiabilidad"
+ "text": "Use Azure Lighthouse para la administración de varios inquilinos con los mismos identificadores.",
+ "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Entra",
"severity": "Alto",
- "text": "Si usa un registro privado, configure la replicación de regiones para almacenar imágenes en varias regiones",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Usar una aplicación externa como kubecost para asignar costos a diferentes usuarios",
+ "text": "Si concede a un asociado acceso para administrar el inquilino, use Azure Lighthouse.",
"waf": "Costar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Usar el modo de reducción vertical para eliminar/desasignar nodos",
- "waf": "Costar"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "348ef254-c27d-442e-abba-c7571559ab91",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "service": "Entra",
+ "severity": "Alto",
+ "text": "Aplique un modelo RBAC que se alinee con su modelo operativo en la nube. Ámbito y asignación entre grupos de administración y suscripciones.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
- "severity": "Medio",
- "text": "Cuando sea necesario, use la GPU de partición de varias instancias en clústeres de AKS",
- "waf": "Costar"
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "service": "Entra",
+ "severity": "Alto",
+ "text": "Utilice únicamente el tipo de autenticación Cuenta profesional o educativa para todos los tipos de cuenta. Evite usar la cuenta de Microsoft",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si se ejecuta un clúster de desarrollo y pruebas, use NodePool Start/Stop",
- "waf": "Costar"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "Entra",
+ "severity": "Medio",
+ "text": "Utilice solo grupos para asignar permisos. Agregue grupos locales al grupo Solo ID de Entra si ya existe un sistema de administración de grupos.",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
- "severity": "Medio",
- "text": "Uso de Azure Policy para Kubernetes para garantizar el cumplimiento de clústeres",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
+ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
+ "service": "Entra",
+ "severity": "Alto",
+ "text": "Aplique directivas de acceso condicional de identificador de Microsoft Entra para cualquier usuario con derechos sobre entornos de Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Medio",
- "text": "Separe las aplicaciones del plano de control con grupos de nodos de usuario/sistema",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
+ "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
+ "service": "Entra",
+ "severity": "Alto",
+ "text": "Aplique la autenticación multifactor para cualquier usuario con derechos en los entornos de Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Agregue taint a su grupo de nodos del sistema para que sea dedicado",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "Entra",
+ "severity": "Medio",
+ "text": "Aplique la administración de identidades privilegiadas (PIM) de Microsoft Entra ID para establecer un acceso permanente cero y privilegios mínimos.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
+ "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
+ "service": "Entra",
"severity": "Medio",
- "text": "Utilice un registro privado para sus imágenes, como ACR",
+ "text": "Si planea cambiar de Servicios de dominio de Active Directory a Servicios de dominio Entra, evalúe la compatibilidad de todas las cargas de trabajo.",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
+ "service": "Entra",
"severity": "Medio",
- "text": "Escanea tus imágenes en busca de vulnerabilidades",
+ "text": "Integre los registros de identificador de Microsoft Entra con Azure Monitor central de la plataforma. Azure Monitor permite una única fuente de información sobre los datos de registro y supervisión en Azure, lo que proporciona a las organizaciones opciones nativas en la nube para cumplir con los requisitos relacionados con la recopilación y retención de registros.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
+ "ammp": true,
+ "checklist": "Azure Landing Zone Review",
+ "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
+ "service": "Entra",
"severity": "Alto",
- "text": "Definición de los requisitos de separación de aplicaciones (espacio de nombres/grupo de nodos/clúster)",
+ "text": "Implemente un acceso de emergencia o cuentas de emergencia para evitar el bloqueo de cuentas en todo el inquilino.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "35037e68-9349-4c15-b371-228514f4cdff",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "Entra",
"severity": "Medio",
- "text": "Almacenamiento de los secretos en Azure Key Vault con el controlador del almacén de secretos de CSI",
+ "text": "No use cuentas sincronizadas locales para las asignaciones de roles de identificador de Microsoft Entra, a menos que tenga un escenario que lo requiera específicamente.",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
- "severity": "Alto",
- "text": "Si usa entidades de servicio para el clúster, actualice las credenciales periódicamente (por ejemplo, trimestralmente)",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Entra",
+ "severity": "Medio",
+ "text": "Al usar el proxy de aplicación de Microsoft Entra ID para proporcionar a los usuarios remotos acceso a las aplicaciones, adminístrelo como un recurso de plataforma, ya que solo puede tener una instancia por inquilino.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
+ "service": "VNet",
"severity": "Medio",
- "text": "Si es necesario, agregue el servicio de administración de claves, etcd, cifrado",
+ "text": "Utilice una topología de red en estrella tipo hub-and-spoke para escenarios de red que requieran la máxima flexibilidad.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, considere la posibilidad de usar Proceso confidencial para AKS",
- "waf": "Seguridad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
- "severity": "Medio",
- "text": "Considere la posibilidad de usar Defender para contenedores",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Implemente servicios de red compartidos, incluidas puertas de enlace de ExpressRoute, puertas de enlace de VPN y Azure Firewall o aplicaciones virtuales de red de asociados en la red virtual del centro central. Si es necesario, implemente también servicios DNS.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "VNet",
"severity": "Alto",
- "text": "Uso de identidades administradas en lugar de entidades de servicio",
+ "text": "Utilice un plan de protección de IP o red DDoS para todas las direcciones IP públicas en las zonas de aterrizaje de aplicaciones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"severity": "Medio",
- "text": "Integración de la autenticación con AAD (mediante la integración administrada)",
- "waf": "Seguridad"
+ "text": "Al implementar tecnologías de redes de asociados o NVA, siga las instrucciones del proveedor del asociado.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
- "severity": "Medio",
- "text": "Limitar el acceso a admin kubeconfig (get-credentials --admin)",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
+ "service": "ExpressRoute",
+ "severity": "Bajo",
+ "text": "Si necesita tránsito entre ExpressRoute y puertas de enlace de VPN en escenarios tipo hub-and-spoke, use Azure Route Server.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
- "severity": "Medio",
- "text": "Integración de la autorización con RBAC de AAD",
+ "arm-service": "Microsoft.Network/virtualHubs",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
+ "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
+ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
+ "service": "ARS",
+ "severity": "Bajo",
+ "text": "Si utiliza el servidor de rutas, utilice un prefijo /27 para la subred del servidor de rutas.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
- "severity": "Alto",
- "text": "Uso de espacios de nombres para restringir el privilegio RBAC en Kubernetes",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
+ "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",
+ "severity": "Medio",
+ "text": "En el caso de las arquitecturas de red con varias topologías en estrella tipo hub-and-spoke en las regiones de Azure, use emparejamientos de red virtual global entre las redes virtuales del centro para conectar las regiones entre sí.",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
+ "service": "VNet",
"severity": "Medio",
- "text": "Para la administración de acceso a identidades de pods, use Azure AD Workload Identity (versión preliminar)",
- "waf": "Seguridad"
+ "text": "Use Azure Monitor para redes para supervisar el estado de un extremo a otro de las redes de Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
+ "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
+ "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",
"severity": "Medio",
- "text": "En el caso de los inicios de sesión no interactivos de AKS, use kubelogin (versión preliminar)",
- "waf": "Seguridad"
+ "text": "Si tiene más de 400 redes radiales en una región, implemente un centro adicional para omitir los límites de emparejamiento de red virtual (500) y el número máximo de prefijos que se pueden anunciar a través de ExpressRoute (1000).",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
+ "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
+ "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",
"severity": "Medio",
- "text": "Deshabilitación de cuentas locales de AKS",
- "waf": "Seguridad"
+ "text": "Limite el número de rutas por tabla de rutas a 400.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Configure, si es necesario, el acceso al clúster Just-In-Time",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
+ "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Use la opción \"Permitir tráfico a la red virtual remota\" al configurar emparejamientos de red virtual.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Configure si es necesario el acceso condicional de AAD para AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Cuando use ExpressRoute Direct, configure MACsec para cifrar el tráfico en el nivel de capa dos entre los enrutadores de la organización y MSEE. El diagrama muestra este cifrado en el flujo.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario para las cargas de trabajo de Windows AKS, configure gMSA ",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "En escenarios en los que MACsec no es una opción (por ejemplo, no usar ExpressRoute Direct), use una puerta de enlace de VPN para establecer túneles IPsec a través del emparejamiento privado de ExpressRoute.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
- "severity": "Medio",
- "text": "Para un control más preciso, considere la posibilidad de utilizar una identidad de Kubelet administrada",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "Alto",
+ "text": "Asegúrese de que no se usen espacios de direcciones IP superpuestos entre regiones de Azure y ubicaciones locales.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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",
+ "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
"severity": "Medio",
- "text": "Si utiliza AGIC, no comparta un AppGW entre clústeres",
- "waf": "Fiabilidad"
+ "text": "Utilice las direcciones IP de los rangos de asignación de direcciones para Internet privadas (RFC 1918).",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
"severity": "Alto",
- "text": "No use el complemento de enrutamiento HTTP de AKS, use en su lugar la entrada NGINX administrada con el complemento de enrutamiento de aplicaciones.",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
- "severity": "Medio",
- "text": "En el caso de las cargas de trabajo de Windows, use las redes aceleradas",
+ "text": "Asegúrese de que no se desperdicie el espacio de direcciones IP, no cree redes virtuales innecesariamente grandes (por ejemplo, /16).",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "Alto",
- "text": "Utilice el ALB estándar (en lugar del básico)",
+ "text": "No utilice intervalos de direcciones IP superpuestos para los sitios de producción y recuperación ante desastres.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
+ "service": "DNS",
"severity": "Medio",
- "text": "Si usa Azure CNI, considere la posibilidad de usar diferentes subredes para NodePools",
- "waf": "Seguridad"
+ "text": "En entornos en los que la resolución de nombres en Azure es todo lo necesario, use Azure Private DNS para la resolución con una zona delegada para la resolución de nombres (como 'azure.contoso.com').",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
+ "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
+ "service": "DNS",
"severity": "Medio",
- "text": "Use puntos de conexión privados (preferidos) o puntos de conexión de servicio de red virtual para acceder a los servicios PaaS desde el clúster",
+ "text": "En el caso de los entornos en los que se requiere la resolución de nombres en Azure y en el entorno local y no existe ningún servicio DNS empresarial como Active Directory, use Azure DNS Private Resolver para enrutar las solicitudes DNS a Azure o a servidores DNS locales.",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "Alto",
- "text": "Elija el mejor complemento de red de CNI para sus necesidades (se recomienda Azure CNI)",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "Alto",
- "text": "Si usa CNI de Azure, ajuste el tamaño de la subred en consecuencia teniendo en cuenta el número máximo de pods por nodo",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "Alto",
- "text": "Si usa Azure CNI, compruebe el número máximo de pods o nodo (valor predeterminado 30)",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "En el caso de las aplicaciones internas, las organizaciones suelen abrir toda la subred de AKS en sus firewalls. Esto también abre el acceso de red a los nodos y, potencialmente, también a los pods (si se usa Azure CNI). Si las direcciones IP de LoadBalancer están en una subred diferente, solo esta debe estar disponible para los clientes de la aplicación. Otra razón es que si las direcciones IP de la subred de AKS son un recurso escaso, el consumo de sus direcciones IP para los servicios reducirá la escalabilidad máxima del clúster.",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
+ "service": "DNS",
"severity": "Bajo",
- "text": "Si usa servicios de LoadBalancer de dirección IP privada, use una subred dedicada (no la subred de AKS)",
- "waf": "Seguridad"
+ "text": "Las cargas de trabajo especiales que requieren e implementan su propio DNS (como Red Hat OpenShift) deben usar su solución de DNS preferida.",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "614658d3-558f-4d77-849b-821112df27ee",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
+ "service": "DNS",
"severity": "Alto",
- "text": "Dimensione el rango de direcciones IP del servicio en consecuencia (limitará la escalabilidad del clúster)",
- "waf": "Fiabilidad"
+ "text": "Habilite el registro automático de Azure DNS para administrar automáticamente el ciclo de vida de los registros DNS de las máquinas virtuales implementadas en una red virtual.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, agregue su propio complemento CNI",
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
+ "service": "Bastion",
+ "severity": "Medio",
+ "text": "Use Azure Bastion para conectarse de forma segura a la red.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, configure la dirección IP pública por nodo en AKS",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
+ "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
+ "service": "Bastion",
"severity": "Medio",
- "text": "Use un controlador de entrada para exponer aplicaciones basadas en web en lugar de exponerlas con servicios de tipo LoadBalancer",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Uso de Azure NAT Gateway como outboundType para escalar el tráfico de salida",
- "waf": "Fiabilidad"
+ "text": "Use Azure Bastion en una subred /26 o superior.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "WAF",
"severity": "Medio",
- "text": "Uso de asignaciones dinámicas de direcciones IP para evitar el agotamiento de direcciones IP de Azure CNI",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
- "severity": "Alto",
- "text": "Filtre el tráfico de salida con AzFW/NVA si sus requisitos de seguridad lo exigen",
+ "text": "Use las directivas de Azure Front Door y WAF para proporcionar protección global en todas las regiones de Azure para las conexiones HTTP/S entrantes a una zona de aterrizaje.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
- "severity": "Medio",
- "text": "Si utiliza un punto de conexión de API público, restrinja las direcciones IP que pueden acceder a él",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
+ "severity": "Bajo",
+ "text": "Al usar Azure Front Door y Azure Application Gateway para ayudar a proteger las aplicaciones HTTP/S, use directivas de WAF en Azure Front Door. Bloquee Azure Application Gateway para recibir tráfico solo de Azure Front Door.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
"severity": "Alto",
- "text": "Utilice clústeres privados si sus requisitos lo exigen",
+ "text": "Cuando se requieran WAF y otros servidores proxy inversos para las conexiones HTTP/S entrantes, impleméntelos dentro de una red virtual de zona de aterrizaje y junto con las aplicaciones que protegen y exponen a Internet.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "Medio",
- "text": "Para los nodos de AKS de Windows 2019 y 2022, se pueden usar directivas de red de Calico ",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Use los planes de protección IP o de red DDoS de Azure para ayudar a proteger los puntos de conexión de direcciones IP públicas dentro de las redes virtuales.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
+ "service": "VNet",
"severity": "Alto",
- "text": "Habilitación de una opción de directiva de red de Kubernetes (Calico/Azure)",
- "waf": "Seguridad"
+ "text": "Planifique cómo administrar la configuración y la estrategia del tráfico saliente de su red antes del próximo cambio importante. El 30 de septiembre de 2025, se retirará el acceso saliente predeterminado para las nuevas implementaciones y solo se permitirán configuraciones de acceso explícitas.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
"severity": "Alto",
- "text": "Uso de directivas de red de Kubernetes para aumentar la seguridad dentro del clúster",
+ "text": "Agregue configuraciones de diagnóstico para guardar los registros relacionados con DDoS para todas las direcciones IP públicas protegidas (IP DDoS o Protección de red).",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
+ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
+ "service": "Policy",
"severity": "Alto",
- "text": "Uso de un WAF para cargas de trabajo web (interfaces de usuario o API)",
+ "text": "Asegúrese de que haya una asignación de directiva para denegar las direcciones IP públicas vinculadas directamente a las máquinas virtuales. Use exclusiones si se necesitan direcciones IP públicas en máquinas virtuales específicas.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
- "severity": "Medio",
- "text": "Uso de DDoS Standard en la red virtual de AKS",
- "waf": "Seguridad"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Use ExpressRoute como conexión principal a Azure. Utilice las VPN como fuente de conectividad de respaldo.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, agregue el proxy HTTP de la empresa",
- "waf": "Seguridad"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "description": "Puede usar la anteposición de AS y los pesos de conexión para influir en el tráfico de Azure al entorno local, y la gama completa de atributos BGP en sus propios enrutadores para influir en el tráfico del entorno local a Azure.",
+ "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Cuando use varios circuitos ExpressRoute o varias ubicaciones locales, use atributos BGP para optimizar el enrutamiento.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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-about-virtual-network-gateways?source=recommendations#gwsku",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "Considere la posibilidad de usar una malla de servicios para la administración avanzada de comunicaciones de microservicios",
- "waf": "Seguridad"
+ "text": "Seleccione la SKU correcta para las puertas de enlace de ExpressRoute/VPN en función de los requisitos de ancho de banda y rendimiento.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
+ "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
+ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Configurar alertas sobre las métricas más críticas (consulte Container Insights para obtener recomendaciones)",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Consulte periódicamente Azure Advisor para obtener recomendaciones sobre el clúster",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Habilitación de la rotación automática de certificados de AKS",
- "waf": "Operaciones"
+ "text": "Asegúrese de que usa circuitos ExpressRoute de datos ilimitados solo si alcanza el ancho de banda que justifica su costo.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Tenga un proceso regular para actualizar la versión de Kubernetes periódicamente (trimestralmente, por ejemplo) o use la característica de actualización automática de AKS",
- "waf": "Operaciones"
+ "text": "Aproveche la SKU local de ExpressRoute para reducir el costo de los circuitos, si la ubicación de emparejamiento de circuitos admite las regiones de Azure para la SKU local.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "Alto",
- "text": "Utilice kured para las actualizaciones de nodos de Linux en caso de que no esté utilizando la actualización de imagen de nodo",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
+ "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Implemente una puerta de enlace de ExpressRoute con redundancia de zona en las regiones de Azure admitidas.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
- "severity": "Alto",
- "text": "Disponer de un proceso regular para actualizar las imágenes de los nodos del clúster periódicamente (semanalmente, por ejemplo)",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "En escenarios que requieren un ancho de banda superior a 10 Gbps o puertos dedicados de 10/100 Gbps, use ExpressRoute Direct.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Considere la posibilidad de implementar aplicaciones o configuraciones de clústeres en varios clústeres",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
+ "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Cuando se requiera una latencia baja o el rendimiento del entorno local a Azure debe ser superior a 10 Gbps, habilite FastPath para omitir la puerta de enlace de ExpressRoute de la ruta de acceso de datos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Considere la posibilidad de usar la invocación de comandos de AKS en clústeres privados",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
+ "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
+ "service": "VPN",
+ "severity": "Medio",
+ "text": "Use puertas de enlace de VPN con redundancia de zona para conectar sucursales o ubicaciones remotas a Azure (donde estén disponibles).",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "Bajo",
- "text": "En el caso de los eventos planeados, considere la posibilidad de utilizar el drenaje automático de nodos",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
+ "service": "VPN",
+ "severity": "Medio",
+ "text": "Utilice dispositivos VPN redundantes en las instalaciones (activo/activo o activo/pasivo).",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Desarrollar sus propias prácticas de gobernanza para asegurarse de que los operadores no realicen cambios en el nodo RG (también conocido como 'infra RG')",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Usar el nombre personalizado de Node RG (también conocido como 'Infra RG')",
- "waf": "Operaciones"
+ "text": "Si usa ExpressRoute Direct, considere la posibilidad de usar circuitos locales de ExpressRoute a las regiones locales de Azure para ahorrar costos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "No use API de Kubernetes obsoletas en los manifiestos de YAML",
- "waf": "Operaciones"
+ "text": "Cuando se requiera aislamiento de tráfico o ancho de banda dedicado, por ejemplo, para separar entornos de producción y no de producción, use diferentes circuitos ExpressRoute. Le ayudará a garantizar dominios de enrutamiento aislados y a aliviar los riesgos de vecinos ruidosos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Nodos de Windows de Taint",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Supervise la disponibilidad y el uso de ExpressRoute mediante Express Route Insights integrado.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Mantener el nivel de revisión de los contenedores de Windows sincronizado con el nivel de revisión del host",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
+ "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Use el Monitor de conexión para la supervisión de la conectividad en toda la red, especialmente entre el entorno local y Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "A través de la configuración de diagnóstico en el nivel de clúster",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Envío de registros maestros (también conocidos como registros de API) a Azure Monitor o a la solución de administración de registros que prefiera",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, utilice instantáneas de nodePool",
- "waf": "Costar"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Considere la posibilidad de crear grupos de nodos de acceso puntual para cargas de trabajo no urgentes",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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#need-for-redundant-connectivity-solution",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Use circuitos ExpressRoute de diferentes ubicaciones de emparejamiento para obtener redundancia.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Considere la posibilidad de utilizar el nodo virtual de AKS para una ráfaga rápida",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Use VPN de sitio a sitio como conmutación por error de ExpressRoute, si solo usa un único circuito ExpressRoute.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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))",
+ "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Supervise las métricas de clúster con Container Insights (u otras herramientas como Prometheus)",
- "waf": "Operaciones"
+ "text": "Si utiliza una tabla de rutas en GatewaySubnet, asegúrese de que se propaguen las rutas de puerta de enlace.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d581a947-69a2-4783-942e-9df3664324c8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Almacene y analice los registros del clúster con Container Insights (u otras herramientas como Telegraf/ElasticSearch)",
- "waf": "Operaciones"
+ "text": "Si usa ExpressRoute, el enrutamiento local debe ser dinámico: en caso de que se produzca un error de conexión, debe converger a la conexión restante del circuito. La carga debe compartirse entre ambas conexiones, idealmente como activa/activa, aunque también se admite activa/pasiva.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "Supervisar el uso de la CPU y la memoria de los nodos",
- "waf": "Operaciones"
+ "text": "Asegúrese de que los dos vínculos físicos del circuito ExpressRoute están conectados a dos dispositivos perimetrales distintos de la red.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "Si usa Azure CNI, supervise el porcentaje de direcciones IP de pod consumidas por nodo",
- "waf": "Operaciones"
+ "text": "Asegúrese de que la detección de reenvío bidireccional (BFD) esté habilitada y configurada en los dispositivos de enrutamiento perimetral del cliente o proveedor.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "La E/S en el disco del sistema operativo es un recurso crítico. Si el sistema operativo de los nodos se limita en la E/S, esto podría dar lugar a un comportamiento impredecible, que normalmente terminaría en que el nodo se declarara NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
- "severity": "Medio",
- "text": "Supervisión de la profundidad de la cola de disco del sistema operativo en los nodos",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Conecte la puerta de enlace de ExpressRoute a dos o más circuitos de diferentes ubicaciones de emparejamiento para una mayor resistencia.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "Si no usa el filtrado de salida con AzFW/NVA, supervise los puertos SNAT asignados por ALB estándar",
+ "text": "Configure registros de diagnóstico y alertas para la puerta de enlace de red virtual de ExpressRoute.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
+ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
+ "service": "ExpressRoute",
"severity": "Medio",
- "text": "Suscríbase a las notificaciones de estado de los recursos para el clúster de AKS",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Alto",
- "text": "Configurar solicitudes y límites en las especificaciones del pod",
- "waf": "Operaciones"
+ "text": "No use circuitos ExpressRoute para la comunicación de red virtual a red virtual.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "Medio",
- "text": "Aplicación de cuotas de recursos para espacios de nombres",
- "waf": "Operaciones"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "service": "N/A",
+ "severity": "Bajo",
+ "text": "No envíe el tráfico de Azure a ubicaciones híbridas para su inspección. En su lugar, siga el principio \"el tráfico de Azure permanece en Azure\" para que la comunicación entre los recursos de Azure se produzca a través de la red troncal de Microsoft.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
+ "link": "https://learn.microsoft.com/azure/firewall/overview",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Asegúrese de que la suscripción tiene suficiente cuota para escalar horizontalmente los grupos de nodos",
- "waf": "Operaciones"
+ "text": "Use Azure Firewall para controlar el tráfico de salida de Azure a Internet, las conexiones de entrada que no son HTTP/S y el filtrado del tráfico Este/Oeste (si la organización lo requiere).",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Uso del escalador automático de clústeres",
- "waf": "Rendimiento"
+ "text": "Cree una directiva global de Azure Firewall para controlar la posición de seguridad en todo el entorno de red global y asígnela a todas las instancias de Azure Firewall. Permita que las directivas granulares cumplan los requisitos de regiones específicas delegando directivas de firewall incrementales a los equipos de seguridad locales a través del control de acceso basado en roles de Azure.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
+ "service": "Firewall",
"severity": "Bajo",
- "text": "Personalización de la configuración de nodos para grupos de nodos de AKS",
- "waf": "Rendimiento"
+ "text": "Configure los proveedores de seguridad SaaS de socios compatibles dentro de Firewall Manager si la organización desea utilizar dichas soluciones para ayudar a proteger las conexiones salientes.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Medio",
- "text": "Usar el escalador automático horizontal de pods cuando sea necesario",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
+ "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
+ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Utilice las reglas de la aplicación para filtrar el tráfico saliente en el nombre de host de destino para los protocolos compatibles. Use reglas de red basadas en FQDN y Azure Firewall con proxy DNS para filtrar el tráfico de salida a Internet a través de otros protocolos.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Los nodos más grandes aportarán un mayor rendimiento y características como discos efímeros y redes aceleradas, pero aumentarán el radio de explosión y disminuirán la granularidad de escalado",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "Alto",
- "text": "Considere un tamaño de nodo adecuado, ni demasiado grande ni demasiado pequeño",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
+ "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Use Azure Firewall Premium para habilitar características de seguridad adicionales.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si se requieren más de 5000 nodos para la escalabilidad, considere la posibilidad de usar un clúster de AKS adicional",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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#idps-signature-rules",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Configure el modo de Inteligencia sobre amenazas de Azure Firewall en Alerta y Denegar para obtener protección adicional.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Considere la posibilidad de suscribirse a eventos de EventGrid para la automatización de AKS",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
+ "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Configure el modo IDPS de Azure Firewall en Denegar para obtener protección adicional.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Para una operación de ejecución prolongada en un clúster de AKS, considere la finalización de eventos",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "En el caso de las subredes de las redes virtuales que no están conectadas a Virtual WAN, adjunte una tabla de rutas para que el tráfico de Internet se redirija a Azure Firewall o a una aplicación virtual de red.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Si es necesario, considere la posibilidad de usar Azure Dedicated Hosts para nodos de AKS",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
+ "service": "Firewall",
+ "severity": "Medio",
+ "text": "Agregue la configuración de diagnóstico para guardar registros, mediante la tabla de destino Recurso específico, para todas las implementaciones de Azure Firewall.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "Alto",
- "text": "Usar discos de sistema operativo efímeros",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
+ "service": "Firewall",
+ "severity": "Importante",
+ "text": "Migre de las reglas de Azure Firewall clásico (si existen) a la directiva de firewall.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "service": "Firewall",
"severity": "Alto",
- "text": "En el caso de los discos no efímeros, use IOPS altas y discos de sistema operativo más grandes para los nodos cuando ejecute muchos pods o nodos, ya que requiere un alto rendimiento para ejecutar varios pods y generará registros enormes con umbrales de rotación de registros de AKS predeterminados",
- "waf": "Rendimiento"
+ "text": "Use un prefijo /26 para las subredes de Azure Firewall.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
- "severity": "Bajo",
- "text": "Para la opción de almacenamiento de hiperrendimiento, use discos Ultra en AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "service": "Firewall",
+ "severity": "Medio",
+ "text": "Organice las reglas dentro de la política de firewall en grupos de colecciones de reglas y colecciones de reglas, en función de su frecuencia de uso.",
"waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
+ "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Evite mantener el estado en el clúster y almacene los datos fuera (AzStorage, AzSQL, Cosmos, etc.)",
+ "text": "Utilice grupos de direcciones IP o prefijos de direcciones IP para reducir el número de reglas de tabla de direcciones IP.",
"waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Si usa AzFiles Standard, considere AzFiles Premium o ANF por motivos de rendimiento",
+ "text": "No utilice caracteres comodín como IP de origen para DNATS, como * o cualquiera, debe especificar IP de origen para los DNAT entrantes.",
"waf": "Rendimiento"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Si usa Azure Disks y AZ, considere la posibilidad de tener grupos de nodos dentro de una zona para el disco LRS con VolumeBindingMode:WaitForFirstConsumer para aprovisionar el almacenamiento en la zona correcta o use el disco ZRS para los grupos de nodos que abarquen varias zonas",
+ "text": "Evite el agotamiento del puerto SNAT supervisando el uso del puerto SNAT, evaluando la configuración de la puerta de enlace NAT y garantizando una conmutación por error sin problemas. Si el número de puertos se acerca al límite, es una señal de que el agotamiento de SNAT podría ser inminente.",
"waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
- "severity": "Medio",
- "text": "Implementar una política de control de errores a nivel global",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "346840b8-1064-496e-8396-4b1340172d52",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Si usa Azure Firewall Premium, habilite la inspección de TLS.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
- "severity": "Medio",
- "text": "Asegúrese de que todas las políticas de API incluyan un elemento.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
+ "service": "Firewall",
+ "severity": "Bajo",
+ "text": "Utilice categorías web para permitir o denegar el acceso saliente a temas específicos.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Uso de fragmentos de políticas para evitar repetir las mismas definiciones de políticas en varias API",
- "waf": "Operaciones"
+ "text": "Como parte de la inspección de TLS, planee la recepción de tráfico de Azure App Gateways para su inspección.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Si planeas monetizar tus API, revisa el artículo \"Soporte de monetización\" para conocer las prácticas recomendadas",
- "waf": "Operaciones"
+ "text": "Habilite la configuración del proxy DNS de Azure Firewall.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Habilitación de la configuración de diagnóstico para exportar registros a Azure Monitor",
+ "text": "Integre Azure Firewall con Azure Monitor y habilite el registro de diagnóstico para almacenar y analizar los registros de firewall.",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
- "severity": "Medio",
- "text": "Habilitación de Application Insights para obtener telemetría más detallada",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "service": "Firewall",
+ "severity": "Bajo",
+ "text": "Implementación de copias de seguridad para las reglas de firewall",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "severity": "Alto",
- "text": "Configurar alertas sobre las métricas más críticas",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "App Gateway",
"severity": "Alto",
- "text": "Asegúrese de que los certificados SSL personalizados se almacenan en Azure Key Vault para que se pueda acceder a ellos y actualizarlos de forma segura",
+ "text": "No interrumpa la comunicación del plano de control para los servicios PaaS de Azure insertados en una red virtual, por ejemplo, con una ruta 0.0.0.0/0 o una regla de NSG que bloquee el tráfico del plano de control.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
- "severity": "Alto",
- "text": "Protección de las solicitudes entrantes a las API (plano de datos) con Azure AD",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "service": "ExpressRoute",
+ "severity": "Medio",
+ "text": "Acceda a los servicios PaaS de Azure desde el entorno local a través de puntos de conexión privados y el emparejamiento privado de ExpressRoute. Este método evita el tránsito a través de la Internet pública.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "severity": "Medio",
- "text": "Usar el identificador de Microsoft Entra para autenticar a los usuarios en el Portal para desarrolladores",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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/virtual-network/virtual-network-service-endpoints-overview",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "No habilite los puntos de conexión de servicio de red virtual de forma predeterminada en todas las subredes.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
+ "link": "azure/private-link/inspect-traffic-with-azure-firewall",
+ "service": "Firewall",
"severity": "Medio",
- "text": "Crear grupos adecuados para controlar la visibilidad de los productos",
+ "text": "Filtre el tráfico de salida a los servicios PaaS de Azure mediante FQDN en lugar de direcciones IP en Azure Firewall o una NVA para evitar la filtración de datos. Si usa Private Link, puede bloquear todos los FQDN, de lo contrario, permitir solo los servicios PaaS necesarios.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
- "severity": "Medio",
- "text": "Utilice la función Backends para eliminar las configuraciones redundantes de back-end de la API",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Utilice al menos un prefijo /27 para las subredes de puerta de enlace.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "severity": "Medio",
- "text": "Usar valores con nombre para almacenar valores comunes que se pueden usar en directivas",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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)",
+ "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
+ "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
+ "service": "NSG",
+ "severity": "Alto",
+ "text": "No confíe en las reglas predeterminadas de entrada de NSG que usan la etiqueta de servicio VirtualNetwork para limitar la conectividad.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "service": "NSG",
"severity": "Medio",
- "text": "En el caso de la recuperación ante desastres, aproveche el nivel premium con implementaciones escaladas en dos o más regiones para un acuerdo de nivel de servicio del 99,99 %",
- "waf": "Fiabilidad"
+ "text": "Use los grupos de seguridad de red para ayudar a proteger el tráfico a través de las subredes, así como el tráfico este/oeste a través de la plataforma (tráfico entre zonas de aterrizaje).",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "NSG",
"severity": "Medio",
- "text": "Implemente al menos una unidad en dos o más zonas de disponibilidad para obtener un SLA aumentado del 99,99 %",
- "waf": "Fiabilidad"
+ "text": "Use grupos de seguridad de red y grupos de seguridad de aplicaciones para microsegmentar el tráfico dentro de la zona de aterrizaje y evite usar una NVA central para filtrar los flujos de tráfico.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
- "severity": "Alto",
- "text": "Asegúrese de que haya una rutina de copia de seguridad automatizada",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
+ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
+ "service": "NSG",
+ "severity": "Medio",
+ "text": "Habilite los registros de flujo de red virtual e introdúzcalos en Traffic Analytics para obtener información sobre los flujos de tráfico internos y externos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
+ "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "NSG",
"severity": "Medio",
- "text": "Use directivas para agregar una dirección URL de back-end de conmutación por error y el almacenamiento en caché para reducir las llamadas con errores.",
+ "text": "No implemente más de 900 reglas de NSG por NSG, debido al límite de 1000 reglas.",
+ "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "Bajo",
- "text": "Si necesita iniciar sesión en niveles de alto rendimiento, tenga en cuenta la directiva de Event Hubs",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
+ "service": "VWAN",
+ "severity": "Medio",
+ "text": "Use Virtual WAN si el escenario se describe explícitamente en la lista de diseños de enrutamiento de Virtual WAN.",
+ "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "service": "VWAN",
"severity": "Medio",
- "text": "Aplicación de directivas de limitación para controlar el número de solicitudes por segundo",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "text": "Use un centro de conectividad de Virtual WAN por región de Azure para conectar varias zonas de aterrizaje juntas en regiones de Azure a través de una instancia global común de Azure Virtual WAN.",
"waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "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/howto-firewall",
+ "service": "VWAN",
"severity": "Medio",
- "text": "Configurar el escalado automático para escalar horizontalmente el número de instancias cuando aumenta la carga",
- "waf": "Rendimiento"
+ "text": "Para la protección y el filtrado del tráfico de Internet saliente, implemente Azure Firewall en centros seguros.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "service": "VWAN",
"severity": "Medio",
- "text": "Implemente puertas de enlace autohospedadas en las que Azure no tenga una región cercana a las API de back-end.",
- "waf": "Rendimiento"
+ "text": "Asegúrese de que la arquitectura de red WAN virtual se alinee con un escenario de arquitectura identificado.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "service": "VWAN",
"severity": "Medio",
- "text": "Use el nivel premium para las cargas de trabajo de producción.",
- "waf": "Fiabilidad"
+ "text": "Use Azure Monitor Insights para Virtual WAN para supervisar la topología de un extremo a otro de Virtual WAN, el estado y las métricas clave.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "service": "VWAN",
"severity": "Medio",
- "text": "En el modelo de varias regiones, use directivas para enrutar las solicitudes a los back-ends regionales en función de la disponibilidad o la latencia.",
+ "text": "No deshabilite el tráfico de rama a rama en Virtual WAN, a menos que estos flujos deban bloquearse explícitamente.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
- "severity": "Alto",
- "text": "Tenga en cuenta los límites de APIM",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "service": "VWAN",
+ "severity": "Medio",
+ "text": "Use AS-Path como preferencia de enrutamiento del concentrador, ya que es más flexible que ExpressRoute o VPN.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
- "severity": "Alto",
- "text": "Asegúrese de que las implementaciones de puerta de enlace autohospedadas sean resistentes.",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "service": "VWAN",
+ "severity": "Medio",
+ "text": "Configure la propagación basada en etiquetas en Virtual WAN, de lo contrario, la conectividad entre los centros virtuales se verá afectada.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
- "severity": "Medio",
- "text": "Uso de Azure Front Door delante de APIM para la implementación en varias regiones",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9c75dfef-573c-461c-a698-68598595581a",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "service": "VWAN",
+ "severity": "Alto",
+ "text": "Asigne al menos un prefijo /23 a los centros virtuales para asegurarse de que haya suficiente espacio IP disponible.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "severity": "Medio",
- "text": "Implementación del servicio dentro de una red virtual (VNet)",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Alto",
+ "text": "Aproveche Azure Policy de forma estratégica, defina controles para su entorno mediante iniciativas de directivas para agrupar directivas relacionadas.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Medio",
- "text": "Implemente grupos de seguridad de red (NSG) en las subredes para restringir o supervisar el tráfico hacia/desde APIM.",
+ "text": "Asigne los requisitos normativos y de cumplimiento a las definiciones de Azure Policy y las asignaciones de roles de Azure.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Medio",
- "text": "Implemente puntos de conexión privados para filtrar el tráfico entrante cuando APIM no se implemente en una red virtual.",
+ "text": "Establezca definiciones de Azure Policy en el grupo de administración raíz intermedio para que se puedan asignar en ámbitos heredados.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Alto",
- "text": "Deshabilitar el acceso a la red pública",
+ "text": "Administre las asignaciones de políticas en el nivel más alto apropiado con exclusiones en los niveles inferiores, si es necesario.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "severity": "Medio",
- "text": "Simplifique la administración con scripts de automatización de PowerShell",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "43334f24-9116-4341-a2ba-527526944008",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "service": "Policy",
+ "severity": "Bajo",
+ "text": "Use Azure Policy para controlar qué servicios pueden aprovisionar los usuarios en el nivel de suscripción o grupo de administración.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "Medio",
- "text": "Configure APIM a través de la infraestructura como código. Revise las prácticas recomendadas de DevOps desde el acelerador de zonas de aterrizaje de API de Cloud Adaption Framework",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Alto",
+ "text": "Utilice políticas integradas siempre que sea posible para minimizar la sobrecarga operativa.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "description": "La asignación del rol Colaborador de directivas de recursos a ámbitos específicos le permite delegar la administración de directivas a los equipos pertinentes. Por ejemplo, un equipo de TI central puede supervisar las políticas a nivel de grupo de administración, mientras que los equipos de aplicaciones se encargan de las políticas de sus suscripciones, lo que permite la gobernanza distribuida con el cumplimiento de los estándares de la organización.",
+ "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "service": "Policy",
"severity": "Medio",
- "text": "Promover el uso de la extensión APIM de Visual Studio Code para un desarrollo de API más rápido",
- "waf": "Operaciones"
+ "text": "Asigne el rol integrado Colaborador de directiva de recursos en un ámbito determinado para habilitar la gobernanza de nivel de aplicación.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "19048384-5c98-46cb-8913-156a12476e49",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Medio",
- "text": "Implemente DevOps y CI/CD en su flujo de trabajo",
- "waf": "Operaciones"
+ "text": "Limite el número de asignaciones de Azure Policy realizadas en el ámbito del grupo de administración raíz para evitar la administración a través de exclusiones en ámbitos heredados.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
+ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
+ "service": "Policy",
"severity": "Medio",
- "text": "API seguras mediante la autenticación de certificados de cliente",
+ "text": "Si existen requisitos de soberanía de datos, se deben implementar Azure Policies para aplicarlos.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
+ "service": "Policy",
"severity": "Medio",
- "text": "Servicios de back-end seguros mediante la autenticación de certificados de cliente",
+ "text": "Para la zona de aterrizaje soberana, implemente la línea base de la política de soberanía y asígnela en el nivel de grupo de administración correcto.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
+ "service": "Policy",
"severity": "Medio",
- "text": "Revise el artículo \"Recomendaciones para mitigar las 10 principales amenazas de seguridad de la API de OWASP\" y compruebe qué se aplica a sus API",
+ "text": "En el caso de la Zona de Aterrizaje Soberana, documente los objetivos del Control Soberano para el mapeo de políticas.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
+ "service": "Policy",
"severity": "Medio",
- "text": "Utilice la función Autorizaciones para simplificar la administración del token de OAuth 2.0 para las API de back-end",
+ "text": "En el caso de la Zona de Aterrizaje Soberana, garantizar que exista un proceso para la gestión de los \"objetivos de control soberano para el mapeo de políticas\".",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "severity": "Alto",
- "text": "Utilice la versión más reciente de TLS al cifrar la información en tránsito. Deshabilite los protocolos y cifrados obsoletos e innecesarios cuando sea posible.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
+ "severity": "Medio",
+ "text": "Use un único área de trabajo de registros de monitor para administrar las plataformas de forma centralizada, excepto cuando el control de acceso basado en rol de Azure (Azure RBAC), los requisitos de soberanía de datos o las directivas de retención de datos exijan áreas de trabajo independientes.",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Monitor",
"severity": "Alto",
- "text": "Asegúrese de que los secretos (valores con nombre) se almacenan en Azure Key Vault para que se pueda acceder a ellos y actualizarlos de forma segura",
- "waf": "Seguridad"
+ "text": "Exporte registros a Azure Storage si los requisitos de retención de registros superan los doce años. Use el almacenamiento inmutable con una política de escritura única y lectura múltiple para que los datos no se puedan borrar ni modificar durante un intervalo especificado por el usuario.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "service": "VM",
"severity": "Medio",
- "text": "Uso de identidades administradas para autenticarse en otros recursos de Azure siempre que sea posible",
- "waf": "Seguridad"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
- "severity": "Alto",
- "text": "Uso del firewall de aplicaciones web (WAF) mediante la implementación de Application Gateway delante de APIM",
- "waf": "Seguridad"
+ "text": "Supervise el desfase de la configuración de la máquina virtual (VM) a nivel de sistema operativo mediante Azure Policy. La habilitación de las funcionalidades de auditoría de Azure Automanage Machine Configuration a través de la directiva ayuda a las cargas de trabajo del equipo de aplicaciones a consumir inmediatamente las funcionalidades de características con poco esfuerzo.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "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",
+ "service": "VM",
"severity": "Medio",
- "text": "Use un inquilino de Entra para administrar los recursos de Azure, a menos que tenga un requisito normativo o empresarial claro para varios inquilinos.",
+ "text": "Use Azure Update Manager como mecanismo de aplicación de revisiones para máquinas virtuales Windows y Linux en Azure.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
"waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "Bajo",
- "text": "Use el enfoque de automatización multiinquilino para administrar los inquilinos de Microsoft Entra ID.",
+ "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
+ "service": "VM",
+ "severity": "Medio",
+ "text": "Use Azure Update Manager como mecanismo de aplicación de revisiones para máquinas virtuales Windows y Linux fuera de Azure mediante Azure Arc.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
"waf": "Operaciones"
},
{
+ "arm-service": "microsoft.network/networkWatchers",
"checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
- "severity": "Alto",
- "text": "Use Azure Lighthouse para la administración de varios inquilinos con los mismos identificadores.",
- "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "guid": "90483845-c986-4cb2-a131-56a12476e49f",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Network Watcher",
+ "severity": "Medio",
+ "text": "Utilice Network Watcher para supervisar de forma proactiva los flujos de tráfico.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
"waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
- "severity": "Alto",
- "text": "Si concede a un asociado acceso para administrar el inquilino, use Azure Lighthouse.",
- "waf": "Costar"
+ "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Monitor",
+ "severity": "Medio",
+ "text": "Use los registros de Azure Monitor para obtener información e informes.",
+ "waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
- "severity": "Alto",
- "text": "Aplique un modelo RBAC que se alinee con su modelo operativo en la nube. Ámbito y asignación entre grupos de administración y suscripciones.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Seguridad"
+ "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
+ "service": "Monitor",
+ "severity": "Medio",
+ "text": "Use alertas de Azure Monitor para la generación de alertas operativas.",
+ "waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
- "severity": "Alto",
- "text": "Utilice únicamente el tipo de autenticación Cuenta profesional o educativa para todos los tipos de cuenta. Evite usar la cuenta de Microsoft",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Seguridad"
+ "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "Monitor",
+ "severity": "Medio",
+ "text": "Al usar el seguimiento de cambios e inventario a través de cuentas de Azure Automation, asegúrese de que ha seleccionado las regiones admitidas para vincular el área de trabajo de Log Analytics y las cuentas de automatización.",
+ "waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
- "severity": "Medio",
- "text": "Utilice solo grupos para asignar permisos. Agregue grupos locales al grupo Solo ID de Entra si ya existe un sistema de administración de grupos.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Seguridad"
+ "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Backup",
+ "severity": "Bajo",
+ "text": "Al usar Azure Backup, use los tipos de copia de seguridad correctos (GRS, ZRS Y LRS) para la copia de seguridad, ya que la configuración predeterminada es GRS.",
+ "waf": "Fiabilidad"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
- "severity": "Alto",
- "text": "Aplique directivas de acceso condicional de identificador de Microsoft Entra para cualquier usuario con derechos sobre entornos de Azure.",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "VM",
+ "severity": "Medio",
+ "text": "Use directivas de invitado de Azure para implementar automáticamente configuraciones de software a través de extensiones de máquina virtual y aplicar una configuración de máquina virtual de línea base compatible.",
"waf": "Seguridad"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
- "severity": "Alto",
- "text": "Aplique la autenticación multifactor para cualquier usuario con derechos en los entornos de Azure.",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "description": "Use las características de configuración de invitado de Azure Policy para auditar y corregir la configuración de la máquina (por ejemplo, el sistema operativo, la aplicación, el entorno) para asegurarse de que los recursos se alinean con las configuraciones esperadas, y Update Management puede aplicar la administración de revisiones para las máquinas virtuales.",
+ "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",
+ "severity": "Medio",
+ "text": "Supervise el desfase de la configuración de seguridad de la máquina virtual a través de Azure Policy.",
"waf": "Seguridad"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
"severity": "Medio",
- "text": "Aplique la administración de identidades privilegiadas (PIM) de Microsoft Entra ID para establecer un acceso permanente cero y privilegios mínimos.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Seguridad"
+ "text": "Use Azure Site Recovery para escenarios de recuperación ante desastres de Azure a Azure Virtual Machines. Esto le permite replicar cargas de trabajo en todas las regiones.",
+ "waf": "Operaciones"
},
{
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "Backup",
"severity": "Medio",
- "text": "Si planea cambiar de Servicios de dominio de Active Directory a Servicios de dominio Entra, evalúe la compatibilidad de todas las cargas de trabajo.",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Seguridad"
+ "text": "Use funcionalidades de copia de seguridad nativas de Azure o una solución de copia de seguridad de terceros compatible con Azure.",
+ "waf": "Operaciones"
},
{
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "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",
+ "severity": "Alto",
+ "text": "Agregue configuración de diagnóstico para guardar los registros de WAF de los servicios de entrega de aplicaciones, como Azure Front Door y Azure Application Gateway. Revise periódicamente los registros para comprobar si hay ataques y detecciones de falsos positivos.",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "WAF",
"severity": "Medio",
- "text": "Integre los registros de identificador de Microsoft Entra con Azure Monitor central de la plataforma. Azure Monitor permite una única fuente de información sobre los datos de registro y supervisión en Azure, lo que proporciona a las organizaciones opciones nativas en la nube para cumplir con los requisitos relacionados con la recopilación y retención de registros.",
- "waf": "Seguridad"
+ "text": "Envíe registros de WAF desde los servicios de entrega de aplicaciones, como Azure Front Door y Azure Application Gateway, a Microsoft Sentinel. Detecte ataques e integre la telemetría de WAF en su entorno general de Azure.",
+ "waf": "Operaciones"
},
{
- "ammp": true,
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
+ "guid": "5017f154-e3ab-4369-9829-e7e316183687",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "Key Vault",
"severity": "Alto",
- "text": "Implemente un acceso de emergencia o cuentas de emergencia para evitar el bloqueo de cuentas en todo el inquilino.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "Use Azure Key Vault para almacenar sus secretos y credenciales.",
"waf": "Seguridad"
},
{
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
+ "guid": "a0477a20-9945-4bda-9333-4f2491163418",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "No use cuentas sincronizadas locales para las asignaciones de roles de identificador de Microsoft Entra, a menos que tenga un escenario que lo requiera específicamente.",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "text": "Use diferentes Azure Key Vaults para diferentes aplicaciones y regiones para evitar límites de escala de transacciones y restringir el acceso a los secretos.",
"waf": "Seguridad"
},
{
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Al usar el proxy de aplicación de Microsoft Entra ID para proporcionar a los usuarios remotos acceso a las aplicaciones, adminístrelo como un recurso de plataforma, ya que solo puede tener una instancia por inquilino.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "Aprovisione Azure Key Vault con las directivas de eliminación temporal y purga habilitadas para permitir la protección de retención para los objetos eliminados.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Utilice una topología de red en estrella tipo hub-and-spoke para escenarios de red que requieran la máxima flexibilidad.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Siga un modelo de privilegios mínimos limitando la autorización para eliminar claves, secretos y certificados de forma permanente a roles de identificador personalizados especializados de Microsoft Entra.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
- "severity": "Alto",
- "text": "Implemente servicios de red compartidos, incluidas puertas de enlace de ExpressRoute, puertas de enlace de VPN y Azure Firewall o aplicaciones virtuales de red de asociados en la red virtual del centro central. Si es necesario, implemente también servicios DNS.",
- "waf": "Costar"
+ "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Medio",
+ "text": "Automatice el proceso de gestión y renovación de certificados con autoridades de certificación públicas para facilitar la administración.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
- "severity": "Alto",
- "text": "Utilice un plan de protección de IP o red DDoS para todas las direcciones IP públicas en las zonas de aterrizaje de aplicaciones.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "guid": "913156a1-2476-4e49-b541-acdce979377b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Medio",
+ "text": "Establezca un proceso automatizado para la rotación de claves y certificados.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
+ "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Al implementar tecnologías de redes de asociados o NVA, siga las instrucciones del proveedor del asociado.",
- "waf": "Fiabilidad"
+ "text": "Habilite el firewall y el punto de conexión de servicio de red virtual o el punto de conexión privado en el almacén para controlar el acceso al almacén de claves.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
- "severity": "Bajo",
- "text": "Si necesita tránsito entre ExpressRoute y puertas de enlace de VPN en escenarios tipo hub-and-spoke, use Azure Route Server.",
+ "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
+ "service": "Key Vault",
+ "severity": "Medio",
+ "text": "Use el área de trabajo de Log Analytics de Azure Monitor central de la plataforma para auditar el uso de claves, certificados y secretos en cada instancia de Key Vault.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
- "severity": "Bajo",
- "text": "Si utiliza el servidor de rutas, utilice un prefijo /27 para la subred del servidor de rutas.",
+ "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Medio",
+ "text": "Delegue la creación de instancias de Key Vault y el acceso con privilegios, y use Azure Policy para aplicar una configuración coherente y conforme.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
- "severity": "Medio",
- "text": "En el caso de las arquitecturas de red con varias topologías en estrella tipo hub-and-spoke en las regiones de Azure, use emparejamientos de red virtual global entre las redes virtuales del centro para conectar las regiones entre sí.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
- "severity": "Medio",
- "text": "Use Azure Monitor para redes para supervisar el estado de un extremo a otro de las redes de Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Si tiene más de 400 redes radiales en una región, implemente un centro adicional para omitir los límites de emparejamiento de red virtual (500) y el número máximo de prefijos que se pueden anunciar a través de ExpressRoute (1000).",
- "waf": "Fiabilidad"
+ "text": "Use una instancia de Azure Key Vault por aplicación, por entorno, por región.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
+ "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Limite el número de rutas por tabla de rutas a 400.",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
- "severity": "Alto",
- "text": "Use la opción \"Permitir tráfico a la red virtual remota\" al configurar emparejamientos de red virtual.",
- "waf": "Fiabilidad"
+ "text": "Si desea traer sus propias claves, es posible que esto no sea compatible con todos los servicios considerados. Implemente la mitigación pertinente para que las inconsistencias no obstaculicen los resultados deseados. Elija los pares de regiones y las regiones de recuperación ante desastres adecuados que minimicen la latencia.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
+ "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
+ "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
+ "service": "Key Vault",
"severity": "Medio",
- "text": "Cuando use ExpressRoute Direct, configure MACsec para cifrar el tráfico en el nivel de capa dos entre los enrutadores de la organización y MSEE. El diagrama muestra este cifrado en el flujo.",
+ "text": "En el caso de la zona de aterrizaje soberana, use el HSM administrado de Azure Key Vault para almacenar los secretos y las credenciales.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
+ "service": "Entra",
"severity": "Medio",
- "text": "En escenarios en los que MACsec no es una opción (por ejemplo, no usar ExpressRoute Direct), use una puerta de enlace de VPN para establecer túneles IPsec a través del emparejamiento privado de ExpressRoute.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "Use las capacidades de generación de informes de Microsoft Entra ID para generar informes de auditoría de control de acceso.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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",
+ "guid": "09945bda-4333-44f2-9911-634182ba5275",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
+ "service": "Defender",
"severity": "Alto",
- "text": "Asegúrese de que no se usen espacios de direcciones IP superpuestos entre regiones de Azure y ubicaciones locales.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Habilite la administración de la posición de seguridad en la nube de Defender para todas las suscripciones.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
- "severity": "Medio",
- "text": "Utilice las direcciones IP de los rangos de asignación de direcciones para Internet privadas (RFC 1918).",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
+ "service": "Defender",
+ "severity": "Alto",
+ "text": "Habilite un plan de protección de cargas de trabajo en la nube de Defender para servidores en todas las suscripciones.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
+ "service": "Defender",
"severity": "Alto",
- "text": "Asegúrese de que no se desperdicie el espacio de direcciones IP, no cree redes virtuales innecesariamente grandes (por ejemplo, /16).",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Rendimiento"
+ "text": "Habilite los planes de protección de cargas de trabajo en la nube de Defender para recursos de Azure en todas las suscripciones.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "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",
+ "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
+ "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
+ "service": "VM",
"severity": "Alto",
- "text": "No utilice intervalos de direcciones IP superpuestos para los sitios de producción y recuperación ante desastres.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
- "severity": "Medio",
- "text": "En entornos en los que la resolución de nombres en Azure es todo lo necesario, use Azure Private DNS para la resolución con una zona delegada para la resolución de nombres (como 'azure.contoso.com').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operaciones"
+ "text": "Habilite la protección de puntos de conexión en servidores IaaS.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
+ "link": "https://learn.microsoft.com/azure/security-center/",
+ "service": "VM",
"severity": "Medio",
- "text": "En el caso de los entornos en los que se requiere la resolución de nombres en Azure y en el entorno local y no existe ningún servicio DNS empresarial como Active Directory, use Azure DNS Private Resolver para enrutar las solicitudes DNS a Azure o a servidores DNS locales.",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "text": "Supervise el desfase de revisiones del sistema operativo base a través de los registros de Azure Monitor y Defender for Cloud.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
- "severity": "Bajo",
- "text": "Las cargas de trabajo especiales que requieren e implementan su propio DNS (como Red Hat OpenShift) deben usar su solución de DNS preferida.",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
- "severity": "Alto",
- "text": "Habilite el registro automático de Azure DNS para administrar automáticamente el ciclo de vida de los registros DNS de las máquinas virtuales implementadas en una red virtual.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.network/bastionHosts",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
+ "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "Medio",
- "text": "Use Azure Bastion para conectarse de forma segura a la red.",
+ "text": "Conecte las configuraciones de recursos predeterminadas a un área de trabajo centralizada de Log Analytics de Azure Monitor.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/bastionHosts",
"checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
+ "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
+ "service": "Entra",
"severity": "Medio",
- "text": "Use Azure Bastion en una subred /26 o superior.",
+ "text": "Para Sovereign Landing Zone, habilite los registros de transparencia en el inquilino de Entra ID.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "service": "Entra",
"severity": "Medio",
- "text": "Use las directivas de Azure Front Door y WAF para proporcionar protección global en todas las regiones de Azure para las conexiones HTTP/S entrantes a una zona de aterrizaje.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "Para Sovereign Landing Zone, habilite la caja de seguridad del cliente en el inquilino de Entra ID.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "severity": "Bajo",
- "text": "Al usar Azure Front Door y Azure Application Gateway para ayudar a proteger las aplicaciones HTTP/S, use directivas de WAF en Azure Front Door. Bloquee Azure Application Gateway para recibir tráfico solo de Azure Front Door.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
+ "severity": "Alto",
+ "text": "Habilite la transferencia segura a cuentas de almacenamiento.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "Microsoft.Storage/storageAccounts",
"checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
+ "service": "Storage",
"severity": "Alto",
- "text": "Cuando se requieran WAF y otros servidores proxy inversos para las conexiones HTTP/S entrantes, impleméntelos dentro de una red virtual de zona de aterrizaje y junto con las aplicaciones que protegen y exponen a Internet.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Habilite la eliminación temporal de contenedor para que la cuenta de almacenamiento recupere un contenedor eliminado y su contenido.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "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",
"severity": "Alto",
- "text": "Use los planes de protección IP o de red DDoS de Azure para ayudar a proteger los puntos de conexión de direcciones IP públicas dentro de las redes virtuales.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
+ "text": "Use secretos de Key Vault para evitar codificar de forma rígida información confidencial, como credenciales (máquinas virtuales, contraseñas de usuario), certificados o claves.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "Alto",
- "text": "Planifique cómo administrar la configuración y la estrategia del tráfico saliente de su red antes del próximo cambio importante. El 30 de septiembre de 2025, se retirará el acceso saliente predeterminado para las nuevas implementaciones y solo se permitirán configuraciones de acceso explícitas.",
+ "text": "Aproveche las zonas de disponibilidad si corresponden regionalmente (esto se habilita automáticamente)",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
- "severity": "Alto",
- "text": "Agregue configuraciones de diagnóstico para guardar los registros relacionados con DDoS para todas las direcciones IP públicas protegidas (IP DDoS o Protección de red).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
- },
- {
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
- "severity": "Alto",
- "text": "Asegúrese de que haya una asignación de directiva para denegar las direcciones IP públicas vinculadas directamente a las máquinas virtuales. Use exclusiones si se necesitan direcciones IP públicas en máquinas virtuales específicas.",
- "waf": "Seguridad"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Use ExpressRoute como conexión principal a Azure. Utilice las VPN como fuente de conectividad de respaldo.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "description": "Puede usar la anteposición de AS y los pesos de conexión para influir en el tráfico de Azure al entorno local, y la gama completa de atributos BGP en sus propios enrutadores para influir en el tráfico del entorno local a Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "Medio",
- "text": "Cuando use varios circuitos ExpressRoute o varias ubicaciones locales, use atributos BGP para optimizar el enrutamiento.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Tenga en cuenta las conmutaciones por error iniciadas por Microsoft. Microsoft los ejerce en situaciones excepcionales para conmutar por error todos los centros de IoT de una región afectada a la región emparejada geográficamente correspondiente.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Seleccione la SKU correcta para las puertas de enlace de ExpressRoute/VPN en función de los requisitos de ancho de banda y rendimiento.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
"severity": "Alto",
- "text": "Asegúrese de que usa circuitos ExpressRoute de datos ilimitados solo si alcanza el ancho de banda que justifica su costo.",
- "waf": "Costar"
+ "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "Alto",
- "text": "Aproveche la SKU local de ExpressRoute para reducir el costo de los circuitos, si la ubicación de emparejamiento de circuitos admite las regiones de Azure para la SKU local.",
- "waf": "Costar"
+ "text": "Obtenga información sobre cómo desencadenar una conmutación por error manual.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Implemente una puerta de enlace de ExpressRoute con redundancia de zona en las regiones de Azure admitidas.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
+ "severity": "Alto",
+ "text": "Obtenga información sobre cómo conmutar por recuperación después de una conmutación por error.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
"severity": "Medio",
- "text": "En escenarios que requieren un ancho de banda superior a 10 Gbps o puertos dedicados de 10/100 Gbps, use ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Rendimiento"
+ "text": "Siga las recomendaciones de soporte técnico de confiabilidad en Azure Bot Service",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
"severity": "Medio",
- "text": "Cuando se requiera una latencia baja o el rendimiento del entorno local a Azure debe ser superior a 10 Gbps, habilite FastPath para omitir la puerta de enlace de ExpressRoute de la ruta de acceso de datos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Rendimiento"
+ "text": "Implementación de bots con residencia de datos local y cumplimiento regional",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
"severity": "Medio",
- "text": "Use puertas de enlace de VPN con redundancia de zona para conectar sucursales o ubicaciones remotas a Azure (donde estén disponibles).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "Azure Bot Service se ejecuta en modo activo-activo para los servicios globales y regionales. Cuando se produce una interrupción, no es necesario detectar errores ni administrar el servicio. Azure Bot Service realiza automáticamente la conmutación por error y la recuperación automáticas en una arquitectura geográfica de varias regiones. En el caso del servicio regional de bots de la UE, Azure Bot Service proporciona dos regiones completas dentro de Europa con replicación activa/activa para garantizar la redundancia. En el caso del servicio de bot global, todas las regiones o zonas geográficas disponibles se pueden servir como superficie global.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aplicación de las instrucciones de la prueba comparativa de seguridad en la nube de Microsoft relacionadas con el almacenamiento",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Utilice dispositivos VPN redundantes en las instalaciones (activo/activo o activo/pasivo).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "Fiabilidad"
+ "text": "Tenga en cuenta la \"línea base de seguridad de Azure para el almacenamiento\"",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "De forma predeterminada, Azure Storage tiene una dirección IP pública y es accesible desde Internet. Los puntos de conexión privados permiten exponer de forma segura Azure Storage solo a los recursos de proceso de Azure que necesitan acceso, lo que elimina la exposición a la Internet pública",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Si usa ExpressRoute Direct, considere la posibilidad de usar circuitos locales de ExpressRoute a las regiones locales de Azure para ahorrar costos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Costar"
+ "text": "Considere la posibilidad de usar puntos de conexión privados para Azure Storage",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Las cuentas de almacenamiento recién creadas se crean mediante el modelo de implementación de ARM, de modo que RBAC, auditoría, etc. están habilitados. Asegúrese de que no hay cuentas de almacenamiento antiguas con el modelo de implementación clásica en una suscripción",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Cuando se requiera aislamiento de tráfico o ancho de banda dedicado, por ejemplo, para separar entornos de producción y no de producción, use diferentes circuitos ExpressRoute. Le ayudará a garantizar dominios de enrutamiento aislados y a aliviar los riesgos de vecinos ruidosos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Asegúrese de que las cuentas de almacenamiento más antiguas no usan el \"modelo de implementación clásica\"",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Supervise la disponibilidad y el uso de ExpressRoute mediante Express Route Insights integrado.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aproveche Microsoft Defender para obtener información sobre la actividad sospechosa y los errores de configuración.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Habilitación de Microsoft Defender para todas las cuentas de almacenamiento",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "El mecanismo de eliminación temporal permite recuperar blobs eliminados accidentalmente.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Use el Monitor de conexión para la supervisión de la conectividad en toda la red, especialmente entre el entorno local y Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operaciones"
+ "text": "Habilitación de la \"eliminación temporal\" para blobs",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere la posibilidad de deshabilitar de forma selectiva la \"eliminación temporal\" para determinados contenedores de blobs, por ejemplo, si la aplicación debe asegurarse de que la información eliminada se elimina inmediatamente, por ejemplo, por motivos de confidencialidad, privacidad o cumplimiento. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Use circuitos ExpressRoute de diferentes ubicaciones de emparejamiento para obtener redundancia.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidad"
+ "text": "Deshabilitación de la \"eliminación temporal\" de blobs",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Use VPN de sitio a sitio como conmutación por error de ExpressRoute, si solo usa un único circuito ExpressRoute.",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "La eliminación temporal de contenedores permite recuperar un contenedor después de que se haya eliminado, por ejemplo, recuperarse de una operación de eliminación accidental.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Habilitación de la \"eliminación temporal\" para los contenedores",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
- "severity": "Alto",
- "text": "Si utiliza una tabla de rutas en GatewaySubnet, asegúrese de que se propaguen las rutas de puerta de enlace.",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere la posibilidad de deshabilitar de forma selectiva la \"eliminación temporal\" para determinados contenedores de blobs, por ejemplo, si la aplicación debe asegurarse de que la información eliminada se elimina inmediatamente, por ejemplo, por motivos de confidencialidad, privacidad o cumplimiento. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
+ "severity": "Medio",
+ "text": "Deshabilitación de la \"eliminación temporal\" para contenedores",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Evita la eliminación accidental de una cuenta de almacenamiento, obligando al usuario a quitar primero el bloqueo de eliminación, antes de la eliminación",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Si usa ExpressRoute, el enrutamiento local debe ser dinámico: en caso de que se produzca un error de conexión, debe converger a la conexión restante del circuito. La carga debe compartirse entre ambas conexiones, idealmente como activa/activa, aunque también se admite activa/pasiva.",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Asegúrese de que los dos vínculos físicos del circuito ExpressRoute están conectados a dos dispositivos perimetrales distintos de la red.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidad"
+ "text": "Habilitación de bloqueos de recursos en cuentas de almacenamiento",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Asegúrese de que la detección de reenvío bidireccional (BFD) esté habilitada y configurada en los dispositivos de enrutamiento perimetral del cliente o proveedor.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere la posibilidad de aplicar directivas de \"retención legal\" o \"retención basada en el tiempo\" para los blobs, de modo que sea imposible eliminar el blob, el contenedor o la cuenta de almacenamiento. Tenga en cuenta que 'imposible' en realidad significa 'imposible'; una vez que una cuenta de almacenamiento contiene un blob inmutable, la única manera de \"deshacerse\" de esa cuenta de almacenamiento es cancelando la suscripción de Azure.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Considere la posibilidad de blobs inmutables",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere la posibilidad de deshabilitar el acceso HTTP/80 sin protección a la cuenta de almacenamiento, de modo que todas las transferencias de datos estén cifradas, protegidas por integridad y el servidor esté autenticado. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Conecte la puerta de enlace de ExpressRoute a dos o más circuitos de diferentes ubicaciones de emparejamiento para una mayor resistencia.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidad"
+ "text": "Requerir HTTPS, es decir, deshabilitar el puerto 80 en la cuenta de almacenamiento",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Configure registros de diagnóstico y alertas para la puerta de enlace de red virtual de ExpressRoute.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Al configurar un dominio personalizado (nombre de host) en una cuenta de almacenamiento, compruebe si necesita TLS/HTTPS; si es así, es posible que tenga que colocar Azure CDN delante de la cuenta de almacenamiento.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Al aplicar HTTPS (deshabilitar HTTP), compruebe que no usa dominios personalizados (CNAME) para la cuenta de almacenamiento.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Requerir HTTPS cuando un cliente usa un token de SAS para acceder a los datos de blobs ayuda a minimizar el riesgo de pérdida de credenciales.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "No use circuitos ExpressRoute para la comunicación de red virtual a red virtual.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Rendimiento"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "severity": "Bajo",
- "text": "No envíe el tráfico de Azure a ubicaciones híbridas para su inspección. En su lugar, siga el principio \"el tráfico de Azure permanece en Azure\" para que la comunicación entre los recursos de Azure se produzca a través de la red troncal de Microsoft.",
- "waf": "Rendimiento"
+ "text": "Limitar los tokens de firma de acceso compartido (SAS) solo a las conexiones HTTPS",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Los tokens de AAD deben favorecerse sobre las firmas de acceso compartido, siempre que sea posible",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Use Azure Firewall para controlar el tráfico de salida de Azure a Internet, las conexiones de entrada que no son HTTP/S y el filtrado del tráfico Este/Oeste (si la organización lo requiere).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Uso de tokens de Azure Active Directory (Azure AD) para el acceso a blobs",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Al asignar un rol a un usuario, grupo o aplicación, conceda a esa entidad de seguridad solo los permisos necesarios para que pueda realizar sus tareas. Limitar el acceso a los recursos ayuda a evitar el uso indebido no intencionado y malintencionado de los datos.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Cree una directiva global de Azure Firewall para controlar la posición de seguridad en todo el entorno de red global y asígnela a todas las instancias de Azure Firewall. Permita que las directivas granulares cumplan los requisitos de regiones específicas delegando directivas de firewall incrementales a los equipos de seguridad locales a través del control de acceso basado en roles de Azure.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Privilegios mínimos en los permisos de IaM",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
- "severity": "Bajo",
- "text": "Configure los proveedores de seguridad SaaS de socios compatibles dentro de Firewall Manager si la organización desea utilizar dichas soluciones para ayudar a proteger las conexiones salientes.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Una SAS de delegación de usuarios está protegida con credenciales de Azure Active Directory (Azure AD) y también con los permisos especificados para la SAS. Una SAS de delegación de usuarios es análoga a una SAS de servicio en cuanto a su ámbito y función, pero ofrece ventajas de seguridad sobre la SAS de servicio. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
+ "severity": "Alto",
+ "text": "Al usar SAS, prefiera \"SAS de delegación de usuarios\" en lugar de SAS basada en claves de cuenta de almacenamiento.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Las claves de la cuenta de almacenamiento (\"claves compartidas\") tienen muy pocas funcionalidades de auditoría. Si bien se puede monitorear quién o cuándo obtuvo una copia de las claves, una vez que las claves están en manos de varias personas, es imposible atribuir el uso a un usuario específico. Confiar únicamente en la autenticación de AAD facilita la vinculación del acceso al almacenamiento a un usuario. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Utilice las reglas de la aplicación para filtrar el tráfico saliente en el nombre de host de destino para los protocolos compatibles. Use reglas de red basadas en FQDN y Azure Firewall con proxy DNS para filtrar el tráfico de salida a Internet a través de otros protocolos.",
+ "text": "Considere la posibilidad de deshabilitar las claves de la cuenta de almacenamiento, de modo que solo se admita el acceso a AAD (y la SAS de delegación de usuarios).",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Use los datos del registro de actividad para identificar \"cuándo\", \"quién\", \"qué\" y \"cómo\" se está viendo o cambiando la seguridad de la cuenta de almacenamiento (es decir, claves de cuenta de almacenamiento, directivas de acceso, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Use Azure Firewall Premium para habilitar características de seguridad adicionales.",
+ "text": "Considere la posibilidad de usar Azure Monitor para auditar las operaciones del plano de control en la cuenta de almacenamiento",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Configure el modo de Inteligencia sobre amenazas de Azure Firewall en Alerta y Denegar para obtener protección adicional.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Una directiva de expiración de claves le permite establecer un recordatorio para la rotación de las claves de acceso a la cuenta. El recordatorio se muestra si ha transcurrido el intervalo especificado y las teclas aún no se han girado.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
+ "severity": "Medio",
+ "text": "Al usar claves de cuenta de almacenamiento, considere la posibilidad de habilitar una \"directiva de expiración de claves\"",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Configure el modo IDPS de Azure Firewall en Denegar para obtener protección adicional.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Una directiva de expiración de SAS especifica un intervalo recomendado durante el cual la SAS es válida. Las directivas de expiración de SAS se aplican a una SAS de servicio o a una SAS de cuenta. Cuando un usuario genera una SAS de servicio o una SAS de cuenta con un intervalo de validez mayor que el intervalo recomendado, verá una advertencia.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
+ "severity": "Medio",
+ "text": "Considere la posibilidad de configurar una directiva de expiración de SAS",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
- "severity": "Alto",
- "text": "En el caso de las subredes de las redes virtuales que no están conectadas a Virtual WAN, adjunte una tabla de rutas para que el tráfico de Internet se redirija a Azure Firewall o a una aplicación virtual de red.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Las directivas de acceso almacenadas ofrecen la opción de revocar los permisos de una SAS de servicio sin tener que volver a generar las claves de la cuenta de almacenamiento. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
+ "severity": "Medio",
+ "text": "Considere la posibilidad de vincular SAS a una directiva de acceso almacenada",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Agregue la configuración de diagnóstico para guardar registros, mediante la tabla de destino Recurso específico, para todas las implementaciones de Azure Firewall.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operaciones"
+ "text": "Considere la posibilidad de configurar el repositorio de código fuente de la aplicación para detectar cadenas de conexión protegidas y claves de cuenta de almacenamiento.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "Importante",
- "text": "Migre de las reglas de Azure Firewall clásico (si existen) a la directiva de firewall.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Lo ideal es que la aplicación use una identidad administrada para autenticarse en Azure Storage. Si esto no es posible, considere la posibilidad de tener la credencial de almacenamiento (cadena de conexión, clave de cuenta de almacenamiento, SAS, credencial de entidad de servicio) en Azure KeyVault o un servicio equivalente.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Use un prefijo /26 para las subredes de Azure Firewall.",
+ "text": "Considere la posibilidad de almacenar cadenas de conexión en Azure KeyVault (en escenarios en los que las identidades administradas no son posibles)",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
- "severity": "Medio",
- "text": "Organice las reglas dentro de la política de firewall en grupos de colecciones de reglas y colecciones de reglas, en función de su frecuencia de uso.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
- "severity": "Medio",
- "text": "Utilice grupos de direcciones IP o prefijos de direcciones IP para reducir el número de reglas de tabla de direcciones IP.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
- "severity": "Medio",
- "text": "No utilice caracteres comodín como IP de origen para DNATS, como * o cualquiera, debe especificar IP de origen para los DNAT entrantes.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
- "severity": "Medio",
- "text": "Evite el agotamiento del puerto SNAT supervisando el uso del puerto SNAT, evaluando la configuración de la puerta de enlace NAT y garantizando una conmutación por error sin problemas. Si el número de puertos se acerca al límite, es una señal de que el agotamiento de SNAT podría ser inminente.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Use los tiempos de expiración a corto plazo en una SAS de servicio SAS ad hoc o en una SAS de cuenta. De esta manera, incluso si una SAS se ve comprometida, es válida solo por un corto tiempo. Esta práctica es especialmente importante si no puede hacer referencia a una directiva de acceso almacenada. Los tiempos de expiración a corto plazo también limitan la cantidad de datos que se pueden escribir en un blob al limitar el tiempo disponible para cargarlo.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Si usa Azure Firewall Premium, habilite la inspección de TLS.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "severity": "Bajo",
- "text": "Utilice categorías web para permitir o denegar el acceso saliente a temas específicos.",
- "waf": "Rendimiento"
+ "text": "Esfuércese por obtener períodos de validez cortos para SAS ad-hoc",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Al crear una SAS, sea lo más específico y restrictivo posible. Prefiera una SAS para un solo recurso y operación en lugar de una SAS que proporciona un acceso mucho más amplio.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Como parte de la inspección de TLS, planee la recepción de tráfico de Azure App Gateways para su inspección.",
- "waf": "Rendimiento"
+ "text": "Aplicación de un ámbito limitado a una SAS",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Una SAS puede incluir parámetros en los que las direcciones IP de cliente o los intervalos de direcciones están autorizados a solicitar un recurso mediante la SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Habilite la configuración del proxy DNS de Azure Firewall.",
+ "text": "Considere la posibilidad de definir el ámbito de SAS en una dirección IP de cliente específica, siempre que sea posible",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Integre Azure Firewall con Azure Monitor y habilite el registro de diagnóstico para almacenar y analizar los registros de firewall.",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Una SAS no puede restringir la cantidad de datos que carga un cliente; Dado el modelo de precios de la cantidad de almacenamiento a lo largo del tiempo, podría tener sentido validar si los clientes cargaron contenido de gran tamaño malintencionado.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
"severity": "Bajo",
- "text": "Implementación de copias de seguridad para las reglas de firewall",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "No interrumpa la comunicación del plano de control para los servicios PaaS de Azure insertados en una red virtual, por ejemplo, con una ruta 0.0.0.0/0 o una regla de NSG que bloquee el tráfico del plano de control.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Seguridad"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
- "severity": "Medio",
- "text": "Acceda a los servicios PaaS de Azure desde el entorno local a través de puntos de conexión privados y el emparejamiento privado de ExpressRoute. Este método evita el tránsito a través de la Internet pública.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Considere la posibilidad de comprobar los datos cargados, después de que los clientes hayan usado una SAS para cargar un archivo. ",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Al acceder a Blob Storage a través de SFTP mediante una \"cuenta de usuario local\", no se aplican los controles RBAC \"habituales\". El acceso a blobs a través de NFS o REST puede ser más restrictivo que el acceso SFTP. Desafortunadamente, a partir de principios de 2023, los usuarios locales son la única forma de administración de identidades que actualmente se admite para el punto de conexión SFTP",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "No habilite los puntos de conexión de servicio de red virtual de forma predeterminada en todas las subredes.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "text": "SFTP: Limite la cantidad de \"usuarios locales\" para el acceso SFTP y audite si el acceso es necesario a lo largo del tiempo.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Filtre el tráfico de salida a los servicios PaaS de Azure mediante FQDN en lugar de direcciones IP en Azure Firewall o una NVA para evitar la filtración de datos. Si usa Private Link, puede bloquear todos los FQDN, de lo contrario, permitir solo los servicios PaaS necesarios.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "text": "SFTP: El punto de conexión SFTP no admite ACL similares a POSIX.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "El almacenamiento es compatible con CORS (Cross-Origin Resource Sharing), es decir, una función HTTP que permite a las aplicaciones web de un dominio diferente relajar la política del mismo origen. Al habilitar CORS, mantenga CorsRules con el mínimo privilegio.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Utilice al menos un prefijo /27 para las subredes de puerta de enlace.",
+ "text": "Evite las políticas de CORS demasiado amplias",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Los datos en reposo siempre están cifrados en el lado del servidor y, además, también pueden estar cifrados en el lado del cliente. El cifrado del lado del servidor puede realizarse mediante una clave administrada por la plataforma (predeterminada) o una clave administrada por el cliente. El cifrado del lado cliente puede producirse haciendo que el cliente proporcione una clave de cifrado y descifrado por blob a Azure Storage o controlando completamente el cifrado en el lado cliente. por lo tanto, no depende en absoluto de Azure Storage para obtener garantías de confidencialidad.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "No confíe en las reglas predeterminadas de entrada de NSG que usan la etiqueta de servicio VirtualNetwork para limitar la conectividad.",
+ "text": "Determine cómo se deben cifrar los datos en reposo. Comprender el modelo de subprocesos para los datos.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Use los grupos de seguridad de red para ayudar a proteger el tráfico a través de las subredes, así como el tráfico este/oeste a través de la plataforma (tráfico entre zonas de aterrizaje).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "Determine qué cifrado de plataforma se debe usar o si se debe usar.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"severity": "Medio",
- "text": "Use grupos de seguridad de red y grupos de seguridad de aplicaciones para microsegmentar el tráfico dentro de la zona de aterrizaje y evite usar una NVA central para filtrar los flujos de tráfico.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "Determine qué cifrado del lado del cliente se debe usar o si.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
- "severity": "Medio",
- "text": "Habilite los registros de flujo de red virtual e introdúzcalos en Traffic Analytics para obtener información sobre los flujos de tráfico internos y externos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aproveche el Explorador de Resource Graph (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) para buscar cuentas de almacenamiento que permitan el acceso anónimo a blobs.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
+ "severity": "Alto",
+ "text": "Considere si se necesita acceso público a blobs o si se puede deshabilitar para determinadas cuentas de almacenamiento. ",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
- "severity": "Medio",
- "text": "No implemente más de 900 reglas de NSG por NSG, debido al límite de 1000 reglas.",
- "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "Bajo",
+ "text": "Consulte la arquitectura de aplicación web de redundancia de zona de alta disponibilidad de línea de base para conocer los procedimientos recomendados",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "Medio",
- "text": "Use Virtual WAN si el escenario se describe explícitamente en la lista de diseños de enrutamiento de Virtual WAN.",
- "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
- "waf": "Operaciones"
+ "text": "Utilice los niveles Premium y Estándar. Estos niveles admiten ranuras de ensayo y copias de seguridad automatizadas.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
- "severity": "Medio",
- "text": "Use un centro de conectividad de Virtual WAN por región de Azure para conectar varias zonas de aterrizaje juntas en regiones de Azure a través de una instancia global común de Azure Virtual WAN.",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente (requiere el nivel Premium v2 o v3)",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "Medio",
- "text": "Para la protección y el filtrado del tráfico de Internet saliente, implemente Azure Firewall en centros seguros.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
+ "text": "Implementación de comprobaciones de estado",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
- "severity": "Medio",
- "text": "Asegúrese de que la arquitectura de red WAN virtual se alinee con un escenario de arquitectura identificado.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Consulte los procedimientos recomendados de copia de seguridad y restauración para Azure App Service",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
- "severity": "Medio",
- "text": "Use Azure Monitor Insights para Virtual WAN para supervisar la topología de un extremo a otro de Virtual WAN, el estado y las métricas clave.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Implementación de los procedimientos recomendados de confiabilidad de Azure App Service",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
- "severity": "Medio",
- "text": "No deshabilite el tráfico de rama a rama en Virtual WAN, a menos que estos flujos deban bloquearse explícitamente.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
+ "severity": "Bajo",
+ "text": "Familiarizarse con cómo mover una aplicación de App Service a otra región durante un desastre",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
- "severity": "Medio",
- "text": "Use AS-Path como preferencia de enrutamiento del concentrador, ya que es más flexible que ExpressRoute o VPN.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Familiarizarse con la compatibilidad con la confiabilidad en Azure App Service",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"severity": "Medio",
- "text": "Configure la propagación basada en etiquetas en Virtual WAN, de lo contrario, la conectividad entre los centros virtuales se verá afectada.",
+ "text": "Asegúrese de que \"Siempre activado\" está habilitado para las aplicaciones de funciones que se ejecutan en un plan de App Service",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
- "severity": "Alto",
- "text": "Asigne al menos un prefijo /23 a los centros virtuales para asegurarse de que haya suficiente espacio IP disponible.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
+ "severity": "Medio",
+ "text": "Supervisión de instancias de App Service mediante comprobaciones de estado",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Alto",
- "text": "Aproveche Azure Policy de forma estratégica, defina controles para su entorno mediante iniciativas de directivas para agrupar directivas relacionadas.",
- "waf": "Seguridad"
- },
- {
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"severity": "Medio",
- "text": "Asigne los requisitos normativos y de cumplimiento a las definiciones de Azure Policy y las asignaciones de roles de Azure.",
- "waf": "Seguridad"
+ "text": "Supervisión de la disponibilidad y la capacidad de respuesta de la aplicación web o el sitio web mediante pruebas de disponibilidad de Application Insights",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Medio",
- "text": "Establezca definiciones de Azure Policy en el grupo de administración raíz intermedio para que se puedan asignar en ámbitos heredados.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
+ "severity": "Bajo",
+ "text": "Uso de la prueba estándar de Application Insights para supervisar la disponibilidad y la capacidad de respuesta de la aplicación web o el sitio web",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use Azure Key Vault para almacenar los secretos que necesita la aplicación. Key Vault proporciona un entorno seguro y auditado para almacenar secretos y está bien integrado con App Service a través del SDK de Key Vault o las referencias de Key Vault de App Service.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"severity": "Alto",
- "text": "Administre las asignaciones de políticas en el nivel más alto apropiado con exclusiones en los niveles inferiores, si es necesario.",
+ "text": "Uso de Key Vault para almacenar secretos",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "Bajo",
- "text": "Use Azure Policy para controlar qué servicios pueden aprovisionar los usuarios en el nivel de suscripción o grupo de administración.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use una identidad administrada para conectarse a Key Vault mediante el SDK de Key Vault o a través de las referencias de Key Vault de App Service.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Uso de la identidad administrada para conectarse a Key Vault",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Almacene el certificado TLS de App Service en Key Vault.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
"severity": "Alto",
- "text": "Utilice políticas integradas siempre que sea posible para minimizar la sobrecarga operativa.",
+ "text": "Use Key Vault para almacenar el certificado TLS.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "description": "La asignación del rol Colaborador de directivas de recursos a ámbitos específicos le permite delegar la administración de directivas a los equipos pertinentes. Por ejemplo, un equipo de TI central puede supervisar las políticas a nivel de grupo de administración, mientras que los equipos de aplicaciones se encargan de las políticas de sus suscripciones, lo que permite la gobernanza distribuida con el cumplimiento de los estándares de la organización.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Los sistemas que procesan información confidencial deben estar aislados. Para ello, use planes del Servicio de aplicaciones o entornos del Servicio de aplicaciones independientes y considere la posibilidad de usar suscripciones o grupos de administración diferentes.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "Medio",
- "text": "Asigne el rol integrado Colaborador de directiva de recursos en un ámbito determinado para habilitar la gobernanza de nivel de aplicación.",
+ "text": "Aísle los sistemas que procesan información confidencial",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Los discos locales de App Service no están cifrados y los datos confidenciales no deben almacenarse en ellos. (Por ejemplo: D:\\\\Local y %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"severity": "Medio",
- "text": "Limite el número de asignaciones de Azure Policy realizadas en el ámbito del grupo de administración raíz para evitar la administración a través de exclusiones en ámbitos heredados.",
+ "text": "No almacene datos confidenciales en el disco local",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "En el caso de la aplicación web autenticada, use un proveedor de identidades bien establecido, como Azure AD o Azure AD B2C. Aproveche el marco de aplicaciones de su elección para integrarse con este proveedor o use la característica de autenticación o autorización del Servicio de aplicaciones.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"severity": "Medio",
- "text": "Si existen requisitos de soberanía de datos, se deben implementar Azure Policies para aplicarlos.",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "text": "Usar un proveedor de identidades establecido para la autenticación",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
- "severity": "Medio",
- "text": "Para la zona de aterrizaje soberana, implemente la línea base de la política de soberanía y asígnela en el nivel de grupo de administración correcto.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Implemente código en App Service desde un entorno controlado y de confianza, como una canalización de implementación de DevOps bien administrada y segura. De este modo, se evita el código que no se ha controlado la versión y se ha comprobado que se implementará desde un host malintencionado.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Implementación desde un entorno de confianza",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
- "severity": "Medio",
- "text": "En el caso de la Zona de Aterrizaje Soberana, documente los objetivos del Control Soberano para el mapeo de políticas.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Deshabilite la autenticación básica tanto para FTP/FTPS como para WebDeploy/SCM. Esto deshabilita el acceso a estos servicios y exige el uso de puntos de conexión protegidos de Azure AD para la implementación. Tenga en cuenta que el sitio de SCM también se puede abrir con credenciales de Azure AD.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Deshabilitar la autenticación básica",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
- "severity": "Medio",
- "text": "En el caso de la Zona de Aterrizaje Soberana, garantizar que exista un proceso para la gestión de los \"objetivos de control soberano para el mapeo de políticas\".",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Siempre que sea posible, use Managed Identity para conectarse a los recursos protegidos de Azure AD. Si esto no es posible, almacene los secretos en Key Vault y conéctese a Key Vault mediante una identidad administrada en su lugar.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Uso de la identidad administrada para conectarse a los recursos",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
- "severity": "Medio",
- "text": "Use un único área de trabajo de registros de monitor para administrar las plataformas de forma centralizada, excepto cuando el control de acceso basado en rol de Azure (Azure RBAC), los requisitos de soberanía de datos o las directivas de retención de datos exijan áreas de trabajo independientes.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Cuando use imágenes almacenadas en Azure Container Registry, extráigalas mediante una identidad administrada.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
"severity": "Alto",
- "text": "Exporte registros a Azure Storage si los requisitos de retención de registros superan los doce años. Use el almacenamiento inmutable con una política de escritura única y lectura múltiple para que los datos no se puedan borrar ni modificar durante un intervalo especificado por el usuario.",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operaciones"
+ "text": "Extracción de contenedores mediante una identidad administrada",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Al configurar las opciones de diagnóstico de App Service, puede enviar todos los datos de telemetría a Log Analytics como destino central para el registro y la supervisión. Esto le permite supervisar la actividad en tiempo de ejecución de App Service, como los registros HTTP, los registros de aplicaciones, los registros de plataforma, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "Medio",
- "text": "Supervise el desfase de la configuración de la máquina virtual (VM) a nivel de sistema operativo mediante Azure Policy. La habilitación de las funcionalidades de auditoría de Azure Automanage Machine Configuration a través de la directiva ayuda a las cargas de trabajo del equipo de aplicaciones a consumir inmediatamente las funcionalidades de características con poco esfuerzo.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Operaciones"
+ "text": "Envío de registros en tiempo de ejecución de App Service a Log Analytics",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure una configuración de diagnóstico para enviar el registro de actividad a Log Analytics como destino central para el registro y la supervisión. Esto le permite supervisar la actividad del plano de control en el propio recurso de App Service.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"severity": "Medio",
- "text": "Use Azure Update Manager como mecanismo de aplicación de revisiones para máquinas virtuales Windows y Linux en Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operaciones"
+ "text": "Envío de registros de actividad de App Service a Log Analytics",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Controle el acceso saliente a la red mediante una combinación de integración de red virtual regional, grupos de seguridad de red y UDR. El tráfico debe enrutarse a una aplicación virtual de red, como Azure Firewall. Asegúrese de supervisar los registros del cortafuegos.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "Medio",
- "text": "Use Azure Update Manager como mecanismo de aplicación de revisiones para máquinas virtuales Windows y Linux fuera de Azure mediante Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operaciones"
+ "text": "El acceso a la red saliente debe controlarse",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/networkWatchers",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
- "severity": "Medio",
- "text": "Utilice Network Watcher para supervisar de forma proactiva los flujos de tráfico.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Operaciones"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Puede proporcionar una dirección IP de salida estable mediante la integración de red virtual y una puerta de enlace NAT de red virtual o una aplicación virtual de red como Azure Firewall. Esto permite a la parte receptora incluir en la lista de permitidos en función de la IP, en caso de que sea necesario. Tenga en cuenta que para las comunicaciones con los servicios de Azure, a menudo no es necesario depender de la dirección IP y, en su lugar, se deben usar mecanismos como los puntos de conexión de servicio. (Además, el uso de puntos de conexión privados en el extremo receptor evita que se produzca SNAT y proporciona un intervalo de IP de salida estable).",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
+ "severity": "Bajo",
+ "text": "Garantizar una IP estable para las comunicaciones salientes hacia las direcciones de Internet",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
- "severity": "Medio",
- "text": "Use los registros de Azure Monitor para obtener información e informes.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Controle el acceso entrante a la red mediante una combinación de restricciones de acceso al Servicio de aplicaciones, puntos de conexión de servicio o puntos de conexión privados. Se pueden requerir y configurar diferentes restricciones de acceso para la propia aplicación web y el sitio de SCM.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "El acceso a la red entrante debe controlarse",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "Medio",
- "text": "Use alertas de Azure Monitor para la generación de alertas operativas.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Protéjase contra el tráfico entrante malintencionado mediante un firewall de aplicaciones web como Application Gateway o Azure Front Door. Asegúrese de supervisar los registros del WAF.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Uso de un WAF delante de App Service",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
- "severity": "Medio",
- "text": "Al usar el seguimiento de cambios e inventario a través de cuentas de Azure Automation, asegúrese de que ha seleccionado las regiones admitidas para vincular el área de trabajo de Log Analytics y las cuentas de automatización.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Asegúrese de que no se pueda omitir el WAF bloqueando el acceso solo al WAF. Use una combinación de restricciones de acceso, puntos de conexión de servicio y puntos de conexión privados.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Evite que se omita WAF",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "Bajo",
- "text": "Al usar Azure Backup, use los tipos de copia de seguridad correctos (GRS, ZRS Y LRS) para la copia de seguridad, ya que la configuración predeterminada es GRS.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Establezca la directiva TLS mínima en 1.2 en la configuración de App Service.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
+ "severity": "Medio",
+ "text": "Establezca la directiva TLS mínima en 1.2",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
- "severity": "Medio",
- "text": "Use directivas de invitado de Azure para implementar automáticamente configuraciones de software a través de extensiones de máquina virtual y aplicar una configuración de máquina virtual de línea base compatible.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure App Service para que use solo HTTPS. Esto hace que App Service se redirija de HTTP a HTTPS. Considere seriamente el uso de HTTP Strict Transport Security (HSTS) en su código o desde su WAF, que informa a los navegadores que solo se debe acceder al sitio mediante HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Usar solo HTTPS",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "description": "Use las características de configuración de invitado de Azure Policy para auditar y corregir la configuración de la máquina (por ejemplo, el sistema operativo, la aplicación, el entorno) para asegurarse de que los recursos se alinean con las configuraciones esperadas, y Update Management puede aplicar la administración de revisiones para las máquinas virtuales.",
- "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",
- "severity": "Medio",
- "text": "Supervise el desfase de la configuración de seguridad de la máquina virtual a través de Azure Policy.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "No utilice caracteres comodín en la configuración de CORS, ya que esto permite que todos los orígenes accedan al servicio (lo que anula el propósito de CORS). En concreto, solo permite los orígenes que esperas poder acceder al servicio.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Los comodines no deben usarse para CORS",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
- "severity": "Medio",
- "text": "Use Azure Site Recovery para escenarios de recuperación ante desastres de Azure a Azure Virtual Machines. Esto le permite replicar cargas de trabajo en todas las regiones.",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
- "severity": "Medio",
- "text": "Use funcionalidades de copia de seguridad nativas de Azure o una solución de copia de seguridad de terceros compatible con Azure.",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "La depuración remota no debe estar activada en producción, ya que esto abre puertos adicionales en el servicio, lo que aumenta la superficie expuesta a ataques. Tenga en cuenta que el servicio desactiva la depuración remota automáticamente después de 48 horas.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
"severity": "Alto",
- "text": "Agregue configuración de diagnóstico para guardar los registros de WAF de los servicios de entrega de aplicaciones, como Azure Front Door y Azure Application Gateway. Revise periódicamente los registros para comprobar si hay ataques y detecciones de falsos positivos.",
- "waf": "Operaciones"
+ "text": "Desactivar la depuración remota",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Habilite Defender para App Service. Esto (entre otras amenazas) detecta comunicaciones a direcciones IP maliciosas conocidas. Revise las recomendaciones de Defender para App Service como parte de las operaciones.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
"severity": "Medio",
- "text": "Envíe registros de WAF desde los servicios de entrega de aplicaciones, como Azure Front Door y Azure Application Gateway, a Microsoft Sentinel. Detecte ataques e integre la telemetría de WAF en su entorno general de Azure.",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
- "severity": "Alto",
- "text": "Use Azure Key Vault para almacenar sus secretos y credenciales.",
+ "text": "Habilitación de Defender for Cloud: Defender for App Service",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure proporciona protección básica contra DDoS en su red, que se puede mejorar con funcionalidades inteligentes de DDoS Standard que aprenden sobre los patrones de tráfico normales y pueden detectar comportamientos inusuales. DDoS Standard se aplica a una red virtual, por lo que debe configurarse para el recurso de red delante de la aplicación, como Application Gateway o una aplicación virtual de red.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"severity": "Medio",
- "text": "Use diferentes Azure Key Vaults para diferentes aplicaciones y regiones para evitar límites de escala de transacciones y restringir el acceso a los secretos.",
+ "text": "Habilitación del estándar de protección DDoS en la red virtual de WAF",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Cuando use imágenes almacenadas en Azure Container Registry, extráigalas a través de una red virtual desde Azure Container Registry mediante su punto de conexión privado y la configuración de la aplicación \"WEBSITE_PULL_IMAGE_OVER_VNET\".",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
"severity": "Medio",
- "text": "Aprovisione Azure Key Vault con las directivas de eliminación temporal y purga habilitadas para permitir la protección de retención para los objetos eliminados.",
+ "text": "Extracción de contenedores a través de una red virtual",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Realice una prueba de penetración en la aplicación web siguiendo las reglas de participación de las pruebas de penetración.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
"severity": "Medio",
- "text": "Siga un modelo de privilegios mínimos limitando la autorización para eliminar claves, secretos y certificados de forma permanente a roles de identificador personalizados especializados de Microsoft Entra.",
+ "text": "Realizar una prueba de penetración",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Implemente código de confianza que se haya validado y analizado en busca de vulnerabilidades de acuerdo con las prácticas de DevSecOps.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"severity": "Medio",
- "text": "Automatice el proceso de gestión y renovación de certificados con autoridades de certificación públicas para facilitar la administración.",
+ "text": "Implementación de código validado",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Establezca un proceso automatizado para la rotación de claves y certificados.",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Utilice las versiones más recientes de plataformas, lenguajes de programación, protocolos y marcos compatibles.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Utilizar plataformas, lenguajes, protocolos y marcos actualizados",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Habilite el firewall y el punto de conexión de servicio de red virtual o el punto de conexión privado en el almacén para controlar el acceso al almacén de claves.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Use el área de trabajo de Log Analytics de Azure Monitor central de la plataforma para auditar el uso de claves, certificados y secretos en cada instancia de Key Vault.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Delegue la creación de instancias de Key Vault y el acceso con privilegios, y use Azure Policy para aplicar una configuración coherente y conforme.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Use una instancia de Azure Key Vault por aplicación, por entorno, por región.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Medio",
- "text": "Si desea traer sus propias claves, es posible que esto no sea compatible con todos los servicios considerados. Implemente la mitigación pertinente para que las inconsistencias no obstaculicen los resultados deseados. Elija los pares de regiones y las regiones de recuperación ante desastres adecuados que minimicen la latencia.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "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": "En el caso de la zona de aterrizaje soberana, use el HSM administrado de Azure Key Vault para almacenar los secretos y las credenciales.",
- "waf": "Seguridad"
+ "text": "Observe métricas como tokens de inferencia procesados, tokens de finalización generados, monitoree el límite de velocidad",
+ "waf": "Excelencia Operacional"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
- "severity": "Medio",
- "text": "Use las capacidades de generación de informes de Microsoft Entra ID para generar informes de auditoría de control de acceso.",
- "waf": "Seguridad"
+ "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"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
+ "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": "Habilite la administración de la posición de seguridad en la nube de Defender para todas las suscripciones.",
- "waf": "Seguridad"
+ "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"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
+ "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": "Habilite un plan de protección de cargas de trabajo en la nube de Defender para servidores en todas las suscripciones.",
+ "text": "Uso de la autenticación de Microsoft Entra con identidad administrada en lugar de clave de API",
"waf": "Seguridad"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
+ "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": "Habilite los planes de protección de cargas de trabajo en la nube de Defender para recursos de Azure en todas las suscripciones.",
- "waf": "Seguridad"
+ "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 Operacional"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
+ "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": "Habilite la protección de puntos de conexión en servidores IaaS.",
- "waf": "Seguridad"
+ "text": "Evaluación del uso del modelo de rendimiento aprovisionado ",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
- "severity": "Medio",
- "text": "Supervise el desfase de revisiones del sistema operativo base a través de los registros de Azure Monitor y Defender for Cloud.",
- "waf": "Seguridad"
+ "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.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
- "severity": "Medio",
- "text": "Conecte las configuraciones de recursos predeterminadas a un área de trabajo centralizada de Log Analytics de Azure Monitor.",
- "waf": "Seguridad"
+ "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"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "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": "Para Sovereign Landing Zone, habilite los registros de transparencia en el inquilino de Entra ID.",
- "waf": "Seguridad"
+ "text": "Mejore la latencia del sistema limitando el tamaño de los tokens, las opciones de transmisión",
+ "waf": "Rendimiento"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "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": "Para Sovereign Landing Zone, habilite la caja de seguridad del cliente en el inquilino de Entra ID.",
- "waf": "Seguridad"
+ "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.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
+ "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": "Habilite la transferencia segura a cuentas de almacenamiento.",
- "waf": "Seguridad"
+ "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.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
- "severity": "Alto",
- "text": "Habilite la eliminación temporal de contenedor para que la cuenta de almacenamiento recupere un contenedor eliminado y su contenido.",
- "waf": "Seguridad"
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "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": "Use secretos de Key Vault para evitar codificar de forma rígida información confidencial, como credenciales (máquinas virtuales, contraseñas de usuario), certificados o claves.",
- "waf": "Operaciones"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub proporciona cifrado de datos en reposo. Si usa su propia clave, los datos se siguen cifrando con la clave administrada por Microsoft, pero además la clave administrada por Microsoft se cifrará con la clave administrada por el cliente. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
+ "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": "Usar la opción de clave administrada por el cliente en el cifrado de datos en reposo cuando sea necesario",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Seguridad"
+ "text": "Implementación de varias instancias de OAI en todas las regiones",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Los espacios de nombres de Azure Event Hubs permiten a los clientes enviar y recibir datos con TLS 1.0 y versiones posteriores. Para aplicar medidas de seguridad más estrictas, puede configurar el espacio de nombres de Event Hubs para requerir que los clientes envíen y reciban datos con una versión más reciente de TLS. Si un espacio de nombres de Event Hubs requiere una versión mínima de TLS, se producirá un error en las solicitudes realizadas con una versión anterior. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
+ "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": "Aplicar una versión mínima requerida de Seguridad de la capa de transporte (TLS) para las solicitudes ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Seguridad"
+ "text": "Asegúrese de tener cuotas adecuadas de TPM y RPM para la carga de trabajo",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Al crear un espacio de nombres de Event Hubs, se crea automáticamente una regla de directiva denominada RootManageSharedAccessKey para el espacio de nombres. Esta directiva tiene permisos de administración para todo el espacio de nombres. Se recomienda tratar esta regla como una cuenta raíz administrativa y no usarla en la aplicación. Se recomienda usar AAD como proveedor de autenticación con RBAC. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
+ "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": "Evite usar la cuenta raíz cuando no sea necesario",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
- "waf": "Seguridad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Las identidades administradas para los recursos de Azure pueden autorizar el acceso a los recursos de Event Hubs mediante credenciales de Azure AD desde aplicaciones que se ejecutan en Azure Virtual Machines (VM), aplicaciones de funciones, conjuntos de escalado de máquinas virtuales y otros servicios. Mediante el uso de identidades administradas para los recursos de Azure junto con la autenticación de Azure AD, puede evitar el almacenamiento de credenciales con las aplicaciones que se ejecutan en la nube. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
+ "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": "Siempre que sea posible, la aplicación debe usar una identidad administrada para autenticarse en Azure Event Hub. Si no es así, considere la posibilidad de tener la credencial de almacenamiento (SAS, credencial de entidad de servicio) en Azure Key Vault o en un servicio equivalente",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Seguridad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Al crear permisos, proporcione un control específico sobre el acceso de un cliente al Centro de eventos de Azure. Los permisos del Centro de eventos de Azure pueden y deben limitarse al nivel de recurso individual, por ejemplo, grupo de consumidores, entidad del centro de eventos, espacios de nombres del centro de eventos, etc.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
+ "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": "Uso de RBAC de plano de datos con privilegios mínimos",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Seguridad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Los registros de recursos del Centro de eventos de Azure incluyen registros operativos, registros de red virtual y registros de Kafka. Los registros de auditoría en tiempo de ejecución capturan información de diagnóstico agregada para todas las operaciones de acceso al plano de datos (como eventos de envío o recepción) en Event Hubs.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
- "severity": "Medio",
- "text": "Habilite el registro para la investigación de seguridad. Use Azure Monitor para capturar métricas y registros, como registros de recursos, registros de auditoría en tiempo de ejecución y registros de Kafka",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "De forma predeterminada, Azure Event Hub tiene una dirección IP pública y es accesible a través de Internet. Los puntos de conexión privados permiten el tráfico entre la red virtual y Azure Event Hubs a través de la red troncal de Microsoft. Además de eso, debe deshabilitar los puntos de conexión públicos si no se usan. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
- "severity": "Medio",
- "text": "Considere la posibilidad de usar puntos de conexión privados para acceder al Centro de eventos de Azure y deshabilitar el acceso a la red pública cuando corresponda.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Con el firewall IP, puede restringir aún más el punto de conexión público a solo un conjunto de direcciones IPv4 o rangos de direcciones IPv4 en notación CIDR (Classless Inter-Domain Routing). ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
- "severity": "Medio",
- "text": "Considere la posibilidad de permitir solo el acceso al espacio de nombres del Centro de eventos de Azure desde direcciones IP o intervalos específicos",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-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": "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
+ "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": "Aproveche el Manual de Resiliencia de los TLC",
- "waf": "Fiabilidad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": " Esto se activará automáticamente para un nuevo espacio de nombres EH creado desde el portal con SKU Premium, Dedicado o Estándar en una región habilitada para zonas. Tanto los metadatos de EH como los propios datos de eventos se replican en todas las zonas",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
+ "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": "Aproveche las zonas de disponibilidad si corresponde regionalmente",
- "waf": "Fiabilidad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
+ "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": "Usa las SKU Premium o Dedicadas para obtener un rendimiento predecible",
- "waf": "Fiabilidad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "La característica integrada de recuperación ante desastres geográfica, cuando está habilitada, garantiza que toda la configuración de un espacio de nombres (Event Hubs, grupos de consumidores y configuración) se replique continuamente desde un espacio de nombres principal a un espacio de nombres secundario, y permite un movimiento de conmutación por error de una sola vez del principal al secundario en cualquier momento. La característica Activo/Pasivo está diseñada para facilitar la recuperación y el abandono de una región de Azure con errores sin tener que cambiar las configuraciones de la aplicación",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
+ "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": "Planeación de la recuperación ante desastres geográfica mediante la configuración pasiva activa",
- "waf": "Fiabilidad"
+ "text": "Implemente los escudos de aviso y la detección de conexión a tierra mediante Content Safety ",
+ "waf": "Excelencia Operacional"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Debe utilizarse para configuraciones de recuperación ante desastres en las que no se puede tolerar una interrupción o pérdida de datos de eventos en la región inactiva. En estos casos, siga las instrucciones de replicación y no use la capacidad de recuperación ante desastres geográfica integrada (activa/pasiva). Con Activo/Activo, mantenga varios centros de eventos en diferentes regiones y espacios de nombres, y los eventos se replicarán entre los centros",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "severity": "Medio",
- "text": "En el caso de las aplicaciones críticas para la empresa, use la configuración Active Active",
- "waf": "Fiabilidad"
+ "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.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"severity": "Medio",
- "text": "Diseño de centros de eventos resilientes",
- "waf": "Fiabilidad"
+ "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.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
- "severity": "Medio",
- "text": "Siga las recomendaciones de soporte técnico de confiabilidad en Azure Bot Service",
- "waf": "Fiabilidad"
+ "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.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "Azure OpenAI",
"severity": "Medio",
- "text": "Implementación de bots con residencia de datos local y cumplimiento regional",
- "waf": "Fiabilidad"
+ "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.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"severity": "Medio",
- "text": "Azure Bot Service se ejecuta en modo activo-activo para los servicios globales y regionales. Cuando se produce una interrupción, no es necesario detectar errores ni administrar el servicio. Azure Bot Service realiza automáticamente la conmutación por error y la recuperación automáticas en una arquitectura geográfica de varias regiones. En el caso del servicio regional de bots de la UE, Azure Bot Service proporciona dos regiones completas dentro de Europa con replicación activa/activa para garantizar la redundancia. En el caso del servicio de bot global, todas las regiones o zonas geográficas disponibles se pueden servir como superficie global.",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "text": "Reglas de recopilación de datos en Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Costar"
+ "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.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "text": "Comprobar las instancias de copia de seguridad con la fuente de datos subyacente no encontrada",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "text": "Eliminar o archivar servicios no asociados (discos, NIC, direcciones IP, etc.)",
- "waf": "Costar"
+ "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.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "text": "Considere un buen equilibrio entre el almacenamiento de recuperación del sitio y la copia de seguridad para aplicaciones que no son críticas",
- "waf": "Costar"
+ "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.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "text": "Compruebe las oportunidades de gasto y ahorro entre las 40 áreas de trabajo de Log Analytics diferentes: use diferentes retenciones y recopilación de datos para áreas de trabajo que no sean de producción: cree un límite diario para el reconocimiento y el tamaño de los niveles: si establece un límite diario, además de crear una alerta cuando se alcance el límite, asegúrese de crear también una regla de alerta para que se le notifique cuando se alcance algún porcentaje (90 %, por ejemplo). - Considere la posibilidad de transformar el espacio de trabajo si es posible - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "Costar"
+ "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.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "text": "Aplique una política de purga de registros y automatización (si es necesario, los registros se pueden mover al almacenamiento en frío)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "text": "Compruebe que los discos son realmente necesarios, si no: eliminar. Si son necesarios, busque niveles de almacenamiento más bajos o use una copia de seguridad:",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "Costar"
+ "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.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "text": "Considere la posibilidad de mover el almacenamiento no utilizado al nivel inferior, con reglas personalizadas: https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "text": "Asegúrese de que el asesor está configurado para el tamaño correcto de la máquina virtual ",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "comprobando la búsqueda de las licencias de categoría de contador en el análisis de costes",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "text": "ejecutar el script en todas las máquinas virtuales de Windows https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server: considere la posibilidad de implementar una directiva si las máquinas virtuales de Windows se crean con frecuencia",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "text": " esto también se puede poner bajo AHUB si ya tiene licencias https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "text": "Consolide familias de máquinas virtuales reservadas con la opción de flexibilidad (no más de 4-5 familias)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "text": "Uso de Azure Reserved Instances: esta característica le permite reservar máquinas virtuales durante un período de 1 o 3 años, lo que proporciona un importante ahorro de costos en comparación con los precios de pago por uso.",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "text": "Solo se pueden reservar discos más grandes => 1 TiB -",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "text": "Después de la optimización del tamaño correcto",
- "waf": "Costar"
+ "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.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "text": "Compruebe si corresponde y aplique la política/cambio 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",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "text": "El descuento de la parte de la licencia VM + (ahub + 3YRI) es de alrededor del 70% de descuento",
- "waf": "Costar"
+ "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "text": "Considere la posibilidad de utilizar un VMSS para satisfacer la demanda en lugar de un tamaño fijo",
- "waf": "Costar"
+ "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.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "text": "Use el escalador automático de AKS para que coincida con el uso de los clústeres (asegúrese de que los requisitos de los pods coincidan con el escalador)",
- "waf": "Costar"
+ "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.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "text": "Mover los puntos de recuperación al archivo de almacén cuando corresponda (Validar)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Costar"
+ "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.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "text": "Considere la posibilidad de usar máquinas virtuales de acceso puntual con reserva siempre que sea posible. Considere la posibilidad de la terminación automática de clústeres.",
- "waf": "Costar"
+ "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": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "text": "Funciones - Reutilizar conexiones",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Azure Spring Apps permite dos implementaciones para cada aplicación, de las cuales solo una recibe tráfico de producción. Puede lograr cero tiempo de inactividad con estrategias de implementación azul verde. La implementación azul verde solo está disponible en los niveles Estándar y Enterprise. Puede automatizar la implementación mediante CI/CD con acciones de ADO/GitHub",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "text": "Funciones: almacenar datos en caché localmente",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Las instancias de Azure Spring Apps se pueden crear en varias regiones para las aplicaciones y el tráfico se puede enrutar mediante Traffic Manager o Front Door.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "text": "Funciones - Arranques en frío: utilice la funcionalidad 'Ejecutar desde el paquete'. De esta manera, el código se descarga como un único archivo zip. Esto puede, por ejemplo, resultar en mejoras significativas con las funciones de Javascript, que tienen muchos módulos de nodos. Utilice herramientas específicas del lenguaje para reducir el tamaño del paquete, por ejemplo, aplicaciones Javascript que sacuden el árbol.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "En la región admitida, Azure Spring Apps se puede implementar como zona redundante, lo que significa que las instancias se distribuyen automáticamente entre las zonas de disponibilidad. Esta función solo está disponible en los niveles Standard y Enterprise.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "text": "Funciones - Mantén tus funciones calientes",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Usar más de 1 instancia de aplicación para las aplicaciones",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "text": "Al usar el escalado automático con diferentes funciones, es posible que haya uno que controle todo el escalado automático para todos los recursos: considere la posibilidad de moverlo a un plan de consumo independiente (y considere un plan superior para la CPU)",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Supervise Azure Spring Apps con registros, métricas y seguimiento. Integre ASA con la información de las aplicaciones, realice un seguimiento de los errores y cree libros de trabajo.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "text": "Las aplicaciones de funciones de un plan determinado se escalan juntas, por lo que cualquier problema con el escalado puede afectar a todas las aplicaciones del plan.",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Configuración del escalado automático en Spring Cloud Gateway",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "text": "¿Se me factura por el \"tiempo de espera\"? Esta pregunta se suele formular en el contexto de una función de C# que realiza una operación asincrónica y espera el resultado, por ejemplo, await Task.Delay(1000) o await client. GetAsync('http://google.com'). La respuesta es sí: el segundo cálculo de GB se basa en la hora de inicio y finalización de la función y el uso de memoria durante ese período. Lo que realmente sucede durante ese tiempo en términos de actividad de la CPU no se tiene en cuenta en el cálculo. Una excepción a esta regla es si está utilizando funciones duraderas. No se le facturará por el tiempo empleado en las esperas en las funciones de orquestador.aplique técnicas de modelado de la demanda siempre que sea posible (¿entornos de desarrollo?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "Bajo",
+ "text": "Habilite el escalado automático para las aplicaciones con el consumo estándar y el plan dedicado.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "text": "Frontdoor: desactivar la página principal predeterminadaEn la configuración de la aplicación de la aplicación, establezca AzureWebJobsDisableHomepage en true. Esto devolverá un 204 (sin contenido) al PoP para que solo se devuelvan los datos del encabezado.",
- "waf": "Costar"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
+ "severity": "Medio",
+ "text": "Use el plan Enterprise para obtener soporte comercial de Spring Boot para aplicaciones de misión crítica. Con otros niveles, obtienes soporte OSS.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "text": "Frontdoor: ruta a algo que no devuelve nada. Configure una función, un proxy de función o agregue una ruta en la aplicación web que devuelva 200 (correctamente) y envíe contenido mínimo o nulo. La ventaja de esto es que podrá cerrar la sesión cuando se llame.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Implementar una política de control de errores a nivel global",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Asegúrese de que todas las políticas de API incluyan un elemento.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "text": "Considere la posibilidad de archivar niveles para los datos menos utilizados",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Uso de fragmentos de políticas para evitar repetir las mismas definiciones de políticas en varias API",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "text": "Compruebe los tamaños de disco en los que el tamaño no coincida con el nivel (es decir, un disco de 513 GiB pagará un P30 (1 TiB) y considere la posibilidad de cambiar el tamaño",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Si planeas monetizar tus API, revisa el artículo \"Soporte de monetización\" para conocer las prácticas recomendadas",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "text": "Considere la posibilidad de utilizar un SSD estándar en lugar de Premium o Ultra siempre que sea posible",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Habilitación de la configuración de diagnóstico para exportar registros a Azure Monitor",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "text": "En el caso de las cuentas de almacenamiento, asegúrese de que el nivel elegido no suma cargos por transacción (puede ser más barato pasar al siguiente nivel)",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Habilitación de Application Insights para obtener telemetría más detallada",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "text": "Para ASR, considere la posibilidad de usar discos SSD estándar si el RPO/RTO y el rendimiento de replicación lo permiten",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Configurar alertas sobre las métricas más críticas",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "text": "Cuentas de almacenamiento: compruebe el nivel de acceso frecuente o GRS necesario",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Asegúrese de que los certificados SSL personalizados se almacenan en Azure Key Vault para que se pueda acceder a ellos y actualizarlos de forma segura",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "text": "Discos: valide el uso de discos SSD Premium en todas partes: por ejemplo, los que no son de producción podrían cambiar a SSD estándar o SSD Premium bajo demanda ",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Protección de las solicitudes entrantes a las API (plano de datos) con Azure AD",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "text": "Cree presupuestos para administrar los costos y cree alertas que notifiquen automáticamente a las partes interesadas sobre anomalías en el gasto y riesgos de gasto excesivo.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Usar el identificador de Microsoft Entra para autenticar a los usuarios en el Portal para desarrolladores",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "text": "Exporte los datos de costos a una cuenta de almacenamiento para realizar análisis de datos adicionales.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Crear grupos adecuados para controlar la visibilidad de los productos",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "text": "Controle los costos de un grupo de SQL dedicado pausando el recurso cuando no esté en uso.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Utilice la función Backends para eliminar las configuraciones redundantes de back-end de la API",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "text": "Habilite la función de pausa automática de Apache Spark sin servidor y establezca el valor de tiempo de espera en consecuencia.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Usar valores con nombre para almacenar valores comunes que se pueden usar en directivas",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "text": "Cree varias definiciones de grupo de Apache Spark de varios tamaños.",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "En el caso de la recuperación ante desastres, aproveche el nivel premium con implementaciones escaladas en dos o más regiones para un acuerdo de nivel de servicio del 99,99 %",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "text": "Compre unidades de confirmación (SCU) de Azure Synapse durante un año con un plan de compra anticipada para ahorrar en los costos de Azure Synapse Analytics.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Implemente al menos una unidad en dos o más zonas de disponibilidad para obtener un SLA aumentado del 99,99 %",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "text": "Uso de máquinas virtuales de acceso puntual para trabajos interrumpibles: se trata de máquinas virtuales por las que se puede pujar y comprar a un precio reducido, lo que proporciona una solución rentable para cargas de trabajo no críticas.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
+ "severity": "Alto",
+ "text": "Asegúrese de que haya una rutina de copia de seguridad automatizada",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "text": "Ajustar el tamaño de todas las máquinas virtuales",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Use directivas para agregar una dirección URL de back-end de conmutación por error y el almacenamiento en caché para reducir las llamadas con errores.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "text": "Intercambiar el tamaño de la máquina virtual con los tamaños normalizados y más recientes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
+ "severity": "Bajo",
+ "text": "Si necesita iniciar sesión en niveles de alto rendimiento, tenga en cuenta la directiva de Event Hubs",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Aplicación de directivas de limitación para controlar el número de solicitudes por segundo",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "Ajustar el tamaño de las máquinas virtuales: comience con la supervisión del uso por debajo del 5 % y, a continuación, trabaje hasta el 40 %",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Configurar el escalado automático para escalar horizontalmente el número de instancias cuando aumenta la carga",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "La inclusión de una aplicación en contenedores puede mejorar la densidad de la máquina virtual y ahorrar dinero en su escalado",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Costar"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Implemente puertas de enlace autohospedadas en las que Azure no tenga una región cercana a las API de back-end.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "Bajo",
- "text": "Consulte la arquitectura de aplicación web de redundancia de zona de alta disponibilidad de línea de base para conocer los procedimientos recomendados",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Use el nivel premium para las cargas de trabajo de producción.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
"severity": "Medio",
- "text": "Utilice los niveles Premium y Estándar. Estos niveles admiten ranuras de ensayo y copias de seguridad automatizadas.",
+ "text": "En el modelo de varias regiones, use directivas para enrutar las solicitudes a los back-ends regionales en función de la disponibilidad o la latencia.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "Alto",
- "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente (requiere el nivel Premium v2 o v3)",
+ "text": "Tenga en cuenta los límites de APIM",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
- "severity": "Medio",
- "text": "Implementación de comprobaciones de estado",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Asegúrese de que las implementaciones de puerta de enlace autohospedadas sean resistentes.",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
- "severity": "Alto",
- "text": "Consulte los procedimientos recomendados de copia de seguridad y restauración para Azure App Service",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Uso de Azure Front Door delante de APIM para la implementación en varias regiones",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
- "severity": "Alto",
- "text": "Implementación de los procedimientos recomendados de confiabilidad de Azure App Service",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Implementación del servicio dentro de una red virtual (VNet)",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
- "severity": "Bajo",
- "text": "Familiarizarse con cómo mover una aplicación de App Service a otra región durante un desastre",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
+ "severity": "Medio",
+ "text": "Implemente grupos de seguridad de red (NSG) en las subredes para restringir o supervisar el tráfico hacia/desde APIM.",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "Medio",
+ "text": "Implemente puntos de conexión privados para filtrar el tráfico entrante cuando APIM no se implemente en una red virtual.",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "Alto",
- "text": "Familiarizarse con la compatibilidad con la confiabilidad en Azure App Service",
- "waf": "Fiabilidad"
+ "text": "Deshabilitar el acceso a la red pública",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"severity": "Medio",
- "text": "Asegúrese de que \"Siempre activado\" está habilitado para las aplicaciones de funciones que se ejecutan en un plan de App Service",
- "waf": "Fiabilidad"
+ "text": "Simplifique la administración con scripts de automatización de PowerShell",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "Medio",
- "text": "Supervisión de instancias de App Service mediante comprobaciones de estado",
- "waf": "Fiabilidad"
+ "text": "Configure APIM a través de la infraestructura como código. Revise las prácticas recomendadas de DevOps desde el acelerador de zonas de aterrizaje de API de Cloud Adaption Framework",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
"severity": "Medio",
- "text": "Supervisión de la disponibilidad y la capacidad de respuesta de la aplicación web o el sitio web mediante pruebas de disponibilidad de Application Insights",
- "waf": "Fiabilidad"
+ "text": "Promover el uso de la extensión APIM de Visual Studio Code para un desarrollo de API más rápido",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
- "severity": "Bajo",
- "text": "Uso de la prueba estándar de Application Insights para supervisar la disponibilidad y la capacidad de respuesta de la aplicación web o el sitio web",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Implemente DevOps y CI/CD en su flujo de trabajo",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use Azure Key Vault para almacenar los secretos que necesita la aplicación. Key Vault proporciona un entorno seguro y auditado para almacenar secretos y está bien integrado con App Service a través del SDK de Key Vault o las referencias de Key Vault de App Service.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "Alto",
- "text": "Uso de Key Vault para almacenar secretos",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "API seguras mediante la autenticación de certificados de cliente",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Servicios de back-end seguros mediante la autenticación de certificados de cliente",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Revise el artículo \"Recomendaciones para mitigar las 10 principales amenazas de seguridad de la API de OWASP\" y compruebe qué se aplica a sus API",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
+ "severity": "Medio",
+ "text": "Utilice la función Autorizaciones para simplificar la administración del token de OAuth 2.0 para las API de back-end",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use una identidad administrada para conectarse a Key Vault mediante el SDK de Key Vault o a través de las referencias de Key Vault de App Service.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"severity": "Alto",
- "text": "Uso de la identidad administrada para conectarse a Key Vault",
+ "text": "Utilice la versión más reciente de TLS al cifrar la información en tránsito. Deshabilite los protocolos y cifrados obsoletos e innecesarios cuando sea posible.",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Almacene el certificado TLS de App Service en Key Vault.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"severity": "Alto",
- "text": "Use Key Vault para almacenar el certificado TLS.",
+ "text": "Asegúrese de que los secretos (valores con nombre) se almacenan en Azure Key Vault para que se pueda acceder a ellos y actualizarlos de forma segura",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Los sistemas que procesan información confidencial deben estar aislados. Para ello, use planes del Servicio de aplicaciones o entornos del Servicio de aplicaciones independientes y considere la posibilidad de usar suscripciones o grupos de administración diferentes.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"severity": "Medio",
- "text": "Aísle los sistemas que procesan información confidencial",
+ "text": "Uso de identidades administradas para autenticarse en otros recursos de Azure siempre que sea posible",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Los discos locales de App Service no están cifrados y los datos confidenciales no deben almacenarse en ellos. (Por ejemplo: D:\\\\Local y %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
- "severity": "Medio",
- "text": "No almacene datos confidenciales en el disco local",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
+ "severity": "Alto",
+ "text": "Uso del firewall de aplicaciones web (WAF) mediante la implementación de Application Gateway delante de APIM",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "En el caso de la aplicación web autenticada, use un proveedor de identidades bien establecido, como Azure AD o Azure AD B2C. Aproveche el marco de aplicaciones de su elección para integrarse con este proveedor o use la característica de autenticación o autorización del Servicio de aplicaciones.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "Medio",
- "text": "Usar un proveedor de identidades establecido para la autenticación",
- "waf": "Seguridad"
+ "text": "Aproveche el servidor flexible",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Implemente código en App Service desde un entorno controlado y de confianza, como una canalización de implementación de DevOps bien administrada y segura. De este modo, se evita el código que no se ha controlado la versión y se ha comprobado que se implementará desde un host malintencionado.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
"severity": "Alto",
- "text": "Implementación desde un entorno de confianza",
- "waf": "Seguridad"
+ "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Deshabilite la autenticación básica tanto para FTP/FTPS como para WebDeploy/SCM. Esto deshabilita el acceso a estos servicios y exige el uso de puntos de conexión protegidos de Azure AD para la implementación. Tenga en cuenta que el sitio de SCM también se puede abrir con credenciales de Azure AD.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
+ "severity": "Medio",
+ "text": "Aproveche la replicación de entrada de datos para escenarios de recuperación ante desastres entre regiones",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
"severity": "Alto",
- "text": "Deshabilitar la autenticación básica",
- "waf": "Seguridad"
+ "text": "Seleccione el plan de hospedaje de aplicaciones lógicas adecuado en función de los requisitos empresariales y de SLO",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Siempre que sea posible, use Managed Identity para conectarse a los recursos protegidos de Azure AD. Si esto no es posible, almacene los secretos en Key Vault y conéctese a Key Vault mediante una identidad administrada en su lugar.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
"severity": "Alto",
- "text": "Uso de la identidad administrada para conectarse a los recursos",
- "waf": "Seguridad"
+ "text": "Proteja las aplicaciones lógicas de errores de región con redundancia de zona y zonas de disponibilidad",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Cuando use imágenes almacenadas en Azure Container Registry, extráigalas mediante una identidad administrada.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"severity": "Alto",
- "text": "Extracción de contenedores mediante una identidad administrada",
- "waf": "Seguridad"
+ "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Al configurar las opciones de diagnóstico de App Service, puede enviar todos los datos de telemetría a Log Analytics como destino central para el registro y la supervisión. Esto le permite supervisar la actividad en tiempo de ejecución de App Service, como los registros HTTP, los registros de aplicaciones, los registros de plataforma, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
+ "severity": "Alto",
+ "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"severity": "Medio",
- "text": "Envío de registros en tiempo de ejecución de App Service a Log Analytics",
- "waf": "Seguridad"
+ "text": "Aproveche Azure DevOps o GitHub para simplificar la CI/CD y proteger el código de la aplicación lógica",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure una configuración de diagnóstico para enviar el registro de actividad a Log Analytics como destino central para el registro y la supervisión. Esto le permite supervisar la actividad del plano de control en el propio recurso de App Service.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"severity": "Medio",
- "text": "Envío de registros de actividad de App Service a Log Analytics",
- "waf": "Seguridad"
+ "text": "Azure Center for SAP Solutions (ACSS) es una oferta de Azure que convierte a SAP en una carga de trabajo de nivel superior en Azure. ACSS es una solución integral que permite crear y ejecutar sistemas SAP como una carga de trabajo unificada en Azure y proporciona una base más fluida para la innovación. Puede aprovechar las funcionalidades de administración de los sistemas SAP nuevos y existentes basados en Azure.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Controle el acceso saliente a la red mediante una combinación de integración de red virtual regional, grupos de seguridad de red y UDR. El tráfico debe enrutarse a una aplicación virtual de red, como Azure Firewall. Asegúrese de supervisar los registros del cortafuegos.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"severity": "Medio",
- "text": "El acceso a la red saliente debe controlarse",
- "waf": "Seguridad"
+ "text": "Azure admite la automatización de implementaciones de SAP en Linux y Windows. SAP Deployment Automation Framework es una herramienta de orquestación de código abierto que puede implementar, instalar y mantener entornos SAP.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "Operaciones"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Puede proporcionar una dirección IP de salida estable mediante la integración de red virtual y una puerta de enlace NAT de red virtual o una aplicación virtual de red como Azure Firewall. Esto permite a la parte receptora incluir en la lista de permitidos en función de la IP, en caso de que sea necesario. Tenga en cuenta que para las comunicaciones con los servicios de Azure, a menudo no es necesario depender de la dirección IP y, en su lugar, se deben usar mecanismos como los puntos de conexión de servicio. (Además, el uso de puntos de conexión privados en el extremo receptor evita que se produzca SNAT y proporciona un intervalo de IP de salida estable).",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
- "severity": "Bajo",
- "text": "Garantizar una IP estable para las comunicaciones salientes hacia las direcciones de Internet",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Realice una recuperación a un momento dado de sus bases de datos de producción en cualquier momento y en un período de tiempo que cumpla con su RTO; La recuperación a un momento dado suele incluir errores del operador al eliminar datos en la capa DBMS o a través de SAP, por cierto",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Controle el acceso entrante a la red mediante una combinación de restricciones de acceso al Servicio de aplicaciones, puntos de conexión de servicio o puntos de conexión privados. Se pueden requerir y configurar diferentes restricciones de acceso para la propia aplicación web y el sitio de SCM.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Pruebe los tiempos de copia de seguridad y recuperación para verificar que cumplen con los requisitos de RTO para restaurar todos los sistemas simultáneamente después de un desastre.",
+ "waf": "Fiabilidad"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
"severity": "Alto",
- "text": "El acceso a la red entrante debe controlarse",
- "waf": "Seguridad"
+ "text": "Puede replicar el almacenamiento estándar entre regiones emparejadas, pero no puede usar el almacenamiento estándar para almacenar las bases de datos o los discos duros virtuales. Las copias de seguridad solo se pueden replicar entre las regiones emparejadas que utilice. Para todos los demás datos, ejecute la replicación mediante características nativas de DBMS, como SQL Server Always On o SAP HANA System Replication. Use una combinación de Site Recovery, rsync o robocopy y otro software de terceros para la capa de aplicación de SAP.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Protéjase contra el tráfico entrante malintencionado mediante un firewall de aplicaciones web como Application Gateway o Azure Front Door. Asegúrese de supervisar los registros del WAF.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Al usar Azure Availability Zones para lograr una alta disponibilidad, debe tener en cuenta la latencia entre los servidores de aplicaciones SAP y los servidores de bases de datos. En el caso de las zonas con latencias altas, es necesario implementar procedimientos operativos para garantizar que los servidores de aplicaciones SAP y los servidores de bases de datos se ejecuten en la misma zona en todo momento.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Fiabilidad"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
"severity": "Alto",
- "text": "Uso de un WAF delante de App Service",
- "waf": "Seguridad"
+ "text": "Configure conexiones de ExpressRoute desde el entorno local a las regiones de recuperación ante desastres de Azure principal y secundaria. Además, como alternativa al uso de ExpressRoute, considere la posibilidad de configurar conexiones VPN desde el entorno local a las regiones de recuperación ante desastres de Azure principal y secundaria.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Asegúrese de que no se pueda omitir el WAF bloqueando el acceso solo al WAF. Use una combinación de restricciones de acceso, puntos de conexión de servicio y puntos de conexión privados.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
- "severity": "Alto",
- "text": "Evite que se omita WAF",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Replique el contenido del almacén de claves, como certificados, secretos o claves, en todas las regiones para poder descifrar los datos de la región de recuperación ante desastres.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Establezca la directiva TLS mínima en 1.2 en la configuración de App Service.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"severity": "Medio",
- "text": "Establezca la directiva TLS mínima en 1.2",
- "waf": "Seguridad"
+ "text": "Empareje las redes virtuales principal y de recuperación ante desastres. Por ejemplo, para la replicación del sistema HANA, una red virtual de base de datos de SAP HANA debe estar emparejada con la red virtual de base de datos de SAP HANA del sitio de recuperación ante desastres.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure App Service para que use solo HTTPS. Esto hace que App Service se redirija de HTTP a HTTPS. Considere seriamente el uso de HTTP Strict Transport Security (HSTS) en su código o desde su WAF, que informa a los navegadores que solo se debe acceder al sitio mediante HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
- "severity": "Alto",
- "text": "Usar solo HTTPS",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Si usa el almacenamiento de Azure NetApp Files para las implementaciones de SAP, como mínimo, cree dos cuentas de Azure NetApp Files en el nivel Premium, en dos regiones.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "No utilice caracteres comodín en la configuración de CORS, ya que esto permite que todos los orígenes accedan al servicio (lo que anula el propósito de CORS). En concreto, solo permite los orígenes que esperas poder acceder al servicio.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "Alto",
- "text": "Los comodines no deben usarse para CORS",
- "waf": "Seguridad"
+ "text": "Se debe usar la tecnología de replicación de bases de datos nativas para sincronizar la base de datos en un par de alta disponibilidad.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "La depuración remota no debe estar activada en producción, ya que esto abre puertos adicionales en el servicio, lo que aumenta la superficie expuesta a ataques. Tenga en cuenta que el servicio desactiva la depuración remota automáticamente después de 48 horas.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
"severity": "Alto",
- "text": "Desactivar la depuración remota",
- "waf": "Seguridad"
+ "text": "El CIDR de la red virtual (VNet) principal no debe entrar en conflicto ni superponerse con el CIDR de la red virtual del sitio de recuperación ante desastres",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Habilite Defender para App Service. Esto (entre otras amenazas) detecta comunicaciones a direcciones IP maliciosas conocidas. Revise las recomendaciones de Defender para App Service como parte de las operaciones.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
- "severity": "Medio",
- "text": "Habilitación de Defender for Cloud: Defender for App Service",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Use Site Recovery para replicar un servidor de aplicaciones en un sitio de recuperación ante desastres. Site Recovery también puede ayudar a replicar máquinas virtuales de clúster de servicios centrales en el sitio de recuperación ante desastres. Al invocar la recuperación ante desastres, deberá volver a configurar el clúster de Linux Pacemaker en el sitio de recuperación ante desastres (por ejemplo, reemplazar el VIP o SBD, ejecutar corosync.conf, etc.).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure proporciona protección básica contra DDoS en su red, que se puede mejorar con funcionalidades inteligentes de DDoS Standard que aprenden sobre los patrones de tráfico normales y pueden detectar comportamientos inusuales. DDoS Standard se aplica a una red virtual, por lo que debe configurarse para el recurso de red delante de la aplicación, como Application Gateway o una aplicación virtual de red.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
- "severity": "Medio",
- "text": "Habilitación del estándar de protección DDoS en la red virtual de WAF",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Considere la disponibilidad del software de SAP frente a puntos únicos de fallo. Esto incluye puntos únicos de falla dentro de aplicaciones como DBMS utilizados en las arquitecturas SAP NetWeaver y SAP S/4HANA, SAP ABAP y ASCS + SCS. También, otras herramientas como SAP Web Dispatcher.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Cuando use imágenes almacenadas en Azure Container Registry, extráigalas a través de una red virtual desde Azure Container Registry mediante su punto de conexión privado y la configuración de la aplicación \"WEBSITE_PULL_IMAGE_OVER_VNET\".",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
- "severity": "Medio",
- "text": "Extracción de contenedores a través de una red virtual",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "En el caso de SAP y bases de datos de SAP, considere la posibilidad de implementar clústeres de conmutación por error automática. En Windows, los clústeres de conmutación por error de Windows Server admiten la conmutación por error. En Linux, Linux Pacemaker o herramientas de terceros como SIOS Protection Suite y Veritas InfoScale admiten la conmutación por error.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Realice una prueba de penetración en la aplicación web siguiendo las reglas de participación de las pruebas de penetración.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
- "severity": "Medio",
- "text": "Realizar una prueba de penetración",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Azure no admite arquitecturas en las que las máquinas virtuales principal y secundaria compartan el almacenamiento de los datos de DBMS. Para la capa DBMS, el patrón de arquitectura común es replicar bases de datos al mismo tiempo y con pilas de almacenamiento diferentes a las que usan las máquinas virtuales principal y secundaria.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Implemente código de confianza que se haya validado y analizado en busca de vulnerabilidades de acuerdo con las prácticas de DevSecOps.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
- "severity": "Medio",
- "text": "Implementación de código validado",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Los datos de DBMS y los archivos de registro de transacciones y puesta al día se almacenan en el almacenamiento en bloque compatible con Azure o en Azure NetApp Files. Azure Files o Azure Premium Files no se admiten como almacenamiento para datos de DBMS o archivos de registro de puesta al día con la carga de trabajo de SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Utilice las versiones más recientes de plataformas, lenguajes de programación, protocolos y marcos compatibles.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
"severity": "Alto",
- "text": "Utilizar plataformas, lenguajes, protocolos y marcos actualizados",
- "waf": "Seguridad"
+ "text": "Puede usar discos compartidos de Azure en Windows para componentes ASCS + SCS y escenarios específicos de alta disponibilidad. Configure los clústeres de conmutación por error por separado para los componentes de la capa de aplicación de SAP y la capa de DBMS. Actualmente, Azure no admite arquitecturas de alta disponibilidad que combinen componentes de la capa de aplicación de SAP y la capa de DBMS en un clúster de conmutación por error.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
"severity": "Alto",
- "text": "Seleccione el plan de hospedaje de aplicaciones lógicas adecuado en función de los requisitos empresariales y de SLO",
+ "text": "La mayoría de los clústeres de conmutación por error para los componentes de la capa de aplicación (ASCS) de SAP y la capa de DBMS requieren una dirección IP virtual para un clúster de conmutación por error. Azure Load Balancer debe controlar la dirección IP virtual para todos los demás casos. Un principio de diseño es usar un equilibrador de carga por configuración de clúster. Te recomendamos que utilices la versión estándar del equilibrador de carga (SKU de equilibrador de carga estándar).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
"severity": "Alto",
- "text": "Proteja las aplicaciones lógicas de errores de región con redundancia de zona y zonas de disponibilidad",
+ "text": "Asegúrese de que la IP flotante esté habilitada en el equilibrador de carga",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
+ "text": "Antes de implementar la infraestructura de alta disponibilidad, y en función de la región que elija, determine si desea realizar la implementación con un conjunto de disponibilidad de Azure o una zona de disponibilidad.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
"severity": "Alto",
- "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
+ "text": "Si desea cumplir los acuerdos de nivel de servicio de infraestructura para las aplicaciones de los componentes de SAP (servicios centrales, servidores de aplicaciones y bases de datos), debe elegir las mismas opciones de alta disponibilidad (máquinas virtuales, conjuntos de disponibilidad, zonas de disponibilidad) para todos los componentes.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
- "severity": "Medio",
- "text": "Aproveche Azure DevOps o GitHub para simplificar la CI/CD y proteger el código de la aplicación lógica",
- "waf": "Operaciones"
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "No mezcle servidores de diferentes roles en el mismo conjunto de disponibilidad. Mantenga las máquinas virtuales de servicios centrales, las máquinas virtuales de base de datos y las máquinas virtuales de aplicaciones en sus propios conjuntos de disponibilidad",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aplicación de las instrucciones de la prueba comparativa de seguridad en la nube de Microsoft relacionadas con el almacenamiento",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"severity": "Medio",
- "text": "Tenga en cuenta la \"línea base de seguridad de Azure para el almacenamiento\"",
- "waf": "Seguridad"
+ "text": "No se pueden implementar conjuntos de disponibilidad de Azure dentro de una zona de disponibilidad de Azure a menos que se usen grupos de selección de ubicación de proximidad.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "De forma predeterminada, Azure Storage tiene una dirección IP pública y es accesible desde Internet. Los puntos de conexión privados permiten exponer de forma segura Azure Storage solo a los recursos de proceso de Azure que necesitan acceso, lo que elimina la exposición a la Internet pública",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere la posibilidad de usar puntos de conexión privados para Azure Storage",
- "waf": "Seguridad"
+ "text": "Al crear conjuntos de disponibilidad, use el número máximo de dominios de error y dominios de actualización disponibles. Por ejemplo, si implementa más de dos máquinas virtuales en un conjunto de disponibilidad, use el número máximo de dominios de error (tres) y suficientes dominios de actualización para limitar el efecto de posibles errores de hardware físico, interrupciones de red o interrupciones de energía, además del mantenimiento planeado de Azure. El número predeterminado de dominios de error es dos y no puede cambiarlo en línea más adelante.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Las cuentas de almacenamiento recién creadas se crean mediante el modelo de implementación de ARM, de modo que RBAC, auditoría, etc. están habilitados. Asegúrese de que no hay cuentas de almacenamiento antiguas con el modelo de implementación clásica en una suscripción",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
- "severity": "Medio",
- "text": "Asegúrese de que las cuentas de almacenamiento más antiguas no usan el \"modelo de implementación clásica\"",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Cuando se usan grupos de selección con selección de ubicación de proximidad de Azure en una implementación de conjunto de disponibilidad, los tres componentes de SAP (servicios centrales, servidor de aplicaciones y base de datos) deben estar en el mismo grupo con selección de ubicación de proximidad.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aproveche Microsoft Defender para obtener información sobre la actividad sospechosa y los errores de configuración.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitación de Microsoft Defender para todas las cuentas de almacenamiento",
- "waf": "Seguridad"
+ "text": "Use un grupo de selección de ubicación de proximidad por SID de SAP. Los grupos no abarcan zonas de disponibilidad ni regiones de Azure",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "El mecanismo de eliminación temporal permite recuperar blobs eliminados accidentalmente.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
- "severity": "Medio",
- "text": "Habilitación de la \"eliminación temporal\" para blobs",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Utilice uno de los siguientes servicios para ejecutar clústeres de servicios centrales de SAP, en función del sistema operativo.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere la posibilidad de deshabilitar de forma selectiva la \"eliminación temporal\" para determinados contenedores de blobs, por ejemplo, si la aplicación debe asegurarse de que la información eliminada se elimina inmediatamente, por ejemplo, por motivos de confidencialidad, privacidad o cumplimiento. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "Medio",
- "text": "Deshabilitación de la \"eliminación temporal\" de blobs",
- "waf": "Seguridad"
+ "text": "Actualmente, Azure no admite la combinación de ASCS y alta disponibilidad de base de datos en el mismo clúster de Linux Pacemaker; sepáralos en grupos individuales. Sin embargo, puede combinar hasta cinco clústeres de servicios centrales en un par de máquinas virtuales.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "La eliminación temporal de contenedores permite recuperar un contenedor después de que se haya eliminado, por ejemplo, recuperarse de una operación de eliminación accidental.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Habilitación de la \"eliminación temporal\" para los contenedores",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Implemente ambas máquinas virtuales en el par de alta disponibilidad en un conjunto de disponibilidad o en zonas de disponibilidad. Estas máquinas virtuales deben tener el mismo tamaño y la misma configuración de almacenamiento.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere la posibilidad de deshabilitar de forma selectiva la \"eliminación temporal\" para determinados contenedores de blobs, por ejemplo, si la aplicación debe asegurarse de que la información eliminada se elimina inmediatamente, por ejemplo, por motivos de confidencialidad, privacidad o cumplimiento. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"severity": "Medio",
- "text": "Deshabilitación de la \"eliminación temporal\" para contenedores",
- "waf": "Seguridad"
+ "text": "Azure admite la instalación y configuración de SAP HANA y las instancias de ASCS/SCS y ERS en el mismo clúster de alta disponibilidad que se ejecuta en Red Hat Enterprise Linux (RHEL).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Evita la eliminación accidental de una cuenta de almacenamiento, obligando al usuario a quitar primero el bloqueo de eliminación, antes de la eliminación",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitación de bloqueos de recursos en cuentas de almacenamiento",
- "waf": "Seguridad"
+ "text": "Ejecute todos los sistemas de producción en SSD administradas Premium y use Azure NetApp Files o Ultra Disk Storage. Al menos el disco del sistema operativo debe estar en el nivel Premium para que pueda lograr un mejor rendimiento y el mejor Acuerdo de Nivel de Servicio.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere la posibilidad de aplicar directivas de \"retención legal\" o \"retención basada en el tiempo\" para los blobs, de modo que sea imposible eliminar el blob, el contenedor o la cuenta de almacenamiento. Tenga en cuenta que 'imposible' en realidad significa 'imposible'; una vez que una cuenta de almacenamiento contiene un blob inmutable, la única manera de \"deshacerse\" de esa cuenta de almacenamiento es cancelando la suscripción de Azure.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere la posibilidad de blobs inmutables",
- "waf": "Seguridad"
+ "text": "Debe ejecutar SAP HANA en Azure solo en los tipos de almacenamiento certificados por SAP. Tenga en cuenta que ciertos volúmenes deben ejecutarse en determinadas configuraciones de disco, cuando corresponda. Estas configuraciones incluyen la habilitación del acelerador de escritura y el uso del almacenamiento premium. También debe asegurarse de que el sistema de archivos que se ejecuta en el almacenamiento es compatible con el DBMS que se ejecuta en la máquina.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere la posibilidad de deshabilitar el acceso HTTP/80 sin protección a la cuenta de almacenamiento, de modo que todas las transferencias de datos estén cifradas, protegidas por integridad y el servidor esté autenticado. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Requerir HTTPS, es decir, deshabilitar el puerto 80 en la cuenta de almacenamiento",
- "waf": "Seguridad"
+ "text": "Considere la posibilidad de configurar la alta disponibilidad en función del tipo de almacenamiento que utilice para las cargas de trabajo de SAP. Algunos servicios de almacenamiento disponibles en Azure no son compatibles con Azure Site Recovery, por lo que la configuración de alta disponibilidad puede diferir.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Al configurar un dominio personalizado (nombre de host) en una cuenta de almacenamiento, compruebe si necesita TLS/HTTPS; si es así, es posible que tenga que colocar Azure CDN delante de la cuenta de almacenamiento.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"severity": "Alto",
- "text": "Al aplicar HTTPS (deshabilitar HTTP), compruebe que no usa dominios personalizados (CNAME) para la cuenta de almacenamiento.",
- "waf": "Seguridad"
+ "text": "Es posible que los diferentes servicios de almacenamiento nativos de Azure (como Azure Files, Azure NetApp Files, Azure Shared Disk) no estén disponibles en todas las regiones. Por lo tanto, para tener una configuración de SAP similar en la región de recuperación ante desastres después de la conmutación por error, asegúrese de que el servicio de almacenamiento correspondiente se ofrece en el sitio de recuperación ante desastres.",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Requerir HTTPS cuando un cliente usa un token de SAS para acceder a los datos de blobs ayuda a minimizar el riesgo de pérdida de credenciales.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
"severity": "Medio",
- "text": "Limitar los tokens de firma de acceso compartido (SAS) solo a las conexiones HTTPS",
- "waf": "Seguridad"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Los tokens de AAD deben favorecerse sobre las firmas de acceso compartido, siempre que sea posible",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Uso de tokens de Azure Active Directory (Azure AD) para el acceso a blobs",
- "waf": "Seguridad"
+ "text": "Automatice SAP System Start-Stop para gestionar los costes.",
+ "waf": "Costar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Al asignar un rol a un usuario, grupo o aplicación, conceda a esa entidad de seguridad solo los permisos necesarios para que pueda realizar sus tareas. Limitar el acceso a los recursos ayuda a evitar el uso indebido no intencionado y malintencionado de los datos.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
- "severity": "Medio",
- "text": "Privilegios mínimos en los permisos de IaM",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "En el caso de usar Azure Premium Storage con SAP HANA, se puede usar el almacenamiento SSD estándar de Azure para seleccionar una solución de almacenamiento rentable. Sin embargo, tenga en cuenta que la elección de SSD estándar o almacenamiento de Azure HDD estándar afectará al Acuerdo de Nivel de Servicio de las máquinas virtuales individuales. Además, para sistemas con menor rendimiento de E/S y baja latencia, como entornos que no son de producción, se pueden usar máquinas virtuales de series inferiores.",
+ "waf": "Costar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Una SAS de delegación de usuarios está protegida con credenciales de Azure Active Directory (Azure AD) y también con los permisos especificados para la SAS. Una SAS de delegación de usuarios es análoga a una SAS de servicio en cuanto a su ámbito y función, pero ofrece ventajas de seguridad sobre la SAS de servicio. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
- "severity": "Alto",
- "text": "Al usar SAS, prefiera \"SAS de delegación de usuarios\" en lugar de SAS basada en claves de cuenta de almacenamiento.",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Como configuración alternativa de menor costo (multipropósito), puede elegir una SKU de bajo rendimiento para las máquinas virtuales del servidor de base de datos de HANA que no son de producción. Sin embargo, es importante tener en cuenta que algunos tipos de máquinas virtuales, como la serie E, no están certificadas para HANA (directorio de hardware de SAP HANA) o no pueden alcanzar una latencia de almacenamiento inferior a 1 ms.",
+ "waf": "Costar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Las claves de la cuenta de almacenamiento (\"claves compartidas\") tienen muy pocas funcionalidades de auditoría. Si bien se puede monitorear quién o cuándo obtuvo una copia de las claves, una vez que las claves están en manos de varias personas, es imposible atribuir el uso a un usuario específico. Confiar únicamente en la autenticación de AAD facilita la vinculación del acceso al almacenamiento a un usuario. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere la posibilidad de deshabilitar las claves de la cuenta de almacenamiento, de modo que solo se admita el acceso a AAD (y la SAS de delegación de usuarios).",
+ "text": "Aplicación de un modelo RBAC para grupos de administración, suscripciones, grupos de recursos y recursos",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Use los datos del registro de actividad para identificar \"cuándo\", \"quién\", \"qué\" y \"cómo\" se está viendo o cambiando la seguridad de la cuenta de almacenamiento (es decir, claves de cuenta de almacenamiento, directivas de acceso, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Considere la posibilidad de usar Azure Monitor para auditar las operaciones del plano de control en la cuenta de almacenamiento",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Aplicación de la propagación de la entidad de seguridad para reenviar la identidad de la aplicación en la nube de SAP a SAP local (incluida IaaS) a través del conector en la nube",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Una directiva de expiración de claves le permite establecer un recordatorio para la rotación de las claves de acceso a la cuenta. El recordatorio se muestra si ha transcurrido el intervalo especificado y las teclas aún no se han girado.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "Medio",
- "text": "Al usar claves de cuenta de almacenamiento, considere la posibilidad de habilitar una \"directiva de expiración de claves\"",
+ "text": "Implemente SSO en aplicaciones SAP SaaS como SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics y SAP C4C con Azure AD mediante SAML.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Una directiva de expiración de SAS especifica un intervalo recomendado durante el cual la SAS es válida. Las directivas de expiración de SAS se aplican a una SAS de servicio o a una SAS de cuenta. Cuando un usuario genera una SAS de servicio o una SAS de cuenta con un intervalo de validez mayor que el intervalo recomendado, verá una advertencia.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"severity": "Medio",
- "text": "Considere la posibilidad de configurar una directiva de expiración de SAS",
+ "text": "Implemente SSO en aplicaciones web basadas en SAP NetWeaver, como SAP Fiori y SAP Web GUI mediante SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Las directivas de acceso almacenadas ofrecen la opción de revocar los permisos de una SAS de servicio sin tener que volver a generar las claves de la cuenta de almacenamiento. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
"severity": "Medio",
- "text": "Considere la posibilidad de vincular SAS a una directiva de acceso almacenada",
+ "text": "Implemente SSO en aplicaciones web basadas en SAP NetWeaver, como SAP Fiori y SAP Web GUI mediante SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"severity": "Medio",
- "text": "Considere la posibilidad de configurar el repositorio de código fuente de la aplicación para detectar cadenas de conexión protegidas y claves de cuenta de almacenamiento.",
+ "text": "Puede implementar SSO en la GUI de SAP mediante SAP NetWeaver SSO o una solución de partner.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Lo ideal es que la aplicación use una identidad administrada para autenticarse en Azure Storage. Si esto no es posible, considere la posibilidad de tener la credencial de almacenamiento (cadena de conexión, clave de cuenta de almacenamiento, SAS, credencial de entidad de servicio) en Azure KeyVault o un servicio equivalente.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Considere la posibilidad de almacenar cadenas de conexión en Azure KeyVault (en escenarios en los que las identidades administradas no son posibles)",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Para SSO para SAP GUI y acceso al navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociación GSSAPI simple y protegido) debido a su facilidad de configuración y mantenimiento. Para SSO con certificados de cliente X.509, considere el servidor de inicio de sesión seguro de SAP, que es un componente de la solución SSO de SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Use los tiempos de expiración a corto plazo en una SAS de servicio SAS ad hoc o en una SAS de cuenta. De esta manera, incluso si una SAS se ve comprometida, es válida solo por un corto tiempo. Esta práctica es especialmente importante si no puede hacer referencia a una directiva de acceso almacenada. Los tiempos de expiración a corto plazo también limitan la cantidad de datos que se pueden escribir en un blob al limitar el tiempo disponible para cargarlo.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Esfuércese por obtener períodos de validez cortos para SAS ad-hoc",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Para SSO para SAP GUI y acceso al navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociación GSSAPI simple y protegido) debido a su facilidad de configuración y mantenimiento. Para SSO con certificados de cliente X.509, considere el servidor de inicio de sesión seguro de SAP, que es un componente de la solución SSO de SAP.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Al crear una SAS, sea lo más específico y restrictivo posible. Prefiera una SAS para un solo recurso y operación en lugar de una SAS que proporciona un acceso mucho más amplio.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
"severity": "Medio",
- "text": "Aplicación de un ámbito limitado a una SAS",
+ "text": "Implemente el inicio de sesión único mediante OAuth para SAP NetWeaver a fin de permitir que aplicaciones personalizadas o de terceros accedan a los servicios OData de SAP NetWeaver.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Una SAS puede incluir parámetros en los que las direcciones IP de cliente o los intervalos de direcciones están autorizados a solicitar un recurso mediante la SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"severity": "Medio",
- "text": "Considere la posibilidad de definir el ámbito de SAS en una dirección IP de cliente específica, siempre que sea posible",
+ "text": "Implementación de SSO en SAP HANA",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Una SAS no puede restringir la cantidad de datos que carga un cliente; Dado el modelo de precios de la cantidad de almacenamiento a lo largo del tiempo, podría tener sentido validar si los clientes cargaron contenido de gran tamaño malintencionado.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "severity": "Bajo",
- "text": "Considere la posibilidad de comprobar los datos cargados, después de que los clientes hayan usado una SAS para cargar un archivo. ",
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Considere Azure AD como un proveedor de identidades para sistemas SAP hospedados en RISE. Para obtener más información, consulte Integración del servicio con Azure AD.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Al acceder a Blob Storage a través de SFTP mediante una \"cuenta de usuario local\", no se aplican los controles RBAC \"habituales\". El acceso a blobs a través de NFS o REST puede ser más restrictivo que el acceso SFTP. Desafortunadamente, a partir de principios de 2023, los usuarios locales son la única forma de administración de identidades que actualmente se admite para el punto de conexión SFTP",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "SFTP: Limite la cantidad de \"usuarios locales\" para el acceso SFTP y audite si el acceso es necesario a lo largo del tiempo.",
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "En el caso de las aplicaciones que acceden a SAP, es posible que desee utilizar la propagación de entidades de seguridad para establecer el inicio de sesión único.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
"severity": "Medio",
- "text": "SFTP: El punto de conexión SFTP no admite ACL similares a POSIX.",
+ "text": "Si usa servicios BTP de SAP o soluciones SaaS que requieren SAP Identity Authentication Service (IAS), considere la posibilidad de implementar SSO entre SAP Cloud Identity Authentication Services y Azure AD para acceder a esos servicios de SAP. Esta integración permite a SAP IAS actuar como proveedor de identidades de proxy y reenvía las solicitudes de autenticación a Azure AD como almacén de usuarios central y proveedor de identidades.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "El almacenamiento es compatible con CORS (Cross-Origin Resource Sharing), es decir, una función HTTP que permite a las aplicaciones web de un dominio diferente relajar la política del mismo origen. Al habilitar CORS, mantenga CorsRules con el mínimo privilegio.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Evite las políticas de CORS demasiado amplias",
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Implementación de SSO en SAP BTP",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Los datos en reposo siempre están cifrados en el lado del servidor y, además, también pueden estar cifrados en el lado del cliente. El cifrado del lado del servidor puede realizarse mediante una clave administrada por la plataforma (predeterminada) o una clave administrada por el cliente. El cifrado del lado cliente puede producirse haciendo que el cliente proporcione una clave de cifrado y descifrado por blob a Azure Storage o controlando completamente el cifrado en el lado cliente. por lo tanto, no depende en absoluto de Azure Storage para obtener garantías de confidencialidad.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Determine cómo se deben cifrar los datos en reposo. Comprender el modelo de subprocesos para los datos.",
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Si usa SAP SuccessFactors, considere la posibilidad de usar el aprovisionamiento automatizado de usuarios de Azure AD. Con esta integración, a medida que agrega nuevos empleados a SAP SuccessFactors, puede crear automáticamente sus cuentas de usuario en Azure AD. Opcionalmente, puede crear cuentas de usuario en Microsoft 365 u otras aplicaciones SaaS compatibles con Azure AD. Utilice la escritura diferida de la dirección de correo electrónico en SAP SuccessFactors.",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
"severity": "Medio",
- "text": "Determine qué cifrado de plataforma se debe usar o si se debe usar.",
- "waf": "Seguridad"
+ "text": "aplicar las directivas de grupo de administración existentes a las suscripciones de SAP",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
- "severity": "Medio",
- "text": "Determine qué cifrado del lado del cliente se debe usar o si.",
- "waf": "Seguridad"
+ "checklist": "SAP Checklist",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Integre aplicaciones estrechamente acopladas en la misma suscripción de SAP para evitar una complejidad adicional de enrutamiento y administración",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aproveche el Explorador de Resource Graph (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) para buscar cuentas de almacenamiento que permitan el acceso anónimo a blobs.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere si se necesita acceso público a blobs o si se puede deshabilitar para determinadas cuentas de almacenamiento. ",
- "waf": "Seguridad"
+ "text": "Aprovechar la suscripción como unidad de escalado y escalar nuestros recursos, considere implementar la suscripción por entorno, por ejemplo. Sandbox, no-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitación de 2 réplicas para que tengan una disponibilidad del 99,9 % para las operaciones de lectura",
- "waf": "Fiabilidad"
+ "text": "Garantizar el aumento de la cuota como parte del aprovisionamiento de suscripciones (por ejemplo, el total de núcleos de máquina virtual disponibles dentro de una suscripción)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "Medio",
- "text": "Habilitación de 3 réplicas para que tengan una disponibilidad del 99,9 % para las operaciones de lectura y escritura",
- "waf": "Fiabilidad"
+ "checklist": "SAP Checklist",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "La API de cuota es una API de REST que se puede usar para ver y administrar las cuotas de los servicios de Azure. Considere usarlo si es necesario.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Si realiza la implementación en una zona de disponibilidad, asegúrese de que la implementación de la zona de la máquina virtual esté disponible una vez que se haya aprobado la cuota. Envíe una solicitud de soporte técnico con la suscripción, la serie de máquinas virtuales, el número de CPU y la zona de disponibilidad necesarias.",
+ "waf": "Operaciones"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"severity": "Alto",
- "text": "Aproveche las zonas de disponibilidad habilitando réplicas de lectura o escritura",
- "waf": "Fiabilidad"
+ "text": "Asegúrese de que los servicios y funciones requeridos estén disponibles dentro de las regiones de implementación elegidas, por ejemplo. ANF, Zona, etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
"severity": "Medio",
- "text": "En el caso de la reincidencia regional, cree manualmente servicios en 2 o más regiones para la búsqueda, ya que no proporciona un método automatizado para replicar índices de búsqueda en regiones geográficas",
- "waf": "Fiabilidad"
+ "text": "Aproveche la etiqueta de recurso de Azure para la categorización de costos y la agrupación de recursos (facturación, departamento (o unidad de negocio), entorno (producción, fase, desarrollo), nivel (nivel web, nivel de aplicación), propietario de la aplicación, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
- "severity": "Medio",
- "text": "Para sincronizar datos entre varios servicios, use indexadores para actualizar contenido en varios servicios o use las API de REST para insertar actualizaciones de contenido en varios servicios",
+ "checklist": "SAP Checklist",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Ayude a proteger la base de datos de HANA mediante el servicio Azure Backup.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
"severity": "Medio",
- "text": "Uso de Azure Traffic Manager para coordinar solicitudes",
+ "text": "Si implementa Azure NetApp Files para la base de datos HANA, Oracle o DB2, use la herramienta Azure Application Consistent Snapshot (AzAcSnap) para tomar instantáneas coherentes con la aplicación. AzAcSnap también es compatible con las bases de datos de Oracle. Considere la posibilidad de usar AzAcSnap en una máquina virtual central en lugar de en máquinas virtuales individuales.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"severity": "Alto",
- "text": "Realice una copia de seguridad y restaure un índice de Azure Cognitive Search. Use este código de ejemplo para realizar una copia de seguridad de la definición del índice y la instantánea en una serie de archivos JSON",
- "waf": "Fiabilidad"
+ "text": "Asegúrese de que la zona horaria coincida entre el sistema operativo y el sistema SAP.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "checklist": "SAP Checklist",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
"severity": "Medio",
- "text": "Aproveche el servidor flexible",
+ "text": "No agrupe diferentes servicios de aplicaciones en el mismo clúster. Por ejemplo, no combine DRBD y clústeres de servicios centrales en el mismo clúster. Sin embargo, puede usar el mismo clúster de Pacemaker para administrar aproximadamente cinco servicios centrales diferentes (clúster de varios SID).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
- "severity": "Alto",
- "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente",
- "waf": "Fiabilidad"
+ "checklist": "SAP Checklist",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de ejecutar sistemas de desarrollo y pruebas en un modelo de repetición para ahorrar y optimizar los costos de ejecución de Azure.",
+ "waf": "Costar"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "checklist": "SAP Checklist",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
"severity": "Medio",
- "text": "Aproveche la replicación de entrada de datos para escenarios de recuperación ante desastres entre regiones",
- "waf": "Fiabilidad"
+ "text": "Si se asocia con los clientes mediante la administración de sus propiedades de SAP, considere la posibilidad de usar Azure Lighthouse. Azure Lighthouse permite a los proveedores de servicios administrados usar los servicios de identidad nativos de Azure para autenticarse en el entorno de los clientes. Pone el control en manos de los clientes, ya que pueden revocar el acceso en cualquier momento y auditar las acciones de los proveedores de servicios.",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use Azure Update Manager para comprobar el estado de las actualizaciones disponibles para una sola máquina virtual o varias máquinas virtuales y considere la posibilidad de programar revisiones periódicas.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Optimice y gestione las operaciones de SAP Basis mediante SAP Landscape Management (LaMa). Use el conector de SAP LaMa para Azure para reubicar, copiar, clonar y actualizar sistemas SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use Azure Monitor para soluciones SAP para supervisar las cargas de trabajo de SAP (SAP HANA, clústeres de SUSE de alta disponibilidad y sistemas SQL) en Azure. Considere la posibilidad de complementar las soluciones de Azure Monitor para SAP con SAP Solution Manager.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
"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"
+ "text": "Ejecute una comprobación de extensión de máquina virtual para SAP. VM Extension for SAP usa la identidad administrada asignada de una máquina virtual (VM) para acceder a los datos de configuración y supervisión de VM. La comprobación garantiza que todas las métricas de rendimiento de la aplicación SAP proceden de la extensión de Azure para SAP subyacente.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use Azure Policy para el control de acceso y los informes de cumplimiento. Azure Policy proporciona la capacidad de aplicar la configuración de toda la organización para garantizar el cumplimiento coherente de las directivas y la detección rápida de infracciones. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
"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"
+ "text": "Use el Monitor de conexión en Azure Network Watcher para supervisar las métricas de latencia de las bases de datos y los servidores de aplicaciones de SAP. O bien, recopile y muestre medidas de latencia de red mediante Azure Monitor.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Realice una comprobación de calidad de SAP HANA en la infraestructura de Azure aprovisionada para comprobar que las máquinas virtuales aprovisionadas cumplen con los procedimientos recomendados de SAP HANA en Azure.",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"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"
+ "text": "Para cada suscripción de Azure, ejecute una prueba de latencia en las zonas de disponibilidad de Azure antes de la implementación zonal para elegir zonas de baja latencia para la implementación de SAP en Azure.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "Rendimiento"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Ejecute el informe de resistencia para asegurarse de que la configuración de toda la infraestructura de Azure aprovisionada (proceso, base de datos, redes, almacenamiento, Site Recovery) cumple con la configuración definida por Cloud Adaption Framework para Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "waf": "Fiabilidad"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Implemente la protección contra amenazas mediante la solución Microsoft Sentinel para SAP. Utilice esta solución para supervisar sus sistemas SAP y detectar amenazas sofisticadas en toda la lógica empresarial y las capas de aplicación.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
"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 Operacional"
+ "checklist": "SAP Checklist",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "El etiquetado de Azure se puede aprovechar para agrupar y realizar un seguimiento lógico de los recursos, automatizar sus implementaciones y, lo que es más importante, proporcionar visibilidad de los costos incurridos.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
+ "waf": "Operaciones"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Use la supervisión de latencia entre máquinas virtuales para aplicaciones sensibles a la latencia.",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use la supervisión de Azure Site Recovery para mantener el estado del servicio de recuperación ante desastres para los servidores de aplicaciones SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Fiabilidad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Excluya todos los sistemas de archivos de bases de datos y programas ejecutables de los análisis antivirus. Incluirlos podría dar lugar a problemas de rendimiento. Consulte con los proveedores de bases de datos para obtener detalles prescriptivos sobre la lista de exclusión. Por ejemplo, Oracle recomienda excluir /oracle//sapdata de los análisis antivirus.",
+ "waf": "Rendimiento"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de recopilar estadísticas de base de datos completas para bases de datos que no son de HANA después de la migración. Por ejemplo, implemente la nota de SAP 1020260 - Entrega de estadísticas de Oracle.",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "service": "SAP",
"severity": "Medio",
- "text": "Mejore la latencia del sistema limitando el tamaño de los tokens, las opciones de transmisión",
+ "text": "Considere la posibilidad de usar Oracle Automatic Storage Management (ASM) para todas las implementaciones de Oracle que usan SAP en Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
+ "service": "SAP",
"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",
+ "text": "En el caso de SAP en Azure que ejecuta Oracle, una colección de scripts SQL puede ayudarle a diagnosticar problemas de rendimiento. Los informes de repositorio automático de cargas de trabajo (AWR) contienen información valiosa para diagnosticar problemas en el sistema Oracle. Le recomendamos que ejecute un informe de AWR durante varias sesiones y elija las horas punta para él, a fin de garantizar una amplia cobertura del análisis.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
"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"
+ "text": "Use la supervisión de Azure Site Recovery para mantener el estado del servicio de recuperación ante desastres para los servidores de aplicaciones SAP.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "SAP",
"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"
+ "text": "Para la entrega segura de aplicaciones HTTP/S, use Application Gateway v2 y asegúrese de que la protección y las directivas de WAF están habilitadas.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Si el DNS o el nombre virtual de la máquina virtual no se cambia durante la migración a Azure, el DNS en segundo plano y los nombres virtuales conectan muchas interfaces del sistema en el entorno de SAP, y los clientes solo conocen a veces las interfaces que los desarrolladores definen a lo largo del tiempo. Los desafíos de conexión surgen entre varios sistemas cuando los nombres virtuales o DNS cambian después de las migraciones, y se recomienda conservar los alias DNS para evitar este tipo de dificultades.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
"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"
+ "text": "Utilice diferentes zonas DNS para distinguir cada entorno (espacio aislado, desarrollo, preproducción y producción) entre sí. La excepción es para las implementaciones de SAP con su propia red virtual; en este caso, es posible que las zonas DNS privadas no sean necesarias.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "El emparejamiento de red virtual local y global proporciona conectividad y son los enfoques preferidos para garantizar la conectividad entre las zonas de aterrizaje para las implementaciones de SAP en varias regiones de Azure",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "service": "SAP",
"severity": "Alto",
- "text": "Implemente reintentos y comprobaciones de estado con el patrón de puerta de enlace como APIM",
- "waf": "Fiabilidad"
+ "text": "No se admite la implementación de ninguna aplicación virtual de red entre la aplicación SAP y el servidor de base de datos SAP",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "Rendimiento"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "service": "SAP",
"severity": "Medio",
- "text": "Asegúrese de tener cuotas adecuadas de TPM y RPM para la carga de trabajo",
- "waf": "Fiabilidad"
+ "text": "Use Virtual WAN para implementaciones de Azure en redes nuevas, grandes o globales en las que necesite conectividad de tránsito global entre regiones de Azure y ubicaciones locales. Con este enfoque, no tendrá que configurar manualmente el enrutamiento transitivo para las redes de Azure y puede seguir un estándar para las implementaciones de SAP en Azure.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "service": "SAP",
"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"
+ "text": "Considere la posibilidad de implementar aplicaciones virtuales de red (NVA) entre regiones solo si se usan aplicaciones virtuales de red de asociados. Las aplicaciones virtuales de red entre regiones o redes virtuales no son necesarias si hay aplicaciones virtuales de red nativas. Al implementar tecnologías de redes de asociados y aplicaciones virtuales de red, siga las instrucciones del proveedor para comprobar las configuraciones conflictivas con las redes de Azure.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "service": "SAP",
"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"
+ "text": "Virtual WAN administra la conectividad entre redes virtuales de radio para topologías basadas en WAN virtuales (sin necesidad de configurar el enrutamiento definido por el usuario [UDR] o NVA), y el rendimiento máximo de red para el tráfico de red virtual a red virtual en el mismo centro virtual es de 50 gigabits por segundo. Si es necesario, las zonas de aterrizaje de SAP pueden usar el emparejamiento de red virtual para conectarse a otras zonas de aterrizaje y superar esta limitación de ancho de banda.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "No se recomienda la asignación de direcciones IP públicas a la máquina virtual que ejecuta SAP Workload.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "service": "SAP",
"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"
+ "text": "Considere la posibilidad de reservar la dirección IP en el lado de la recuperación ante desastres al configurar ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Operaciones"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Evite el uso de intervalos de direcciones IP superpuestos para los sitios de producción y recuperación ante desastres.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "Operaciones"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Aunque Azure le ayuda a crear varias subredes delegadas en una red virtual, solo puede existir una subred delegada en una red virtual para Azure NetApp Files. Se producirá un error al intentar crear un nuevo volumen si se utiliza más de una subred delegada para Azure NetApp Files.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
+ "severity": "Medio",
+ "text": "Use Azure Firewall para controlar el tráfico saliente de Azure a Internet, las conexiones entrantes que no son HTTP/S y el filtrado del tráfico Este/Oeste (si la organización lo requiere)",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Application Gateway y Web Application Firewall tienen limitaciones cuando Application Gateway actúa como proxy inverso para aplicaciones web de SAP, como se muestra en la comparación entre Application Gateway, SAP Web Dispatcher y otros servicios de terceros.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use directivas de Azure Front Door y WAF para proporcionar protección global en todas las regiones de Azure para las conexiones HTTP/S entrantes a una zona de aterrizaje.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Aproveche las directivas de Web Application Firewall en Azure Front Door cuando use Azure Front Door y Application Gateway para proteger las aplicaciones HTTP/S. Bloquee Application Gateway para recibir tráfico solo de Azure Front Door.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
"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",
+ "text": "Utilice un firewall de aplicaciones web para analizar su tráfico cuando esté expuesto a Internet. Otra opción es usarlo con el equilibrador de carga o con recursos que tengan funcionalidades de firewall integradas, como Application Gateway o soluciones de terceros.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"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"
+ "checklist": "SAP Checklist",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Use Virtual WAN para implementaciones de Azure en redes nuevas, grandes o globales en las que necesite conectividad de tránsito global entre regiones de Azure y ubicaciones locales. Con este enfoque, no tendrá que configurar manualmente el enrutamiento transitivo para las redes de Azure y puede seguir un estándar para las implementaciones de SAP en Azure.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Rendimiento"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "SAP",
"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",
+ "text": "Para evitar la pérdida de datos, use Azure Private Link para acceder de forma segura a los recursos de plataforma como servicio, como Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen2, Azure Data Factory, etc. El punto de conexión privado de Azure también puede ayudar a proteger el tráfico entre redes virtuales y servicios como Azure Storage, Azure Backup, etc. El tráfico entre la red virtual y el servicio habilitado para punto de conexión privado viaja a través de la red global de Microsoft, lo que impide su exposición a la red pública de Internet.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
+ "service": "SAP",
"severity": "Alto",
- "text": "Implemente los escudos de aviso y la detección de conexión a tierra mediante Content Safety ",
- "waf": "Excelencia Operacional"
+ "text": "Asegúrese de que las redes aceleradas de Azure están habilitadas en las máquinas virtuales que se usan en las capas de aplicación SAP y DBMS.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Rendimiento"
},
{
- "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.",
+ "checklist": "SAP Checklist",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Asegúrese de que las implementaciones internas de Azure Load Balancer están configuradas para usar Direct Server Return (DSR). Esta configuración (Habilitación de IP flotante) reducirá la latencia cuando se utilicen configuraciones internas del equilibrador de carga para configuraciones de alta disponibilidad en la capa DBMS.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "SAP",
"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.",
+ "text": "Puede usar reglas de grupo de seguridad de aplicaciones (ASG) y NSG para definir listas de control de acceso de seguridad de red entre la aplicación SAP y las capas DBMS. Los ASG agrupan las máquinas virtuales para ayudar a administrar su seguridad.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"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"
+ "text": "No se admite la colocación de la capa de aplicación de SAP y DBMS de SAP en diferentes redes virtuales de Azure que no están emparejadas.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"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"
+ "text": "Para obtener una latencia de red óptima con aplicaciones SAP, considere la posibilidad de usar grupos de selección de ubicación por proximidad de Azure.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "NO se admite en absoluto la ejecución de una capa de servidor de aplicaciones de SAP y una capa de DBMS divididas entre el entorno local y Azure. Ambas capas deben residir completamente en el entorno local o en Azure.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"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"
+ "text": "No se recomienda hospedar el sistema de administración de bases de datos (DBMS) y las capas de aplicación de los sistemas SAP en diferentes redes virtuales y conectarlas con el emparejamiento de redes virtuales debido a los costos sustanciales que puede producir un tráfico de red excesivo entre las capas. Se recomienda el uso de subredes dentro de la red virtual de Azure para separar la capa de aplicación de SAP y la capa de DBMS.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Costar"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
+ "service": "SAP",
"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",
+ "text": "Si utiliza Load Balancer con sistemas operativos invitados Linux, compruebe que el parámetro de red de Linux net.ipv4.tcp_timestamps esté establecido en 0.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Rendimiento"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "En el caso de las implementaciones de SAP RISE/ECS, el emparejamiento virtual es la forma preferida de establecer la conectividad con el entorno de Azure existente del cliente. Tanto la red virtual de SAP como las redes virtuales del cliente están protegidas con grupos de seguridad de red (NSG), lo que permite la comunicación en los puertos de SAP y de base de datos a través del emparejamiento de redes virtuales",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"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"
+ "text": "Revise las copias de seguridad de bases de datos de SAP HANA para máquinas virtuales de Azure.",
+ "waf": "Costar"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise la supervisión integrada de Site Recovery, si se usa para SAP.",
+ "waf": "Costar"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
+ "service": "SAP",
"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"
+ "text": "Revise la guía Supervisión del entorno del sistema SAP HANA.",
+ "waf": "Operaciones"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise las estrategias de copia de seguridad de Oracle Database en máquinas virtuales Linux de Azure.",
+ "waf": "Operaciones"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise el uso de Azure Blob Storage con SQL Server 2016.",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
+ "service": "SAP",
"severity": "Medio",
- "text": "Utilice herramientas de compresión rápida como LLMLingua o gprtrim",
- "waf": "Optimización de costes"
+ "text": "Revise el uso de Copia de seguridad automatizada v2 para máquinas virtuales de Azure.",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
+ "service": "SAP",
"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"
+ "text": "Habilitación del acelerador de escritura para la serie M cuando se utilizan discos premium (V1)",
+ "waf": "Operaciones"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "service": "SAP",
"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"
+ "text": "Pruebe la latencia de la zona de disponibilidad.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
+ "service": "SAP",
"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"
+ "text": "Active SAP EarlyWatch Alert para todos los componentes de SAP.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "checklist": "SAP Checklist",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
+ "service": "SAP",
"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"
+ "text": "Revise la latencia del servidor de aplicaciones SAP al servidor de bases de datos mediante el informe ABAPMeter de SAP /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise la supervisión del rendimiento de SQL Server mediante CCMS.",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Pruebe la latencia de red entre las máquinas virtuales de la capa de aplicación de SAP y las máquinas virtuales de DBMS (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise las alertas de SAP HANA Studio.",
+ "waf": "Rendimiento"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Realice comprobaciones de estado de SAP HANA mediante HANA_Configuration_Minichecks.",
+ "waf": "Rendimiento"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Si ejecuta máquinas virtuales Windows y Linux en Azure, en el entorno local o en otros entornos en la nube, puede usar el Centro de administración de actualizaciones de Automatización de Azure para administrar las actualizaciones del sistema operativo, incluidas las revisiones de seguridad.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
"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.",
+ "checklist": "SAP Checklist",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Revise de forma rutinaria las notas de seguridad de SAP OSS, ya que SAP publica parches de seguridad muy críticos, o revisiones, que requieren una acción inmediata para proteger sus sistemas SAP.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
"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.",
+ "checklist": "SAP Checklist",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "En el caso de SAP en SQL Server, puede deshabilitar la cuenta de administrador del sistema de SQL Server porque los sistemas SAP en SQL Server no usan la cuenta. Asegúrese de que otro usuario con derechos de administrador del sistema pueda acceder al servidor antes de deshabilitar la cuenta de administrador del sistema original.",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
"severity": "Alto",
- "text": "Configurar un proceso para actualizar y parchear regularmente las bibliotecas de LLM y otros componentes del sistema",
+ "text": "Deshabilite xp_cmdshell. La característica de SQL Server xp_cmdshell habilita un shell de comandos del sistema operativo interno de SQL Server. Es un riesgo potencial en las auditorías de seguridad.",
+ "training": "https://me.sap.com/notes/3019299/E",
"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",
+ "checklist": "SAP Checklist",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"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"
+ "text": "El cifrado de servidores de bases de datos de SAP HANA en Azure usa la tecnología de cifrado nativa de SAP HANA. Además, si usa SQL Server en Azure, use el cifrado de datos transparente (TDE) para proteger los datos y los archivos de registro y asegurarse de que las copias de seguridad también están cifradas.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "SAP",
"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"
+ "text": "El cifrado de Azure Storage está habilitado para todas las cuentas de Azure Resource Manager y de almacenamiento clásico, y no se puede deshabilitar. Dado que los datos están cifrados de forma predeterminada, no es necesario modificar el código o las aplicaciones para usar el cifrado de Azure Storage.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Uso de Azure Key Vault para almacenar los secretos y las credenciales",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "SAP",
"severity": "Medio",
- "text": "Planifique y administre el almacenamiento de vectores de búsqueda de IA",
- "waf": "Excelencia Operacional"
+ "text": "Se recomienda bloquear los recursos de Azure después de la implementación correcta para protegerse contra cambios no autorizados. También puede aplicar restricciones y reglas de LOCK por suscripción mediante directivas de Azure personalizadas (rol personalizado).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "SAP",
"severity": "Medio",
- "text": "Aplique prácticas de LLMOps para automatizar la gestión del ciclo de vida de sus aplicaciones GenAI",
- "waf": "Excelencia Operacional"
+ "text": "Aprovisione Azure Key Vault con las directivas de eliminación temporal y purga habilitadas para permitir la protección de retención de los objetos eliminados.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
+ "service": "SAP",
"severity": "Alto",
- "text": "Evalúe el uso de los modelos de facturación: PAYG frente a PTU",
- "waf": "Optimización de costes"
+ "text": "En función de los requisitos existentes, controles normativos y de cumplimiento (internos y externos): determine qué directivas de Azure y el rol de RBAC de Azure son necesarios",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Al habilitar Microsoft Defender para punto de conexión en el entorno de SAP, se recomienda excluir los archivos de datos y registro en los servidores DBMS en lugar de dirigirse a todos los servidores. Siga las recomendaciones de su proveedor de DBMS al excluir archivos de destino.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Delegue un rol personalizado de administrador de SAP con acceso Just-In-Time de Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "cifre los datos en tránsito integrando el producto de seguridad de terceros con comunicaciones de red seguras (SNC) para DIAG (SAP GUI), RFC y SPNEGO para HTTPS",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
+ "service": "SAP",
"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"
+ "text": "De forma predeterminada, utilice claves administradas por Microsoft para la funcionalidad de cifrado de entidad de seguridad y use claves administradas por el cliente cuando sea necesario.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Use una instancia de Azure Key Vault por aplicación, por entorno, por región.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Para controlar y administrar claves y secretos de cifrado de disco para sistemas operativos Windows y Windows que no son de HANA, use Azure Key Vault. SAP HANA no es compatible con Azure Key Vault, por lo que debe usar métodos alternativos como SAP ABAP o claves SSH.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
"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"
+ "checklist": "SAP Checklist",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Personalización de los roles de control de acceso basado en rol (RBAC) para SAP en suscripciones de Azure spoke para evitar cambios accidentales relacionados con la red",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere las prácticas de administración de cuotas",
- "waf": "Optimización de costes"
+ "text": "Aísle las redes perimetrales y las aplicaciones virtuales de red del resto del patrimonio de SAP, configure Azure Private Link y administre y controle de forma segura los recursos de SAP en Azure",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "Seguridad"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de usar el software antimalware de Microsoft en Azure para proteger las máquinas virtuales de archivos malintencionados, adware y otras amenazas.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "Alto",
- "text": "Seleccione el plan de hospedaje de funciones adecuado en función de los requisitos de su empresa y SLO",
- "waf": "Fiabilidad"
+ "checklist": "SAP Checklist",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "Para una protección aún más eficaz, considere la posibilidad de usar Microsoft Defender para punto de conexión.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"severity": "Alto",
- "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente (no disponible para el nivel de consumo)",
- "waf": "Fiabilidad"
+ "text": "Aísle los servidores de aplicaciones y bases de datos de SAP de Internet o de la red local pasando todo el tráfico a través de la red virtual del centro de conectividad, que está conectada a la red radial mediante el emparejamiento de red virtual. Las redes virtuales emparejadas garantizan que la solución de SAP en Azure esté aislada de la red pública de Internet.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
- "severity": "Medio",
- "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
- "waf": "Fiabilidad"
+ "checklist": "SAP Checklist",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Bajo",
+ "text": "En el caso de las aplicaciones orientadas a Internet, como SAP Fiori, asegúrese de distribuir la carga según los requisitos de la aplicación mientras se mantienen los niveles de seguridad. Para la seguridad de nivel 7, puede usar un firewall de aplicaciones web (WAF) de terceros disponible en Azure Marketplace.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
- "severity": "Alto",
- "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
- "waf": "Fiabilidad"
+ "checklist": "SAP Checklist",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
+ "service": "SAP",
+ "severity": "Medio",
+ "text": "Para habilitar la comunicación segura en las soluciones de Azure Monitor para SAP, puede optar por usar un certificado raíz o un certificado de servidor. Le recomendamos encarecidamente que utilice certificados raíz.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "Alto",
- "text": "Asegúrese de que \"Siempre activado\" esté habilitado para todas las aplicaciones de funciones que se ejecutan en el plan de App Service",
+ "text": "Habilitación de 2 réplicas para que tengan una disponibilidad del 99,9 % para las operaciones de lectura",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "Medio",
- "text": "Empareje una aplicación de funciones con su propia cuenta de almacenamiento. Intente no volver a usar las cuentas de almacenamiento para las aplicaciones de funciones a menos que estén estrechamente acopladas",
+ "text": "Habilitación de 3 réplicas para que tengan una disponibilidad del 99,9 % para las operaciones de lectura y escritura",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
- "severity": "Medio",
- "text": "Aproveche Azure DevOps o GitHub para optimizar la CI/CD y proteger el código de la aplicación de funciones",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
"severity": "Alto",
- "text": "Habilite la redundancia de zona para Azure Cache for Redis. Azure Cache for Redis admite configuraciones con redundancia de zona en los niveles Premium y Enterprise. Una caché con redundancia de zona puede colocar sus nodos en diferentes zonas de disponibilidad de Azure en la misma región. Elimina la interrupción del centro de datos o de la zona de disponibilidad como único punto de error y aumenta la disponibilidad general de la memoria caché.",
+ "text": "Aproveche las zonas de disponibilidad habilitando réplicas de lectura o escritura",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"severity": "Medio",
- "text": "Configure la persistencia de datos para una instancia de Azure Cache for Redis. Dado que los datos de caché se almacenan en la memoria, un error poco frecuente y no planeado de varios nodos puede hacer que se eliminen todos los datos. Para evitar la pérdida completa de datos, la persistencia de Redis permite tomar instantáneas periódicas de los datos en memoria y almacenarlas en la cuenta de almacenamiento.",
+ "text": "En el caso de la reincidencia regional, cree manualmente servicios en 2 o más regiones para la búsqueda, ya que no proporciona un método automatizado para replicar índices de búsqueda en regiones geográficas",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"severity": "Medio",
- "text": "Use una cuenta de almacenamiento con redundancia geográfica para conservar los datos de Azure Cache for Redis o con redundancia zonal donde la redundancia geográfica no esté disponible",
+ "text": "Para sincronizar datos entre varios servicios, use indexadores para actualizar contenido en varios servicios o use las API de REST para insertar actualizaciones de contenido en varios servicios",
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"severity": "Medio",
- "text": "Configure la replicación geográfica pasiva para instancias de Azure Cache for Redis Premium. La replicación geográfica es un mecanismo para vincular dos o más instancias de Azure Cache for Redis, que normalmente abarcan dos regiones de Azure. La replicación geográfica está diseñada principalmente para la recuperación ante desastres entre regiones. Dos instancias de caché de nivel Premium se conectan a través de la replicación geográfica de una manera que proporciona lecturas y escrituras en la caché principal, y esos datos se replican en la caché secundaria.",
+ "text": "Uso de Azure Traffic Manager para coordinar solicitudes",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
+ "severity": "Alto",
+ "text": "Realice una copia de seguridad y restaure un índice de Azure Cognitive Search. Use este código de ejemplo para realizar una copia de seguridad de la definición del índice y la instantánea en una serie de archivos JSON",
"waf": "Fiabilidad"
},
{
@@ -5661,3336 +5487,3510 @@
"waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"severity": "Medio",
- "text": "Si usa certificados TLS administrados por el cliente con Azure Front Door, use la versión de certificado \"más reciente\". Reduzca el riesgo de interrupciones causadas por la renovación manual de certificados",
- "waf": "Operaciones"
+ "text": "Aproveche el cuaderno de estrategias de resistencia de FTA para Azure Data Factory",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Asegúrese de que usa la SKU de Application Gateway v2",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "Alto",
+ "text": "Uso de canalizaciones con redundancia de zona en regiones que admiten zonas de disponibilidad",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"severity": "Medio",
- "text": "Asegúrese de que usa la SKU estándar para Azure Load Balancers",
- "waf": "Seguridad"
+ "text": "Uso de DevOps para realizar copias de seguridad de las plantillas de ARM con la integración de Github/Azure DevOps ",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "Medio",
- "text": "Asegúrese de que las direcciones IP de front-end de Load Balancers tengan redundancia de zona (a menos que necesite front-end zonal).",
- "waf": "Seguridad"
+ "text": "Asegúrese de replicar las máquinas virtuales de Integration Runtime autohospedadas en otra región ",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "Medio",
- "text": "Application Gateways v2 debe implementarse en subredes con prefijos IP iguales o mayores que /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Seguridad"
+ "text": "Asegúrese de replicar o duplicar la red en la región hermana. Tiene que hacer una copia de la red virtual en otra región",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "description": "La administración de proxies inversos en general y de WAF en particular está más cerca de la aplicación que de la red, por lo que pertenecen a la misma suscripción que la aplicación. La centralización de Application Gateway y WAF en la suscripción de conectividad puede ser correcta si la administra un solo equipo.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Implemente Azure Application Gateway v2 o aplicaciones virtuales de red de asociados que se usan para proxy de conexiones HTTP(S) entrantes dentro de la red virtual de la zona de aterrizaje y con las aplicaciones que están protegiendo.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "Si las canalizaciones de ADF usan Key Vault, no tiene que hacer nada para replicar Key Vault. Key Vault es un servicio administrado y Microsoft se encarga de ello por ti",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
+ "severity": "Bajo",
+ "text": "Si utiliza la integración de Keyvault, utilice el Acuerdo de Nivel de Servicio de Keyvault para comprender su disponibilidad",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
+ "text": "Reglas de recopilación de datos en Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "text": "Comprobar las instancias de copia de seguridad con la fuente de datos subyacente no encontrada",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "text": "Eliminar o archivar servicios no asociados (discos, NIC, direcciones IP, etc.)",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
+ "text": "Considere un buen equilibrio entre el almacenamiento de recuperación del sitio y la copia de seguridad para aplicaciones que no son críticas",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "text": "Compruebe las oportunidades de gasto y ahorro entre las 40 áreas de trabajo de Log Analytics diferentes: use diferentes retenciones y recopilación de datos para áreas de trabajo que no sean de producción: cree un límite diario para el reconocimiento y el tamaño de los niveles: si establece un límite diario, además de crear una alerta cuando se alcance el límite, asegúrese de crear también una regla de alerta para que se le notifique cuando se alcance algún porcentaje (90 %, por ejemplo). - Considere la posibilidad de transformar el espacio de trabajo si es posible - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
+ "text": "Aplique una política de purga de registros y automatización (si es necesario, los registros se pueden mover al almacenamiento en frío)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Costar"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "text": "Compruebe que los discos son realmente necesarios, si no: eliminar. Si son necesarios, busque niveles de almacenamiento más bajos o use una copia de seguridad:",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Use una red DDoS o planes de protección IP para todas las direcciones IP públicas en las zonas de aterrizaje de la aplicación.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "text": "Considere la posibilidad de mover el almacenamiento no utilizado al nivel inferior, con reglas personalizadas: https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Configure el escalado automático con una cantidad mínima de instancias de dos.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "text": "Asegúrese de que el asesor está configurado para el tamaño correcto de la máquina virtual ",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Implementación de Application Gateway en zonas de disponibilidad",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "comprobando la búsqueda de las licencias de categoría de contador en el análisis de costes",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "text": "ejecutar el script en todas las máquinas virtuales de Windows https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server: considere la posibilidad de implementar una directiva si las máquinas virtuales de Windows se crean con frecuencia",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Use Azure Front Door con directivas de WAF para entregar y ayudar a proteger aplicaciones HTTP/S globales que abarcan varias regiones de Azure.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
+ "text": " esto también se puede poner bajo AHUB si ya tiene licencias https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Al usar Front Door y Application Gateway para ayudar a proteger las aplicaciones HTTP/S, use directivas de WAF en Front Door. Bloquee Application Gateway para recibir tráfico solo de Front Door.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "text": "Consolide familias de máquinas virtuales reservadas con la opción de flexibilidad (no más de 4-5 familias)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "Alto",
- "text": "Use el Administrador de tráfico para entregar aplicaciones globales que abarquen protocolos distintos de HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "text": "Uso de Azure Reserved Instances: esta característica le permite reservar máquinas virtuales durante un período de 1 o 3 años, lo que proporciona un importante ahorro de costos en comparación con los precios de pago por uso.",
+ "waf": "Costar"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "Bajo",
- "text": "Si los usuarios solo necesitan acceso a aplicaciones internas, ¿se ha considerado Microsoft Entra ID Application Proxy como una alternativa a Azure Virtual Desktop (AVD)?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "text": "Solo se pueden reservar discos más grandes => 1 TiB -",
+ "waf": "Costar"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "Medio",
- "text": "Para reducir el número de puertos de firewall abiertos para las conexiones entrantes en la red, considere la posibilidad de usar Microsoft Entra ID Application Proxy para proporcionar a los usuarios remotos acceso seguro y autenticado a las aplicaciones internas.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "text": "Después de la optimización del tamaño correcto",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Implemente la directiva de WAF para Front Door en modo de \"prevención\".",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "text": "Compruebe si corresponde y aplique la política/cambio 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",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Evite combinar Azure Traffic Manager y Azure Front Door.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "text": "El descuento de la parte de la licencia VM + (ahub + 3YRI) es de alrededor del 70% de descuento",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use el mismo nombre de dominio en Azure Front Door y su origen. Los nombres de host no coincidentes pueden causar errores sutiles.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
+ "text": "Considere la posibilidad de utilizar un VMSS para satisfacer la demanda en lugar de un tamaño fijo",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
- "severity": "Bajo",
- "text": "Deshabilite los sondeos de estado cuando solo haya un origen en un grupo de orígenes de Azure Front Door.",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "text": "Use el escalador automático de AKS para que coincida con el uso de los clústeres (asegúrese de que los requisitos de los pods coincidan con el escalador)",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Seleccione puntos de conexión de sondeo de estado correctos para Azure Front Door. Considere la posibilidad de crear puntos de conexión de estado que comprueben todas las dependencias de la aplicación.",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "text": "Mover los puntos de recuperación al archivo de almacén cuando corresponda (Validar)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
- "severity": "Bajo",
- "text": "Use sondeos de estado de HEAD con Azure Front Door para reducir el tráfico que Front Door envía a la aplicación.",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "text": "Considere la posibilidad de usar máquinas virtuales de acceso puntual con reserva siempre que sea posible. Considere la posibilidad de la terminación automática de clústeres.",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "Alto",
- "text": "Use Azure NAT Gateway en lugar de reglas de salida de Load Balancer para mejorar la escalabilidad de SNAT",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "text": "Funciones - Reutilizar conexiones",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use certificados TLS administrados con Azure Front Door. Reduzca los costos operativos y el riesgo de interrupciones debido a las renovaciones de certificados.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "text": "Funciones: almacenar datos en caché localmente",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Defina la configuración de WAF de Azure Front Door como código. Mediante el uso de código, puede adoptar más fácilmente una nueva versión del conjunto de reglas y obtener protección adicional.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
+ "text": "Funciones - Arranques en frío: utilice la funcionalidad 'Ejecutar desde el paquete'. De esta manera, el código se descarga como un único archivo zip. Esto puede, por ejemplo, resultar en mejoras significativas con las funciones de Javascript, que tienen muchos módulos de nodos. Utilice herramientas específicas del lenguaje para reducir el tamaño del paquete, por ejemplo, aplicaciones Javascript que sacuden el árbol.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use TLS de un extremo a otro con Azure Front Door. Use TLS para las conexiones de los clientes a Front Door y de Front Door al origen.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
+ "text": "Funciones - Mantén tus funciones calientes",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Use el redireccionamiento de HTTP a HTTPS con Azure Front Door. Apoye a los clientes más antiguos redirigiéndolos automáticamente a una solicitud HTTPS.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "text": "Al usar el escalado automático con diferentes funciones, es posible que haya uno que controle todo el escalado automático para todos los recursos: considere la posibilidad de moverlo a un plan de consumo independiente (y considere un plan superior para la CPU)",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Habilite el WAF de Azure Front Door. Proteja su aplicación de una variedad de ataques.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "text": "Las aplicaciones de funciones de un plan determinado se escalan juntas, por lo que cualquier problema con el escalado puede afectar a todas las aplicaciones del plan.",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Ajuste el WAF de Azure Front Door para su carga de trabajo. Reduzca las detecciones de falsos positivos.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "text": "¿Se me factura por el \"tiempo de espera\"? Esta pregunta se suele formular en el contexto de una función de C# que realiza una operación asincrónica y espera el resultado, por ejemplo, await Task.Delay(1000) o await client. GetAsync('http://google.com'). La respuesta es sí: el segundo cálculo de GB se basa en la hora de inicio y finalización de la función y el uso de memoria durante ese período. Lo que realmente sucede durante ese tiempo en términos de actividad de la CPU no se tiene en cuenta en el cálculo. Una excepción a esta regla es si está utilizando funciones duraderas. No se le facturará por el tiempo empleado en las esperas en las funciones de orquestador.aplique técnicas de modelado de la demanda siempre que sea posible (¿entornos de desarrollo?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Costar"
},
{
- "ammp": true,
"arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"service": "Front Door",
- "severity": "Alto",
- "text": "Habilite la característica de inspección del cuerpo de la solicitud habilitada en la directiva WAF de Azure Front Door.",
- "waf": "Seguridad"
+ "text": "Frontdoor: desactivar la página principal predeterminadaEn la configuración de la aplicación de la aplicación, establezca AzureWebJobsDisableHomepage en true. Esto devolverá un 204 (sin contenido) al PoP para que solo se devuelvan los datos del encabezado.",
+ "waf": "Costar"
},
{
- "ammp": true,
"arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
"service": "Front Door",
- "severity": "Alto",
- "text": "Habilite los conjuntos de reglas predeterminados de WAF de Azure Front Door. Los conjuntos de reglas predeterminados detectan y bloquean los ataques comunes.",
- "waf": "Seguridad"
+ "text": "Frontdoor: ruta a algo que no devuelve nada. Configure una función, un proxy de función o agregue una ruta en la aplicación web que devuelva 200 (correctamente) y envíe contenido mínimo o nulo. La ventaja de esto es que podrá cerrar la sesión cuando se llame.",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Habilite el conjunto de reglas de protección contra bots de Azure Front Door WAF. Las reglas de bots detectan bots buenos y malos.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
+ "text": "Considere la posibilidad de archivar niveles para los datos menos utilizados",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Use la versión más reciente del conjunto de reglas de WAF de Azure Front Door. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "text": "Compruebe los tamaños de disco en los que el tamaño no coincida con el nivel (es decir, un disco de 513 GiB pagará un P30 (1 TiB) y considere la posibilidad de cambiar el tamaño",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Agregue limitación de velocidad al WAF de Azure Front Door. La limitación de velocidad bloquea a los clientes que envían accidental o intencionadamente grandes cantidades de tráfico en un corto período de tiempo.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "text": "Considere la posibilidad de utilizar un SSD estándar en lugar de Premium o Ultra siempre que sea posible",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Use un umbral alto para los límites de frecuencia de WAF de Azure Front Door. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "text": "En el caso de las cuentas de almacenamiento, asegúrese de que el nivel elegido no suma cargos por transacción (puede ser más barato pasar al siguiente nivel)",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "Bajo",
- "text": "Si no espera tráfico de todas las regiones geográficas, utilice filtros geográficos para bloquear el tráfico de países no esperados.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "text": "Para ASR, considere la posibilidad de usar discos SSD estándar si el RPO/RTO y el rendimiento de replicación lo permiten",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Especifique la ubicación desconocida (ZZ) al filtrar geográficamente el tráfico con el WAF de Azure Front Door. Evite bloquear accidentalmente solicitudes legítimas cuando las direcciones IP no puedan coincidir geográficamente.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
+ "text": "Cuentas de almacenamiento: compruebe el nivel de acceso frecuente o GRS necesario",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Habilitación del conjunto de reglas de protección contra bots de WAF de Azure Application Gateway Las reglas de bots detectan bots buenos y malos.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
+ "text": "Discos: valide el uso de discos SSD Premium en todas partes: por ejemplo, los que no son de producción podrían cambiar a SSD estándar o SSD Premium bajo demanda ",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Habilite la característica de inspección del cuerpo de la solicitud habilitada en la directiva WAF de Azure Application Gateway.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "text": "Cree presupuestos para administrar los costos y cree alertas que notifiquen automáticamente a las partes interesadas sobre anomalías en el gasto y riesgos de gasto excesivo.",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Ajuste el WAF de Azure Application Gateway para la carga de trabajo. Reduzca las detecciones de falsos positivos.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
+ "text": "Exporte los datos de costos a una cuenta de almacenamiento para realizar análisis de datos adicionales.",
+ "waf": "Costar"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Implemente la directiva de WAF para Application Gateway en modo de \"prevención\".",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "text": "Controle los costos de un grupo de SQL dedicado pausando el recurso cuando no esté en uso.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Agregue limitación de velocidad al WAF de Azure Application Gateway. La limitación de velocidad bloquea a los clientes que envían accidental o intencionadamente grandes cantidades de tráfico en un corto período de tiempo.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "text": "Habilite la función de pausa automática de Apache Spark sin servidor y establezca el valor de tiempo de espera en consecuencia.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Use un umbral alto para los límites de frecuencia de WAF de Azure Application Gateway. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "text": "Cree varias definiciones de grupo de Apache Spark de varios tamaños.",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
- "severity": "Bajo",
- "text": "Si no espera tráfico de todas las regiones geográficas, utilice filtros geográficos para bloquear el tráfico de países no esperados.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "text": "Compre unidades de confirmación (SCU) de Azure Synapse durante un año con un plan de compra anticipada para ahorrar en los costos de Azure Synapse Analytics.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Especifique la ubicación desconocida (ZZ) al filtrar geográficamente el tráfico con el WAF de Azure Application Gateway. Evite bloquear accidentalmente solicitudes legítimas cuando las direcciones IP no puedan coincidir geográficamente.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "text": "Uso de máquinas virtuales de acceso puntual para trabajos interrumpibles: se trata de máquinas virtuales por las que se puede pujar y comprar a un precio reducido, lo que proporciona una solución rentable para cargas de trabajo no críticas.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Use la versión más reciente del conjunto de reglas de WAF de Azure Application Gateway. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "text": "Ajustar el tamaño de todas las máquinas virtuales",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Agregue la configuración de diagnóstico para guardar los registros de WAF de Azure Application Gateway.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "text": "Intercambiar el tamaño de la máquina virtual con los tamaños normalizados y más recientes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Agregue la configuración de diagnóstico para guardar los registros de WAF de Azure Front Door.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "Ajustar el tamaño de las máquinas virtuales: comience con la supervisión del uso por debajo del 5 % y, a continuación, trabaje hasta el 40 %",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Envíe registros de WAF de Azure Application Gateway a Microsoft Sentinel.",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "La inclusión de una aplicación en contenedores puede mejorar la densidad de la máquina virtual y ahorrar dinero en su escalado",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Envíe registros de WAF de Azure Front Door a Microsoft Sentinel.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario para las cargas de trabajo de Windows de AKS, se pueden usar contenedores HostProcess",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Defina la configuración de WAF de Azure Application Gateway como código. Mediante el uso de código, puede adoptar más fácilmente una nueva versión del conjunto de reglas y obtener protección adicional.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Utilice KEDA si ejecuta cargas de trabajo controladas por eventos",
+ "waf": "Rendimiento"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Utilice directivas de WAF en lugar de la configuración de WAF heredada.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Uso de Dapr para facilitar el desarrollo de microservicios",
"waf": "Operaciones"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Filtre el tráfico entrante en los back-end para que solo acepten conexiones de la subred de Application Gateway, por ejemplo, con grupos de seguridad de red.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Uso de la oferta de AKS respaldada por SLA",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
- "severity": "Medio",
- "text": "Asegúrese de que los orígenes solo toman tráfico de la instancia de Azure Front Door.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Uso de presupuestos de interrupción en el pod y las definiciones de implementación",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "Alto",
- "text": "Debe cifrar el tráfico a los servidores backend.",
- "waf": "Seguridad"
+ "text": "Si usa un registro privado, configure la replicación de regiones para almacenar imágenes en varias regiones",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Debe utilizar un firewall de aplicaciones web.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Usar una aplicación externa como kubecost para asignar costos a diferentes usuarios",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Redirigir HTTP a HTTPS",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Usar el modo de reducción vertical para eliminar/desasignar nodos",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"severity": "Medio",
- "text": "Utilice cookies administradas por puerta de enlace para dirigir el tráfico de una sesión de usuario al mismo servidor para su procesamiento",
- "waf": "Operaciones"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Habilite el drenaje de conexiones durante las actualizaciones de servicio planificadas para evitar la pérdida de conexión a los miembros existentes del grupo de back-end",
- "waf": "Seguridad"
+ "text": "Cuando sea necesario, use la GPU de partición de varias instancias en clústeres de AKS",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Crear páginas de error personalizadas para mostrar una experiencia de usuario personalizada",
- "waf": "Operaciones"
+ "text": "Si se ejecuta un clúster de desarrollo y pruebas, use NodePool Start/Stop",
+ "waf": "Costar"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
"severity": "Medio",
- "text": "Edite las solicitudes HTTP y los encabezados de respuesta para facilitar el enrutamiento y el intercambio de información entre el cliente y el servidor",
+ "text": "Uso de Azure Policy para Kubernetes para garantizar el cumplimiento de clústeres",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"severity": "Medio",
- "text": "Configure Front Door para optimizar el enrutamiento del tráfico web global y el rendimiento del usuario final de primer nivel, así como la confiabilidad a través de una rápida conmutación por error global",
- "waf": "Rendimiento"
+ "text": "Separe las aplicaciones del plano de control con grupos de nodos de usuario/sistema",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
- "severity": "Medio",
- "text": "Usar el equilibrio de carga de la capa de transporte",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Agregue taint a su grupo de nodos del sistema para que sea dedicado",
+ "waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"severity": "Medio",
- "text": "Configure el enrutamiento basado en el host o el nombre de dominio para varias aplicaciones web en una sola puerta de enlace",
+ "text": "Utilice un registro privado para sus imágenes, como ACR",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "Medio",
- "text": "Centralice la administración de certificados SSL para reducir la sobrecarga de cifrado y descifrado de una granja de servidores back-end",
+ "text": "Escanea tus imágenes en busca de vulnerabilidades",
"waf": "Seguridad"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "Bajo",
- "text": "Uso de Application Gateway para obtener compatibilidad nativa con los protocolos WebSocket y HTTP/2",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Definición de los requisitos de separación de aplicaciones (espacio de nombres/grupo de nodos/clúster)",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Almacenamiento de los secretos en Azure Key Vault con el controlador del almacén de secretos de CSI",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"severity": "Alto",
- "text": "Aproveche las zonas de disponibilidad si corresponden regionalmente (esto se habilita automáticamente)",
- "waf": "Fiabilidad"
+ "text": "Si usa entidades de servicio para el clúster, actualice las credenciales periódicamente (por ejemplo, trimestralmente)",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"severity": "Medio",
- "text": "Tenga en cuenta las conmutaciones por error iniciadas por Microsoft. Microsoft los ejerce en situaciones excepcionales para conmutar por error todos los centros de IoT de una región afectada a la región emparejada geográficamente correspondiente.",
- "waf": "Fiabilidad"
+ "text": "Si es necesario, agregue el servicio de administración de claves, etcd, cifrado",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
- "severity": "Alto",
- "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, considere la posibilidad de usar Proceso confidencial para AKS",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
- "severity": "Alto",
- "text": "Obtenga información sobre cómo desencadenar una conmutación por error manual.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Considere la posibilidad de usar Defender para contenedores",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "Alto",
- "text": "Obtenga información sobre cómo conmutar por recuperación después de una conmutación por error.",
- "waf": "Fiabilidad"
+ "text": "Uso de identidades administradas en lugar de entidades de servicio",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "Medio",
- "text": "Azure Center for SAP Solutions (ACSS) es una oferta de Azure que convierte a SAP en una carga de trabajo de nivel superior en Azure. ACSS es una solución integral que permite crear y ejecutar sistemas SAP como una carga de trabajo unificada en Azure y proporciona una base más fluida para la innovación. Puede aprovechar las funcionalidades de administración de los sistemas SAP nuevos y existentes basados en Azure.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operaciones"
+ "text": "Integración de la autenticación con AAD (mediante la integración administrada)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "Medio",
- "text": "Azure admite la automatización de implementaciones de SAP en Linux y Windows. SAP Deployment Automation Framework es una herramienta de orquestación de código abierto que puede implementar, instalar y mantener entornos SAP.",
- "training": "https://github.com/Azure/sap-automation",
- "waf": "Operaciones"
+ "text": "Limitar el acceso a admin kubeconfig (get-credentials --admin)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"severity": "Medio",
- "text": "Realice una recuperación a un momento dado de sus bases de datos de producción en cualquier momento y en un período de tiempo que cumpla con su RTO; La recuperación a un momento dado suele incluir errores del operador al eliminar datos en la capa DBMS o a través de SAP, por cierto",
- "waf": "Fiabilidad"
+ "text": "Integración de la autorización con RBAC de AAD",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
- "service": "SAP",
- "severity": "Medio",
- "text": "Pruebe los tiempos de copia de seguridad y recuperación para verificar que cumplen con los requisitos de RTO para restaurar todos los sistemas simultáneamente después de un desastre.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Uso de espacios de nombres para restringir el privilegio RBAC en Kubernetes",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "SAP",
- "severity": "Alto",
- "text": "Puede replicar el almacenamiento estándar entre regiones emparejadas, pero no puede usar el almacenamiento estándar para almacenar las bases de datos o los discos duros virtuales. Las copias de seguridad solo se pueden replicar entre las regiones emparejadas que utilice. Para todos los demás datos, ejecute la replicación mediante características nativas de DBMS, como SQL Server Always On o SAP HANA System Replication. Use una combinación de Site Recovery, rsync o robocopy y otro software de terceros para la capa de aplicación de SAP.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Para la administración de acceso a identidades de pods, use Azure AD Workload Identity (versión preliminar)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
"severity": "Medio",
- "text": "Al usar Azure Availability Zones para lograr una alta disponibilidad, debe tener en cuenta la latencia entre los servidores de aplicaciones SAP y los servidores de bases de datos. En el caso de las zonas con latencias altas, es necesario implementar procedimientos operativos para garantizar que los servidores de aplicaciones SAP y los servidores de bases de datos se ejecuten en la misma zona en todo momento.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "En el caso de los inicios de sesión no interactivos de AKS, use kubelogin (versión preliminar)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "SAP",
- "severity": "Alto",
- "text": "Configure conexiones de ExpressRoute desde el entorno local a las regiones de recuperación ante desastres de Azure principal y secundaria. Además, como alternativa al uso de ExpressRoute, considere la posibilidad de configurar conexiones VPN desde el entorno local a las regiones de recuperación ante desastres de Azure principal y secundaria.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Deshabilitación de cuentas locales de AKS",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Replique el contenido del almacén de claves, como certificados, secretos o claves, en todas las regiones para poder descifrar los datos de la región de recuperación ante desastres.",
- "waf": "Fiabilidad"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
- "service": "SAP",
- "severity": "Medio",
- "text": "Empareje las redes virtuales principal y de recuperación ante desastres. Por ejemplo, para la replicación del sistema HANA, una red virtual de base de datos de SAP HANA debe estar emparejada con la red virtual de base de datos de SAP HANA del sitio de recuperación ante desastres.",
- "waf": "Fiabilidad"
+ "text": "Configure, si es necesario, el acceso al clúster Just-In-Time",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Si usa el almacenamiento de Azure NetApp Files para las implementaciones de SAP, como mínimo, cree dos cuentas de Azure NetApp Files en el nivel Premium, en dos regiones.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Fiabilidad"
+ "text": "Configure si es necesario el acceso condicional de AAD para AKS",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
- "severity": "Alto",
- "text": "Se debe usar la tecnología de replicación de bases de datos nativas para sincronizar la base de datos en un par de alta disponibilidad.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario para las cargas de trabajo de Windows AKS, configure gMSA ",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
- "service": "SAP",
- "severity": "Alto",
- "text": "El CIDR de la red virtual (VNet) principal no debe entrar en conflicto ni superponerse con el CIDR de la red virtual del sitio de recuperación ante desastres",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Para un control más preciso, considere la posibilidad de utilizar una identidad de Kubelet administrada",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use Site Recovery para replicar un servidor de aplicaciones en un sitio de recuperación ante desastres. Site Recovery también puede ayudar a replicar máquinas virtuales de clúster de servicios centrales en el sitio de recuperación ante desastres. Al invocar la recuperación ante desastres, deberá volver a configurar el clúster de Linux Pacemaker en el sitio de recuperación ante desastres (por ejemplo, reemplazar el VIP o SBD, ejecutar corosync.conf, etc.).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Si utiliza AGIC, no comparta un AppGW entre clústeres",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
"severity": "Alto",
- "text": "Considere la disponibilidad del software de SAP frente a puntos únicos de fallo. Esto incluye puntos únicos de falla dentro de aplicaciones como DBMS utilizados en las arquitecturas SAP NetWeaver y SAP S/4HANA, SAP ABAP y ASCS + SCS. También, otras herramientas como SAP Web Dispatcher.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "text": "No use el complemento de enrutamiento HTTP de AKS, use en su lugar la entrada NGINX administrada con el complemento de enrutamiento de aplicaciones.",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
- "service": "SAP",
- "severity": "Alto",
- "text": "En el caso de SAP y bases de datos de SAP, considere la posibilidad de implementar clústeres de conmutación por error automática. En Windows, los clústeres de conmutación por error de Windows Server admiten la conmutación por error. En Linux, Linux Pacemaker o herramientas de terceros como SIOS Protection Suite y Veritas InfoScale admiten la conmutación por error.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "En el caso de las cargas de trabajo de Windows, use las redes aceleradas",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "Alto",
- "text": "Azure no admite arquitecturas en las que las máquinas virtuales principal y secundaria compartan el almacenamiento de los datos de DBMS. Para la capa DBMS, el patrón de arquitectura común es replicar bases de datos al mismo tiempo y con pilas de almacenamiento diferentes a las que usan las máquinas virtuales principal y secundaria.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "text": "Utilice el ALB estándar (en lugar del básico)",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
- "service": "SAP",
- "severity": "Alto",
- "text": "Los datos de DBMS y los archivos de registro de transacciones y puesta al día se almacenan en el almacenamiento en bloque compatible con Azure o en Azure NetApp Files. Azure Files o Azure Premium Files no se admiten como almacenamiento para datos de DBMS o archivos de registro de puesta al día con la carga de trabajo de SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Si usa Azure CNI, considere la posibilidad de usar diferentes subredes para NodePools",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
- "service": "SAP",
- "severity": "Alto",
- "text": "Puede usar discos compartidos de Azure en Windows para componentes ASCS + SCS y escenarios específicos de alta disponibilidad. Configure los clústeres de conmutación por error por separado para los componentes de la capa de aplicación de SAP y la capa de DBMS. Actualmente, Azure no admite arquitecturas de alta disponibilidad que combinen componentes de la capa de aplicación de SAP y la capa de DBMS en un clúster de conmutación por error.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Use puntos de conexión privados (preferidos) o puntos de conexión de servicio de red virtual para acceder a los servicios PaaS desde el clúster",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "Alto",
- "text": "La mayoría de los clústeres de conmutación por error para los componentes de la capa de aplicación (ASCS) de SAP y la capa de DBMS requieren una dirección IP virtual para un clúster de conmutación por error. Azure Load Balancer debe controlar la dirección IP virtual para todos los demás casos. Un principio de diseño es usar un equilibrador de carga por configuración de clúster. Te recomendamos que utilices la versión estándar del equilibrador de carga (SKU de equilibrador de carga estándar).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "text": "Elija el mejor complemento de red de CNI para sus necesidades (se recomienda Azure CNI)",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Alto",
- "text": "Asegúrese de que la IP flotante esté habilitada en el equilibrador de carga",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Si usa CNI de Azure, ajuste el tamaño de la subred en consecuencia teniendo en cuenta el número máximo de pods por nodo",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Alto",
- "text": "Antes de implementar la infraestructura de alta disponibilidad, y en función de la región que elija, determine si desea realizar la implementación con un conjunto de disponibilidad de Azure o una zona de disponibilidad.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Si usa Azure CNI, compruebe el número máximo de pods o nodo (valor predeterminado 30)",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
- "service": "SAP",
- "severity": "Alto",
- "text": "Si desea cumplir los acuerdos de nivel de servicio de infraestructura para las aplicaciones de los componentes de SAP (servicios centrales, servidores de aplicaciones y bases de datos), debe elegir las mismas opciones de alta disponibilidad (máquinas virtuales, conjuntos de disponibilidad, zonas de disponibilidad) para todos los componentes.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "En el caso de las aplicaciones internas, las organizaciones suelen abrir toda la subred de AKS en sus firewalls. Esto también abre el acceso de red a los nodos y, potencialmente, también a los pods (si se usa Azure CNI). Si las direcciones IP de LoadBalancer están en una subred diferente, solo esta debe estar disponible para los clientes de la aplicación. Otra razón es que si las direcciones IP de la subred de AKS son un recurso escaso, el consumo de sus direcciones IP para los servicios reducirá la escalabilidad máxima del clúster.",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si usa servicios de LoadBalancer de dirección IP privada, use una subred dedicada (no la subred de AKS)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Alto",
- "text": "No mezcle servidores de diferentes roles en el mismo conjunto de disponibilidad. Mantenga las máquinas virtuales de servicios centrales, las máquinas virtuales de base de datos y las máquinas virtuales de aplicaciones en sus propios conjuntos de disponibilidad",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "text": "Dimensione el rango de direcciones IP del servicio en consecuencia (limitará la escalabilidad del clúster)",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
- "service": "SAP",
- "severity": "Medio",
- "text": "No se pueden implementar conjuntos de disponibilidad de Azure dentro de una zona de disponibilidad de Azure a menos que se usen grupos de selección de ubicación de proximidad.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, agregue su propio complemento CNI",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
- "severity": "Alto",
- "text": "Al crear conjuntos de disponibilidad, use el número máximo de dominios de error y dominios de actualización disponibles. Por ejemplo, si implementa más de dos máquinas virtuales en un conjunto de disponibilidad, use el número máximo de dominios de error (tres) y suficientes dominios de actualización para limitar el efecto de posibles errores de hardware físico, interrupciones de red o interrupciones de energía, además del mantenimiento planeado de Azure. El número predeterminado de dominios de error es dos y no puede cambiarlo en línea más adelante.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, configure la dirección IP pública por nodo en AKS",
+ "waf": "Rendimiento"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Use un controlador de entrada para exponer aplicaciones basadas en web en lugar de exponerlas con servicios de tipo LoadBalancer",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Alto",
- "text": "Cuando se usan grupos de selección con selección de ubicación de proximidad de Azure en una implementación de conjunto de disponibilidad, los tres componentes de SAP (servicios centrales, servidor de aplicaciones y base de datos) deben estar en el mismo grupo con selección de ubicación de proximidad.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Uso de Azure NAT Gateway como outboundType para escalar el tráfico de salida",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use un grupo de selección de ubicación de proximidad por SID de SAP. Los grupos no abarcan zonas de disponibilidad ni regiones de Azure",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Uso de asignaciones dinámicas de direcciones IP para evitar el agotamiento de direcciones IP de Azure CNI",
"waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "Alto",
- "text": "Utilice uno de los siguientes servicios para ejecutar clústeres de servicios centrales de SAP, en función del sistema operativo.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Filtre el tráfico de salida con AzFW/NVA si sus requisitos de seguridad lo exigen",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
"severity": "Medio",
- "text": "Actualmente, Azure no admite la combinación de ASCS y alta disponibilidad de base de datos en el mismo clúster de Linux Pacemaker; sepáralos en grupos individuales. Sin embargo, puede combinar hasta cinco clústeres de servicios centrales en un par de máquinas virtuales.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Si utiliza un punto de conexión de API público, restrinja las direcciones IP que pueden acceder a él",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implemente ambas máquinas virtuales en el par de alta disponibilidad en un conjunto de disponibilidad o en zonas de disponibilidad. Estas máquinas virtuales deben tener el mismo tamaño y la misma configuración de almacenamiento.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Utilice clústeres privados si sus requisitos lo exigen",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "Medio",
- "text": "Azure admite la instalación y configuración de SAP HANA y las instancias de ASCS/SCS y ERS en el mismo clúster de alta disponibilidad que se ejecuta en Red Hat Enterprise Linux (RHEL).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Para los nodos de AKS de Windows 2019 y 2022, se pueden usar directivas de red de Calico ",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "Alto",
- "text": "Ejecute todos los sistemas de producción en SSD administradas Premium y use Azure NetApp Files o Ultra Disk Storage. Al menos el disco del sistema operativo debe estar en el nivel Premium para que pueda lograr un mejor rendimiento y el mejor Acuerdo de Nivel de Servicio.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Habilitación de una opción de directiva de red de Kubernetes (Calico/Azure)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "Alto",
- "text": "Debe ejecutar SAP HANA en Azure solo en los tipos de almacenamiento certificados por SAP. Tenga en cuenta que ciertos volúmenes deben ejecutarse en determinadas configuraciones de disco, cuando corresponda. Estas configuraciones incluyen la habilitación del acelerador de escritura y el uso del almacenamiento premium. También debe asegurarse de que el sistema de archivos que se ejecuta en el almacenamiento es compatible con el DBMS que se ejecuta en la máquina.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Uso de directivas de red de Kubernetes para aumentar la seguridad dentro del clúster",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "Alto",
- "text": "Considere la posibilidad de configurar la alta disponibilidad en función del tipo de almacenamiento que utilice para las cargas de trabajo de SAP. Algunos servicios de almacenamiento disponibles en Azure no son compatibles con Azure Site Recovery, por lo que la configuración de alta disponibilidad puede diferir.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "Fiabilidad"
+ "text": "Uso de un WAF para cargas de trabajo web (interfaces de usuario o API)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
- "severity": "Alto",
- "text": "Es posible que los diferentes servicios de almacenamiento nativos de Azure (como Azure Files, Azure NetApp Files, Azure Shared Disk) no estén disponibles en todas las regiones. Por lo tanto, para tener una configuración de SAP similar en la región de recuperación ante desastres después de la conmutación por error, asegúrese de que el servicio de almacenamiento correspondiente se ofrece en el sitio de recuperación ante desastres.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Uso de DDoS Standard en la red virtual de AKS",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, agregue el proxy HTTP de la empresa",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "Medio",
- "text": "Automatice SAP System Start-Stop para gestionar los costes.",
- "waf": "Costar"
+ "text": "Considere la posibilidad de usar una malla de servicios para la administración avanzada de comunicaciones de microservicios",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
- "severity": "Bajo",
- "text": "En el caso de usar Azure Premium Storage con SAP HANA, se puede usar el almacenamiento SSD estándar de Azure para seleccionar una solución de almacenamiento rentable. Sin embargo, tenga en cuenta que la elección de SSD estándar o almacenamiento de Azure HDD estándar afectará al Acuerdo de Nivel de Servicio de las máquinas virtuales individuales. Además, para sistemas con menor rendimiento de E/S y baja latencia, como entornos que no son de producción, se pueden usar máquinas virtuales de series inferiores.",
- "waf": "Costar"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Configurar alertas sobre las métricas más críticas (consulte Container Insights para obtener recomendaciones)",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Como configuración alternativa de menor costo (multipropósito), puede elegir una SKU de bajo rendimiento para las máquinas virtuales del servidor de base de datos de HANA que no son de producción. Sin embargo, es importante tener en cuenta que algunos tipos de máquinas virtuales, como la serie E, no están certificadas para HANA (directorio de hardware de SAP HANA) o no pueden alcanzar una latencia de almacenamiento inferior a 1 ms.",
- "waf": "Costar"
+ "text": "Consulte periódicamente Azure Advisor para obtener recomendaciones sobre el clúster",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
- "service": "SAP",
- "severity": "Alto",
- "text": "Aplicación de un modelo RBAC para grupos de administración, suscripciones, grupos de recursos y recursos",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Habilitación de la rotación automática de certificados de AKS",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
- "severity": "Medio",
- "text": "Aplicación de la propagación de la entidad de seguridad para reenviar la identidad de la aplicación en la nube de SAP a SAP local (incluida IaaS) a través del conector en la nube",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Tenga un proceso regular para actualizar la versión de Kubernetes periódicamente (trimestralmente, por ejemplo) o use la característica de actualización automática de AKS",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implemente SSO en aplicaciones SAP SaaS como SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics y SAP C4C con Azure AD mediante SAML.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Utilice kured para las actualizaciones de nodos de Linux en caso de que no esté utilizando la actualización de imagen de nodo",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implemente SSO en aplicaciones web basadas en SAP NetWeaver, como SAP Fiori y SAP Web GUI mediante SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Disponer de un proceso regular para actualizar las imágenes de los nodos del clúster periódicamente (semanalmente, por ejemplo)",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implemente SSO en aplicaciones web basadas en SAP NetWeaver, como SAP Fiori y SAP Web GUI mediante SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de implementar aplicaciones o configuraciones de clústeres en varios clústeres",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
- "severity": "Medio",
- "text": "Puede implementar SSO en la GUI de SAP mediante SAP NetWeaver SSO o una solución de partner.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de usar la invocación de comandos de AKS en clústeres privados",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
- "service": "SAP",
- "severity": "Medio",
- "text": "Para SSO para SAP GUI y acceso al navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociación GSSAPI simple y protegido) debido a su facilidad de configuración y mantenimiento. Para SSO con certificados de cliente X.509, considere el servidor de inicio de sesión seguro de SAP, que es un componente de la solución SSO de SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "En el caso de los eventos planeados, considere la posibilidad de utilizar el drenaje automático de nodos",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
- "service": "SAP",
- "severity": "Medio",
- "text": "Para SSO para SAP GUI y acceso al navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociación GSSAPI simple y protegido) debido a su facilidad de configuración y mantenimiento. Para SSO con certificados de cliente X.509, considere el servidor de inicio de sesión seguro de SAP, que es un componente de la solución SSO de SAP.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Desarrollar sus propias prácticas de gobernanza para asegurarse de que los operadores no realicen cambios en el nodo RG (también conocido como 'infra RG')",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implemente el inicio de sesión único mediante OAuth para SAP NetWeaver a fin de permitir que aplicaciones personalizadas o de terceros accedan a los servicios OData de SAP NetWeaver.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Usar el nombre personalizado de Node RG (también conocido como 'Infra RG')",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "Medio",
- "text": "Implementación de SSO en SAP HANA",
- "waf": "Seguridad"
+ "text": "No use API de Kubernetes obsoletas en los manifiestos de YAML",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
- "service": "SAP",
- "severity": "Medio",
- "text": "Considere Azure AD como un proveedor de identidades para sistemas SAP hospedados en RISE. Para obtener más información, consulte Integración del servicio con Azure AD.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Nodos de Windows de Taint",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
- "service": "SAP",
- "severity": "Medio",
- "text": "En el caso de las aplicaciones que acceden a SAP, es posible que desee utilizar la propagación de entidades de seguridad para establecer el inicio de sesión único.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Mantener el nivel de revisión de los contenedores de Windows sincronizado con el nivel de revisión del host",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
- "service": "SAP",
- "severity": "Medio",
- "text": "Si usa servicios BTP de SAP o soluciones SaaS que requieren SAP Identity Authentication Service (IAS), considere la posibilidad de implementar SSO entre SAP Cloud Identity Authentication Services y Azure AD para acceder a esos servicios de SAP. Esta integración permite a SAP IAS actuar como proveedor de identidades de proxy y reenvía las solicitudes de autenticación a Azure AD como almacén de usuarios central y proveedor de identidades.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "A través de la configuración de diagnóstico en el nivel de clúster",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Envío de registros maestros (también conocidos como registros de API) a Azure Monitor o a la solución de administración de registros que prefiera",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
- "service": "SAP",
- "severity": "Medio",
- "text": "Implementación de SSO en SAP BTP",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, utilice instantáneas de nodePool",
+ "waf": "Costar"
},
{
- "checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
- "service": "SAP",
- "severity": "Medio",
- "text": "Si usa SAP SuccessFactors, considere la posibilidad de usar el aprovisionamiento automatizado de usuarios de Azure AD. Con esta integración, a medida que agrega nuevos empleados a SAP SuccessFactors, puede crear automáticamente sus cuentas de usuario en Azure AD. Opcionalmente, puede crear cuentas de usuario en Microsoft 365 u otras aplicaciones SaaS compatibles con Azure AD. Utilice la escritura diferida de la dirección de correo electrónico en SAP SuccessFactors.",
- "waf": "Seguridad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de crear grupos de nodos de acceso puntual para cargas de trabajo no urgentes",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
- "service": "SAP",
- "severity": "Medio",
- "text": "aplicar las directivas de grupo de administración existentes a las suscripciones de SAP",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de utilizar el nodo virtual de AKS para una ráfaga rápida",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "Alto",
- "text": "Integre aplicaciones estrechamente acopladas en la misma suscripción de SAP para evitar una complejidad adicional de enrutamiento y administración",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "text": "Supervise las métricas de clúster con Container Insights (u otras herramientas como Prometheus)",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "Alto",
- "text": "Aprovechar la suscripción como unidad de escalado y escalar nuestros recursos, considere implementar la suscripción por entorno, por ejemplo. Sandbox, no-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "text": "Almacene y analice los registros del clúster con Container Insights (u otras herramientas como Telegraf/ElasticSearch)",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
- "service": "SAP",
- "severity": "Alto",
- "text": "Garantizar el aumento de la cuota como parte del aprovisionamiento de suscripciones (por ejemplo, el total de núcleos de máquina virtual disponibles dentro de una suscripción)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Supervisar el uso de la CPU y la memoria de los nodos",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
- "severity": "Bajo",
- "text": "La API de cuota es una API de REST que se puede usar para ver y administrar las cuotas de los servicios de Azure. Considere usarlo si es necesario.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Si usa Azure CNI, supervise el porcentaje de direcciones IP de pod consumidas por nodo",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
- "service": "SAP",
- "severity": "Alto",
- "text": "Si realiza la implementación en una zona de disponibilidad, asegúrese de que la implementación de la zona de la máquina virtual esté disponible una vez que se haya aprobado la cuota. Envíe una solicitud de soporte técnico con la suscripción, la serie de máquinas virtuales, el número de CPU y la zona de disponibilidad necesarias.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "La E/S en el disco del sistema operativo es un recurso crítico. Si el sistema operativo de los nodos se limita en la E/S, esto podría dar lugar a un comportamiento impredecible, que normalmente terminaría en que el nodo se declarara NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Supervisión de la profundidad de la cola de disco del sistema operativo en los nodos",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
- "severity": "Alto",
- "text": "Asegúrese de que los servicios y funciones requeridos estén disponibles dentro de las regiones de implementación elegidas, por ejemplo. ANF, Zona, etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Si no usa el filtrado de salida con AzFW/NVA, supervise los puertos SNAT asignados por ALB estándar",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "Medio",
- "text": "Aproveche la etiqueta de recurso de Azure para la categorización de costos y la agrupación de recursos (facturación, departamento (o unidad de negocio), entorno (producción, fase, desarrollo), nivel (nivel web, nivel de aplicación), propietario de la aplicación, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "text": "Suscríbase a las notificaciones de estado de los recursos para el clúster de AKS",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "Alto",
- "text": "Ayude a proteger la base de datos de HANA mediante el servicio Azure Backup.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Configurar solicitudes y límites en las especificaciones del pod",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "Medio",
- "text": "Si implementa Azure NetApp Files para la base de datos HANA, Oracle o DB2, use la herramienta Azure Application Consistent Snapshot (AzAcSnap) para tomar instantáneas coherentes con la aplicación. AzAcSnap también es compatible con las bases de datos de Oracle. Considere la posibilidad de usar AzAcSnap en una máquina virtual central en lugar de en máquinas virtuales individuales.",
- "waf": "Fiabilidad"
+ "text": "Aplicación de cuotas de recursos para espacios de nombres",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
"severity": "Alto",
- "text": "Asegúrese de que la zona horaria coincida entre el sistema operativo y el sistema SAP.",
+ "text": "Asegúrese de que la suscripción tiene suficiente cuota para escalar horizontalmente los grupos de nodos",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medio",
- "text": "No agrupe diferentes servicios de aplicaciones en el mismo clúster. Por ejemplo, no combine DRBD y clústeres de servicios centrales en el mismo clúster. Sin embargo, puede usar el mismo clúster de Pacemaker para administrar aproximadamente cinco servicios centrales diferentes (clúster de varios SID).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidad"
+ "text": "Uso del escalador automático de clústeres",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Considere la posibilidad de ejecutar sistemas de desarrollo y pruebas en un modelo de repetición para ahorrar y optimizar los costos de ejecución de Azure.",
- "waf": "Costar"
+ "text": "Personalización de la configuración de nodos para grupos de nodos de AKS",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Medio",
- "text": "Si se asocia con los clientes mediante la administración de sus propiedades de SAP, considere la posibilidad de usar Azure Lighthouse. Azure Lighthouse permite a los proveedores de servicios administrados usar los servicios de identidad nativos de Azure para autenticarse en el entorno de los clientes. Pone el control en manos de los clientes, ya que pueden revocar el acceso en cualquier momento y auditar las acciones de los proveedores de servicios.",
- "waf": "Operaciones"
+ "text": "Usar el escalador automático horizontal de pods cuando sea necesario",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use Azure Update Manager para comprobar el estado de las actualizaciones disponibles para una sola máquina virtual o varias máquinas virtuales y considere la posibilidad de programar revisiones periódicas.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Los nodos más grandes aportarán un mayor rendimiento y características como discos efímeros y redes aceleradas, pero aumentarán el radio de explosión y disminuirán la granularidad de escalado",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Considere un tamaño de nodo adecuado, ni demasiado grande ni demasiado pequeño",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
"severity": "Bajo",
- "text": "Optimice y gestione las operaciones de SAP Basis mediante SAP Landscape Management (LaMa). Use el conector de SAP LaMa para Azure para reubicar, copiar, clonar y actualizar sistemas SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "Operaciones"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use Azure Monitor para soluciones SAP para supervisar las cargas de trabajo de SAP (SAP HANA, clústeres de SUSE de alta disponibilidad y sistemas SQL) en Azure. Considere la posibilidad de complementar las soluciones de Azure Monitor para SAP con SAP Solution Manager.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Operaciones"
+ "text": "Si se requieren más de 5000 nodos para la escalabilidad, considere la posibilidad de usar un clúster de AKS adicional",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
- "severity": "Alto",
- "text": "Ejecute una comprobación de extensión de máquina virtual para SAP. VM Extension for SAP usa la identidad administrada asignada de una máquina virtual (VM) para acceder a los datos de configuración y supervisión de VM. La comprobación garantiza que todas las métricas de rendimiento de la aplicación SAP proceden de la extensión de Azure para SAP subyacente.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Considere la posibilidad de suscribirse a eventos de EventGrid para la automatización de AKS",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use Azure Policy para el control de acceso y los informes de cumplimiento. Azure Policy proporciona la capacidad de aplicar la configuración de toda la organización para garantizar el cumplimiento coherente de las directivas y la detección rápida de infracciones. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Para una operación de ejecución prolongada en un clúster de AKS, considere la finalización de eventos",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use el Monitor de conexión en Azure Network Watcher para supervisar las métricas de latencia de las bases de datos y los servidores de aplicaciones de SAP. O bien, recopile y muestre medidas de latencia de red mediante Azure Monitor.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Si es necesario, considere la posibilidad de usar Azure Dedicated Hosts para nodos de AKS",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
- "severity": "Medio",
- "text": "Realice una comprobación de calidad de SAP HANA en la infraestructura de Azure aprovisionada para comprobar que las máquinas virtuales aprovisionadas cumplen con los procedimientos recomendados de SAP HANA en Azure.",
- "waf": "Operaciones"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Usar discos de sistema operativo efímeros",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
"severity": "Alto",
- "text": "Para cada suscripción de Azure, ejecute una prueba de latencia en las zonas de disponibilidad de Azure antes de la implementación zonal para elegir zonas de baja latencia para la implementación de SAP en Azure.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "text": "En el caso de los discos no efímeros, use IOPS altas y discos de sistema operativo más grandes para los nodos cuando ejecute muchos pods o nodos, ya que requiere un alto rendimiento para ejecutar varios pods y generará registros enormes con umbrales de rotación de registros de AKS predeterminados",
"waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
- "severity": "Medio",
- "text": "Ejecute el informe de resistencia para asegurarse de que la configuración de toda la infraestructura de Azure aprovisionada (proceso, base de datos, redes, almacenamiento, Site Recovery) cumple con la configuración definida por Cloud Adaption Framework para Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "severity": "Bajo",
+ "text": "Para la opción de almacenamiento de hiperrendimiento, use discos Ultra en AKS",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
"severity": "Medio",
- "text": "Implemente la protección contra amenazas mediante la solución Microsoft Sentinel para SAP. Utilice esta solución para supervisar sus sistemas SAP y detectar amenazas sofisticadas en toda la lógica empresarial y las capas de aplicación.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Evite mantener el estado en el clúster y almacene los datos fuera (AzStorage, AzSQL, Cosmos, etc.)",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
"severity": "Medio",
- "text": "El etiquetado de Azure se puede aprovechar para agrupar y realizar un seguimiento lógico de los recursos, automatizar sus implementaciones y, lo que es más importante, proporcionar visibilidad de los costos incurridos.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operaciones"
+ "text": "Si usa AzFiles Standard, considere AzFiles Premium o ANF por motivos de rendimiento",
+ "waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
- "severity": "Bajo",
- "text": "Use la supervisión de latencia entre máquinas virtuales para aplicaciones sensibles a la latencia.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
+ "severity": "Medio",
+ "text": "Si usa Azure Disks y AZ, considere la posibilidad de tener grupos de nodos dentro de una zona para el disco LRS con VolumeBindingMode:WaitForFirstConsumer para aprovisionar el almacenamiento en la zona correcta o use el disco ZRS para los grupos de nodos que abarquen varias zonas",
"waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use la supervisión de Azure Site Recovery para mantener el estado del servicio de recuperación ante desastres para los servidores de aplicaciones SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que los controladores de dominio ADDS se implementan en la suscripción de identidad en Azure nativo",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"severity": "Medio",
- "text": "Excluya todos los sistemas de archivos de bases de datos y programas ejecutables de los análisis antivirus. Incluirlos podría dar lugar a problemas de rendimiento. Consulte con los proveedores de bases de datos para obtener detalles prescriptivos sobre la lista de exclusión. Por ejemplo, Oracle recomienda excluir /oracle//sapdata de los análisis antivirus.",
- "waf": "Rendimiento"
+ "text": "Asegúrese de que los sitios y servicios de ADDS están configurados para mantener las solicitudes de autenticación de los recursos basados en Azure (incluida Azure VMware Solution) locales en Azure",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
- "severity": "Bajo",
- "text": "Considere la posibilidad de recopilar estadísticas de base de datos completas para bases de datos que no son de HANA después de la migración. Por ejemplo, implemente la nota de SAP 1020260 - Entrega de estadísticas de Oracle.",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que vCenter esté conectado a ADDS para habilitar la autenticación basada en \"cuentas de usuario designadas\"",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "Medio",
- "text": "Considere la posibilidad de usar Oracle Automatic Storage Management (ASM) para todas las implementaciones de Oracle que usan SAP en Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Rendimiento"
+ "text": "Asegúrese de que la conexión de vCenter a ADDS utilice un protocolo seguro (LDAPS)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "Medio",
- "text": "En el caso de SAP en Azure que ejecuta Oracle, una colección de scripts SQL puede ayudarle a diagnosticar problemas de rendimiento. Los informes de repositorio automático de cargas de trabajo (AWR) contienen información valiosa para diagnosticar problemas en el sistema Oracle. Le recomendamos que ejecute un informe de AWR durante varias sesiones y elija las horas punta para él, a fin de garantizar una amplia cobertura del análisis.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Rendimiento"
+ "text": "La cuenta de CloudAdmin en vCenter IdP solo se utiliza como una cuenta de emergencia (break-glass)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
"severity": "Alto",
- "text": "Use la supervisión de Azure Site Recovery para mantener el estado del servicio de recuperación ante desastres para los servidores de aplicaciones SAP.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operaciones"
+ "text": "Asegúrese de que NSX-Manager esté integrado con un proveedor de identidades externo (LDAPS)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"severity": "Medio",
- "text": "Para la entrega segura de aplicaciones HTTP/S, use Application Gateway v2 y asegúrese de que la protección y las directivas de WAF están habilitadas.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "text": "¿Se ha creado un modelo RBAC para su uso en VMware vSphere?",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "Medio",
- "text": "Si el DNS o el nombre virtual de la máquina virtual no se cambia durante la migración a Azure, el DNS en segundo plano y los nombres virtuales conectan muchas interfaces del sistema en el entorno de SAP, y los clientes solo conocen a veces las interfaces que los desarrolladores definen a lo largo del tiempo. Los desafíos de conexión surgen entre varios sistemas cuando los nombres virtuales o DNS cambian después de las migraciones, y se recomienda conservar los alias DNS para evitar este tipo de dificultades.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operaciones"
+ "text": "Los permisos RBAC deben concederse a grupos ADDS y no a usuarios específicos",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
- "severity": "Medio",
- "text": "Utilice diferentes zonas DNS para distinguir cada entorno (espacio aislado, desarrollo, preproducción y producción) entre sí. La excepción es para las implementaciones de SAP con su propia red virtual; en este caso, es posible que las zonas DNS privadas no sean necesarias.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Los permisos de RBAC en el recurso de Azure VMware Solution en Azure están \"bloqueados\" solo para un conjunto limitado de propietarios",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
- "severity": "Medio",
- "text": "El emparejamiento de red virtual local y global proporciona conectividad y son los enfoques preferidos para garantizar la conectividad entre las zonas de aterrizaje para las implementaciones de SAP en varias regiones de Azure",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
- "waf": "Fiabilidad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que todos los roles personalizados tengan el ámbito de las autorizaciones permitidas de CloudAdmin",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"severity": "Alto",
- "text": "No se admite la implementación de ninguna aplicación virtual de red entre la aplicación SAP y el servidor de base de datos SAP",
- "training": "https://me.sap.com/notes/2731110",
+ "text": "¿Se ha seleccionado el modelo de conectividad de Azure VMware Solution correcto para el caso de uso del cliente en cuestión?",
"waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
- "severity": "Medio",
- "text": "Use Virtual WAN para implementaciones de Azure en redes nuevas, grandes o globales en las que necesite conectividad de tránsito global entre regiones de Azure y ubicaciones locales. Con este enfoque, no tendrá que configurar manualmente el enrutamiento transitivo para las redes de Azure y puede seguir un estándar para las implementaciones de SAP en Azure.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que las conexiones de ExpressRoute o VPN desde el entorno local a Azure se supervisan mediante el \"monitor de conexiones\"",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"severity": "Medio",
- "text": "Considere la posibilidad de implementar aplicaciones virtuales de red (NVA) entre regiones solo si se usan aplicaciones virtuales de red de asociados. Las aplicaciones virtuales de red entre regiones o redes virtuales no son necesarias si hay aplicaciones virtuales de red nativas. Al implementar tecnologías de redes de asociados y aplicaciones virtuales de red, siga las instrucciones del proveedor para comprobar las configuraciones conflictivas con las redes de Azure.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "text": "Asegúrese de que se crea un monitor de conexión desde un recurso nativo de Azure a una máquina virtual de Azure VMware Solution para supervisar la conexión de ExpressRoute back-end de Azure VMware Solution",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "Medio",
- "text": "Virtual WAN administra la conectividad entre redes virtuales de radio para topologías basadas en WAN virtuales (sin necesidad de configurar el enrutamiento definido por el usuario [UDR] o NVA), y el rendimiento máximo de red para el tráfico de red virtual a red virtual en el mismo centro virtual es de 50 gigabits por segundo. Si es necesario, las zonas de aterrizaje de SAP pueden usar el emparejamiento de red virtual para conectarse a otras zonas de aterrizaje y superar esta limitación de ancho de banda.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operaciones"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
- "severity": "Alto",
- "text": "No se recomienda la asignación de direcciones IP públicas a la máquina virtual que ejecuta SAP Workload.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Asegúrese de que se crea un monitor de conexión desde un recurso local a una máquina virtual de Azure VMware Solution para supervisar la conectividad de extremo a extremo",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
"severity": "Alto",
- "text": "Considere la posibilidad de reservar la dirección IP en el lado de la recuperación ante desastres al configurar ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Cuando se utiliza el servidor de rutas, asegúrese de que no se propaguen más de 1000 rutas desde el servidor de rutas a la puerta de enlace de ExR al entorno local (límite de ARS).",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
"severity": "Alto",
- "text": "Evite el uso de intervalos de direcciones IP superpuestos para los sitios de producción y recuperación ante desastres.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operaciones"
+ "text": "¿Se ha implementado Privileged Identity Management para los roles que administran el recurso de Azure VMware Solution en Azure Portal (no se permiten permisos permanentes)?",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
- "severity": "Medio",
- "text": "Aunque Azure le ayuda a crear varias subredes delegadas en una red virtual, solo puede existir una subred delegada en una red virtual para Azure NetApp Files. Se producirá un error al intentar crear un nuevo volumen si se utiliza más de una subred delegada para Azure NetApp Files.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Los informes de auditoría de Privileged Identity Management deben implementarse para los roles PIM de Azure VMware Solution",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"severity": "Medio",
- "text": "Use Azure Firewall para controlar el tráfico saliente de Azure a Internet, las conexiones entrantes que no son HTTP/S y el filtrado del tráfico Este/Oeste (si la organización lo requiere)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
+ "text": "Si se usa Privileged Identity Management, asegúrese de que se crea una cuenta válida habilitada para Entra ID con un registro SMTP válido para las notificaciones de reemplazo automático de host de Azure VMware Solution. (se requieren permisos permanentes)",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
- "severity": "Medio",
- "text": "Application Gateway y Web Application Firewall tienen limitaciones cuando Application Gateway actúa como proxy inverso para aplicaciones web de SAP, como se muestra en la comparación entre Application Gateway, SAP Web Dispatcher y otros servicios de terceros.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Limite el uso de la cuenta de CloudAdmin solo al acceso de emergencia",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
"severity": "Medio",
- "text": "Use directivas de Azure Front Door y WAF para proporcionar protección global en todas las regiones de Azure para las conexiones HTTP/S entrantes a una zona de aterrizaje.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "text": "Cree funciones RBAC personalizadas en vCenter para implementar un modelo de privilegios mínimos dentro de vCenter",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"severity": "Medio",
- "text": "Aproveche las directivas de Web Application Firewall en Azure Front Door cuando use Azure Front Door y Application Gateway para proteger las aplicaciones HTTP/S. Bloquee Application Gateway para recibir tráfico solo de Azure Front Door.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "text": "Es un proceso definido para rotar periódicamente las credenciales de administrador de la nube (vCenter) y administrador (NSX)",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "Medio",
- "text": "Utilice un firewall de aplicaciones web para analizar su tráfico cuando esté expuesto a Internet. Otra opción es usarlo con el equilibrador de carga o con recursos que tengan funcionalidades de firewall integradas, como Application Gateway o soluciones de terceros.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Uso de un proveedor de identidades centralizado que se usará para las cargas de trabajo (VM) que se ejecutan en Azure VMware Solution",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"severity": "Medio",
- "text": "Use Virtual WAN para implementaciones de Azure en redes nuevas, grandes o globales en las que necesite conectividad de tránsito global entre regiones de Azure y ubicaciones locales. Con este enfoque, no tendrá que configurar manualmente el enrutamiento transitivo para las redes de Azure y puede seguir un estándar para las implementaciones de SAP en Azure.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Rendimiento"
+ "text": "¿Se implementa el filtrado de tráfico este-oeste en NSX-T?",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
- "severity": "Medio",
- "text": "Para evitar la pérdida de datos, use Azure Private Link para acceder de forma segura a los recursos de plataforma como servicio, como Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen2, Azure Data Factory, etc. El punto de conexión privado de Azure también puede ayudar a proteger el tráfico entre redes virtuales y servicios como Azure Storage, Azure Backup, etc. El tráfico entre la red virtual y el servicio habilitado para punto de conexión privado viaja a través de la red global de Microsoft, lo que impide su exposición a la red pública de Internet.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Las cargas de trabajo de Azure VMware Solution no se exponen directamente a Internet. El tráfico se filtra e inspecciona mediante Azure Application Gateway, Azure Firewall o soluciones de terceros",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que las redes aceleradas de Azure están habilitadas en las máquinas virtuales que se usan en las capas de aplicación SAP y DBMS.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Rendimiento"
+ "text": "La auditoría y el registro se implementan para las solicitudes entrantes de Internet a Azure VMware Solution y a las cargas de trabajo basadas en Azure VMware Solution",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"severity": "Medio",
- "text": "Asegúrese de que las implementaciones internas de Azure Load Balancer están configuradas para usar Direct Server Return (DSR). Esta configuración (Habilitación de IP flotante) reducirá la latencia cuando se utilicen configuraciones internas del equilibrador de carga para configuraciones de alta disponibilidad en la capa DBMS.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "text": "La supervisión de sesiones se implementa para las conexiones salientes a Internet desde Azure VMware Solution o cargas de trabajo basadas en Azure VMware Solution para identificar actividades sospechosas o malintencionadas",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"severity": "Medio",
- "text": "Puede usar reglas de grupo de seguridad de aplicaciones (ASG) y NSG para definir listas de control de acceso de seguridad de red entre la aplicación SAP y las capas DBMS. Los ASG agrupan las máquinas virtuales para ayudar a administrar su seguridad.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "text": "¿Está habilitada la protección estándar de DDoS en la subred de puerta de enlace de ExR/VPN en Azure?",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "Alto",
- "text": "No se admite la colocación de la capa de aplicación de SAP y DBMS de SAP en diferentes redes virtuales de Azure que no están emparejadas.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Use una estación de trabajo de acceso con privilegios (PAW) dedicada para administrar Azure VMware Solution, vCenter, NSX Manager y HCX Manager",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"severity": "Medio",
- "text": "Para obtener una latencia de red óptima con aplicaciones SAP, considere la posibilidad de usar grupos de selección de ubicación por proximidad de Azure.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Rendimiento"
+ "text": "Habilitación de la detección avanzada de amenazas (Microsoft Defender for Cloud, también conocida como ASC) para cargas de trabajo que se ejecutan en Azure VMware Solution",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "Alto",
- "text": "NO se admite en absoluto la ejecución de una capa de servidor de aplicaciones de SAP y una capa de DBMS divididas entre el entorno local y Azure. Ambas capas deben residir completamente en el entorno local o en Azure.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Use Azure ARC for Servers para controlar correctamente las cargas de trabajo que se ejecutan en Azure VMware Solution mediante tecnologías nativas de Azure (Azure ARC for Azure VMware Solution aún no está disponible)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "Alto",
- "text": "No se recomienda hospedar el sistema de administración de bases de datos (DBMS) y las capas de aplicación de los sistemas SAP en diferentes redes virtuales y conectarlas con el emparejamiento de redes virtuales debido a los costos sustanciales que puede producir un tráfico de red excesivo entre las capas. Se recomienda el uso de subredes dentro de la red virtual de Azure para separar la capa de aplicación de SAP y la capa de DBMS.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Costar"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
+ "severity": "Bajo",
+ "text": "Asegúrese de que las cargas de trabajo de Azure VMware Solution usen suficiente cifrado de datos durante el tiempo de ejecución (como el cifrado de disco invitado y SQL TDE). (El cifrado de vSAN en reposo es el predeterminado)",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
- "severity": "Alto",
- "text": "Si utiliza Load Balancer con sistemas operativos invitados Linux, compruebe que el parámetro de red de Linux net.ipv4.tcp_timestamps esté establecido en 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
+ "severity": "Bajo",
+ "text": "Cuando se usa el cifrado en invitado, almacene las claves de cifrado en Azure Key Vault siempre que sea posible",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"severity": "Medio",
- "text": "En el caso de las implementaciones de SAP RISE/ECS, el emparejamiento virtual es la forma preferida de establecer la conectividad con el entorno de Azure existente del cliente. Tanto la red virtual de SAP como las redes virtuales del cliente están protegidas con grupos de seguridad de red (NSG), lo que permite la comunicación en los puertos de SAP y de base de datos a través del emparejamiento de redes virtuales",
+ "text": "Considere la posibilidad de usar la compatibilidad con actualizaciones de seguridad extendidas para las cargas de trabajo que se ejecutan en Azure VMware Solution (Azure VMware Solution es apta para ESU)",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"severity": "Alto",
- "text": "Revise las copias de seguridad de bases de datos de SAP HANA para máquinas virtuales de Azure.",
- "waf": "Costar"
+ "text": "Asegúrese de que se utiliza el método de redundancia de datos de vSAN adecuado (especificación RAID)",
+ "waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
- "severity": "Medio",
- "text": "Revise la supervisión integrada de Site Recovery, si se usa para SAP.",
- "waf": "Costar"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que la directiva de error de tolerancia esté implementada para satisfacer sus necesidades de almacenamiento de vSAN",
+ "waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "Alto",
- "text": "Revise la guía Supervisión del entorno del sistema SAP HANA.",
- "waf": "Operaciones"
+ "text": "Asegúrese de que ha solicitado una cuota suficiente, asegurándose de que ha tenido en cuenta el crecimiento y el requisito de recuperación ante desastres",
+ "waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise las estrategias de copia de seguridad de Oracle Database en máquinas virtuales Linux de Azure.",
+ "text": "Asegúrese de que se comprenden las restricciones de acceso a ESXi, ya que existen límites de acceso que pueden afectar a las soluciones de terceros.",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise el uso de Azure Blob Storage con SQL Server 2016.",
+ "text": "Asegúrese de tener una política en torno a la densidad y la eficiencia del host ESXi, teniendo en cuenta el tiempo de espera para solicitar nuevos nodos",
"waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise el uso de Copia de seguridad automatizada v2 para máquinas virtuales de Azure.",
- "waf": "Operaciones"
+ "text": "Asegúrese de que existe un buen proceso de administración de costos para Azure VMware Solution: se puede usar Azure Cost Management",
+ "waf": "Costar"
},
{
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
- "severity": "Alto",
- "text": "Habilitación del acelerador de escritura para la serie M cuando se utilizan discos premium (V1)",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "severity": "Bajo",
+ "text": "¿Se usan instancias reservadas de Azure para optimizar el costo de uso de Azure VMware Solution?",
+ "waf": "Costar"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"severity": "Medio",
- "text": "Pruebe la latencia de la zona de disponibilidad.",
- "waf": "Rendimiento"
+ "text": "Tenga en cuenta el uso de Azure Private-Link cuando use otros servicios nativos de Azure",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
- "severity": "Medio",
- "text": "Active SAP EarlyWatch Alert para todos los componentes de SAP.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que todos los recursos necesarios residen en las mismas zonas de disponibilidad de Azure",
"waf": "Rendimiento"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise la latencia del servidor de aplicaciones SAP al servidor de bases de datos mediante el informe ABAPMeter de SAP /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Rendimiento"
+ "text": "Habilitación de cargas de trabajo de máquina virtual invitada de Microsoft Defender for Cloud for Azure VMware Solution",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise la supervisión del rendimiento de SQL Server mediante CCMS.",
- "waf": "Rendimiento"
+ "text": "Uso de servidores habilitados para Azure Arc para administrar las cargas de trabajo de máquinas virtuales invitadas de Azure VMware Solution",
+ "waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
- "severity": "Medio",
- "text": "Pruebe la latencia de red entre las máquinas virtuales de la capa de aplicación de SAP y las máquinas virtuales de DBMS (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "Rendimiento"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Habilitación del registro de diagnósticos y métricas en Azure VMware Solution",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise las alertas de SAP HANA Studio.",
- "waf": "Rendimiento"
+ "text": "Implementación de los agentes de Log Analytics en cargas de trabajo de máquinas virtuales invitadas de Azure VMware Solution",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"severity": "Medio",
- "text": "Realice comprobaciones de estado de SAP HANA mediante HANA_Configuration_Minichecks.",
- "waf": "Rendimiento"
+ "text": "Asegúrese de que dispone de una directiva y una solución de copia de seguridad documentadas e implementadas para las cargas de trabajo de máquina virtual de Azure VMware Solution",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "Medio",
- "text": "Si ejecuta máquinas virtuales Windows y Linux en Azure, en el entorno local o en otros entornos en la nube, puede usar el Centro de administración de actualizaciones de Automatización de Azure para administrar las actualizaciones del sistema operativo, incluidas las revisiones de seguridad.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "text": "Uso de Microsoft Defender for Cloud para la supervisión del cumplimiento de las cargas de trabajo que se ejecutan en Azure VMware Solution",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"severity": "Medio",
- "text": "Revise de forma rutinaria las notas de seguridad de SAP OSS, ya que SAP publica parches de seguridad muy críticos, o revisiones, que requieren una acción inmediata para proteger sus sistemas SAP.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "Seguridad"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "severity": "Bajo",
- "text": "En el caso de SAP en SQL Server, puede deshabilitar la cuenta de administrador del sistema de SQL Server porque los sistemas SAP en SQL Server no usan la cuenta. Asegúrese de que otro usuario con derechos de administrador del sistema pueda acceder al servidor antes de deshabilitar la cuenta de administrador del sistema original.",
+ "text": "¿Se agregan las líneas base de cumplimiento aplicables a Microsoft Defender for Cloud?",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"severity": "Alto",
- "text": "Deshabilite xp_cmdshell. La característica de SQL Server xp_cmdshell habilita un shell de comandos del sistema operativo interno de SQL Server. Es un riesgo potencial en las auditorías de seguridad.",
- "training": "https://me.sap.com/notes/3019299/E",
+ "text": "¿Se evaluó la residencia de datos al seleccionar las regiones de Azure que se usarán para la implementación de Azure VMware Solution?",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"severity": "Alto",
- "text": "El cifrado de servidores de bases de datos de SAP HANA en Azure usa la tecnología de cifrado nativa de SAP HANA. Además, si usa SQL Server en Azure, use el cifrado de datos transparente (TDE) para proteger los datos y los archivos de registro y asegurarse de que las copias de seguridad también están cifradas.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "text": "¿Son claras y documentadas las implicaciones del procesamiento de datos (proveedor de servicios / modelo de consumidor de servicios)?",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "Medio",
- "text": "El cifrado de Azure Storage está habilitado para todas las cuentas de Azure Resource Manager y de almacenamiento clásico, y no se puede deshabilitar. Dado que los datos están cifrados de forma predeterminada, no es necesario modificar el código o las aplicaciones para usar el cifrado de Azure Storage.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "text": "Considere la posibilidad de usar CMK (clave administrada por el cliente) para vSAN solo si es necesario por motivos de cumplimiento.",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
"severity": "Alto",
- "text": "Uso de Azure Key Vault para almacenar los secretos y las credenciales",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Seguridad"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
- "severity": "Medio",
- "text": "Se recomienda bloquear los recursos de Azure después de la implementación correcta para protegerse contra cambios no autorizados. También puede aplicar restricciones y reglas de LOCK por suscripción mediante directivas de Azure personalizadas (rol personalizado).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
- "waf": "Seguridad"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
- "severity": "Medio",
- "text": "Aprovisione Azure Key Vault con las directivas de eliminación temporal y purga habilitadas para permitir la protección de retención de los objetos eliminados.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Creación de paneles para habilitar la información principal de supervisión de Azure VMware Solution",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
"severity": "Alto",
- "text": "En función de los requisitos existentes, controles normativos y de cumplimiento (internos y externos): determine qué directivas de Azure y el rol de RBAC de Azure son necesarios",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Creación de alertas de advertencia para umbrales críticos para alertas automáticas sobre el rendimiento de Azure VMware Solution (CPU >80 %, memoria media >80 %, vSAN >70 %)",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
"severity": "Alto",
- "text": "Al habilitar Microsoft Defender para punto de conexión en el entorno de SAP, se recomienda excluir los archivos de datos y registro en los servidores DBMS en lugar de dirigirse a todos los servidores. Siga las recomendaciones de su proveedor de DBMS al excluir archivos de destino.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
- "waf": "Seguridad"
+ "text": "Asegúrese de que se crea una alerta crítica para supervisar si el consumo de vSAN es inferior al 75 %, ya que se trata de un umbral de soporte de VMware",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"severity": "Alto",
- "text": "Delegue un rol personalizado de administrador de SAP con acceso Just-In-Time de Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Asegúrese de que las alertas están configuradas para las alertas y notificaciones de Azure Service Health",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Configure el registro de Azure VMware Solution para que se envíe a una cuenta de Azure Storage o Azure EventHub para su procesamiento",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
"severity": "Bajo",
- "text": "cifre los datos en tránsito integrando el producto de seguridad de terceros con comunicaciones de red seguras (SNC) para DIAG (SAP GUI), RFC y SPNEGO para HTTPS",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
- "waf": "Seguridad"
+ "text": "Si se requiere una visión profunda de VMware vSphere: ¿Se utiliza vRealize Operations o vRealize Network Insights en la solución?",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Asegúrese de que la directiva de almacenamiento de vSAN para las máquinas virtuales NO sea la directiva de almacenamiento predeterminada, ya que esta directiva aplica el aprovisionamiento grueso",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"severity": "Medio",
- "text": "De forma predeterminada, utilice claves administradas por Microsoft para la funcionalidad de cifrado de entidad de seguridad y use claves administradas por el cliente cuando sea necesario.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Asegúrese de que las bibliotecas de contenido de vSphere no se coloquen en vSAN, ya que vSAN es un recurso finito",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use una instancia de Azure Key Vault por aplicación, por entorno, por región.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Asegúrese de que los repositorios de datos de la solución de copia de seguridad se almacenen fuera del almacenamiento de vSAN. Ya sea en Azure nativo o en un almacén de datos respaldado por un grupo de discos",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
- "severity": "Alto",
- "text": "Para controlar y administrar claves y secretos de cifrado de disco para sistemas operativos Windows y Windows que no son de HANA, use Azure Key Vault. SAP HANA no es compatible con Azure Key Vault, por lo que debe usar métodos alternativos como SAP ABAP o claves SSH.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se administran de forma híbrida mediante Azure Arc para servidores (Arc para Azure VMware Solution está en versión preliminar)",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
- "severity": "Alto",
- "text": "Personalización de los roles de control de acceso basado en rol (RBAC) para SAP en suscripciones de Azure spoke para evitar cambios accidentales relacionados con la red",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se supervisan mediante Azure Log Analytics y Azure Monitor",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
- "severity": "Alto",
- "text": "Aísle las redes perimetrales y las aplicaciones virtuales de red del resto del patrimonio de SAP, configure Azure Private Link y administre y controle de forma segura los recursos de SAP en Azure",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Inclusión de cargas de trabajo que se ejecutan en Azure VMware Solution en las herramientas de administración de actualizaciones existentes o en Azure Update Management",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
- "severity": "Bajo",
- "text": "Considere la posibilidad de usar el software antimalware de Microsoft en Azure para proteger las máquinas virtuales de archivos malintencionados, adware y otras amenazas.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Uso de Azure Policy para incorporar cargas de trabajo de Azure VMware Solution en las soluciones de administración, supervisión y seguridad de Azure",
+ "waf": "Operaciones"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "severity": "Bajo",
- "text": "Para una protección aún más eficaz, considere la posibilidad de usar Microsoft Defender para punto de conexión.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se incorporan a Microsoft Defender for Cloud",
"waf": "Seguridad"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
- "severity": "Alto",
- "text": "Aísle los servidores de aplicaciones y bases de datos de SAP de Internet o de la red local pasando todo el tráfico a través de la red virtual del centro de conectividad, que está conectada a la red radial mediante el emparejamiento de red virtual. Las redes virtuales emparejadas garantizan que la solución de SAP en Azure esté aislada de la red pública de Internet.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "Asegúrese de que las copias de seguridad no se almacenen en vSAN, ya que vSAN es un recurso finito",
+ "waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "severity": "Bajo",
- "text": "En el caso de las aplicaciones orientadas a Internet, como SAP Fiori, asegúrese de distribuir la carga según los requisitos de la aplicación mientras se mantienen los niveles de seguridad. Para la seguridad de nivel 7, puede usar un firewall de aplicaciones web (WAF) de terceros disponible en Azure Marketplace.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
- "waf": "Seguridad"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
+ "severity": "Medio",
+ "text": "¿Se han considerado todas las soluciones de recuperación ante desastres y se ha decidido por la mejor solución para su negocio? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Fiabilidad"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"severity": "Medio",
- "text": "Para habilitar la comunicación segura en las soluciones de Azure Monitor para SAP, puede optar por usar un certificado raíz o un certificado de servidor. Le recomendamos encarecidamente que utilice certificados raíz.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Seguridad"
+ "text": "Uso de Azure Site Recovery cuando la tecnología de recuperación ante desastres sea IaaS nativa de Azure",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
"service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que los controladores de dominio ADDS se implementan en la suscripción de identidad en Azure nativo",
- "waf": "Seguridad"
+ "text": "Utilice planes de recuperación automatizados con cualquiera de las soluciones ante desastres, evite las tareas manuales tanto como sea posible",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
"service": "AVS",
"severity": "Medio",
- "text": "Asegúrese de que los sitios y servicios de ADDS están configurados para mantener las solicitudes de autenticación de los recursos basados en Azure (incluida Azure VMware Solution) locales en Azure",
- "waf": "Seguridad"
+ "text": "Usar el par de regiones geopolíticas como entorno secundario de recuperación ante desastres",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
"service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que vCenter esté conectado a ADDS para habilitar la autenticación basada en \"cuentas de usuario designadas\"",
- "waf": "Seguridad"
+ "text": "Utilice 2 espacios de direcciones diferentes entre las regiones, por ejemplo: 10.0.0.0/16 y 192.168.0.0/16 para las diferentes regiones",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
"service": "AVS",
"severity": "Medio",
- "text": "Asegúrese de que la conexión de vCenter a ADDS utilice un protocolo seguro (LDAPS)",
- "waf": "Seguridad"
+ "text": "¿Se usará Global Reach de ExpressRoute para la conectividad entre las nubes privadas de Azure VMware Solution principal y secundaria, o el enrutamiento se realiza a través de aplicaciones virtuales de red?",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
"service": "AVS",
"severity": "Medio",
- "text": "La cuenta de CloudAdmin en vCenter IdP solo se utiliza como una cuenta de emergencia (break-glass)",
- "waf": "Seguridad"
+ "text": "¿Se han considerado todas las soluciones de copia de seguridad y se ha decidido por la mejor solución para su negocio? [ MABS/CommVault/Metallic.io/Veeam/ . ]",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
"service": "AVS",
- "severity": "Alto",
- "text": "Asegúrese de que NSX-Manager esté integrado con un proveedor de identidades externo (LDAPS)",
- "waf": "Seguridad"
+ "severity": "Medio",
+ "text": "Implemente la solución de copia de seguridad en la misma región que la nube privada de Azure VMware Solution",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
"service": "AVS",
"severity": "Medio",
- "text": "¿Se ha creado un modelo RBAC para su uso en VMware vSphere?",
- "waf": "Seguridad"
+ "text": "Implementación de la solución de copia de seguridad fuera de vSan, en componentes nativos de Azure",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
"service": "AVS",
- "severity": "Medio",
- "text": "Los permisos RBAC deben concederse a grupos ADDS y no a usuarios específicos",
- "waf": "Seguridad"
+ "severity": "Bajo",
+ "text": "¿Existe un proceso para solicitar una restauración de los componentes de VMware administrados por la plataforma Azure?",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
"service": "AVS",
- "severity": "Alto",
- "text": "Los permisos de RBAC en el recurso de Azure VMware Solution en Azure están \"bloqueados\" solo para un conjunto limitado de propietarios",
- "waf": "Seguridad"
+ "severity": "Bajo",
+ "text": "En el caso de las implementaciones manuales, se deben documentar todas las configuraciones e implementaciones",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
"service": "AVS",
- "severity": "Alto",
- "text": "Asegúrese de que todos los roles personalizados tengan el ámbito de las autorizaciones permitidas de CloudAdmin",
- "waf": "Seguridad"
+ "severity": "Bajo",
+ "text": "En el caso de las implementaciones manuales, considere la posibilidad de implementar bloqueos de recursos para evitar acciones accidentales en la nube privada de Azure VMware Solution",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
"service": "AVS",
- "severity": "Alto",
- "text": "¿Se ha seleccionado el modelo de conectividad de Azure VMware Solution correcto para el caso de uso del cliente en cuestión?",
- "waf": "Rendimiento"
+ "severity": "Bajo",
+ "text": "Para implementaciones automatizadas, implemente una nube privada mínima y escale según sea necesario",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
"service": "AVS",
- "severity": "Alto",
- "text": "Asegúrese de que las conexiones de ExpressRoute o VPN desde el entorno local a Azure se supervisan mediante el \"monitor de conexiones\"",
+ "severity": "Bajo",
+ "text": "En el caso de las implementaciones automatizadas, solicite o reserve una cuota antes de iniciar la implementación",
"waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
"service": "AVS",
- "severity": "Medio",
- "text": "Asegúrese de que se crea un monitor de conexión desde un recurso nativo de Azure a una máquina virtual de Azure VMware Solution para supervisar la conexión de ExpressRoute back-end de Azure VMware Solution",
+ "severity": "Bajo",
+ "text": "En el caso de la implementación automatizada, asegúrese de que se crean bloqueos de recursos relevantes a través de la automatización o a través de Azure Policy para una gobernanza adecuada",
"waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
"service": "AVS",
- "severity": "Medio",
- "text": "Asegúrese de que se crea un monitor de conexión desde un recurso local a una máquina virtual de Azure VMware Solution para supervisar la conectividad de extremo a extremo",
+ "severity": "Bajo",
+ "text": "Implemente nombres comprensibles para las claves de autorización ExR para permitir una fácil identificación del propósito y uso de las claves.",
"waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
"service": "AVS",
- "severity": "Alto",
- "text": "Cuando se utiliza el servidor de rutas, asegúrese de que no se propaguen más de 1000 rutas desde el servidor de rutas a la puerta de enlace de ExR al entorno local (límite de ARS).",
+ "severity": "Bajo",
+ "text": "Uso de Key Vault para almacenar secretos y claves de autorización cuando se usan principios de servicio independientes para implementar Azure VMware Solution y ExpressRoute",
"waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
"service": "AVS",
- "severity": "Alto",
- "text": "¿Se ha implementado Privileged Identity Management para los roles que administran el recurso de Azure VMware Solution en Azure Portal (no se permiten permisos permanentes)?",
- "waf": "Seguridad"
+ "severity": "Bajo",
+ "text": "Defina dependencias de recursos para serializar acciones en IaC cuando sea necesario implementar muchos recursos en Azure VMware Solution, ya que Azure VMware Solution solo admite un número limitado de operaciones paralelas.",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
"service": "AVS",
- "severity": "Alto",
- "text": "Los informes de auditoría de Privileged Identity Management deben implementarse para los roles PIM de Azure VMware Solution",
- "waf": "Seguridad"
+ "severity": "Bajo",
+ "text": "Al realizar la configuración automatizada de segmentos de NSX-T con una única puerta de enlace de nivel 1, use las API de Azure Portal en lugar de las API de NSX-Manager",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
"service": "AVS",
"severity": "Medio",
- "text": "Si se usa Privileged Identity Management, asegúrese de que se crea una cuenta válida habilitada para Entra ID con un registro SMTP válido para las notificaciones de reemplazo automático de host de Azure VMware Solution. (se requieren permisos permanentes)",
- "waf": "Seguridad"
+ "text": "Si tiene la intención de usar el escalado horizontal automatizado, asegúrese de solicitar una cuota suficiente de Azure VMware Solution para las suscripciones que ejecutan Azure VMware Solution",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
"service": "AVS",
- "severity": "Alto",
- "text": "Limite el uso de la cuenta de CloudAdmin solo al acceso de emergencia",
- "waf": "Seguridad"
+ "severity": "Medio",
+ "text": "Cuando tenga la intención de usar la reducción horizontal automatizada, asegúrese de tener en cuenta los requisitos de la directiva de almacenamiento antes de realizar dicha acción",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
"service": "AVS",
"severity": "Medio",
- "text": "Cree funciones RBAC personalizadas en vCenter para implementar un modelo de privilegios mínimos dentro de vCenter",
- "waf": "Seguridad"
+ "text": "Las operaciones de escalado siempre deben serializarse dentro de un único SDDC, ya que solo se puede realizar una operación de escalado a la vez (incluso cuando se utilizan varios clústeres)",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
"service": "AVS",
"severity": "Medio",
- "text": "Es un proceso definido para rotar periódicamente las credenciales de administrador de la nube (vCenter) y administrador (NSX)",
- "waf": "Seguridad"
+ "text": "Considerar y validar las operaciones de escalado en soluciones de terceros utilizadas en la arquitectura (compatibles o no)",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
"service": "AVS",
- "severity": "Alto",
- "text": "Uso de un proveedor de identidades centralizado que se usará para las cargas de trabajo (VM) que se ejecutan en Azure VMware Solution",
- "waf": "Seguridad"
+ "severity": "Medio",
+ "text": "Defina y aplique límites máximos de escalado vertical y horizontal para su entorno en las automatizaciones",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
"service": "AVS",
"severity": "Medio",
- "text": "¿Se implementa el filtrado de tráfico este-oeste en NSX-T?",
- "waf": "Seguridad"
+ "text": "Implemente reglas de supervisión para supervisar las operaciones de escalado automatizadas y supervisar el éxito y el fracaso para permitir respuestas adecuadas (automatizadas)",
+ "waf": "Operaciones"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "AVS",
"severity": "Alto",
- "text": "Las cargas de trabajo de Azure VMware Solution no se exponen directamente a Internet. El tráfico se filtra e inspecciona mediante Azure Application Gateway, Azure Firewall o soluciones de terceros",
- "waf": "Seguridad"
+ "text": "Al usar MON, tenga en cuenta los límites de las máquinas virtuales configuradas simultáneamente (límite de MON para HCX [400 - estándar, 1000 - dispositivo más grande])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
"service": "AVS",
"severity": "Alto",
- "text": "La auditoría y el registro se implementan para las solicitudes entrantes de Internet a Azure VMware Solution y a las cargas de trabajo basadas en Azure VMware Solution",
- "waf": "Seguridad"
+ "text": "Al usar MON, no puede habilitar MON en más de 100 extensiones de red",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
"service": "AVS",
"severity": "Medio",
- "text": "La supervisión de sesiones se implementa para las conexiones salientes a Internet desde Azure VMware Solution o cargas de trabajo basadas en Azure VMware Solution para identificar actividades sospechosas o malintencionadas",
- "waf": "Seguridad"
+ "text": "Si utiliza una conexión VPN para migraciones, ajuste el tamaño de su MTU en consecuencia.",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
"service": "AVS",
"severity": "Medio",
- "text": "¿Está habilitada la protección estándar de DDoS en la subred de puerta de enlace de ExR/VPN en Azure?",
- "waf": "Seguridad"
+ "text": "En el caso de las regiones de baja conectividad que se conectan a Azure (500 Mbps o menos), considere la posibilidad de implementar el dispositivo de optimización de WAN de HCX",
+ "waf": "Rendimiento"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
"service": "AVS",
"severity": "Medio",
- "text": "Use una estación de trabajo de acceso con privilegios (PAW) dedicada para administrar Azure VMware Solution, vCenter, NSX Manager y HCX Manager",
- "waf": "Seguridad"
+ "text": "Asegúrese de que las migraciones se inicien desde el dispositivo local y NO desde el dispositivo en la nube (NO realice una migración inversa)",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
"service": "AVS",
"severity": "Medio",
- "text": "Habilitación de la detección avanzada de amenazas (Microsoft Defender for Cloud, también conocida como ASC) para cargas de trabajo que se ejecutan en Azure VMware Solution",
- "waf": "Seguridad"
+ "text": "Cuando se usa Azure NetApp Files para ampliar el almacenamiento de Azure VMware Solution, considere la posibilidad de usarlo como almacén de datos de VMware en lugar de adjuntarlo directamente a una máquina virtual.",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
"service": "AVS",
"severity": "Medio",
- "text": "Use Azure ARC for Servers para controlar correctamente las cargas de trabajo que se ejecutan en Azure VMware Solution mediante tecnologías nativas de Azure (Azure ARC for Azure VMware Solution aún no está disponible)",
- "waf": "Seguridad"
+ "text": "Asegúrese de que se usa una puerta de enlace de ExpressRoute dedicada para soluciones de almacenamiento de datos externos",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
"service": "AVS",
- "severity": "Bajo",
- "text": "Asegúrese de que las cargas de trabajo de Azure VMware Solution usen suficiente cifrado de datos durante el tiempo de ejecución (como el cifrado de disco invitado y SQL TDE). (El cifrado de vSAN en reposo es el predeterminado)",
- "waf": "Seguridad"
+ "severity": "Medio",
+ "text": "Asegúrese de que FastPath está habilitado en la puerta de enlace de ExpressRoute que se usa para las soluciones de almacenamiento de datos externos",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
"service": "AVS",
- "severity": "Bajo",
- "text": "Cuando se usa el cifrado en invitado, almacene las claves de cifrado en Azure Key Vault siempre que sea posible",
- "waf": "Seguridad"
+ "severity": "Alto",
+ "text": "Si utiliza un clúster ampliado, asegúrese de que la solución de recuperación ante desastres seleccionada sea compatible con el proveedor",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
"service": "AVS",
- "severity": "Medio",
- "text": "Considere la posibilidad de usar la compatibilidad con actualizaciones de seguridad extendidas para las cargas de trabajo que se ejecutan en Azure VMware Solution (Azure VMware Solution es apta para ESU)",
- "waf": "Seguridad"
+ "severity": "Alto",
+ "text": "Si utiliza un clúster ampliado, asegúrese de que el Acuerdo de Nivel de Servicio proporcionado cumpla sus requisitos",
+ "waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
"service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que se utiliza el método de redundancia de datos de vSAN adecuado (especificación RAID)",
+ "text": "Si usa un clúster extendido, asegúrese de que ambos circuitos ExpressRoute están conectados al centro de conectividad.",
"waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
"service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que la directiva de error de tolerancia esté implementada para satisfacer sus necesidades de almacenamiento de vSAN",
+ "text": "Si usa un clúster extendido, asegúrese de que ambos circuitos ExpressRoute tengan habilitado GlobalReach.",
"waf": "Fiabilidad"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
"service": "AVS",
"severity": "Alto",
- "text": "Asegúrese de que ha solicitado una cuota suficiente, asegurándose de que ha tenido en cuenta el crecimiento y el requisito de recuperación ante desastres",
+ "text": "Haga que la configuración de tolerancia ante desastres del sitio se considere y cambie correctamente para su negocio si es necesario.",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
+ "severity": "Alto",
+ "text": "Habilite la redundancia de zona para Azure Cache for Redis. Azure Cache for Redis admite configuraciones con redundancia de zona en los niveles Premium y Enterprise. Una caché con redundancia de zona puede colocar sus nodos en diferentes zonas de disponibilidad de Azure en la misma región. Elimina la interrupción del centro de datos o de la zona de disponibilidad como único punto de error y aumenta la disponibilidad general de la memoria caché.",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
+ "severity": "Medio",
+ "text": "Configure la persistencia de datos para una instancia de Azure Cache for Redis. Dado que los datos de caché se almacenan en la memoria, un error poco frecuente y no planeado de varios nodos puede hacer que se eliminen todos los datos. Para evitar la pérdida completa de datos, la persistencia de Redis permite tomar instantáneas periódicas de los datos en memoria y almacenarlas en la cuenta de almacenamiento.",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
+ "severity": "Medio",
+ "text": "Use una cuenta de almacenamiento con redundancia geográfica para conservar los datos de Azure Cache for Redis o con redundancia zonal donde la redundancia geográfica no esté disponible",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
+ "severity": "Medio",
+ "text": "Configure la replicación geográfica pasiva para instancias de Azure Cache for Redis Premium. La replicación geográfica es un mecanismo para vincular dos o más instancias de Azure Cache for Redis, que normalmente abarcan dos regiones de Azure. La replicación geográfica está diseñada principalmente para la recuperación ante desastres entre regiones. Dos instancias de caché de nivel Premium se conectan a través de la replicación geográfica de una manera que proporciona lecturas y escrituras en la caché principal, y esos datos se replican en la caché secundaria.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub proporciona cifrado de datos en reposo. Si usa su propia clave, los datos se siguen cifrando con la clave administrada por Microsoft, pero además la clave administrada por Microsoft se cifrará con la clave administrada por el cliente. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
+ "severity": "Bajo",
+ "text": "Usar la opción de clave administrada por el cliente en el cifrado de datos en reposo cuando sea necesario",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "Seguridad"
+ },
+ {
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Los espacios de nombres de Azure Event Hubs permiten a los clientes enviar y recibir datos con TLS 1.0 y versiones posteriores. Para aplicar medidas de seguridad más estrictas, puede configurar el espacio de nombres de Event Hubs para requerir que los clientes envíen y reciban datos con una versión más reciente de TLS. Si un espacio de nombres de Event Hubs requiere una versión mínima de TLS, se producirá un error en las solicitudes realizadas con una versión anterior. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Asegúrese de que se comprenden las restricciones de acceso a ESXi, ya que existen límites de acceso que pueden afectar a las soluciones de terceros.",
- "waf": "Operaciones"
+ "text": "Aplicar una versión mínima requerida de Seguridad de la capa de transporte (TLS) para las solicitudes ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Al crear un espacio de nombres de Event Hubs, se crea automáticamente una regla de directiva denominada RootManageSharedAccessKey para el espacio de nombres. Esta directiva tiene permisos de administración para todo el espacio de nombres. Se recomienda tratar esta regla como una cuenta raíz administrativa y no usarla en la aplicación. Se recomienda usar AAD como proveedor de autenticación con RBAC. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Asegúrese de tener una política en torno a la densidad y la eficiencia del host ESXi, teniendo en cuenta el tiempo de espera para solicitar nuevos nodos",
- "waf": "Operaciones"
+ "text": "Evite usar la cuenta raíz cuando no sea necesario",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Las identidades administradas para los recursos de Azure pueden autorizar el acceso a los recursos de Event Hubs mediante credenciales de Azure AD desde aplicaciones que se ejecutan en Azure Virtual Machines (VM), aplicaciones de funciones, conjuntos de escalado de máquinas virtuales y otros servicios. Mediante el uso de identidades administradas para los recursos de Azure junto con la autenticación de Azure AD, puede evitar el almacenamiento de credenciales con las aplicaciones que se ejecutan en la nube. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Asegúrese de que existe un buen proceso de administración de costos para Azure VMware Solution: se puede usar Azure Cost Management",
- "waf": "Costar"
+ "text": "Siempre que sea posible, la aplicación debe usar una identidad administrada para autenticarse en Azure Event Hub. Si no es así, considere la posibilidad de tener la credencial de almacenamiento (SAS, credencial de entidad de servicio) en Azure Key Vault o en un servicio equivalente",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
- "severity": "Bajo",
- "text": "¿Se usan instancias reservadas de Azure para optimizar el costo de uso de Azure VMware Solution?",
- "waf": "Costar"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Al crear permisos, proporcione un control específico sobre el acceso de un cliente al Centro de eventos de Azure. Los permisos del Centro de eventos de Azure pueden y deben limitarse al nivel de recurso individual, por ejemplo, grupo de consumidores, entidad del centro de eventos, espacios de nombres del centro de eventos, etc.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
+ "service": "Event Hubs",
+ "severity": "Alto",
+ "text": "Uso de RBAC de plano de datos con privilegios mínimos",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Los registros de recursos del Centro de eventos de Azure incluyen registros operativos, registros de red virtual y registros de Kafka. Los registros de auditoría en tiempo de ejecución capturan información de diagnóstico agregada para todas las operaciones de acceso al plano de datos (como eventos de envío o recepción) en Event Hubs.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Tenga en cuenta el uso de Azure Private-Link cuando use otros servicios nativos de Azure",
+ "text": "Habilite el registro para la investigación de seguridad. Use Azure Monitor para capturar métricas y registros, como registros de recursos, registros de auditoría en tiempo de ejecución y registros de Kafka",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
- "severity": "Alto",
- "text": "Asegúrese de que todos los recursos necesarios residen en las mismas zonas de disponibilidad de Azure",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "De forma predeterminada, Azure Event Hub tiene una dirección IP pública y es accesible a través de Internet. Los puntos de conexión privados permiten el tráfico entre la red virtual y Azure Event Hubs a través de la red troncal de Microsoft. Además de eso, debe deshabilitar los puntos de conexión públicos si no se usan. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
+ "severity": "Medio",
+ "text": "Considere la posibilidad de usar puntos de conexión privados para acceder al Centro de eventos de Azure y deshabilitar el acceso a la red pública cuando corresponda.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Con el firewall IP, puede restringir aún más el punto de conexión público a solo un conjunto de direcciones IPv4 o rangos de direcciones IPv4 en notación CIDR (Classless Inter-Domain Routing). ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Habilitación de cargas de trabajo de máquina virtual invitada de Microsoft Defender for Cloud for Azure VMware Solution",
+ "text": "Considere la posibilidad de permitir solo el acceso al espacio de nombres del Centro de eventos de Azure desde direcciones IP o intervalos específicos",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Uso de servidores habilitados para Azure Arc para administrar las cargas de trabajo de máquinas virtuales invitadas de Azure VMware Solution",
- "waf": "Seguridad"
+ "text": "Aproveche el Manual de Resiliencia de los TLC",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": " Esto se activará automáticamente para un nuevo espacio de nombres EH creado desde el portal con SKU Premium, Dedicado o Estándar en una región habilitada para zonas. Tanto los metadatos de EH como los propios datos de eventos se replican en todas las zonas",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"severity": "Alto",
- "text": "Habilitación del registro de diagnósticos y métricas en Azure VMware Solution",
- "waf": "Operaciones"
+ "text": "Aproveche las zonas de disponibilidad si corresponde regionalmente",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Implementación de los agentes de Log Analytics en cargas de trabajo de máquinas virtuales invitadas de Azure VMware Solution",
- "waf": "Operaciones"
+ "text": "Usa las SKU Premium o Dedicadas para obtener un rendimiento predecible",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
- "severity": "Medio",
- "text": "Asegúrese de que dispone de una directiva y una solución de copia de seguridad documentadas e implementadas para las cargas de trabajo de máquina virtual de Azure VMware Solution",
- "waf": "Operaciones"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "La característica integrada de recuperación ante desastres geográfica, cuando está habilitada, garantiza que toda la configuración de un espacio de nombres (Event Hubs, grupos de consumidores y configuración) se replique continuamente desde un espacio de nombres principal a un espacio de nombres secundario, y permite un movimiento de conmutación por error de una sola vez del principal al secundario en cualquier momento. La característica Activo/Pasivo está diseñada para facilitar la recuperación y el abandono de una región de Azure con errores sin tener que cambiar las configuraciones de la aplicación",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
+ "severity": "Alto",
+ "text": "Planeación de la recuperación ante desastres geográfica mediante la configuración pasiva activa",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Debe utilizarse para configuraciones de recuperación ante desastres en las que no se puede tolerar una interrupción o pérdida de datos de eventos en la región inactiva. En estos casos, siga las instrucciones de replicación y no use la capacidad de recuperación ante desastres geográfica integrada (activa/pasiva). Con Activo/Activo, mantenga varios centros de eventos en diferentes regiones y espacios de nombres, y los eventos se replicarán entre los centros",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "Uso de Microsoft Defender for Cloud para la supervisión del cumplimiento de las cargas de trabajo que se ejecutan en Azure VMware Solution",
- "waf": "Seguridad"
+ "text": "En el caso de las aplicaciones críticas para la empresa, use la configuración Active Active",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"severity": "Medio",
- "text": "¿Se agregan las líneas base de cumplimiento aplicables a Microsoft Defender for Cloud?",
- "waf": "Seguridad"
+ "text": "Diseño de centros de eventos resilientes",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"severity": "Alto",
- "text": "¿Se evaluó la residencia de datos al seleccionar las regiones de Azure que se usarán para la implementación de Azure VMware Solution?",
- "waf": "Seguridad"
+ "text": "Seleccione el plan de hospedaje de aplicaciones lógicas adecuado en función de los requisitos empresariales y de SLO",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
"severity": "Alto",
- "text": "¿Son claras y documentadas las implicaciones del procesamiento de datos (proveedor de servicios / modelo de consumidor de servicios)?",
- "waf": "Seguridad"
+ "text": "Proteja las aplicaciones lógicas de errores de región con redundancia de zona y zonas de disponibilidad",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
+ "severity": "Alto",
+ "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
+ "severity": "Alto",
+ "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
+ "waf": "Fiabilidad"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"severity": "Medio",
- "text": "Considere la posibilidad de usar CMK (clave administrada por el cliente) para vSAN solo si es necesario por motivos de cumplimiento.",
- "waf": "Seguridad"
+ "text": "Aproveche Azure DevOps o GitHub para simplificar la CI/CD y proteger el código de la aplicación lógica",
+ "waf": "Operaciones"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
+ "severity": "Alto",
+ "text": "Seleccione el plan de hospedaje de funciones adecuado en función de los requisitos de su empresa y SLO",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Creación de paneles para habilitar la información principal de supervisión de Azure VMware Solution",
- "waf": "Operaciones"
+ "text": "Aproveche las zonas de disponibilidad cuando corresponda regionalmente (no disponible para el nivel de consumo)",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
- "severity": "Alto",
- "text": "Creación de alertas de advertencia para umbrales críticos para alertas automáticas sobre el rendimiento de Azure VMware Solution (CPU >80 %, memoria media >80 %, vSAN >70 %)",
- "waf": "Operaciones"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
+ "severity": "Medio",
+ "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Asegúrese de que se crea una alerta crítica para supervisar si el consumo de vSAN es inferior al 75 %, ya que se trata de un umbral de soporte de VMware",
- "waf": "Operaciones"
+ "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Asegúrese de que las alertas están configuradas para las alertas y notificaciones de Azure Service Health",
- "waf": "Operaciones"
+ "text": "Asegúrese de que \"Siempre activado\" esté habilitado para todas las aplicaciones de funciones que se ejecutan en el plan de App Service",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "Medio",
- "text": "Configure el registro de Azure VMware Solution para que se envíe a una cuenta de Azure Storage o Azure EventHub para su procesamiento",
- "waf": "Operaciones"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Si se requiere una visión profunda de VMware vSphere: ¿Se utiliza vRealize Operations o vRealize Network Insights en la solución?",
- "waf": "Operaciones"
+ "text": "Empareje una aplicación de funciones con su propia cuenta de almacenamiento. Intente no volver a usar las cuentas de almacenamiento para las aplicaciones de funciones a menos que estén estrechamente acopladas",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
- "severity": "Alto",
- "text": "Asegúrese de que la directiva de almacenamiento de vSAN para las máquinas virtuales NO sea la directiva de almacenamiento predeterminada, ya que esta directiva aplica el aprovisionamiento grueso",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
+ "severity": "Medio",
+ "text": "Aproveche Azure DevOps o GitHub para optimizar la CI/CD y proteger el código de la aplicación de funciones",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Asegúrese de que las bibliotecas de contenido de vSphere no se coloquen en vSAN, ya que vSAN es un recurso finito",
+ "text": "Si usa certificados TLS administrados por el cliente con Azure Front Door, use la versión de certificado \"más reciente\". Reduzca el riesgo de interrupciones causadas por la renovación manual de certificados",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de que los repositorios de datos de la solución de copia de seguridad se almacenen fuera del almacenamiento de vSAN. Ya sea en Azure nativo o en un almacén de datos respaldado por un grupo de discos",
- "waf": "Operaciones"
+ "text": "Asegúrese de que usa la SKU de Application Gateway v2",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "Medio",
- "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se administran de forma híbrida mediante Azure Arc para servidores (Arc para Azure VMware Solution está en versión preliminar)",
- "waf": "Operaciones"
+ "text": "Asegúrese de que usa la SKU estándar para los equilibradores de carga de Azure",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
"severity": "Medio",
- "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se supervisan mediante Azure Log Analytics y Azure Monitor",
- "waf": "Operaciones"
+ "text": "Asegúrese de que las direcciones IP de front-end de los equilibradores de carga sean con redundancia de zona (a menos que necesite front-end zonal).",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Inclusión de cargas de trabajo que se ejecutan en Azure VMware Solution en las herramientas de administración de actualizaciones existentes o en Azure Update Management",
- "waf": "Operaciones"
+ "text": "Application Gateways v2 debe implementarse en subredes con prefijos IP iguales o mayores que /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "La administración de proxies inversos en general y WAF en particular está más cerca de la aplicación que de la red, por lo que pertenecen a la misma suscripción que la aplicación. La centralización de Application Gateway y WAF en la suscripción de conectividad puede ser correcta si la administra un solo equipo.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Uso de Azure Policy para incorporar cargas de trabajo de Azure VMware Solution en las soluciones de administración, supervisión y seguridad de Azure",
- "waf": "Operaciones"
+ "text": "Implemente Azure Application Gateway v2 o NVA de asociados que se usan para proxy de conexiones HTTP(S) entrantes dentro de la red virtual de la zona de aterrizaje y con las aplicaciones que protegen.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de que las cargas de trabajo que se ejecutan en Azure VMware Solution se incorporan a Microsoft Defender for Cloud",
+ "text": "Utilice una red DDoS o planes de protección IP para todas las direcciones IP públicas en las zonas de aterrizaje de aplicaciones.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de que las copias de seguridad no se almacenen en vSAN, ya que vSAN es un recurso finito",
+ "text": "Configure el escalado automático con una cantidad mínima de instancias de dos.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "¿Se han considerado todas las soluciones de recuperación ante desastres y se ha decidido por la mejor solución para su negocio? [SRM/JetStream/Zerto/Veeam/...]",
+ "text": "Implementación de Application Gateway en zonas de disponibilidad",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Uso de Azure Site Recovery cuando la tecnología de recuperación ante desastres sea IaaS nativa de Azure",
- "waf": "Fiabilidad"
+ "text": "Use Azure Front Door con directivas de WAF para entregar y ayudar a proteger aplicaciones HTTP/S globales que abarcan varias regiones de Azure.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
+ "severity": "Medio",
+ "text": "Al usar Front Door y Application Gateway para ayudar a proteger las aplicaciones HTTP/S, use directivas de WAF en Front Door. Bloquee Application Gateway para recibir tráfico solo de Front Door.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Seguridad"
+ },
+ {
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"severity": "Alto",
- "text": "Utilice planes de recuperación automatizados con cualquiera de las soluciones ante desastres, evite las tareas manuales tanto como sea posible",
+ "text": "Use el Administrador de tráfico para entregar aplicaciones globales que abarquen protocolos distintos de HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "Bajo",
+ "text": "Si los usuarios solo necesitan acceso a aplicaciones internas, ¿se ha considerado Microsoft Entra ID Application Proxy como una alternativa a Azure Virtual Desktop (AVD)?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Seguridad"
+ },
+ {
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"severity": "Medio",
- "text": "Usar el par de regiones geopolíticas como entorno secundario de recuperación ante desastres",
- "waf": "Fiabilidad"
+ "text": "Para reducir el número de puertos de firewall abiertos para las conexiones entrantes en la red, considere la posibilidad de usar el proxy de aplicación de identificador de Microsoft Entra para proporcionar a los usuarios remotos acceso seguro y autenticado a las aplicaciones internas.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"severity": "Alto",
- "text": "Utilice 2 espacios de direcciones diferentes entre las regiones, por ejemplo: 10.0.0.0/16 y 192.168.0.0/16 para las diferentes regiones",
- "waf": "Fiabilidad"
+ "text": "Implemente la directiva de WAF para Front Door en modo de \"Prevención\" para que el firewall de aplicaciones web tome las medidas adecuadas para permitir o denegar el tráfico.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
- "severity": "Medio",
- "text": "¿Se usará Global Reach de ExpressRoute para la conectividad entre las nubes privadas de Azure VMware Solution principal y secundaria, o el enrutamiento se realiza a través de aplicaciones virtuales de red?",
- "waf": "Fiabilidad"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Evite combinar Azure Traffic Manager y Azure Front Door.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
- "severity": "Medio",
- "text": "¿Se han considerado todas las soluciones de copia de seguridad y se ha decidido por la mejor solución para su negocio? [ MABS/CommVault/Metallic.io/Veeam/ . ]",
- "waf": "Fiabilidad"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use el mismo nombre de dominio en Azure Front Door y en su origen. Los nombres de host no coincidentes pueden causar errores sutiles.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
- "severity": "Medio",
- "text": "Implemente la solución de copia de seguridad en la misma región que la nube privada de Azure VMware Solution",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "Bajo",
+ "text": "Deshabilite los sondeos de estado cuando solo haya un origen en un grupo de origen de Azure Front Door.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Implementación de la solución de copia de seguridad fuera de vSan, en componentes nativos de Azure",
+ "text": "Seleccione puntos de conexión de sondeo de estado correctos para Azure Front Door. Considere la posibilidad de crear puntos de conexión de estado que comprueben todas las dependencias de la aplicación.",
"waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
"severity": "Bajo",
- "text": "¿Existe un proceso para solicitar una restauración de los componentes de VMware administrados por la plataforma Azure?",
- "waf": "Fiabilidad"
+ "text": "Use sondeos de estado de HEAD con Azure Front Door para reducir el tráfico que Front Door envía a la aplicación.",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "Bajo",
- "text": "En el caso de las implementaciones manuales, se deben documentar todas las configuraciones e implementaciones",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
+ "severity": "Alto",
+ "text": "Use Azure NAT Gateway en lugar de las reglas de salida de Load Balancer para mejorar la escalabilidad de SNAT",
+ "waf": "Fiabilidad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "Bajo",
- "text": "En el caso de las implementaciones manuales, considere la posibilidad de implementar bloqueos de recursos para evitar acciones accidentales en la nube privada de Azure VMware Solution",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use certificados TLS administrados con Azure Front Door. Reduzca los costos operativos y el riesgo de interrupciones debido a las renovaciones de certificados.",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Para implementaciones automatizadas, implemente una nube privada mínima y escale según sea necesario",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
+ "severity": "Medio",
+ "text": "Defina la configuración de WAF de Azure Front Door como código. Mediante el uso de código, puede adoptar más fácilmente una nueva versión del conjunto de reglas y obtener protección adicional.",
"waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "Bajo",
- "text": "En el caso de las implementaciones automatizadas, solicite o reserve una cuota antes de iniciar la implementación",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use TLS de un extremo a otro con Azure Front Door. Use TLS para las conexiones de los clientes a Front Door y de Front Door al origen.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "Bajo",
- "text": "En el caso de la implementación automatizada, asegúrese de que se crean bloqueos de recursos relevantes a través de la automatización o a través de Azure Policy para una gobernanza adecuada",
- "waf": "Operaciones"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
+ "severity": "Medio",
+ "text": "Use el redireccionamiento de HTTP a HTTPS con Azure Front Door. Apoye a los clientes más antiguos redirigiéndolos a una solicitud HTTPS automáticamente.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Implemente nombres comprensibles para las claves de autorización ExR para permitir una fácil identificación del propósito y uso de las claves.",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite el WAF de Azure Front Door. Proteja su aplicación de una variedad de ataques.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Uso de Key Vault para almacenar secretos y claves de autorización cuando se usan principios de servicio independientes para implementar Azure VMware Solution y ExpressRoute",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Ajuste el WAF de Azure Front Door para su carga de trabajo configurando el WAF en modo de detección para reducir y corregir las detecciones de falsos positivos.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Defina dependencias de recursos para serializar acciones en IaC cuando sea necesario implementar muchos recursos en Azure VMware Solution, ya que Azure VMware Solution solo admite un número limitado de operaciones paralelas.",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite la característica de inspección del cuerpo de la solicitud habilitada en la directiva WAF de Azure Front Door.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "Bajo",
- "text": "Al realizar la configuración automatizada de segmentos de NSX-T con una única puerta de enlace de nivel 1, use las API de Azure Portal en lugar de las API de NSX-Manager",
- "waf": "Operaciones"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite los conjuntos de reglas predeterminadas de WAF de Azure Front Door. Los conjuntos de reglas predeterminados detectan y bloquean ataques comunes.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
- "severity": "Medio",
- "text": "Si tiene la intención de usar el escalado horizontal automatizado, asegúrese de solicitar una cuota suficiente de Azure VMware Solution para las suscripciones que ejecutan Azure VMware Solution",
- "waf": "Rendimiento"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite el conjunto de reglas de protección contra bots de WAF de Azure Front Door. Las reglas de bots detectan bots buenos y malos.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Cuando tenga la intención de usar la reducción horizontal automatizada, asegúrese de tener en cuenta los requisitos de la directiva de almacenamiento antes de realizar dicha acción",
- "waf": "Rendimiento"
+ "text": "Use la versión más reciente del conjunto de reglas de Azure Front Door WAF. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Las operaciones de escalado siempre deben serializarse dentro de un único SDDC, ya que solo se puede realizar una operación de escalado a la vez (incluso cuando se utilizan varios clústeres)",
- "waf": "Rendimiento"
+ "text": "Agregue la limitación de velocidad al WAF de Azure Front Door. La limitación de velocidad bloquea a los clientes que envían accidental o intencionalmente grandes cantidades de tráfico en un corto período de tiempo.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Considerar y validar las operaciones de escalado en soluciones de terceros utilizadas en la arquitectura (compatibles o no)",
- "waf": "Rendimiento"
+ "text": "Use un umbral alto para los límites de frecuencia de WAF de Azure Front Door. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
- "severity": "Medio",
- "text": "Defina y aplique límites máximos de escalado vertical y horizontal para su entorno en las automatizaciones",
- "waf": "Rendimiento"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "Bajo",
+ "text": "Si no espera tráfico de todas las regiones geográficas, utilice filtros geográficos para bloquear el tráfico de países no esperados.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Implemente reglas de supervisión para supervisar las operaciones de escalado automatizadas y supervisar el éxito y el fracaso para permitir respuestas adecuadas (automatizadas)",
- "waf": "Operaciones"
+ "text": "Especifique la ubicación desconocida (ZZ) al filtrar geográficamente el tráfico con el WAF de Azure Front Door. Evite bloquear accidentalmente solicitudes legítimas cuando las direcciones IP no puedan coincidir geográficamente.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
"severity": "Alto",
- "text": "Al usar MON, tenga en cuenta los límites de las máquinas virtuales configuradas simultáneamente (límite de MON para HCX [400 - estándar, 1000 - dispositivo más grande])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Fiabilidad"
+ "text": "Habilite el conjunto de reglas de protección contra bots de WAF de Azure Application Gateway. Las reglas de bots detectan bots buenos y malos.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
"severity": "Alto",
- "text": "Al usar MON, no puede habilitar MON en más de 100 extensiones de red",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
- "severity": "Medio",
- "text": "Si utiliza una conexión VPN para migraciones, ajuste el tamaño de su MTU en consecuencia.",
- "waf": "Rendimiento"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
- "severity": "Medio",
- "text": "En el caso de las regiones de baja conectividad que se conectan a Azure (500 Mbps o menos), considere la posibilidad de implementar el dispositivo de optimización de WAN de HCX",
- "waf": "Rendimiento"
+ "text": "Habilite la característica de inspección del cuerpo de la solicitud habilitada en la directiva WAF de Azure Application Gateway.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
- "severity": "Medio",
- "text": "Asegúrese de que las migraciones se inicien desde el dispositivo local y NO desde el dispositivo en la nube (NO realice una migración inversa)",
- "waf": "Fiabilidad"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Ajuste el WAF de Azure Application Gateway en modo de detección para la carga de trabajo. Reduzca las detecciones de falsos positivos.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
"link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "severity": "Medio",
- "text": "Cuando se usa Azure NetApp Files para ampliar el almacenamiento de Azure VMware Solution, considere la posibilidad de usarlo como almacén de datos de VMware en lugar de adjuntarlo directamente a una máquina virtual.",
- "waf": "Fiabilidad"
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Implemente la directiva de WAF para Application Gateway en modo \"Prevención\".",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de que se usa una puerta de enlace de ExpressRoute dedicada para soluciones de almacenamiento de datos externos",
- "waf": "Fiabilidad"
+ "text": "Agregue la limitación de velocidad al WAF de Azure Application Gateway. La limitación de velocidad bloquea a los clientes que envían accidental o intencionalmente grandes cantidades de tráfico en un corto período de tiempo.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de que FastPath está habilitado en la puerta de enlace de ExpressRoute que se usa para las soluciones de almacenamiento de datos externos",
- "waf": "Fiabilidad"
+ "text": "Use un umbral alto para los límites de velocidad de WAF de Azure Application Gateway. Los umbrales de límite de velocidad altos evitan el bloqueo del tráfico legítimo, a la vez que proporcionan protección contra un número extremadamente alto de solicitudes que podrían sobrecargar su infraestructura. ",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "severity": "Alto",
- "text": "Si utiliza un clúster ampliado, asegúrese de que la solución de recuperación ante desastres seleccionada sea compatible con el proveedor",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "severity": "Bajo",
+ "text": "Si no espera tráfico de todas las regiones geográficas, utilice filtros geográficos para bloquear el tráfico de países no esperados.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "severity": "Alto",
- "text": "Si utiliza un clúster ampliado, asegúrese de que el Acuerdo de Nivel de Servicio proporcionado cumpla sus requisitos",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Especifique la ubicación desconocida (ZZ) al filtrar geográficamente el tráfico con el WAF de Azure Application Gateway. Evite bloquear accidentalmente solicitudes legítimas cuando las direcciones IP no puedan coincidir geográficamente.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
- "severity": "Alto",
- "text": "Si usa un clúster extendido, asegúrese de que ambos circuitos ExpressRoute están conectados al centro de conectividad.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Use la versión más reciente del conjunto de reglas de WAF de Azure Application Gateway. Las actualizaciones del conjunto de reglas se actualizan periódicamente para tener en cuenta el panorama actual de amenazas.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "Alto",
- "text": "Si usa un clúster extendido, asegúrese de que ambos circuitos ExpressRoute tengan habilitado GlobalReach.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Agregue la configuración de diagnóstico para guardar los registros de WAF de Azure Application Gateway.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "severity": "Alto",
- "text": "Haga que la configuración de tolerancia ante desastres del sitio se considere y cambie correctamente para su negocio si es necesario.",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
+ "severity": "Medio",
+ "text": "Agregue la configuración de diagnóstico para guardar los registros de WAF de Azure Front Door.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
- "severity": "Alto",
- "text": "Seleccione el plan de hospedaje de aplicaciones lógicas adecuado en función de los requisitos empresariales y de SLO",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Envíe registros de WAF de Azure Application Gateway a Microsoft Sentinel.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
- "severity": "Alto",
- "text": "Proteja las aplicaciones lógicas de errores de región con redundancia de zona y zonas de disponibilidad",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
+ "severity": "Medio",
+ "text": "Envíe registros de WAF de Azure Front Door a Microsoft Sentinel.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
- "severity": "Alto",
- "text": "Considere la posibilidad de una estrategia de recuperación ante desastres entre regiones para cargas de trabajo críticas",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Defina la configuración de WAF de Azure Application Gateway como código. Mediante el uso de código, puede adoptar más fácilmente una nueva versión del conjunto de reglas y obtener protección adicional.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
- "severity": "Alto",
- "text": "Si se implementa en un entorno aislado, use o migre a App Service Environment (ASE) v3",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
+ "severity": "Medio",
+ "text": "Utilice las políticas de WAF en lugar de la configuración de WAF heredada.",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Aproveche Azure DevOps o GitHub para simplificar la CI/CD y proteger el código de la aplicación lógica",
- "waf": "Operaciones"
+ "text": "Filtre el tráfico entrante en los back-end para que solo acepten conexiones de la subred de Application Gateway, por ejemplo, con grupos de seguridad de red.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"severity": "Medio",
- "text": "Aproveche el cuaderno de estrategias de resistencia de FTA para Azure Data Factory",
- "waf": "Fiabilidad"
+ "text": "Asegúrese de que los orígenes solo reciben tráfico de la instancia de Azure Front Door.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "Alto",
- "text": "Uso de canalizaciones con redundancia de zona en regiones que admiten zonas de disponibilidad",
- "waf": "Fiabilidad"
+ "text": "Debe cifrar el tráfico a los servidores backend.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
- "severity": "Medio",
- "text": "Uso de DevOps para realizar copias de seguridad de las plantillas de ARM con la integración de Github/Azure DevOps ",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Debe utilizar un firewall de aplicaciones web.",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de replicar las máquinas virtuales de Integration Runtime autohospedadas en otra región ",
- "waf": "Fiabilidad"
+ "text": "Redirigir HTTP a HTTPS",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Asegúrese de replicar o duplicar la red en la región hermana. Tiene que hacer una copia de la red virtual en otra región",
- "waf": "Fiabilidad"
+ "text": "Utilice cookies administradas por puerta de enlace para dirigir el tráfico de una sesión de usuario al mismo servidor para su procesamiento",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "Si las canalizaciones de ADF usan Key Vault, no tiene que hacer nada para replicar Key Vault. Key Vault es un servicio administrado y Microsoft se encarga de ello por ti",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "severity": "Bajo",
- "text": "Si utiliza la integración de Keyvault, utilice el Acuerdo de Nivel de Servicio de Keyvault para comprender su disponibilidad",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Habilite el drenaje de conexiones durante las actualizaciones de servicio planeadas para evitar la pérdida de conexión con los miembros existentes del grupo de back-end",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "Medio",
- "text": "Azure Spring Apps permite dos implementaciones para cada aplicación, de las cuales solo una recibe tráfico de producción. Puede lograr cero tiempo de inactividad con estrategias de implementación azul verde. La implementación azul verde solo está disponible en los niveles Estándar y Enterprise. Puede automatizar la implementación mediante CI/CD con acciones de ADO/GitHub",
- "waf": "Fiabilidad"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "severity": "Bajo",
+ "text": "Cree páginas de error personalizadas para mostrar una experiencia de usuario personalizada",
+ "waf": "Operaciones"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Las instancias de Azure Spring Apps se pueden crear en varias regiones para las aplicaciones y el tráfico se puede enrutar mediante Traffic Manager o Front Door.",
- "waf": "Fiabilidad"
+ "text": "Edite las solicitudes HTTP y los encabezados de respuesta para facilitar el enrutamiento y el intercambio de información entre el cliente y el servidor",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "En la región admitida, Azure Spring Apps se puede implementar como zona redundante, lo que significa que las instancias se distribuyen automáticamente entre las zonas de disponibilidad. Esta función solo está disponible en los niveles Standard y Enterprise.",
- "waf": "Fiabilidad"
+ "text": "Configure Front Door para optimizar el enrutamiento del tráfico web global y el rendimiento y la confiabilidad del usuario final de primer nivel a través de una rápida conmutación por error global",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Usar más de 1 instancia de aplicación para las aplicaciones",
- "waf": "Fiabilidad"
+ "text": "Uso del equilibrio de carga de la capa de transporte",
+ "waf": "Rendimiento"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Supervise Azure Spring Apps con registros, métricas y seguimiento. Integre ASA con la información de las aplicaciones, realice un seguimiento de los errores y cree libros de trabajo.",
- "waf": "Fiabilidad"
+ "text": "Configure el enrutamiento basado en el host o el nombre de dominio para varias aplicaciones web en una sola puerta de enlace",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"severity": "Medio",
- "text": "Configuración del escalado automático en Spring Cloud Gateway",
- "waf": "Fiabilidad"
+ "text": "Centralice la administración de certificados SSL para reducir la sobrecarga de cifrado y descifrado de una granja de servidores backend",
+ "waf": "Seguridad"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
"severity": "Bajo",
- "text": "Habilite el escalado automático para las aplicaciones con el consumo estándar y el plan dedicado.",
- "waf": "Fiabilidad"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
- "severity": "Medio",
- "text": "Use el plan Enterprise para obtener soporte comercial de Spring Boot para aplicaciones de misión crítica. Con otros niveles, obtienes soporte OSS.",
- "waf": "Fiabilidad"
+ "text": "Uso de Application Gateway para obtener compatibilidad nativa con los protocolos WebSocket y HTTP/2",
+ "waf": "Seguridad"
}
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
@@ -9005,7 +9005,7 @@
],
"status": [
{
- "description": "Esta comprobación aún no se ha examinado",
+ "description": "Este control aún no se ha examinado",
"name": "No verificado"
},
{
diff --git a/checklists/waf_checklist.ja.json b/checklists/waf_checklist.ja.json
index 3b40555f4..000155a97 100644
--- a/checklists/waf_checklist.ja.json
+++ b/checklists/waf_checklist.ja.json
@@ -1,133 +1,33 @@
{
"items": [
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
- "severity": "高い",
- "text": "ビジネスと SLO の要件に基づいて適切なロジック アプリのホスティング プランを選択する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
- "severity": "高い",
- "text": "ゾーンの冗長性と可用性ゾーンを使用してリージョンの障害からロジック アプリを保護する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
- "severity": "高い",
- "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
- "severity": "高い",
- "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
- "severity": "中程度",
- "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、ロジック アプリ コードを保護",
- "waf": "オペレーションズ"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "中程度",
- "text": "Azure Spring Apps では、アプリごとに 2 つのデプロイが許可され、そのうちの 1 つだけが運用トラフィックを受信します。ブルーグリーンデプロイ戦略により、ダウンタイムをゼロにすることができます。ブルー グリーン デプロイは、Standard レベルと Enterprise レベルでのみ使用できます。CI/CD と ADO/GitHub Actions を使用してデプロイを自動化できます",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
- "severity": "中程度",
- "text": "Azure Spring Apps インスタンスは、アプリケーション用に複数のリージョンに作成でき、トラフィックは Traffic Manager/Front Door によってルーティングできます。",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
- "severity": "中程度",
- "text": "サポートされているリージョンでは、Azure Spring Apps をゾーン冗長としてデプロイできるため、インスタンスは可用性ゾーン間で自動的に分散されます。この機能は、Standard レベルと Enterprise レベルでのみ使用できます。",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
- "severity": "中程度",
- "text": "アプリに複数のアプリ インスタンスを使用する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
- "severity": "中程度",
- "text": "Azure Spring Apps をログ、メトリック、トレースで監視します。ASA を Application Insights と統合し、障害を追跡し、ブックを作成します。",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "中程度",
- "text": "Spring Cloud Gateway で自動スケーリングを設定する",
+ "text": "フレキシブル サーバーの活用",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
- "severity": "低い",
- "text": "Standard 従量課金プランと専用プランのアプリの自動スケーリングを有効にします。",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
+ "severity": "高い",
+ "text": "Availability Zones (地域的に適用可能な場合) を活用する",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"severity": "中程度",
- "text": "ミッション クリティカルなアプリの Spring Boot の商用サポートには、Enterprise プランを使用します。他のレベルでは、OSS のサポートを受けることができます。",
+ "text": "リージョン間の DR シナリオでのデータイン レプリケーションの活用",
"waf": "確実"
},
{
@@ -290,3022 +190,2490 @@
"waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
- "severity": "中程度",
- "text": "グローバルレベルでのエラー処理ポリシーの実装",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "severity": "高い",
+ "text": "2 つのレプリカで読み取り操作の可用性を 99.9% にする",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "中程度",
- "text": "すべての API ポリシーに要素が含まれていることを確認します。",
- "waf": "オペレーションズ"
+ "text": "3 つのレプリカで読み取り/書き込み操作の可用性を 99.9% に向上させる",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
- "severity": "中程度",
- "text": "ポリシーフラグメントを使用して、複数の API で同じポリシー定義を繰り返さないようにする",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
+ "severity": "高い",
+ "text": "読み取りレプリカや書き込みレプリカを有効にすることでアベイラビリティーゾーンを活用する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"severity": "中程度",
- "text": "API の収益化を計画している場合は、「収益化のサポート」の記事でおすすめの方法をご確認ください",
- "waf": "オペレーションズ"
+ "text": "リージョンの冗長性については、地理的リージョン間で検索インデックスをレプリケートする自動化された方法が提供されないため、検索用に 2 つ以上のリージョンにサービスを手動で作成します",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
- "severity": "高い",
- "text": "診断設定を有効にしてログを Azure Monitor にエクスポートする",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
+ "severity": "中程度",
+ "text": "複数のサービス間でデータを同期するには、複数のサービスでコンテンツを更新するためにインデクサーを使用するか、複数のサービスでコンテンツの更新をプッシュするために REST API を使用する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"severity": "中程度",
- "text": "Application Insights を有効にして、より詳細なテレメトリを実現する",
- "waf": "オペレーションズ"
+ "text": "Azure Traffic Manager を使用して要求を調整する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
"severity": "高い",
- "text": "最も重要なメトリックに関するアラートを構成する",
- "waf": "オペレーションズ"
+ "text": "Azure Cognitive Search インデックスをバックアップおよび復元します。このサンプル コードを使用して、インデックス定義とスナップショットを一連の Json ファイルにバックアップします",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
+ "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": "カスタム SSL 証明書が Azure Key Vault に格納され、安全にアクセスして更新できるようにする",
- "waf": "安全"
+ "text": "共鳴可能なAIのためのメタプロンプトガードレールに従う",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "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": "Azure AD を使用して API (データ プレーン) への受信要求を保護する",
- "waf": "安全"
+ "text": "APIM や AI Central などのソリューションを使用したゲートウェイ パターンを検討して、レート制限、負荷分散、認証、ログ記録を改善します",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "severity": "中程度",
- "text": "Microsoft Entra ID を使用して開発者ポータルでユーザーを認証する",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "severity": "中程度",
- "text": "適切なグループを作成して、製品の可視性を制御します",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
- "severity": "中程度",
- "text": "バックエンド機能を使用して、冗長な API バックエンド構成を排除します",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
+ "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": "オペレーションズ"
+ "text": "処理された推論トークン、生成された完了トークンなどのメトリックを観察し、レート制限を監視します",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
- "severity": "中程度",
- "text": "DR の場合は、99.99% の SLA で 2 つ以上のリージョンにスケーリングされたデプロイで Premium レベルを活用します",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "中程度",
- "text": "少なくとも 1 つのユニットを 2 つ以上の可用性ゾーンにデプロイして、SLA を 99.99% に向上させる",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "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": "自動バックアップ・ルーチンがあることを確認する",
- "waf": "確実"
+ "text": "API キーの代わりにマネージド ID で Microsoft Entra 認証を使用する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
- "severity": "中程度",
- "text": "ポリシーを使用して、フェイルオーバー・バックエンドURLとキャッシュを追加し、コールの失敗を減らします。",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "低い",
- "text": "高パフォーマンス レベルでログを記録する必要がある場合は、Event Hubs ポリシーを検討してください",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
- "severity": "中程度",
- "text": "調整ポリシーを適用して、毎秒の要求数を制御する",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
+ "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": "負荷が増加したときにインスタンスの数をスケールアウトするように自動スケーリングを構成する",
+ "text": "トークンサイズ、ストリーミングオプションを制限することにより、システムのレイテンシーを改善します",
"waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
+ "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": "セルフホステッド ゲートウェイをデプロイする場所は、バックエンド API に近いリージョンが Azure にありません。",
+ "text": "弾力性の要求を見積もり、優先順位に基づいて同期要求とバッチ要求の分離を決定します。優先度が高い場合は同期アプローチを使用し、優先度が低い場合はキューを使用した非同期バッチ処理が推奨されます",
"waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "severity": "中程度",
- "text": "運用環境のワークロードには Premium レベルを使用します。",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
+ "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": "複数リージョン モデルでは、ポリシーを使用して、可用性または待機時間に基づいてリージョン バックエンドに要求をルーティングします。",
- "waf": "確実"
+ "text": "プロビジョニングされたスループットユニット (PTU) を使用している場合は、オーバーフローリクエストに対して Token-Per Minute (TPM) デプロイメントをデプロイすることを検討してください。ゲートウェイを使用して、PTU の制限に達したときに要求を TPM デプロイにルーティングします。",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
+ "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": "APIM の制限に注意する",
- "waf": "確実"
+ "text": "適切なタスクに適したモデルを選択してください。速度、応答の品質、出力の複雑さの間で適切なトレードオフを持つモデルを選択する",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
- "severity": "高い",
- "text": "セルフホステッド ゲートウェイのデプロイに回復性があることを確認します。",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
+ "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": "複数リージョンのデプロイに APIM の前で Azure Front Door を使用するUse Azure Front Door in front of APIM for multi-region deployment",
+ "text": "微調整によってモデルのパフォーマンスが向上したかどうかを知るための微調整を行わずに、パフォーマンスのベースラインを設定する",
"waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "severity": "中程度",
- "text": "仮想ネットワーク (VNet) 内にサービスをデプロイするDeploy the service within a Virtual Network (VNet)",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
- "severity": "中程度",
- "text": "ネットワーク セキュリティ グループ (NSG) をサブネットにデプロイして、APIM との間のトラフィックを制限または監視します。",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
+ "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": "プライベート エンドポイントをデプロイして、APIM が VNet にデプロイされていない場合に受信トラフィックをフィルター処理します。",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
- "severity": "高い",
- "text": "パブリックネットワークアクセスの無効化",
- "waf": "安全"
+ "text": "ワークロードに対してTPMとRPMの適切なクォータがあることを確認します",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
+ "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": "PowerShell 自動化スクリプトで管理を簡素化",
- "waf": "オペレーションズ"
+ "text": "HAIツールキットガイダンスの考慮事項を確認し、それらの相互作用の実践をslutionに適用します",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
+ "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": "Infrastructure-as-code を使用して APIM を構成します。Cloud Adaption Framework APIM Landing Zone Accelerator から DevOps のベスト プラクティスを確認する",
- "waf": "オペレーションズ"
+ "text": "ファインチューニングが採用されている場合は、リージョン間で個別の微調整モデルをデプロイします",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
+ "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": "Visual Studio Code APIM 拡張機能の使用を促進して API 開発を迅速化する",
- "waf": "オペレーションズ"
+ "text": "重要なデータを定期的にバックアップおよびレプリケートして、データの損失やシステム障害が発生した場合のデータの可用性と回復性を確保します。Azure のバックアップおよびディザスター リカバリー サービスを活用して、データを保護します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
- "severity": "中程度",
- "text": "DevOpsとCI/CDをワークフローに実装する",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "severity": "中程度",
- "text": "クライアント証明書認証を使用した API の保護",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
- "severity": "中程度",
- "text": "クライアント証明書認証を使用したバックエンド サービスのセキュリティ保護",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
- "severity": "中程度",
- "text": "「OWASP API Security Top 10 の脅威を軽減するための推奨事項」の記事を確認し、API に適用できるものを確認します",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
- "severity": "中程度",
- "text": "承認機能を使用して、バックエンド API の OAuth 2.0 トークンの管理を簡素化します",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "severity": "高い",
- "text": "転送中の情報を暗号化する場合は、最新のTLSバージョンを使用します。可能であれば、古くて不要なプロトコルと暗号を無効にします。",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
+ "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 Key Vault に格納され、安全にアクセスして更新できるようにする",
+ "text": "Azure Defender を利用して、セキュリティの脅威を検出して対応し、監視とアラートのメカニズムを設定して、疑わしいアクティビティや侵害を特定します。Azure Sentinel を活用して高度な脅威の検出と対応を実現",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "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": "可能な限りマネージド ID を使用して、他の Azure リソースに対する認証を行う",
+ "text": "コンプライアンス規制を遵守するためのデータ保持および廃棄ポリシーを確立します。不要になったデータに対して安全な削除方法を実装し、データの保持と廃棄活動の監査証跡を維持します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
+ "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": "Web アプリケーション ファイアウォール (WAF) を使用するには、APIM の前に Application Gateway をデプロイします",
+ "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": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"severity": "中程度",
- "text": "有効期間の長い取り消し可能なトークンを使用し、トークンをキャッシュし、Microsoft ID ライブラリを使用してサイレントに取得します",
- "waf": "確実"
+ "text": "データセキュリティのベストプラクティス、データの安全な取り扱いの重要性、データ侵害に関連する潜在的なリスクについて、従業員を教育します。データセキュリティプロトコルに熱心に従うように促します。",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
+ "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": "確実"
+ "text": "データの機密性のレベルが異なる場合は、レベルごとに個別のインデックスを作成することを検討してください。たとえば、一般的なデータ用に 1 つのインデックスを作成し、機密データ用に別のインデックスを作成し、それぞれ異なるアクセス プロトコルで管理することができます",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"severity": "中程度",
- "text": "カスタムブランドアセットはCDNでホストする必要がある",
- "waf": "パフォーマンス"
+ "text": "分離をさらに一歩進めて、機密性の高いデータセットをサービスの異なるインスタンスに配置します。各インスタンスは、独自のRBACポリシーのセットで制御できます",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
- "severity": "低い",
- "text": "複数のIDプロバイダーを持っている(つまり、Microsoft、Google、Facebookアカウントでログインする)",
- "waf": "確実"
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
+ "service": "Azure OpenAI",
+ "severity": "高い",
+ "text": "機密情報から生成された埋め込みとベクトルは、それ自体が機密性が高いことを認識します。このデータには、ソースマテリアルと同じ保護対策を提供する必要があります",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "中程度",
- "text": "VM レベルでの高可用性に関する VM ルールに従う (Premium ディスク、リージョン内の 2 つ以上、異なる可用性ゾーン内)",
- "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": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "中程度",
- "text": "複製しないでください!レプリケーションにより、ディレクトリ同期に関する問題が発生する可能性があります",
- "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": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "中程度",
- "text": "マルチリージョンのアクティブ/アクティブを持つ",
- "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": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
- "severity": "中程度",
- "text": "Azure AD Domain Service スタンプを追加のリージョンと場所に追加する",
- "waf": "確実"
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
+ "service": "Azure OpenAI",
+ "severity": "高い",
+ "text": "ネットワークのセグメンテーションとアクセス制御を実装して、LLMアプリケーションへのアクセスを許可されたユーザーとシステムのみに制限し、横方向の移動を防ぎます",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "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": "DR にレプリカ セットを使用する",
- "waf": "確実"
+ "text": "LLMLingua や gprtrim などのプロンプト圧縮ツールを使用します",
+ "waf": "コストの最適化"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "text": "Azure Monitor のデータ収集ルール - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "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.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "text": "基になるデータソースが見つからないバックアップインスタンスを確認する",
- "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "text": "関連づけられていないサービス(ディスク、NIC、IPアドレスなど)を削除またはアーカイブする",
- "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.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "text": "ミッション クリティカルでないアプリケーションの Site Recovery ストレージとバックアップのバランスを考慮する",
- "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.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "text": "40 の異なるログ分析ワークスペース間で支出と節約の機会を確認する - 非運用ワークスペースに異なる保持とデータ収集を使用する - 認識と階層サイズ設定のための日次上限を作成する - 日次上限を設定する場合は、上限に達したときにアラートを作成するだけでなく、ある割合 (90% など) に達したときに通知されるアラート ルールも作成してください。- 可能であればワークスペースの変革を検討する - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "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.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "text": "ログのパージポリシーと自動化を適用する(必要に応じて、ログをコールドストレージに移動できます)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "text": "ディスクが本当に必要かどうかを確認し、必要でない場合は削除します。必要な場合は、下位のストレージ階層を見つけるか、バックアップを使用します。",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "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.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "text": "未使用のストレージを下位階層に移動し、カスタマイズされたルールを使用することを検討する - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "text": "advisor が VM の適切なサイズ設定用に構成されていることを確認する",
- "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.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "コスト分析でメーターカテゴリライセンスを検索して確認してください",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "text": "すべての Windows VM でスクリプトを実行する https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- Windows VM が頻繁に作成される場合は、ポリシーの実装を検討してください",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "text": "これは、すでにライセンスを持っている場合は、AHUBの下に置くこともできます https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "text": "予約済み VM ファミリを柔軟性オプションで統合する (4 から 5 ファミリ以下)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "text": "Azure 予約インスタンスを利用する: この機能を使用すると、VM を 1 年または 3 年間予約できるため、PAYG 価格と比較して大幅なコスト削減が実現します。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "text": "より大きなディスクのみ予約できます => 1 TiB -",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "text": "適切なサイズ最適化の後",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "text": "該当するかどうかを確認し、ポリシー/変更 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 を適用します",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "text": "VM +ライセンス部分の割引(ahub + 3YRI)は約70%の割引です",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "text": "需要に合わせて、フラットなサイジングではなく、VMSS の使用を検討してください",
- "waf": "費用"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "text": "AKS オートスケーラーを使用してクラスターの使用量に一致させる (ポッドの要件がスケーラーと一致していることを確認する)",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "text": "該当する場合は、復旧ポイントを vault-archive に移動します (検証)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "text": "可能な場合は、フォールバックでスポット VM を使用することを検討してください。クラスターの自動終了を検討してください。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "text": "関数 - 接続の再利用",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "text": "関数 - データをローカルにキャッシュする",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "text": "関数 - コールド スタート - 「パッケージから実行」機能を使用します。このようにして、コードは単一のzipファイルとしてダウンロードされます。これにより、たとえば、多くのノードモジュールを持つJavascript関数が大幅に改善される可能性があります。言語固有のツールを使用してパッケージサイズを縮小します (ツリーを揺るがす Javascript アプリケーションなど)。",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "text": "関数 - 関数を暖かく保つ",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "text": "さまざまな関数で自動スケーリングを使用する場合、すべてのリソースのすべての自動スケーリングを駆動する 1 つが存在する可能性があるため、別の従量課金プランに移行することを検討してください (また、CPU のより高いプランを検討してください)",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "text": "特定のプランの関数アプリはすべて一緒にスケーリングされるため、スケーリングに関する問題はプラン内のすべてのアプリに影響を与える可能性があります。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "text": "「待機時間」に対して請求されますか?この質問は、通常、非同期操作を実行して結果を待機する C# 関数のコンテキストで尋ねられます (例: await Task.Delay(1000) や await client)。GetAsync('http://google.com') です。答えはイエスです-GB秒の計算は、関数の開始時刻と終了時刻、およびその期間のメモリ使用量に基づいています。その間に CPU アクティビティに関して実際に何が起こるかは、計算には考慮されません。この規則の 1 つの例外は、永続関数を使用している場合です。オーケストレーター関数で待機に費やされた時間に対しては課金されません。可能な場合は、デマンド シェーピング技術を適用します (開発環境?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "費用"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "text": "Frontdoor - 既定のホームページをオフにするアプリのアプリケーション設定で、AzureWebJobsDisableHomepage を true に設定します。これにより、PoPに204(No Content)が返されるため、ヘッダーデータのみが返されます。",
- "waf": "費用"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "text": "Frontdoor - 何も返さないものへのルーティング。関数、関数プロキシを設定するか、200 (OK) を返し、コンテンツを送信しない、または最小限のコンテンツを送信 するルートを Web アプリに追加します。これの利点は、呼び出されたときにログアウトできることです。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "text": "使用頻度の低いデータの階層のアーカイブを検討する",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "text": "サイズが階層と一致しない場合は、ディスク サイズを確認します (つまり、513 GiB のディスクは P30 (1TiB) を支払います) と、サイズ変更を検討してください",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "text": "可能な場合は、Premium や Ultra ではなく Standard SSD の使用を検討してください",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "text": "ストレージ アカウントの場合は、選択したレベルによってトランザクション料金が加算されていないことを確認します (次のレベルに移動する方が安くなる可能性があります)",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "text": "ASR の場合、RPO/RTO とレプリケーション スループットで許可されている場合は、Standard SSD ディスクの使用を検討してください",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "text": "ストレージ アカウント: 必要なホット層や GRS を確認する",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "text": "ディスク - あらゆる場所で Premium SSD ディスクの使用を検証: たとえば、非運用環境を Standard SSD またはオンデマンド Premium SSD にスワップできます",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "text": "予算を作成してコストを管理し、支出の異常や過剰支出のリスクを関係者に自動的に通知するアラートを作成します。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "text": "追加のデータ分析のために、コスト データをストレージ アカウントにエクスポートします。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "text": "専用 SQL プールのコストを制御するには、リソースが使用されていないときに一時停止します。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "text": "サーバーレス Apache Spark の自動一時停止機能を有効にし、それに応じてタイムアウト値を設定します。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "text": "さまざまなサイズの複数の Apache Spark プール定義を作成します。",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "text": "Azure Synapse Analytics のコストを節約するために、事前購入プランで Azure Synapse コミット ユニット (SCU) を 1 年間購入します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "text": "中断可能なジョブにスポット VM を使用する: これらは、割引価格で入札および購入できる VM であり、重要でないワークロードにコスト効率の高いソリューションを提供します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "text": "すべての VM の適切なサイズ設定",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "text": "正規化されたサイズと最新のサイズでサイズをスワップする VM",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "VM の適切なサイズ設定 - 使用率を 5% 未満で監視することから始めて、その後 40% まで作業します",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "アプリケーションをコンテナー化すると、VM の密度が向上し、スケーリングにかかるコストを節約できます",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "費用"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "高い",
- "text": "ビジネスとSLOの要件に基づいて適切な関数ホスティングプランを選択します",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "高い",
- "text": "リージョンで適用可能な場合は Availability Zones を活用します (従量課金レベルでは使用できません)",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
- "severity": "中程度",
- "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
- "severity": "高い",
- "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
- "severity": "高い",
- "text": "App Service プランで実行されているすべての関数アプリで \"Always On\" が有効になっていることを確認する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
- "severity": "中程度",
- "text": "関数アプリを独自のストレージ アカウントにペアリングします。Function Apps のストレージ アカウントは、緊密に結合されていない限り、再利用しないようにしてください",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
- "severity": "中程度",
- "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、関数アプリのコードを保護します",
- "waf": "オペレーションズ"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "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": "2 つのレプリカで読み取り操作の可用性を 99.9% にする",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "中程度",
- "text": "3 つのレプリカで読み取り/書き込み操作の可用性を 99.9% に向上させる",
- "waf": "確実"
+ "text": "Azure Key Vault に格納されているキーを定期的にローテーションして期限切れにすることで、不正アクセスのリスクを最小限に抑えます。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
+ "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": "読み取りレプリカや書き込みレプリカを有効にすることでアベイラビリティーゾーンを活用する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
- "severity": "中程度",
- "text": "リージョンの冗長性については、地理的リージョン間で検索インデックスをレプリケートする自動化された方法が提供されないため、検索用に 2 つ以上のリージョンにサービスを手動で作成します",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
- "severity": "中程度",
- "text": "複数のサービス間でデータを同期するには、複数のサービスでコンテンツを更新するためにインデクサーを使用するか、複数のサービスでコンテンツの更新をプッシュするために REST API を使用する",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
- "severity": "中程度",
- "text": "Azure Traffic Manager を使用して要求を調整する",
- "waf": "確実"
+ "text": "tiktokenを使用して、会話モードでのトークン最適化のためのトークンサイズを理解します",
+ "waf": "コストの最適化"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
+ "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": "Azure Cognitive Search インデックスをバックアップおよび復元します。このサンプル コードを使用して、インデックス定義とスナップショットを一連の Json ファイルにバックアップします",
- "waf": "確実"
+ "text": "安全なコーディング手法に従って、インジェクション攻撃、クロスサイトスクリプティング(XSS)、セキュリティ設定の誤りなどの一般的な脆弱性を防止します",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
+ "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": "Azure Cache for Redis のゾーン冗長を有効にします。Azure Cache for Redis では、Premium レベルと Enterprise レベルでゾーン冗長構成がサポートされています。ゾーン冗長キャッシュでは、同じリージョン内の異なる Azure Availability Zones にノードを配置できます。これにより、データセンターや AZ の停止が単一障害点として排除され、キャッシュの全体的な可用性が向上します。",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
- "severity": "中程度",
- "text": "Azure Cache for Redis インスタンスのデータ永続化を構成します。キャッシュ データはメモリに格納されるため、まれに複数のノードで計画外の障害が発生すると、すべてのデータがドロップされる可能性があります。データの完全な損失を回避するために、Redis 永続化では、メモリ内データのスナップショットを定期的に取得し、ストレージ アカウントに格納できます。",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
- "severity": "中程度",
- "text": "geo 冗長ストレージ アカウントを使用して Azure Cache for Redis データを保持するか、geo 冗長性を使用できない場合はゾーン冗長を使用します",
- "waf": "確実"
+ "text": "LLM ライブラリとその他のシステム コンポーネントを定期的に更新し、パッチを適用するプロセスを設定します",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
- "severity": "中程度",
- "text": "Premium Azure Cache for Redis インスタンスのパッシブ geo レプリケーションを構成します。geo レプリケーションは、2 つ以上の Azure Cache for Redis インスタンス (通常は 2 つの Azure リージョンにまたがる) をリンクするためのメカニズムです。geo レプリケーションは、主にリージョン間のディザスター リカバリー用に設計されています。2 つの Premium レベルのキャッシュ インスタンスは、プライマリ キャッシュへの読み取りと書き込みを提供する方法で geo レプリケーションを介して接続され、そのデータはセカンダリ キャッシュにレプリケートされます。",
- "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "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": "Azure Front Door でカスタマー マネージド TLS 証明書を使用する場合は、\"最新\" の証明書バージョンを使用します。証明書の手動更新によって引き起こされる停止のリスクを軽減",
- "waf": "オペレーションズ"
+ "text": "基本モデルと微調整されたモデルおよびトークンのステップサイズのコストの違いを理解する",
+ "waf": "コストの最適化"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Application Gateway v2 SKU を使用していることを確認する",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "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.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
+ "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": "Azure Load Balancer に Standard SKU を使用していることを確認する",
- "waf": "安全"
+ "text": "モデルの使用状況を監視するコスト追跡システムを設定し、その情報を使用してモデルの選択とプロンプトのサイズを通知します",
+ "waf": "コストの最適化"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "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": "Load Balancer フロントエンドの IP アドレスがゾーン冗長であることを確認します (ゾーン フロントエンドが必要な場合を除く)。",
- "waf": "安全"
+ "text": "モデル応答あたりのトークン数に上限を設定します。サイズを最適化して、有効な応答に十分な大きさになるようにします",
+ "waf": "コストの最適化"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
+ "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": "Application Gateway v2 は、IP プレフィックスが /24 以上のサブネットにデプロイする必要があります",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "安全"
+ "text": "信頼性のための AI 検索の設定に関するガイダンスを確認します",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "description": "リバースプロキシ全般、特にWAFの管理は、ネットワークよりもアプリケーションに近いため、アプリと同じサブスクリプションに属します。Application Gateway と WAF を接続サブスクリプションに一元化することは、1 つのチームによって管理されている場合は問題ない場合があります。",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "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": "ランディング ゾーン仮想ネットワーク内およびそれらがセキュリティで保護しているアプリと共に、受信 HTTP(S) 接続のプロキシに使用される Azure Application Gateway v2 またはパートナーの NVA をデプロイします。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "安全"
+ "text": "AI Search Vector ストレージの計画と管理",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "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": "アプリケーション ランディング ゾーン内のすべてのパブリック IP アドレスに対して DDoS ネットワークまたは IP 保護プランを使用します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "LLMOpsプラクティスを適用して、GenAIアプリケーションのライフサイクル管理を自動化します",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "最小数のインスタンスが 2 つになる自動スケーリングを構成します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "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.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
+ "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": "Application Gateway を複数の可用性ゾーンにデプロイする",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "確実"
+ "text": "モデルバージョンを切り替える際のプロンプトとアプリケーションの品質を評価する",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
+ "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": "Azure Front Door と WAF ポリシーを使用して、複数の Azure リージョンにまたがるグローバル HTTP/S アプリを配信し、保護します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "GenAIアプリを評価、監視、改良して、接地性、関連性、精度、一貫性、流暢さなどの機能を確認します。",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
+ "service": "Azure OpenAI",
"severity": "中程度",
- "text": "Front Door と Application Gateway を使用して HTTP/S アプリを保護する場合は、Front Door で WAF ポリシーを使用します。Application Gateway をロックダウンして、Front Door からのトラフィックのみを受信します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "さまざまな検索パラメーターに基づいて Azure AI Search の結果を評価する",
+ "waf": "オペレーショナルエクセレンス"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "高い",
- "text": "Traffic Manager を使用して、HTTP/S 以外のプロトコルにまたがるグローバル アプリを配信します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "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": "オペレーショナルエクセレンス"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "低い",
- "text": "ユーザーが内部アプリケーションへのアクセスのみを必要とする場合、Microsoft Entra ID アプリケーション プロキシは Azure Virtual Desktop (AVD) の代替として検討されていますか?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "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": "オペレーショナルエクセレンス"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "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": "ネットワーク内の着信接続用に開かれているファイアウォール ポートの数を減らすには、Microsoft Entra ID アプリケーション プロキシを使用して、リモート ユーザーに内部アプリケーションへの安全で認証されたアクセスを提供することを検討してください。",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "GenAIアプリケーションをレッドチーム化",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "高い",
- "text": "Front Door の WAF ポリシーを \"防止\" モードでデプロイします。",
- "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": "オペレーショナルエクセレンス"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
+ "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": "Azure Traffic Manager と Azure Front Door の組み合わせは避けてください。",
- "waf": "安全"
+ "text": "クォータ管理の実践を検討する",
+ "waf": "コストの最適化"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "高い",
- "text": "Azure Front Door と配信元で同じドメイン名を使用します。ホスト名が一致しないと、微妙なバグが発生する可能性があります。",
- "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.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
- "severity": "低い",
- "text": "Azure Front Door 配信元グループに配信元が 1 つしかない場合は、正常性プローブを無効にします。",
- "waf": "パフォーマンス"
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
+ "severity": "中程度",
+ "text": "有効期間の長い取り消し可能なトークンを使用し、トークンをキャッシュし、Microsoft ID ライブラリを使用してサイレントに取得します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"severity": "中程度",
- "text": "Azure Front Door に適した正常性プローブ エンドポイントを選択します。アプリケーションのすべての依存関係をチェックする正常性エンドポイントを構築することを検討してください。",
+ "text": "サインイン ユーザー フローがバックアップされ、回復性があることを確認します。ユーザーのサインインに使用するコードがバックアップされ、回復可能であることを確認します。外部プロセスとの回復力のあるインターフェース",
"waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
- "severity": "低い",
- "text": "Azure Front Door で HEAD 正常性プローブを使用して、Front Door がアプリケーションに送信するトラフィックを減らします。",
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
+ "severity": "中程度",
+ "text": "カスタムブランドアセットはCDNでホストする必要がある",
"waf": "パフォーマンス"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "高い",
- "text": "Load Balancer の送信規則の代わりに Azure NAT Gateway を使用して、SNAT のスケーラビリティを向上させる",
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
+ "severity": "低い",
+ "text": "複数のIDプロバイダーを持っている(つまり、Microsoft、Google、Facebookアカウントでログインする)",
"waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "高い",
- "text": "Azure Front Door でマネージド TLS 証明書を使用します。運用コストと、証明書の更新による停止のリスクを軽減します。",
- "waf": "オペレーションズ"
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "中程度",
+ "text": "VM レベルでの高可用性に関する VM ルールに従う (Premium ディスク、リージョン内の 2 つ以上、異なる可用性ゾーン内)",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
"severity": "中程度",
- "text": "Azure Front Door WAF の構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
- "waf": "オペレーションズ"
+ "text": "複製しないでください!レプリケーションにより、ディレクトリ同期に関する問題が発生する可能性があります",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "severity": "高い",
- "text": "Azure Front Door でエンド ツー エンドの TLS を使用します。クライアントから Front Door への接続、および Front Door から配信元への接続には TLS を使用します。",
- "waf": "安全"
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "中程度",
+ "text": "マルチリージョンのアクティブ/アクティブを持つ",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "中程度",
- "text": "Azure Front Door で HTTP から HTTPS へのリダイレクトを使用します。古いクライアントをHTTPSリクエストに自動的にリダイレクトすることでサポートします。",
- "waf": "安全"
+ "text": "Azure AD Domain Service スタンプを追加のリージョンと場所に追加する",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "severity": "高い",
- "text": "Azure Front Door WAF を有効にします。さまざまな攻撃からアプリケーションを保護します。",
- "waf": "安全"
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "severity": "中程度",
+ "text": "DR にレプリカ セットを使用する",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "高い",
- "text": "ワークロードに合わせて Azure Front Door WAF を調整します。誤検知を減らします。",
- "waf": "安全"
+ "text": "ビジネスとSLOの要件に基づいて適切な関数ホスティングプランを選択します",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "高い",
- "text": "Azure Front Door WAF ポリシーで要求本文検査機能を有効にします。",
- "waf": "安全"
+ "text": "リージョンで適用可能な場合は Availability Zones を活用します (従量課金レベルでは使用できません)",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
- "severity": "高い",
- "text": "Azure Front Door WAF の既定の規則セットを有効にします。既定のルール セットは、一般的な攻撃を検出してブロックします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
+ "severity": "中程度",
+ "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "高い",
- "text": "Azure Front Door WAF ボット保護ルール セットを有効にします。ボットルールは、良いボットと悪いボットを検出します。",
- "waf": "安全"
+ "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "severity": "中程度",
- "text": "最新の Azure Front Door WAF ルール セット バージョンを使用します。ルール セットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
+ "severity": "高い",
+ "text": "App Service プランで実行されているすべての関数アプリで \"Always On\" が有効になっていることを確認する",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "中程度",
- "text": "Azure Front Door WAF にレート制限を追加します。レート制限は、クライアントが短期間に大量のトラフィックを誤ってまたは意図的に送信することをブロックします。",
- "waf": "安全"
+ "text": "関数アプリを独自のストレージ アカウントにペアリングします。Function Apps のストレージ アカウントは、緊密に結合されていない限り、再利用しないようにしてください",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"severity": "中程度",
- "text": "Azure Front Door WAF のレート制限には、高いしきい値を使用します。高いレート制限しきい値は、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多数の要求に対する保護を提供します。",
- "waf": "安全"
+ "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、関数アプリのコードを保護します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "低い",
- "text": "すべての地域からのトラフィックが想定されていない場合は、地域フィルタを使用して、想定外の国からのトラフィックをブロックします。",
- "waf": "安全"
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
+ "severity": "中程度",
+ "text": "Azure Bot Service の信頼性サポートの推奨事項に従う",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
"severity": "中程度",
- "text": "Azure Front Door WAF を使用してトラフィックをジオフィルター処理するときに、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致させることができない場合に、正当な要求を誤ってブロックしないようにします。",
- "waf": "安全"
+ "text": "ローカル データ所在地とリージョン コンプライアンスを備えたボットのデプロイ",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "severity": "高い",
- "text": "Azure Application Gateway WAF ボット保護ルール セットを有効にする ボット ルールは、良いボットと悪いボットを検出します。",
- "waf": "安全"
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
+ "severity": "中程度",
+ "text": "Azure Bot Service は、グローバル サービスとリージョン サービスの両方に対してアクティブ/アクティブ モードで実行されます。停止が発生した場合、エラーを検出したり、サービスを管理したりする必要はありません。Azure Bot Service は、複数リージョンの地理的アーキテクチャで自動フェールオーバーと自動復旧を自動的に実行します。EU ボット リージョン サービスの場合、Azure Bot Service は、冗長性を確保するために、アクティブ/アクティブ レプリケーションを備えたヨーロッパ内の 2 つの完全なリージョンを提供します。グローバル ボット サービスの場合、使用可能なすべてのリージョン/地域をグローバル フットプリントとして提供できます。",
+ "waf": "確実"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
- "severity": "高い",
- "text": "Azure Application Gateway WAF ポリシーで有効になっている要求本文検査機能を有効にします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
+ "text": "Azure Monitor のデータ収集ルール - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "費用"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
- "severity": "高い",
- "text": "ワークロードに合わせて Azure Application Gateway WAF を調整します。誤検知を減らします。",
- "waf": "安全"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "text": "基になるデータソースが見つからないバックアップインスタンスを確認する",
+ "waf": "費用"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
- "severity": "高い",
- "text": "Application Gateway の WAF ポリシーを \"防止\" モードでデプロイします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "text": "関連づけられていないサービス(ディスク、NIC、IPアドレスなど)を削除またはアーカイブする",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Azure Application Gateway WAF にレート制限を追加します。レート制限は、クライアントが短期間に大量のトラフィックを誤ってまたは意図的に送信することをブロックします。",
- "waf": "安全"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
+ "text": "ミッション クリティカルでないアプリケーションの Site Recovery ストレージとバックアップのバランスを考慮する",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Azure Application Gateway の WAF レート制限には高いしきい値を使用します。高いレート制限しきい値は、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多数の要求に対する保護を提供します。",
- "waf": "安全"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "text": "40 の異なるログ分析ワークスペース間で支出と節約の機会を確認する - 非運用ワークスペースに異なる保持とデータ収集を使用する - 認識と階層サイズ設定のための日次上限を作成する - 日次上限を設定する場合は、上限に達したときにアラートを作成するだけでなく、ある割合 (90% など) に達したときに通知されるアラート ルールも作成してください。- 可能であればワークスペースの変革を検討する - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
- "severity": "低い",
- "text": "すべての地域からのトラフィックが想定されていない場合は、地域フィルタを使用して、想定外の国からのトラフィックをブロックします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
+ "text": "ログのパージポリシーと自動化を適用する(必要に応じて、ログをコールドストレージに移動できます)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Azure Application Gateway WAF でトラフィックを geo フィルタリングするときに、不明 (ZZ) の場所を指定します。IP アドレスを地理的に一致させることができない場合に、正当な要求を誤ってブロックしないようにします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "text": "ディスクが本当に必要かどうかを確認し、必要でない場合は削除します。必要な場合は、下位のストレージ階層を見つけるか、バックアップを使用します。",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "最新バージョンの Azure Application Gateway WAF ルール セットを使用します。ルール セットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
- "waf": "安全"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "text": "未使用のストレージを下位階層に移動し、カスタマイズされたルールを使用することを検討する - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "診断設定を追加して、Azure Application Gateway の WAF ログを保存します。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "text": "advisor が VM の適切なサイズ設定用に構成されていることを確認する",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
- "severity": "中程度",
- "text": "診断設定を追加して、Azure Front Door WAF ログを保存します。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "コスト分析でメーターカテゴリライセンスを検索して確認してください",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "text": "すべての Windows VM でスクリプトを実行する https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- Windows VM が頻繁に作成される場合は、ポリシーの実装を検討してください",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Azure Application Gateway WAF ログを Microsoft Sentinel に送信します。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
+ "text": "これは、すでにライセンスを持っている場合は、AHUBの下に置くこともできます https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "中程度",
- "text": "Azure Front Door WAF ログを Microsoft Sentinel に送信します。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "text": "予約済み VM ファミリを柔軟性オプションで統合する (4 から 5 ファミリ以下)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Azure Application Gateway の WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "text": "Azure 予約インスタンスを利用する: この機能を使用すると、VM を 1 年または 3 年間予約できるため、PAYG 価格と比較して大幅なコスト削減が実現します。",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "従来のWAF構成のかわりにWAFポリシーを使用します。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "text": "より大きなディスクのみ予約できます => 1 TiB -",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "バックエンドの受信トラフィックをフィルター処理して、Application Gateway サブネットからの接続 (NSG など) のみを受け入れるようにします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "text": "適切なサイズ最適化の後",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
- "severity": "中程度",
- "text": "配信元が Azure Front Door インスタンスからのトラフィックのみを受け取るようにします。",
- "waf": "安全"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "text": "該当するかどうかを確認し、ポリシー/変更 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 を適用します",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
- "severity": "高い",
- "text": "バックエンド・サーバーへのトラフィックを暗号化する必要があります。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "text": "VM +ライセンス部分の割引(ahub + 3YRI)は約70%の割引です",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
- "severity": "高い",
- "text": "Web アプリケーション ファイアウォールを使用する必要があります。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
+ "text": "需要に合わせて、フラットなサイジングではなく、VMSS の使用を検討してください",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "HTTPをHTTPSにリダイレクトする",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "text": "AKS オートスケーラーを使用してクラスターの使用量に一致させる (ポッドの要件がスケーラーと一致していることを確認する)",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "ゲートウェイ管理の Cookie を使用して、ユーザー セッションから同じサーバーにトラフィックを送信して処理する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "text": "該当する場合は、復旧ポイントを vault-archive に移動します (検証)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
- "severity": "高い",
- "text": "計画されたサービス更新中に接続ドレインを有効にして、バックエンド プールの既存のメンバーへの接続が失われないようにします",
- "waf": "安全"
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "text": "可能な場合は、フォールバックでスポット VM を使用することを検討してください。クラスターの自動終了を検討してください。",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
- "severity": "低い",
- "text": "カスタムエラーページを作成して、パーソナライズされたユーザーエクスペリエンスを表示する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "text": "関数 - 接続の再利用",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "HTTPリクエストとレスポンスヘッダーを編集して、クライアントとサーバー間のルーティングと情報交換を容易にします",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "text": "関数 - データをローカルにキャッシュする",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "Front Door を構成して、グローバルな Web トラフィック ルーティングとトップレベルのエンド ユーザーのパフォーマンスを最適化し、迅速なグローバル フェールオーバーを通じて信頼性を確保します",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
+ "text": "関数 - コールド スタート - 「パッケージから実行」機能を使用します。このようにして、コードは単一のzipファイルとしてダウンロードされます。これにより、たとえば、多くのノードモジュールを持つJavascript関数が大幅に改善される可能性があります。言語固有のツールを使用してパッケージサイズを縮小します (ツリーを揺るがす Javascript アプリケーションなど)。",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "費用"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
+ "text": "関数 - 関数を暖かく保つ",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "トランスポート層の負荷分散を使用する",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "text": "さまざまな関数で自動スケーリングを使用する場合、すべてのリソースのすべての自動スケーリングを駆動する 1 つが存在する可能性があるため、別の従量課金プランに移行することを検討してください (また、CPU のより高いプランを検討してください)",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "1 つのゲートウェイ上の複数の Web アプリケーションのホスト名またはドメイン名に基づいてルーティングを構成する",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "text": "特定のプランの関数アプリはすべて一緒にスケーリングされるため、スケーリングに関する問題はプラン内のすべてのアプリに影響を与える可能性があります。",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
- "severity": "中程度",
- "text": "SSL証明書管理を一元化して、バックエンドサーバーファームからの暗号化と復号化のオーバーヘッドを削減",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "text": "「待機時間」に対して請求されますか?この質問は、通常、非同期操作を実行して結果を待機する C# 関数のコンテキストで尋ねられます (例: await Task.Delay(1000) や await client)。GetAsync('http://google.com') です。答えはイエスです-GB秒の計算は、関数の開始時刻と終了時刻、およびその期間のメモリ使用量に基づいています。その間に CPU アクティビティに関して実際に何が起こるかは、計算には考慮されません。この規則の 1 つの例外は、永続関数を使用している場合です。オーケストレーター関数で待機に費やされた時間に対しては課金されません。可能な場合は、デマンド シェーピング技術を適用します (開発環境?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "低い",
- "text": "Application Gateway を使用して WebSocket と HTTP/2 プロトコルをネイティブにサポートする",
- "waf": "安全"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
+ "text": "Frontdoor - 既定のホームページをオフにするアプリのアプリケーション設定で、AzureWebJobsDisableHomepage を true に設定します。これにより、PoPに204(No Content)が返されるため、ヘッダーデータのみが返されます。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
- "severity": "中程度",
- "text": "Azure Data Factory の FTA 回復性プレイブックの活用",
- "waf": "確実"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
+ "text": "Frontdoor - 何も返さないものへのルーティング。関数、関数プロキシを設定するか、200 (OK) を返し、コンテンツを送信しない、または最小限のコンテンツを送信 するルートを Web アプリに追加します。これの利点は、呼び出されたときにログアウトできることです。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "高い",
- "text": "Availability Zones をサポートするリージョンでゾーン冗長パイプラインを使用するUse zone redundant pipelines in regions that support Availability Zones",
- "waf": "確実"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
+ "text": "使用頻度の低いデータの階層のアーカイブを検討する",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
- "severity": "中程度",
- "text": "DevOps を使用して Github と Azure DevOps の統合で ARM テンプレートをバックアップする",
- "waf": "確実"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "text": "サイズが階層と一致しない場合は、ディスク サイズを確認します (つまり、513 GiB のディスクは P30 (1TiB) を支払います) と、サイズ変更を検討してください",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "中程度",
- "text": "セルフホステッド統合ランタイム VM を別のリージョンにレプリケートしてください",
- "waf": "確実"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "text": "可能な場合は、Premium や Ultra ではなく Standard SSD の使用を検討してください",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "中程度",
- "text": "必ず、姉妹リージョンでネットワークをレプリケートまたは複製してください。別のリージョンに VNet のコピーを作成する必要があります",
- "waf": "確実"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "text": "ストレージ アカウントの場合は、選択したレベルによってトランザクション料金が加算されていないことを確認します (次のレベルに移動する方が安くなる可能性があります)",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "ADF パイプラインで Key Vault が使用されている場合は、Key Vault をレプリケートするために何もする必要はありません。Key Vault はマネージド サービスであり、Microsoft が処理します",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "severity": "低い",
- "text": "Keyvault 統合を使用している場合は、Keyvault の SLA を使用して可用性を把握します",
- "waf": "確実"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "text": "ASR の場合、RPO/RTO とレプリケーション スループットで許可されている場合は、Standard SSD ディスクの使用を検討してください",
+ "waf": "費用"
},
{
"arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ストレージに関連する Microsoft クラウド セキュリティ ベンチマークのガイダンスを適用する",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "\"ストレージの Azure セキュリティ ベースライン\" を検討する",
- "waf": "安全"
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
+ "text": "ストレージ アカウント: 必要なホット層や GRS を確認する",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "既定では、Azure Storage にはパブリック IP アドレスがあり、インターネットにアクセス可能です。プライベート エンドポイントを使用すると、アクセスが必要な Azure コンピューティング リソースにのみ Azure Storage を安全に公開できるため、パブリック インターネットへの露出を排除できます",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "Azure Storage にプライベート エンドポイントを使用することを検討する",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
+ "text": "ディスク - あらゆる場所で Premium SSD ディスクの使用を検証: たとえば、非運用環境を Standard SSD またはオンデマンド Premium SSD にスワップできます",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "新しく作成されたストレージ アカウントは、RBAC や監査などがすべて有効になるように、ARM デプロイ モデルを使用して作成されます。サブスクリプションにクラシック デプロイ モデルの古いストレージ アカウントがないことを確認する",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "古いストレージ アカウントで \"クラシック デプロイ モデル\" が使用されていないことを確認する",
- "waf": "安全"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "text": "予算を作成してコストを管理し、支出の異常や過剰支出のリスクを関係者に自動的に通知するアラートを作成します。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Microsoft Defender を活用して、不審なアクティビティや構成ミスについて学習します。",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "すべてのストレージ アカウントに対して Microsoft Defender を有効にする",
- "waf": "安全"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
+ "text": "追加のデータ分析のために、コスト データをストレージ アカウントにエクスポートします。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "論理的な削除メカニズムを使用すると、誤って削除された BLOB を回復できます。",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "BLOB の \"論理的な削除\" を有効にする",
- "waf": "安全"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "text": "専用 SQL プールのコストを制御するには、リソースが使用されていないときに一時停止します。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "たとえば、機密性、プライバシー、コンプライアンス上の理由などから、削除された情報がすぐに削除されるようにアプリケーションで確認する必要がある場合など、特定の BLOB コンテナーに対して \"論理的な削除\" を選択的に無効にすることを検討してください。",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "BLOB の '論理的な削除' を無効にする",
- "waf": "安全"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "text": "サーバーレス Apache Spark の自動一時停止機能を有効にし、それに応じてタイムアウト値を設定します。",
+ "waf": "費用"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "text": "さまざまなサイズの複数の Apache Spark プール定義を作成します。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "コンテナーの論理的な削除を使用すると、コンテナーが削除された後に回復できます (たとえば、偶発的な削除操作から回復します)。",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "コンテナーの \"論理的な削除\" を有効にする",
- "waf": "安全"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "text": "Azure Synapse Analytics のコストを節約するために、事前購入プランで Azure Synapse コミット ユニット (SCU) を 1 年間購入します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "たとえば、機密性、プライバシー、コンプライアンス上の理由などから、削除された情報がすぐに削除されるようにアプリケーションで確認する必要がある場合など、特定の BLOB コンテナーに対して \"論理的な削除\" を選択的に無効にすることを検討してください。",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "コンテナーの \"論理的な削除\" を無効にする",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "text": "中断可能なジョブにスポット VM を使用する: これらは、割引価格で入札および購入できる VM であり、重要でないワークロードにコスト効率の高いソリューションを提供します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "削除前に削除ロックを最初に解除するようにユーザーに強制することで、ストレージ アカウントが誤って削除されないようにします",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "ストレージ アカウントでのリソース ロックの有効化",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "text": "すべての VM の適切なサイズ設定",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "BLOB の \"訴訟ホールド\" または \"時間ベースの保持\" ポリシーを検討して、BLOB、コンテナー、またはストレージ アカウントを削除できないようにします。「不可能」は実際には「不可能」を意味することに注意してください。ストレージ アカウントに不変の BLOB が含まれる場合、そのストレージ アカウントを \"取り除く\" 唯一の方法は、Azure サブスクリプションを取り消すことです。",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "不変の BLOB を検討する",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "text": "正規化されたサイズと最新のサイズでサイズをスワップする VM",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ストレージ アカウントへの保護されていない HTTP/80 アクセスを無効にして、すべてのデータ転送が暗号化され、整合性が保護され、サーバーが認証されるようにすることを検討してください。",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "HTTPS を要求する (つまり、ストレージ アカウントのポート 80 を無効にする)",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "VM の適切なサイズ設定 - 使用率を 5% 未満で監視することから始めて、その後 40% まで作業します",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ストレージ アカウントでカスタム ドメイン (ホスト名) を構成する場合は、TLS/HTTPS が必要かどうかを確認します。その場合は、ストレージ アカウントの前に Azure CDN を配置する必要があります。",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "HTTPS を適用する (HTTP を無効にする) 場合は、ストレージ アカウントにカスタム ドメイン (CNAME) を使用していないことを確認します。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "アプリケーションをコンテナー化すると、VM の密度が向上し、スケーリングにかかるコストを節約できます",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "クライアントが SAS トークンを使用して BLOB データにアクセスするときに HTTPS を要求すると、資格情報が失われるリスクを最小限に抑えることができます。",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "Shared Access Signature (SAS) トークンを HTTPS 接続のみに制限する",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "AKS Windows ワークロードで必要な場合は、HostProcess コンテナーを使用できます",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "AAD トークンは、可能な限り、共有アクセス署名よりも優先する必要があります",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "BLOB アクセスに Azure Active Directory (Azure AD) トークンを使用する",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "イベント ドリブン ワークロードを実行する場合は KEDA を使用します",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ユーザー、グループ、またはアプリケーションにロールを割り当てる場合は、タスクの実行に必要なアクセス許可のみをセキュリティ プリンシパルに付与します。リソースへのアクセスを制限することで、意図しないデータの誤用と悪意のあるデータの誤用の両方を防ぐことができます。",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "IaM アクセス許可の最小特権",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "Dapr を使用してマイクロサービス開発を容易にする",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ユーザー委任 SAS は、Azure Active Directory (Azure AD) 資格情報と、SAS に指定されたアクセス許可によってセキュリティで保護されます。ユーザー委任 SAS は、そのスコープと機能の点でサービス SAS に似ていますが、サービス SAS よりもセキュリティ上の利点があります。",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"severity": "高い",
- "text": "SAS を使用する場合は、ストレージ アカウント キー ベースの SAS よりも \"ユーザー委任 SAS\" を優先します。",
- "waf": "安全"
+ "text": "SLA でサポートされる AKS オファリングを使用する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ストレージ アカウント キー (\"共有キー\") には、監査機能がほとんどありません。誰がいつキーのコピーを取得したかを監視できますが、キーが複数の人の手に渡ると、使用状況を特定のユーザーに帰属させることは不可能です。AAD 認証のみに依存することで、ストレージへのアクセスをユーザーに結び付けやすくなります。",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "ストレージ アカウント キーを無効にして、AAD アクセス (およびユーザー委任 SAS) のみがサポートされるようにすることを検討してください。",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "ポッドとデプロイ定義でのディスラプション バジェットの使用",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "アクティビティ ログ データを使用して、ストレージ アカウントのセキュリティ (ストレージ アカウント キー、アクセス ポリシーなど) が \"いつ、誰が、何を、\"どのように\" 表示または変更されているかを特定します。",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "高い",
- "text": "Azure Monitor を使用して、ストレージ アカウントに対するコントロール プレーン操作を監査することを検討してください",
- "waf": "安全"
+ "text": "プライベート レジストリを使用する場合は、複数のリージョンにイメージを格納するようにリージョン レプリケーションを構成します",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "キーの有効期限ポリシーを使用すると、アカウントアクセスキーのローテーションのリマインダーを設定できます。リマインダーは、指定した間隔が経過し、キーがまだローテーションされていない場合に表示されます。",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "ストレージ アカウント キーを使用する場合は、\"キーの有効期限ポリシー\" を有効にすることを検討してください",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "kubecost などの外部アプリケーションを使用して、さまざまなユーザーにコストを割り当てます",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS 有効期限ポリシーでは、SAS が有効である推奨間隔を指定します。SAS 有効期限ポリシーは、サービス SAS またはアカウント SAS に適用されます。ユーザーがサービス SAS またはアカウント SAS を、推奨間隔よりも長い有効期間で生成すると、警告が表示されます。",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "SAS 有効期限ポリシーの構成を検討する",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "スケールダウンモードを使用してノードを削除/割り当て解除する",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "保存されているアクセス ポリシーを使用すると、ストレージ アカウント キーを再生成することなく、サービス SAS のアクセス許可を取り消すことができます。",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"severity": "中程度",
- "text": "保存されているアクセス ポリシーに SAS をリンクすることを検討する",
- "waf": "安全"
+ "text": "必要に応じて、AKS クラスターで複数インスタンスの分割 GPU を使用する",
+ "waf": "費用"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "Dev/Test クラスターを実行している場合は、NodePool Start/Stop を使用します。",
+ "waf": "費用"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
"severity": "中程度",
- "text": "チェックインされた接続文字列とストレージ アカウント キーを検出するようにアプリケーションのソース コード リポジトリを構成することを検討してください。",
+ "text": "Azure Policy for Kubernetes を使用してクラスターのコンプライアンスを確保する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "理想的には、アプリケーションでマネージド ID を使用して Azure Storage に対する認証を行う必要があります。それが不可能な場合は、ストレージ資格情報 (接続文字列、ストレージ アカウント キー、SAS、サービス プリンシパル資格情報) を Azure KeyVault または同等のサービスに用意することを検討してください。",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "接続文字列を Azure KeyVault に格納することを検討する (マネージド ID が不可能なシナリオの場合)",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "ユーザー/システムノードプールを使用してコントロールプレーンからアプリケーションを分離する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "アドホック SAS サービス SAS またはアカウント SAS で、有効期限が近づいています。このように、SAS が侵害された場合でも、有効期間は短時間です。この方法は、保存されているアクセス ポリシーを参照できない場合に特に重要です。また、有効期限が近いと、BLOB にアップロードできる時間が制限されるため、BLOB に書き込めるデータの量も制限されます。",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "アドホックSASの有効期間を短くする",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "システム ノードプールにテイントを追加して専用にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS を作成するときは、できるだけ具体的かつ制限的にしてください。1 つのリソースと操作には、より広範なアクセスを提供する SAS よりも SAS を優先します。",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"severity": "中程度",
- "text": "SAS に狭いスコープを適用する",
+ "text": "イメージにはプライベート レジストリ (ACR など) を使用する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS には、SAS を使用してリソースを要求する権限をクライアント IP アドレスまたはアドレス範囲に与えるパラメーターを含めることができます。",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "中程度",
- "text": "可能な限り、SAS のスコープを特定のクライアント IP アドレスに設定することを検討してください",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS は、クライアントがアップロードするデータの量を制限できません。時間の経過に伴うストレージ容量の価格モデルを考えると、クライアントが悪意を持って大きなコンテンツをアップロードしたかどうかを検証することは理にかなっているかもしれません。",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "severity": "低い",
- "text": "クライアントが SAS を使用してファイルをアップロードした後、アップロードされたデータを確認することを検討してください。",
+ "text": "イメージをスキャンして脆弱性を検出する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "\"ローカル ユーザー アカウント\" を使用して SFTP 経由で BLOB ストレージにアクセスする場合、\"通常の\" RBAC 制御は適用されません。NFS または REST 経由の BLOB アクセスは、SFTP アクセスよりも制限が厳しい場合があります。残念ながら、2023 年初頭の時点で、SFTP エンドポイントで現在サポートされている ID 管理の形式はローカル ユーザーだけです",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"severity": "高い",
- "text": "SFTP: SFTPアクセスの「ローカルユーザー」の数を制限し、時間の経過とともにアクセスが必要かどうかを監査します。",
+ "text": "アプリの分離要件を定義する (名前空間/ノードプール/クラスター)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"severity": "中程度",
- "text": "SFTP: SFTP エンドポイントは、POSIX ライクな ACL をサポートしていません。",
+ "text": "CSI シークレット ストア ドライバーを使用して Azure Key Vault にシークレットを格納する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "ストレージは、CORS (Cross-Origin Resource Sharing)、つまり、異なるドメインの Web アプリが同一生成元ポリシーを緩めることを可能にする HTTP 機能をサポートしています。CORS を有効にする場合は、CorsRules を最小の特権に保ちます。",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"severity": "高い",
- "text": "過度に広範な CORS ポリシーを避ける",
+ "text": "クラスターにサービス プリンシパルを使用する場合は、資格情報を定期的に (四半期ごとなど) 更新します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "保存データは常にサーバー側で暗号化され、さらにクライアント側でも暗号化される場合があります。サーバー側の暗号化は、プラットフォーム マネージド キー (既定) またはカスタマー マネージド キーを使用して行われる場合があります。クライアント側の暗号化は、クライアントが BLOB ごとに暗号化/暗号化解除キーを Azure Storage に提供するか、クライアント側で暗号化を完全に処理することによって行われます。そのため、機密性の保証を Azure Storage にまったく依存しません。",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "severity": "高い",
- "text": "保存データの暗号化方法を決定します。データのスレッド モデルを理解します。",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "必要に応じて、キー管理サービスの etcd 暗号化を追加します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
- "severity": "中程度",
- "text": "どのプラットフォーム暗号化を使用するか、または使用するかを決定します。",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、Confidential Compute for AKS の使用を検討してください",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"severity": "中程度",
- "text": "クライアント側の暗号化を使用するかどうかを決定します。",
+ "text": "Defender for Containers の使用を検討する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Resource Graph エクスプローラー (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) を利用して、匿名 BLOB アクセスを許可するストレージ アカウントを検索します。",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "高い",
- "text": "パブリック BLOB アクセスが必要かどうか、または特定のストレージ アカウントに対して無効にできるかどうかを検討します。",
+ "text": "サービス プリンシパルの代わりにマネージド ID を使用するUse managed identities instead of Service Principals",
"waf": "安全"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "中程度",
- "text": "フレキシブル サーバーの活用",
- "waf": "確実"
- },
- {
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
- "severity": "高い",
- "text": "Availability Zones (地域的に適用可能な場合) を活用する",
- "waf": "確実"
+ "text": "認証と AAD の統合 (マネージド統合を使用)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "中程度",
- "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": "オペレーショナルエクセレンス"
+ "text": "管理者 kubeconfig へのアクセスを制限する (get-credentials --admin)",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "承認と AAD RBAC の統合",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"severity": "高い",
- "text": "AOAI インスタンスの監視を有効にする",
- "waf": "オペレーショナルエクセレンス"
+ "text": "Kubernetes で RBAC 特権を制限するために名前空間を使用する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "ポッド ID アクセス管理の場合は、Azure AD ワークロード ID (プレビュー) を使用します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "AKS 非対話型ログインの場合は、kubelogin (プレビュー) を使用します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
"severity": "中程度",
- "text": "処理された推論トークン、生成された完了トークンなどのメトリックを観察し、レート制限を監視します",
- "waf": "オペレーショナルエクセレンス"
+ "text": "AKS ローカル アカウントを無効にする",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
"severity": "低い",
- "text": "診断が十分でない場合は、Azure OpenAI の前で Azure API Management などのゲートウェイを使用して、受信プロンプトと送信応答の両方をログに記録することを検討してください (許可されている場合)",
- "waf": "オペレーショナルエクセレンス"
+ "text": "必要に応じて Just-In-Time クラスター アクセスを構成する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて AKS の AAD 条件付きアクセスを構成する",
+ "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 認証を使用する",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "Windows AKS ワークロードで必要な場合は、gMSA を構成します",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "より細かく制御するには、マネージドKubelet Identityの使用を検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "AGIC を使用している場合は、クラスター間で AppGW を共有しないでください",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
"severity": "高い",
- "text": "Azure AI コンテンツの安全性を確認して実装する",
- "waf": "オペレーショナルエクセレンス"
+ "text": "AKS HTTP ルーティング アドオンを使用せず、代わりにアプリケーション ルーティング アドオンでマネージド NGINX イングレスを使用します。",
+ "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分あたりのレスポンスに基づいてシステムのスループットを定義および評価し、要件に合わせます",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "Windows ワークロードの場合は、高速ネットワークを使用します",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "標準のALBを使用する(基本的なALBとは対照的)",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"severity": "中程度",
- "text": "弾力性の要求を見積もり、優先順位に基づいて同期要求とバッチ要求の分離を決定します。優先度が高い場合は同期アプローチを使用し、優先度が低い場合はキューを使用した非同期バッチ処理が推奨されます",
- "waf": "パフォーマンス"
+ "text": "Azure CNI を使用する場合は、NodePool に異なるサブネットを使用することを検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "プライベート エンドポイント (推奨) または Virtual Network サービス エンドポイントを使用して、クラスターから PaaS サービスにアクセスする",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "要件に最適な CNI ネットワーク プラグインを選択する (Azure CNI を推奨)",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "高い",
- "text": "適切なタスクに適したモデルを選択してください。速度、応答の品質、出力の複雑さの間で適切なトレードオフを持つモデルを選択する",
+ "text": "Azure CNI を使用する場合は、ノードあたりのポッドの最大数を考慮して、サブネットのサイズを適切に設定します",
"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": "微調整によってモデルのパフォーマンスが向上したかどうかを知るための微調整を行わずに、パフォーマンスのベースラインを設定する",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "Azure CNI を使用している場合は、最大ポッド数/ノード (既定値は 30) を確認します",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "内部アプリの場合、組織は多くの場合、ファイアウォールで AKS サブネット全体を開きます。これにより、ノードへのネットワーク アクセスも開かれ、場合によってはポッドへのネットワーク アクセスも開かれます (Azure CNI を使用している場合)。LoadBalancer の IP が別のサブネットにある場合は、この IP のみをアプリ クライアントで使用できる必要があります。もう 1 つの理由は、AKS サブネット内の IP アドレスが希少なリソースである場合、その IP アドレスをサービスに使用すると、クラスターの最大スケーラビリティが低下することです。",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
"severity": "低い",
- "text": "複数のOAIインスタンスを複数のリージョンにデプロイする",
- "waf": "確実"
+ "text": "プライベート IP LoadBalancer サービスを使用する場合は、(AKS サブネットではなく) 専用サブネットを使用します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "高い",
- "text": "APIM のようなゲートウェイ パターンを使用した再試行とヘルスチェックの実装",
+ "text": "それに応じて、サービスの IP アドレス範囲のサイズを設定します (クラスターのスケーラビリティが制限されます)。",
"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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、独自のCNIプラグインを追加します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、AKS でノードごとにパブリック IP を構成する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"severity": "中程度",
- "text": "ファインチューニングが採用されている場合は、リージョン間で個別の微調整モデルをデプロイします",
+ "text": "イングレス コントローラーを使用して、LoadBalancer タイプのサービスで公開する代わりに、Web ベースのアプリを公開します",
"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 のバックアップおよびディザスター リカバリー サービスを活用して、データを保護します。",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "エグレス トラフィックをスケーリングするために Azure NAT Gateway を outboundType として使用する",
"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 を持つために選択する必要があります",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "Azure CNI IP の枯渇を回避するために IP の動的割り当てを使用する",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "高い",
- "text": "SSE/ディスク暗号化(オプションのBYOKを使用)を使用してRAGに使用されるデータを暗号化",
+ "text": "セキュリティ要件で義務付けられている場合は、AzFW/NVA を使用してエグレス トラフィックをフィルター処理します",
"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が適用されていることを確認します",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "パブリック API エンドポイントを使用している場合は、アクセスできる IP アドレスを制限します",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"severity": "高い",
- "text": "RBAC を使用して、Azure OpenAI サービスへのアクセスを管理します。ユーザーに適切な権限を割り当て、ユーザーの役割と責任に基づいてアクセスを制限します",
+ "text": "要件で必要な場合は、プライベート クラスターを使用します",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "中程度",
- "text": "データの暗号化、マスキング、または編集技術を実装して、機密データを非表示にしたり、非本番環境で難読化された値に置き換えたり、テストやトラブルシューティングの目的でデータを共有する場合",
+ "text": "Windows 2019 および 2022 AKS ノードでは、Calico ネットワーク ポリシーを使用できます",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"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": "コンプライアンス規制を遵守するためのデータ保持および廃棄ポリシーを確立します。不要になったデータに対して安全な削除方法を実装し、データの保持と廃棄活動の監査証跡を維持します",
+ "text": "Kubernetes ネットワーク ポリシー オプションを有効にする (Calico/Azure)",
"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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "高い",
- "text": "Content Safety を使用した Prompt シールドと接地検出の実装",
- "waf": "オペレーショナルエクセレンス"
+ "text": "Kubernetesネットワークポリシーを使用してクラスタ内のセキュリティを強化",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "高い",
- "text": "GDPRやHIPAAなどの関連するデータ保護規制への準拠を確保するには、プライバシー制御を実装し、データ処理活動に必要な同意または許可を取得します。",
+ "text": "Web ワークロード (UI または API) に WAF を使用するUse a WAF for a web workloads (UI or API)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
"severity": "中程度",
- "text": "データセキュリティのベストプラクティス、データの安全な取り扱いの重要性、データ侵害に関連する潜在的なリスクについて、従業員を教育します。データセキュリティプロトコルに熱心に従うように促します。",
+ "text": "AKS Virtual Network で DDoS Standard を使用するUse DDoS Standard in the AKS Virtual Network",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
- "severity": "高い",
- "text": "運用データを開発データやテストデータから分離します。本番環境では実際の機密データのみを使用し、開発環境やテスト環境では匿名化されたデータや合成データを利用します。",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、会社の HTTP プロキシを追加します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "中程度",
- "text": "データの機密性のレベルが異なる場合は、レベルごとに個別のインデックスを作成することを検討してください。たとえば、一般的なデータ用に 1 つのインデックスを作成し、機密データ用に別のインデックスを作成し、それぞれ異なるアクセス プロトコルで管理することができます",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "最も重要なメトリックに関するアラートを構成します (推奨事項については、「Container Insights」を参照してください)",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "Azure Advisor でクラスターの推奨事項を定期的に確認する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "AKS 自動証明書のローテーションを有効にする",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
"severity": "高い",
- "text": "埋め込みとベクトルを持つデータストアに RBAC を適用し、ロールのアクセス要件に基づいてアクセスのスコープを設定します",
- "waf": "安全"
+ "text": "kubernetes のバージョンを定期的に (四半期ごとなど) アップグレードする定期的なプロセスを行うか、AKS 自動アップグレード機能を使用します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
"severity": "高い",
- "text": "AI サービスのプライベート エンドポイントを構成して、ネットワーク内のサービス アクセスを制限します",
- "waf": "安全"
+ "text": "ノードイメージのアップグレードを使用していない場合は、Linuxノードのアップグレードにkuredを使用します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
"severity": "高い",
- "text": "Azure Firewall と UDR を使用して受信と送信のトラフィック制御を厳密に適用し、外部統合ポイントを制限します",
- "waf": "安全"
+ "text": "クラスタノードイメージを定期的に(毎週など)アップグレードする定期的なプロセスを用意します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "アプリケーションまたはクラスター構成を複数のクラスターにデプロイするために gitop を検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "プライベート クラスターで AKS コマンド呼び出しを使用することを検討する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "計画されたイベントの場合は、ノードの自動ドレインの使用を検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "独自のガバナンスプラクティスを開発して、ノードRG(別名「インフラRG」)のオペレーターによって変更が実行されないようにします",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "カスタムノードRG(別名「インフラRG」)名を使用",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "中程度",
- "text": "セキュリティ監査と侵入テストを実施して、LLMアプリケーションのネットワークインフラストラクチャのネットワークセキュリティの弱点または脆弱性を特定して対処します",
- "waf": "安全"
+ "text": "非推奨の Kubernetes API を YAML マニフェストで使用しないでください",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
"severity": "低い",
- "text": "Azure AI Services は、管理を改善するために適切にタグ付けされています",
- "waf": "オペレーショナルエクセレンス"
+ "text": "Windows ノードのテイント",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
"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": "オペレーショナルエクセレンス"
+ "text": "Windows コンテナーのパッチ レベルをホストのパッチ レベルと同期させる",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "クラスタレベルでの診断設定経由",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "マスター ログ (API ログ) を Azure Monitor または任意のログ管理ソリューションに送信する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、nodePool スナップショットを使用します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "時間的制約のないワークロードのスポット ノード プールを検討する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "クイック バーストのために AKS 仮想ノードを検討する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "高い",
- "text": "安全なコーディング手法に従って、インジェクション攻撃、クロスサイトスクリプティング(XSS)、セキュリティ設定の誤りなどの一般的な脆弱性を防止します",
- "waf": "安全"
+ "text": "Container Insights (または Prometheus などの他のツール) を使用してクラスター メトリックを監視する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "高い",
- "text": "LLM ライブラリとその他のシステム コンポーネントを定期的に更新し、パッチを適用するプロセスを設定します",
- "waf": "安全"
+ "text": "Container Insights(またはTelegraf/ElasticSearchなどの他のツール)を使用してクラスターログを保存および分析します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "ノードの CPU とメモリの使用率を監視する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "中程度",
- "text": "基本モデルと微調整されたモデルおよびトークンのステップサイズのコストの違いを理解する",
- "waf": "コストの最適化"
+ "text": "Azure CNI を使用している場合は、ノードごとに消費されるポッド IP の割合を監視します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "OS ディスクの I/O は重要なリソースです。ノード内の OS が I/O で調整されると、予期しない動作が発生し、通常はノードが NotReady と宣言される可能性があります",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
+ "severity": "中程度",
+ "text": "ノード内の OS ディスク キューの深さを監視する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "中程度",
- "text": "モデルの使用状況を監視するコスト追跡システムを設定し、その情報を使用してモデルの選択とプロンプトのサイズを通知します",
- "waf": "コストの最適化"
+ "text": "AzFW/NVA でエグレス フィルター処理を使用しない場合は、標準の ALB によって割り当てられた SNAT ポートを監視します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "中程度",
- "text": "モデル応答あたりのトークン数に上限を設定します。サイズを最適化して、有効な応答に十分な大きさになるようにします",
- "waf": "コストの最適化"
+ "text": "AKS クラスターのリソース正常性通知をサブスクライブするSubscribe to resource health notifications for your AKS cluster",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "ポッド仕様で要求と制限を構成する",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "中程度",
- "text": "信頼性のための AI 検索の設定に関するガイダンスを確認します",
- "waf": "オペレーショナルエクセレンス"
+ "text": "名前空間のリソースクォータを適用する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "サブスクリプションにノードプールをスケールアウトするのに十分なクォータがあることを確認する",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "中程度",
- "text": "AI Search Vector ストレージの計画と管理",
- "waf": "オペレーショナルエクセレンス"
+ "text": "Cluster Autoscaler を使用する",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "AKS ノード プールのノード構成をカスタマイズする",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "中程度",
- "text": "LLMOpsプラクティスを適用して、GenAIアプリケーションのライフサイクル管理を自動化します",
- "waf": "オペレーショナルエクセレンス"
+ "text": "必要に応じてHorizontal Pod Autoscalerを使用します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "ノードが大きくなると、パフォーマンスが向上し、エフェメラル ディスクや高速ネットワークなどの機能が提供されますが、爆発半径が大きくなり、スケーリングの粒度が低下します",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
"severity": "高い",
- "text": "請求モデルの使用状況の評価 - PAYG と PTU の比較",
- "waf": "コストの最適化"
+ "text": "大きすぎず小さすぎない適切なノードサイズを検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "スケーラビリティのために 5,000 を超えるノードが必要な場合は、追加の AKS クラスターの使用を検討してください",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "AKS 自動化のために EventGrid イベントをサブスクライブすることを検討する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "AKS クラスターで実行時間の長い操作を行う場合は、イベントの終了を検討してください",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "必要に応じて、AKS ノードに Azure Dedicated Hosts を使用することを検討してください",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "エフェメラル OS ディスクを使用する",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
+ "severity": "高い",
+ "text": "非エフェメラル ディスクの場合、複数のポッドを実行するには高いパフォーマンスが必要であり、既定の AKS ログ ローテーションしきい値で巨大なログが生成されるため、多くのポッド/ノードを実行する場合は、ノードに高い IOPS とより大きな OS ディスクを使用します",
+ "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.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "severity": "低い",
+ "text": "ハイパー パフォーマンス ストレージ オプションの場合は、AKS 上の Ultra Disks を使用します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
"severity": "中程度",
- "text": "GenAIアプリケーションをレッドチーム化",
- "waf": "安全"
+ "text": "クラスター内に状態を保持することは避け、外部 (AzStorage、AzSQL、Cosmos など) にデータを格納します",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
"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": "コストの最適化"
+ "text": "AzFiles Standard を使用する場合は、パフォーマンス上の理由から AzFiles Premium や ANF を検討してください",
+ "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
"severity": "中程度",
- "text": "APIM ベースのゲートウェイなどのロード バランサー ソリューションを使用して、サービスやリージョン間で負荷と容量を分散します",
- "waf": "オペレーショナルエクセレンス"
+ "text": "Azure ディスクと AZ を使用する場合は、適切なゾーンにストレージをプロビジョニングするために VolumeBindingMode:WaitForFirstConsumer を使用して LRS ディスクのゾーン内にノードプールを配置するか、複数のゾーンにまたがるノードプールに ZRS ディスクを使用することを検討してください",
+ "waf": "パフォーマンス"
},
{
"checklist": "SAP Checklist",
@@ -4758,2028 +4126,2221 @@
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "低い",
- "text": "AKS Windows ワークロードで必要な場合は、HostProcess コンテナーを使用できます",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "低い",
- "text": "イベント ドリブン ワークロードを実行する場合は KEDA を使用します",
- "waf": "パフォーマンス"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
- "severity": "低い",
- "text": "Dapr を使用してマイクロサービス開発を容易にする",
- "waf": "オペレーションズ"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
- "severity": "高い",
- "text": "SLA でサポートされる AKS オファリングを使用する",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "低い",
- "text": "ポッドとデプロイ定義でのディスラプション バジェットの使用",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"severity": "高い",
- "text": "プライベート レジストリを使用する場合は、複数のリージョンにイメージを格納するようにリージョン レプリケーションを構成します",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "低い",
- "text": "kubecost などの外部アプリケーションを使用して、さまざまなユーザーにコストを割り当てます",
- "waf": "費用"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "低い",
- "text": "スケールダウンモードを使用してノードを削除/割り当て解除する",
- "waf": "費用"
+ "text": "ADDS ドメイン コントローラーがネイティブ Azure の ID サブスクリプションにデプロイされていることを確認する",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"severity": "中程度",
- "text": "必要に応じて、AKS クラスターで複数インスタンスの分割 GPU を使用する",
- "waf": "費用"
+ "text": "Azure ベースのリソース (Azure VMware Solution を含む) からの認証要求を Azure にローカルに保持するように ADDS サイトとサービスが構成されていることを確認します",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "低い",
- "text": "Dev/Test クラスターを実行している場合は、NodePool Start/Stop を使用します。",
- "waf": "費用"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "vCenterがADDに接続されていることを確認し、「名前付きユーザーアカウント」に基づく認証を有効にします",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "中程度",
- "text": "Azure Policy for Kubernetes を使用してクラスターのコンプライアンスを確保する",
+ "text": "vCenter から ADDS への接続でセキュア プロトコル (LDAPS) が使用されていることを確認します",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "中程度",
- "text": "ユーザー/システムノードプールを使用してコントロールプレーンからアプリケーションを分離する",
+ "text": "vCenter IdP の CloudAdmin アカウントは、緊急アカウント(非常用アカウント)としてのみ使用されます",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "低い",
- "text": "システム ノードプールにテイントを追加して専用にする",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "NSX-Manager が外部 ID プロバイダ (LDAPS) と統合されていることを確認します。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"severity": "中程度",
- "text": "イメージにはプライベート レジストリ (ACR など) を使用する",
+ "text": "VMware vSphere 内で使用するために RBAC モデルが作成されているか",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "中程度",
- "text": "イメージをスキャンして脆弱性を検出する",
+ "text": "RBAC アクセス許可は、特定のユーザーではなく、ADDS グループに付与する必要があります",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"severity": "高い",
- "text": "アプリの分離要件を定義する (名前空間/ノードプール/クラスター)",
+ "text": "Azure の Azure VMware Solution リソースに対する RBAC アクセス許可は、限られた所有者のセットのみに \"ロックダウン\" されます",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
- "severity": "中程度",
- "text": "CSI シークレット ストア ドライバーを使用して Azure Key Vault にシークレットを格納する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "すべてのカスタム ロールのスコープが CloudAdmin で許可された承認で設定されていることを確認する",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"severity": "高い",
- "text": "クラスターにサービス プリンシパルを使用する場合は、資格情報を定期的に (四半期ごとなど) 更新します",
- "waf": "安全"
+ "text": "お客様のユース ケースに適した Azure VMware Solution 接続モデルが選択されているか",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
- "severity": "中程度",
- "text": "必要に応じて、キー管理サービスの etcd 暗号化を追加します",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "オンプレミスから Azure への ExpressRoute または VPN 接続が \"接続モニター\" を使用して監視されていることを確認する",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、Confidential Compute for AKS の使用を検討してください",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution バックエンドの ExpressRoute 接続を監視するために、Azure ネイティブ リソースから Azure VMware Solution 仮想マシンへの接続モニターが作成されていることを確認します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "中程度",
- "text": "Defender for Containers の使用を検討する",
- "waf": "安全"
+ "text": "エンド 2 エンドの接続を監視するために、オンプレミス リソースから Azure VMware Solution 仮想マシンへの接続モニターが作成されていることを確認します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
"severity": "高い",
- "text": "サービス プリンシパルの代わりにマネージド ID を使用するUse managed identities instead of Service Principals",
- "waf": "安全"
+ "text": "ルート サーバーを使用する場合は、ルート サーバーから ExR ゲートウェイ、オンプレミスに伝達されるルートが 1000 を超えないようにします (ARS 制限)。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
- "severity": "中程度",
- "text": "認証と AAD の統合 (マネージド統合を使用)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "Azure Portal で Azure VMware Solution リソースを管理するロールに対して Privileged Identity Management が実装されていますか (永続的なアクセス許可は許可されません)",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
- "severity": "中程度",
- "text": "管理者 kubeconfig へのアクセスを制限する (get-credentials --admin)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "Privileged Identity Management 監査レポートは、Azure VMware Solution PIM ロールに対して実装する必要がある",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"severity": "中程度",
- "text": "承認と AAD RBAC の統合",
+ "text": "Privileged Identity Management を使用している場合は、Azure VMware Solution のホストの自動置換通知用の有効な SMTP レコードを使用して、有効な Entra ID が有効なアカウントが作成されていることを確認します。(常任許可が必要)",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"severity": "高い",
- "text": "Kubernetes で RBAC 特権を制限するために名前空間を使用する",
+ "text": "CloudAdmin アカウントの使用を緊急アクセスのみに制限する",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
"severity": "中程度",
- "text": "ポッド ID アクセス管理の場合は、Azure AD ワークロード ID (プレビュー) を使用します",
+ "text": "vCenter Server でカスタム RBAC ロールを作成して、vCenter 内に最小特権モデルを実装します",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"severity": "中程度",
- "text": "AKS 非対話型ログインの場合は、kubelogin (プレビュー) を使用します",
+ "text": "cloudadmin (vCenter) と admin (NSX) の資格情報を定期的にローテーションするように定義されたプロセスです。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
- "severity": "中程度",
- "text": "AKS ローカル アカウントを無効にする",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "一元化された ID プロバイダーを使用して、Azure VMware Solution で実行されているワークロード (VM) に使用する",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて Just-In-Time クラスター アクセスを構成する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "East-West トラフィック フィルタリングは NSX-T 内に実装されていますか",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて AKS の AAD 条件付きアクセスを構成する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "Azure VMware Solution 上のワークロードは、インターネットに直接公開されません。トラフィックは、Azure Application Gateway、Azure Firewall、またはサード パーティのソリューションによってフィルター処理され、検査されます",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "低い",
- "text": "Windows AKS ワークロードで必要な場合は、gMSA を構成します",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "監査とログ記録は、Azure VMware Solution および Azure VMware Solution ベースのワークロードへの受信インターネット要求に対して実装されます",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"severity": "中程度",
- "text": "より細かく制御するには、マネージドKubelet Identityの使用を検討してください",
+ "text": "セッション監視は、疑わしい/悪意のあるアクティビティを特定するために、Azure VMware Solution または Azure VMware Solution ベースのワークロードからの送信インターネット接続に実装されます",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"severity": "中程度",
- "text": "AGIC を使用している場合は、クラスター間で AppGW を共有しないでください",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
- "severity": "高い",
- "text": "AKS HTTP ルーティング アドオンを使用せず、代わりにアプリケーション ルーティング アドオンでマネージド NGINX イングレスを使用します。",
- "waf": "確実"
+ "text": "Azure の ExR/VPN Gateway サブネットで DDoS Standard 保護が有効になっているか",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
"severity": "中程度",
- "text": "Windows ワークロードの場合は、高速ネットワークを使用します",
- "waf": "パフォーマンス"
+ "text": "専用の特権アクセス ワークステーション (PAW) を使用して、Azure VMware Solution、vCenter、NSX Manager、HCX Manager を管理する",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
- "severity": "高い",
- "text": "標準のALBを使用する(基本的なALBとは対照的)",
- "waf": "確実"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution で実行されているワークロードに対して Advanced Threat Detection (Microsoft Defender for Cloud 別名 ASC) を有効にする",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
"severity": "中程度",
- "text": "Azure CNI を使用する場合は、NodePool に異なるサブネットを使用することを検討してください",
+ "text": "Azure ARC for Servers を使用して、Azure ネイティブ テクノロジを使用して Azure VMware Solution で実行されているワークロードを適切に管理します (Azure ARC for Azure VMware Solution はまだ利用できません)",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
- "severity": "中程度",
- "text": "プライベート エンドポイント (推奨) または Virtual Network サービス エンドポイントを使用して、クラスターから PaaS サービスにアクセスする",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "Azure VMware Solution 上のワークロードで、実行時に十分なデータ暗号化 (ゲスト内ディスク暗号化や SQL TDE など) が使用されるようにします。(保存時の vSAN 暗号化がデフォルトです)",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "高い",
- "text": "要件に最適な CNI ネットワーク プラグインを選択する (Azure CNI を推奨)",
- "waf": "確実"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "ゲスト内暗号化を使用する場合は、可能な場合は Azure Key Vault に暗号化キーを格納します",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "高い",
- "text": "Azure CNI を使用する場合は、ノードあたりのポッドの最大数を考慮して、サブネットのサイズを適切に設定します",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution で実行されているワークロードには、拡張セキュリティ更新プログラムのサポートの使用を検討してください (Azure VMware Solution は ESU の対象です)",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"severity": "高い",
- "text": "Azure CNI を使用している場合は、最大ポッド数/ノード (既定値は 30) を確認します",
- "waf": "パフォーマンス"
+ "text": "適切な vSAN データ冗長化方式(RAID 仕様)が使用されていることを確認します。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "内部アプリの場合、組織は多くの場合、ファイアウォールで AKS サブネット全体を開きます。これにより、ノードへのネットワーク アクセスも開かれ、場合によってはポッドへのネットワーク アクセスも開かれます (Azure CNI を使用している場合)。LoadBalancer の IP が別のサブネットにある場合は、この IP のみをアプリ クライアントで使用できる必要があります。もう 1 つの理由は、AKS サブネット内の IP アドレスが希少なリソースである場合、その IP アドレスをサービスに使用すると、クラスターの最大スケーラビリティが低下することです。",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "低い",
- "text": "プライベート IP LoadBalancer サービスを使用する場合は、(AKS サブネットではなく) 専用サブネットを使用します",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "許容障害ポリシーが vSAN ストレージのニーズを満たすために設定されていることを確認します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "高い",
- "text": "それに応じて、サービスの IP アドレス範囲のサイズを設定します (クラスターのスケーラビリティが制限されます)。",
+ "text": "十分なクォータを要求し、拡張とディザスタリカバリの要件を考慮していることを確認します",
"waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、独自のCNIプラグインを追加します",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "ESXiへのアクセス制限を理解し、サードパーティのソリューションに影響を与える可能性のあるアクセス制限があることを確認してください。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、AKS でノードごとにパブリック IP を構成する",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "ESXi ホストの密度と効率に関するポリシーがあることを確認し、新しいノードを要求するためのリード タイムを念頭に置いてください",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "中程度",
- "text": "イングレス コントローラーを使用して、LoadBalancer タイプのサービスで公開する代わりに、Web ベースのアプリを公開します",
- "waf": "確実"
+ "text": "Azure VMware Solution の適切なコスト管理プロセスが整っていることを確認する - Azure Cost Management を使用できます",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
"severity": "低い",
- "text": "エグレス トラフィックをスケーリングするために Azure NAT Gateway を outboundType として使用する",
- "waf": "確実"
+ "text": "Azure VMware Solution を使用するためのコストを最適化するために Azure 予約インスタンスが使用されているか",
+ "waf": "費用"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"severity": "中程度",
- "text": "Azure CNI IP の枯渇を回避するために IP の動的割り当てを使用する",
- "waf": "確実"
+ "text": "他の Azure Native Services を使用する場合は、Azure Private-Link の使用を検討してください",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"severity": "高い",
- "text": "セキュリティ要件で義務付けられている場合は、AzFW/NVA を使用してエグレス トラフィックをフィルター処理します",
+ "text": "必要なすべてのリソースが同じ Azure 可用性ゾーン内に存在することを確認する",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution ゲスト VM ワークロードに対して Microsoft Defender for Cloud を有効にする",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "中程度",
- "text": "パブリック API エンドポイントを使用している場合は、アクセスできる IP アドレスを制限します",
+ "text": "Azure Arc 対応サーバーを使用して Azure VMware Solution ゲスト VM のワークロードを管理する",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
"severity": "高い",
- "text": "要件で必要な場合は、プライベート クラスターを使用します",
- "waf": "安全"
+ "text": "Azure VMware Solution での診断ログとメトリック ログを有効にするEnable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Log Analytics エージェントを Azure VMware Solution ゲスト VM ワークロードにデプロイする",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution VM ワークロードのバックアップ ポリシーとソリューションが文書化され、実装されていることを確認します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "中程度",
- "text": "Windows 2019 および 2022 AKS ノードでは、Calico ネットワーク ポリシーを使用できます",
+ "text": "Microsoft Defender for Cloud を使用して、Azure VMware Solution で実行されているワークロードのコンプライアンス監視を行う",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "高い",
- "text": "Kubernetes ネットワーク ポリシー オプションを有効にする (Calico/Azure)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "適用可能なコンプライアンス ベースラインは Microsoft Defender for Cloud に追加されていますか",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"severity": "高い",
- "text": "Kubernetesネットワークポリシーを使用してクラスタ内のセキュリティを強化",
+ "text": "Azure VMware Solution のデプロイに使用する Azure リージョンを選択するときにデータ所在地が評価されましたか",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"severity": "高い",
- "text": "Web ワークロード (UI または API) に WAF を使用するUse a WAF for a web workloads (UI or API)",
+ "text": "データ処理への影響 (サービス プロバイダー/サービス コンシューマー モデル) が明確で文書化されているか",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "中程度",
- "text": "AKS Virtual Network で DDoS Standard を使用するUse DDoS Standard in the AKS Virtual Network",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、会社の HTTP プロキシを追加します",
+ "text": "コンプライアンス上の理由で必要な場合にのみ、vSAN に CMK (カスタマー マネージド キー) を使用することを検討してください。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
- "severity": "中程度",
- "text": "高度なマイクロサービス通信管理にサービスメッシュの使用を検討する",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "Azure VMware Solution のコア監視分析情報を有効にするダッシュボードを作成するCreate dashboards to enable a core Azure VMware Solution monitoring insights",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
"severity": "高い",
- "text": "最も重要なメトリックに関するアラートを構成します (推奨事項については、「Container Insights」を参照してください)",
+ "text": "Azure VMware Solution のパフォーマンス (CPU >80%、平均メモリ >80%、vSAN >70%) に関する自動アラートの重大しきい値の警告アラートを作成する",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "低い",
- "text": "Azure Advisor でクラスターの推奨事項を定期的に確認する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "vSAN の消費量が 75% を下回っているかどうかを監視するための重要なアラートが作成されていることを確認します (これは VMware からのサポートしきい値です)。",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "低い",
- "text": "AKS 自動証明書のローテーションを有効にする",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "Azure Service Health のアラートと通知に対してアラートが構成されていることを確認する",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
- "severity": "高い",
- "text": "kubernetes のバージョンを定期的に (四半期ごとなど) アップグレードする定期的なプロセスを行うか、AKS 自動アップグレード機能を使用します",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "処理のために Azure Storage アカウントまたは Azure EventHub に送信するように Azure VMware Solution ログを構成する",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "高い",
- "text": "ノードイメージのアップグレードを使用していない場合は、Linuxノードのアップグレードにkuredを使用します",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "VMware vSphere での詳細な分析情報が必要な場合:vRealize Operations や vRealize Network Insights がソリューションで使用されていますか?",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
"severity": "高い",
- "text": "クラスタノードイメージを定期的に(毎週など)アップグレードする定期的なプロセスを用意します",
+ "text": "仮想マシンの vSAN ストレージ ポリシーはシック プロビジョニングを適用するため、このポリシーがデフォルトのストレージ ポリシーではないことを確認します",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "低い",
- "text": "アプリケーションまたはクラスター構成を複数のクラスターにデプロイするために gitop を検討してください",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "vSAN は有限のリソースであるため、vSphere コンテンツ ライブラリが vSAN に配置されていないことを確認する",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "低い",
- "text": "プライベート クラスターで AKS コマンド呼び出しを使用することを検討する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "バックアップ ソリューションのデータ リポジトリが vSAN ストレージの外部に保存されていることを確認します。Azure ネイティブまたはディスク プールでバックアップされるデータストア上",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "低い",
- "text": "計画されたイベントの場合は、ノードの自動ドレインの使用を検討してください",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure Arc for Servers を使用して Azure VMware Solution で実行されているワークロードがハイブリッド管理されていることを確認する (Arc for Azure VMware Solution はプレビュー段階です)",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
- "severity": "高い",
- "text": "独自のガバナンスプラクティスを開発して、ノードRG(別名「インフラRG」)のオペレーターによって変更が実行されないようにします",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution で実行されているワークロードが Azure Log Analytics と Azure Monitor を使用して監視されていることを確認する",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "低い",
- "text": "カスタムノードRG(別名「インフラRG」)名を使用",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution で実行されているワークロードを、既存の更新プログラム管理ツールまたは Azure Update Management に含める",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"severity": "中程度",
- "text": "非推奨の Kubernetes API を YAML マニフェストで使用しないでください",
+ "text": "Azure Policy を使用して、Azure の管理、監視、セキュリティ ソリューションに Azure VMware Solution ワークロードをオンボードする",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "低い",
- "text": "Windows ノードのテイント",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "Azure VMware Solution で実行されているワークロードが Microsoft Defender for Cloud にオンボードされていることを確認する",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "severity": "低い",
- "text": "Windows コンテナーのパッチ レベルをホストのパッチ レベルと同期させる",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "vSAN は有限のリソースであるため、バックアップが vSAN に保存されないようにする",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "クラスタレベルでの診断設定経由",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "低い",
- "text": "マスター ログ (API ログ) を Azure Monitor または任意のログ管理ソリューションに送信する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "すべてのDRソリューションが検討され、ビジネスに最適なソリューションが決定されましたか?[SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、nodePool スナップショットを使用します",
- "waf": "費用"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "ディザスター リカバリー テクノロジがネイティブの Azure IaaS の場合は、Azure Site Recovery を使用します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "低い",
- "text": "時間的制約のないワークロードのスポット ノード プールを検討する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "いずれかの災害ソリューションで自動復旧計画を使用し、手動タスクを可能な限り回避します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "低い",
- "text": "クイック バーストのために AKS 仮想ノードを検討する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "地政学的リージョンのペアをセカンダリディザスタリカバリ環境として使用する",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
"severity": "高い",
- "text": "Container Insights (または Prometheus などの他のツール) を使用してクラスター メトリックを監視する",
- "waf": "オペレーションズ"
+ "text": "リージョン間で 2 つの異なるアドレス空間を使用します (例: 10.0.0.0/16 と 192.168.0.0/16)。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "高い",
- "text": "Container Insights(またはTelegraf/ElasticSearchなどの他のツール)を使用してクラスターログを保存および分析します",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "ExpressRoute Global Reach は、プライマリとセカンダリの Azure VMware Solution プライベート クラウド間の接続に使用されますか、それともネットワーク仮想アプライアンスを介してルーティングされますか?",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"severity": "中程度",
- "text": "ノードの CPU とメモリの使用率を監視する",
- "waf": "オペレーションズ"
+ "text": "すべてのバックアップソリューションが検討され、ビジネスに最適なソリューションが決定されましたか?[ MABS/CommVault/Metallic.io/Veeam/ . ]",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"severity": "中程度",
- "text": "Azure CNI を使用している場合は、ノードごとに消費されるポッド IP の割合を監視します",
- "waf": "オペレーションズ"
+ "text": "バックアップ ソリューションを Azure VMware Solution プライベート クラウドと同じリージョンにデプロイする",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "OS ディスクの I/O は重要なリソースです。ノード内の OS が I/O で調整されると、予期しない動作が発生し、通常はノードが NotReady と宣言される可能性があります",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"severity": "中程度",
- "text": "ノード内の OS ディスク キューの深さを監視する",
+ "text": "バックアップ ソリューションを vSan の外部の Azure ネイティブ コンポーネントにデプロイする",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "Azure プラットフォームによって管理されている VMware コンポーネントの復元を要求するプロセスは用意されていますか?",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "手動デプロイの場合、すべての構成とデプロイを文書化する必要があります",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
- "severity": "中程度",
- "text": "AzFW/NVA でエグレス フィルター処理を使用しない場合は、標準の ALB によって割り当てられた SNAT ポートを監視します",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "手動デプロイの場合は、Azure VMware Solution プライベート クラウドでの偶発的なアクションを防ぐために、リソース ロックの実装を検討してください",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
- "severity": "中程度",
- "text": "AKS クラスターのリソース正常性通知をサブスクライブするSubscribe to resource health notifications for your AKS cluster",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "自動デプロイの場合は、最小限のプライベート クラウドをデプロイし、必要に応じてスケーリングします",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "高い",
- "text": "ポッド仕様で要求と制限を構成する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "自動デプロイの場合は、デプロイを開始する前にクォータを要求または予約します",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "中程度",
- "text": "名前空間のリソースクォータを適用する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "自動デプロイの場合は、適切なガバナンスのために、自動化または Azure Policy を使用して関連するリソース ロックが作成されていることを確認します",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
- "severity": "高い",
- "text": "サブスクリプションにノードプールをスケールアウトするのに十分なクォータがあることを確認する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "ExR 認証キーに人間が理解できる名前を実装して、キーの目的/用途を簡単に識別できるようにします",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "中程度",
- "text": "Cluster Autoscaler を使用する",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "Azure VMware Solution と ExpressRoute のデプロイに個別のサービス プリンシパルを使用する場合は、キー コンテナーを使用してシークレットと承認キーを格納します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "severity": "低い",
+ "text": "Azure VMware Solution では限られた数の並列操作しかサポートされないため、Azure VMware Solution に多くのリソースをデプロイする必要がある場合に、IaC でアクションをシリアル化するためのリソースの依存関係を定義します。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
"severity": "低い",
- "text": "AKS ノード プールのノード構成をカスタマイズする",
- "waf": "パフォーマンス"
+ "text": "単一の Tier-1 ゲートウェイで NSX-T セグメントの自動構成を実行する場合は、NSX-Manager API ではなく Azure Portal API を使用します",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"severity": "中程度",
- "text": "必要に応じてHorizontal Pod Autoscalerを使用します",
+ "text": "自動スケールアウトを使用する場合は、Azure VMware Solution を実行しているサブスクリプションに対して十分な Azure VMware Solution クォータを申請してください",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "ノードが大きくなると、パフォーマンスが向上し、エフェメラル ディスクや高速ネットワークなどの機能が提供されますが、爆発半径が大きくなり、スケーリングの粒度が低下します",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "高い",
- "text": "大きすぎず小さすぎない適切なノードサイズを検討してください",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "自動スケールインを使用する場合は、そのようなアクションを実行する前に、ストレージ ポリシーの要件を必ず考慮してください",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "低い",
- "text": "スケーラビリティのために 5,000 を超えるノードが必要な場合は、追加の AKS クラスターの使用を検討してください",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "スケーリング操作は、一度に 1 つのスケール操作しか実行できないため、常に 1 つの SDDC 内でシリアル化する必要があります (複数のクラスタが使用されている場合でも)",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "低い",
- "text": "AKS 自動化のために EventGrid イベントをサブスクライブすることを検討する",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "アーキテクチャで使用されるサードパーティソリューションでのスケーリング操作を検討および検証します(サポートされているかどうか)",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "低い",
- "text": "AKS クラスターで実行時間の長い操作を行う場合は、イベントの終了を検討してください",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "自動化で環境のスケールイン/スケールアウトの上限を定義して適用する",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "低い",
- "text": "必要に応じて、AKS ノードに Azure Dedicated Hosts を使用することを検討してください",
- "waf": "パフォーマンス"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "監視ルールを実装して、自動スケーリング操作を監視し、成功と失敗を監視して、適切な (自動化された) 応答を有効にします",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "高い",
- "text": "エフェメラル OS ディスクを使用する",
- "waf": "パフォーマンス"
+ "text": "MONを使用する場合は、同時に構成されたVMの制限(HCXのMON制限[400 - 標準、1000 - 大規模アプライアンス])に注意してください",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "高い",
- "text": "非エフェメラル ディスクの場合、複数のポッドを実行するには高いパフォーマンスが必要であり、既定の AKS ログ ローテーションしきい値で巨大なログが生成されるため、多くのポッド/ノードを実行する場合は、ノードに高い IOPS とより大きな OS ディスクを使用します",
- "waf": "パフォーマンス"
+ "text": "MON を使用する場合、100 を超えるネットワーク拡張で MON を有効にすることはできません",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
- "severity": "低い",
- "text": "ハイパー パフォーマンス ストレージ オプションの場合は、AKS 上の Ultra Disks を使用します",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "移行に VPN 接続を使用する場合は、それに応じて MTU サイズを調整します。",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"severity": "中程度",
- "text": "クラスター内に状態を保持することは避け、外部 (AzStorage、AzSQL、Cosmos など) にデータを格納します",
+ "text": "Azure に接続する接続性の低いリージョン (500 Mbps 以下) の場合は、HCX WAN 最適化アプライアンスのデプロイを検討してください",
"waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"severity": "中程度",
- "text": "AzFiles Standard を使用する場合は、パフォーマンス上の理由から AzFiles Premium や ANF を検討してください",
- "waf": "パフォーマンス"
+ "text": "移行がオンプレミスアプライアンスから開始され、クラウドアプライアンスから開始されていないことを確認します(逆移行は実行しないでください)",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"severity": "中程度",
- "text": "Azure ディスクと AZ を使用する場合は、適切なゾーンにストレージをプロビジョニングするために VolumeBindingMode:WaitForFirstConsumer を使用して LRS ディスクのゾーン内にノードプールを配置するか、複数のゾーンにまたがるノードプールに ZRS ディスクを使用することを検討してください",
- "waf": "パフォーマンス"
+ "text": "Azure NetApp Files を使用して Azure VMware Solution のストレージを拡張する場合は、VM に直接接続するのではなく、これを VMware データストアとして使用することを検討してください。",
+ "waf": "確実"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "専用の ExpressRoute ゲートウェイが外部データ ストレージ ソリューションに使用されていることを確認する",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
+ "severity": "中程度",
+ "text": "外部データ ストレージ ソリューションに使用されている ExpressRoute ゲートウェイで FastPath が有効になっていることを確認します",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
"service": "AVS",
"severity": "高い",
- "text": "ADDS ドメイン コントローラーがネイティブ Azure の ID サブスクリプションにデプロイされていることを確認する",
- "waf": "安全"
+ "text": "ストレッチ クラスタを使用している場合は、選択したディザスタ リカバリ ソリューションがベンダーによってサポートされていることを確認します",
+ "waf": "確実"
},
{
"arm-service": "Microsoft.AVS/privateClouds",
"checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "ストレッチ クラスターを使用する場合は、提供される SLA が要件を満たしていることを確認します",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "ストレッチ クラスターを使用している場合は、両方の ExpressRoute 回線が接続ハブに接続されていることを確認します。",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
+ "severity": "高い",
+ "text": "ストレッチ クラスターを使用している場合は、両方の ExpressRoute 回線で GlobalReach が有効になっていることを確認します。",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
"service": "AVS",
+ "severity": "高い",
+ "text": "サイトの耐障害性の設定を適切に検討し、必要に応じてビジネスに合わせて変更しましたか?",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ストレージに関連する Microsoft クラウド セキュリティ ベンチマークのガイダンスを適用する",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
+ "severity": "中程度",
+ "text": "\"ストレージの Azure セキュリティ ベースライン\" を検討する",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "既定では、Azure Storage にはパブリック IP アドレスがあり、インターネットにアクセス可能です。プライベート エンドポイントを使用すると、アクセスが必要な Azure コンピューティング リソースにのみ Azure Storage を安全に公開できるため、パブリック インターネットへの露出を排除できます",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
+ "severity": "高い",
+ "text": "Azure Storage にプライベート エンドポイントを使用することを検討する",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "新しく作成されたストレージ アカウントは、RBAC や監査などがすべて有効になるように、ARM デプロイ モデルを使用して作成されます。サブスクリプションにクラシック デプロイ モデルの古いストレージ アカウントがないことを確認する",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "Azure ベースのリソース (Azure VMware Solution を含む) からの認証要求を Azure にローカルに保持するように ADDS サイトとサービスが構成されていることを確認します",
+ "text": "古いストレージ アカウントで \"クラシック デプロイ モデル\" が使用されていないことを確認する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Microsoft Defender を活用して、不審なアクティビティや構成ミスについて学習します。",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "vCenterがADDに接続されていることを確認し、「名前付きユーザーアカウント」に基づく認証を有効にします",
+ "text": "すべてのストレージ アカウントに対して Microsoft Defender を有効にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "論理的な削除メカニズムを使用すると、誤って削除された BLOB を回復できます。",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "vCenter から ADDS への接続でセキュア プロトコル (LDAPS) が使用されていることを確認します",
+ "text": "BLOB の \"論理的な削除\" を有効にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "たとえば、機密性、プライバシー、コンプライアンス上の理由などから、削除された情報がすぐに削除されるようにアプリケーションで確認する必要がある場合など、特定の BLOB コンテナーに対して \"論理的な削除\" を選択的に無効にすることを検討してください。",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "vCenter IdP の CloudAdmin アカウントは、緊急アカウント(非常用アカウント)としてのみ使用されます",
+ "text": "BLOB の '論理的な削除' を無効にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "コンテナーの論理的な削除を使用すると、コンテナーが削除された後に回復できます (たとえば、偶発的な削除操作から回復します)。",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "NSX-Manager が外部 ID プロバイダ (LDAPS) と統合されていることを確認します。",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
- "severity": "中程度",
- "text": "VMware vSphere 内で使用するために RBAC モデルが作成されているか",
+ "text": "コンテナーの \"論理的な削除\" を有効にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "たとえば、機密性、プライバシー、コンプライアンス上の理由などから、削除された情報がすぐに削除されるようにアプリケーションで確認する必要がある場合など、特定の BLOB コンテナーに対して \"論理的な削除\" を選択的に無効にすることを検討してください。",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "RBAC アクセス許可は、特定のユーザーではなく、ADDS グループに付与する必要があります",
+ "text": "コンテナーの \"論理的な削除\" を無効にする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "削除前に削除ロックを最初に解除するようにユーザーに強制することで、ストレージ アカウントが誤って削除されないようにします",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "Azure の Azure VMware Solution リソースに対する RBAC アクセス許可は、限られた所有者のセットのみに \"ロックダウン\" されます",
+ "text": "ストレージ アカウントでのリソース ロックの有効化",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "BLOB の \"訴訟ホールド\" または \"時間ベースの保持\" ポリシーを検討して、BLOB、コンテナー、またはストレージ アカウントを削除できないようにします。「不可能」は実際には「不可能」を意味することに注意してください。ストレージ アカウントに不変の BLOB が含まれる場合、そのストレージ アカウントを \"取り除く\" 唯一の方法は、Azure サブスクリプションを取り消すことです。",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "すべてのカスタム ロールのスコープが CloudAdmin で許可された承認で設定されていることを確認する",
+ "text": "不変の BLOB を検討する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ストレージ アカウントへの保護されていない HTTP/80 アクセスを無効にして、すべてのデータ転送が暗号化され、整合性が保護され、サーバーが認証されるようにすることを検討してください。",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "お客様のユース ケースに適した Azure VMware Solution 接続モデルが選択されているか",
- "waf": "パフォーマンス"
+ "text": "HTTPS を要求する (つまり、ストレージ アカウントのポート 80 を無効にする)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ストレージ アカウントでカスタム ドメイン (ホスト名) を構成する場合は、TLS/HTTPS が必要かどうかを確認します。その場合は、ストレージ アカウントの前に Azure CDN を配置する必要があります。",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "オンプレミスから Azure への ExpressRoute または VPN 接続が \"接続モニター\" を使用して監視されていることを確認する",
- "waf": "オペレーションズ"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
- "severity": "中程度",
- "text": "Azure VMware Solution バックエンドの ExpressRoute 接続を監視するために、Azure ネイティブ リソースから Azure VMware Solution 仮想マシンへの接続モニターが作成されていることを確認します",
- "waf": "オペレーションズ"
+ "text": "HTTPS を適用する (HTTP を無効にする) 場合は、ストレージ アカウントにカスタム ドメイン (CNAME) を使用していないことを確認します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "クライアントが SAS トークンを使用して BLOB データにアクセスするときに HTTPS を要求すると、資格情報が失われるリスクを最小限に抑えることができます。",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "エンド 2 エンドの接続を監視するために、オンプレミス リソースから Azure VMware Solution 仮想マシンへの接続モニターが作成されていることを確認します",
- "waf": "オペレーションズ"
+ "text": "Shared Access Signature (SAS) トークンを HTTPS 接続のみに制限する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "AAD トークンは、可能な限り、共有アクセス署名よりも優先する必要があります",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "ルート サーバーを使用する場合は、ルート サーバーから ExR ゲートウェイ、オンプレミスに伝達されるルートが 1000 を超えないようにします (ARS 制限)。",
- "waf": "オペレーションズ"
+ "text": "BLOB アクセスに Azure Active Directory (Azure AD) トークンを使用する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
- "severity": "高い",
- "text": "Azure Portal で Azure VMware Solution リソースを管理するロールに対して Privileged Identity Management が実装されていますか (永続的なアクセス許可は許可されません)",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ユーザー、グループ、またはアプリケーションにロールを割り当てる場合は、タスクの実行に必要なアクセス許可のみをセキュリティ プリンシパルに付与します。リソースへのアクセスを制限することで、意図しないデータの誤用と悪意のあるデータの誤用の両方を防ぐことができます。",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
+ "severity": "中程度",
+ "text": "IaM アクセス許可の最小特権",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ユーザー委任 SAS は、Azure Active Directory (Azure AD) 資格情報と、SAS に指定されたアクセス許可によってセキュリティで保護されます。ユーザー委任 SAS は、そのスコープと機能の点でサービス SAS に似ていますが、サービス SAS よりもセキュリティ上の利点があります。",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"severity": "高い",
- "text": "Privileged Identity Management 監査レポートは、Azure VMware Solution PIM ロールに対して実装する必要がある",
+ "text": "SAS を使用する場合は、ストレージ アカウント キー ベースの SAS よりも \"ユーザー委任 SAS\" を優先します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
- "severity": "中程度",
- "text": "Privileged Identity Management を使用している場合は、Azure VMware Solution のホストの自動置換通知用の有効な SMTP レコードを使用して、有効な Entra ID が有効なアカウントが作成されていることを確認します。(常任許可が必要)",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ストレージ アカウント キー (\"共有キー\") には、監査機能がほとんどありません。誰がいつキーのコピーを取得したかを監視できますが、キーが複数の人の手に渡ると、使用状況を特定のユーザーに帰属させることは不可能です。AAD 認証のみに依存することで、ストレージへのアクセスをユーザーに結び付けやすくなります。",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
+ "severity": "高い",
+ "text": "ストレージ アカウント キーを無効にして、AAD アクセス (およびユーザー委任 SAS) のみがサポートされるようにすることを検討してください。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "アクティビティ ログ データを使用して、ストレージ アカウントのセキュリティ (ストレージ アカウント キー、アクセス ポリシーなど) が \"いつ、誰が、何を、\"どのように\" 表示または変更されているかを特定します。",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "CloudAdmin アカウントの使用を緊急アクセスのみに制限する",
+ "text": "Azure Monitor を使用して、ストレージ アカウントに対するコントロール プレーン操作を監査することを検討してください",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "キーの有効期限ポリシーを使用すると、アカウントアクセスキーのローテーションのリマインダーを設定できます。リマインダーは、指定した間隔が経過し、キーがまだローテーションされていない場合に表示されます。",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "vCenter Server でカスタム RBAC ロールを作成して、vCenter 内に最小特権モデルを実装します",
+ "text": "ストレージ アカウント キーを使用する場合は、\"キーの有効期限ポリシー\" を有効にすることを検討してください",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS 有効期限ポリシーでは、SAS が有効である推奨間隔を指定します。SAS 有効期限ポリシーは、サービス SAS またはアカウント SAS に適用されます。ユーザーがサービス SAS またはアカウント SAS を、推奨間隔よりも長い有効期間で生成すると、警告が表示されます。",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "cloudadmin (vCenter) と admin (NSX) の資格情報を定期的にローテーションするように定義されたプロセスです。",
+ "text": "SAS 有効期限ポリシーの構成を検討する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
- "severity": "高い",
- "text": "一元化された ID プロバイダーを使用して、Azure VMware Solution で実行されているワークロード (VM) に使用する",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "保存されているアクセス ポリシーを使用すると、ストレージ アカウント キーを再生成することなく、サービス SAS のアクセス許可を取り消すことができます。",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
+ "severity": "中程度",
+ "text": "保存されているアクセス ポリシーに SAS をリンクすることを検討する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "East-West トラフィック フィルタリングは NSX-T 内に実装されていますか",
+ "text": "チェックインされた接続文字列とストレージ アカウント キーを検出するようにアプリケーションのソース コード リポジトリを構成することを検討してください。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "理想的には、アプリケーションでマネージド ID を使用して Azure Storage に対する認証を行う必要があります。それが不可能な場合は、ストレージ資格情報 (接続文字列、ストレージ アカウント キー、SAS、サービス プリンシパル資格情報) を Azure KeyVault または同等のサービスに用意することを検討してください。",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "Azure VMware Solution 上のワークロードは、インターネットに直接公開されません。トラフィックは、Azure Application Gateway、Azure Firewall、またはサード パーティのソリューションによってフィルター処理され、検査されます",
+ "text": "接続文字列を Azure KeyVault に格納することを検討する (マネージド ID が不可能なシナリオの場合)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "アドホック SAS サービス SAS またはアカウント SAS で、有効期限が近づいています。このように、SAS が侵害された場合でも、有効期間は短時間です。この方法は、保存されているアクセス ポリシーを参照できない場合に特に重要です。また、有効期限が近いと、BLOB にアップロードできる時間が制限されるため、BLOB に書き込めるデータの量も制限されます。",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "高い",
- "text": "監査とログ記録は、Azure VMware Solution および Azure VMware Solution ベースのワークロードへの受信インターネット要求に対して実装されます",
+ "text": "アドホックSASの有効期間を短くする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS を作成するときは、できるだけ具体的かつ制限的にしてください。1 つのリソースと操作には、より広範なアクセスを提供する SAS よりも SAS を優先します。",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "セッション監視は、疑わしい/悪意のあるアクティビティを特定するために、Azure VMware Solution または Azure VMware Solution ベースのワークロードからの送信インターネット接続に実装されます",
+ "text": "SAS に狭いスコープを適用する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS には、SAS を使用してリソースを要求する権限をクライアント IP アドレスまたはアドレス範囲に与えるパラメーターを含めることができます。",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "Azure の ExR/VPN Gateway サブネットで DDoS Standard 保護が有効になっているか",
+ "text": "可能な限り、SAS のスコープを特定のクライアント IP アドレスに設定することを検討してください",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
- "severity": "中程度",
- "text": "専用の特権アクセス ワークステーション (PAW) を使用して、Azure VMware Solution、vCenter、NSX Manager、HCX Manager を管理する",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS は、クライアントがアップロードするデータの量を制限できません。時間の経過に伴うストレージ容量の価格モデルを考えると、クライアントが悪意を持って大きなコンテンツをアップロードしたかどうかを検証することは理にかなっているかもしれません。",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
+ "severity": "低い",
+ "text": "クライアントが SAS を使用してファイルをアップロードした後、アップロードされたデータを確認することを検討してください。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
- "severity": "中程度",
- "text": "Azure VMware Solution で実行されているワークロードに対して Advanced Threat Detection (Microsoft Defender for Cloud 別名 ASC) を有効にする",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "\"ローカル ユーザー アカウント\" を使用して SFTP 経由で BLOB ストレージにアクセスする場合、\"通常の\" RBAC 制御は適用されません。NFS または REST 経由の BLOB アクセスは、SFTP アクセスよりも制限が厳しい場合があります。残念ながら、2023 年初頭の時点で、SFTP エンドポイントで現在サポートされている ID 管理の形式はローカル ユーザーだけです",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
+ "severity": "高い",
+ "text": "SFTP: SFTPアクセスの「ローカルユーザー」の数を制限し、時間の経過とともにアクセスが必要かどうかを監査します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "Azure ARC for Servers を使用して、Azure ネイティブ テクノロジを使用して Azure VMware Solution で実行されているワークロードを適切に管理します (Azure ARC for Azure VMware Solution はまだ利用できません)",
+ "text": "SFTP: SFTP エンドポイントは、POSIX ライクな ACL をサポートしていません。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
- "severity": "低い",
- "text": "Azure VMware Solution 上のワークロードで、実行時に十分なデータ暗号化 (ゲスト内ディスク暗号化や SQL TDE など) が使用されるようにします。(保存時の vSAN 暗号化がデフォルトです)",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "ストレージは、CORS (Cross-Origin Resource Sharing)、つまり、異なるドメインの Web アプリが同一生成元ポリシーを緩めることを可能にする HTTP 機能をサポートしています。CORS を有効にする場合は、CorsRules を最小の特権に保ちます。",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
+ "severity": "高い",
+ "text": "過度に広範な CORS ポリシーを避ける",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
- "severity": "低い",
- "text": "ゲスト内暗号化を使用する場合は、可能な場合は Azure Key Vault に暗号化キーを格納します",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "保存データは常にサーバー側で暗号化され、さらにクライアント側でも暗号化される場合があります。サーバー側の暗号化は、プラットフォーム マネージド キー (既定) またはカスタマー マネージド キーを使用して行われる場合があります。クライアント側の暗号化は、クライアントが BLOB ごとに暗号化/暗号化解除キーを Azure Storage に提供するか、クライアント側で暗号化を完全に処理することによって行われます。そのため、機密性の保証を Azure Storage にまったく依存しません。",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
+ "severity": "高い",
+ "text": "保存データの暗号化方法を決定します。データのスレッド モデルを理解します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"severity": "中程度",
- "text": "Azure VMware Solution で実行されているワークロードには、拡張セキュリティ更新プログラムのサポートの使用を検討してください (Azure VMware Solution は ESU の対象です)",
+ "text": "どのプラットフォーム暗号化を使用するか、または使用するかを決定します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
- "severity": "高い",
- "text": "適切な vSAN データ冗長化方式(RAID 仕様)が使用されていることを確認します。",
- "waf": "確実"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
+ "severity": "中程度",
+ "text": "クライアント側の暗号化を使用するかどうかを決定します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Resource Graph エクスプローラー (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) を利用して、匿名 BLOB アクセスを許可するストレージ アカウントを検索します。",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
"severity": "高い",
- "text": "許容障害ポリシーが vSAN ストレージのニーズを満たすために設定されていることを確認します",
- "waf": "確実"
+ "text": "パブリック BLOB アクセスが必要かどうか、または特定のストレージ アカウントに対して無効にできるかどうかを検討します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
- "severity": "高い",
- "text": "十分なクォータを要求し、拡張とディザスタリカバリの要件を考慮していることを確認します",
- "waf": "確実"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "グローバルレベルでのエラー処理ポリシーの実装",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
"severity": "中程度",
- "text": "ESXiへのアクセス制限を理解し、サードパーティのソリューションに影響を与える可能性のあるアクセス制限があることを確認してください。",
+ "text": "すべての API ポリシーに要素が含まれていることを確認します。",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
"severity": "中程度",
- "text": "ESXi ホストの密度と効率に関するポリシーがあることを確認し、新しいノードを要求するためのリード タイムを念頭に置いてください",
+ "text": "ポリシーフラグメントを使用して、複数の API で同じポリシー定義を繰り返さないようにする",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution の適切なコスト管理プロセスが整っていることを確認する - Azure Cost Management を使用できます",
- "waf": "費用"
+ "text": "API の収益化を計画している場合は、「収益化のサポート」の記事でおすすめの方法をご確認ください",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
- "severity": "低い",
- "text": "Azure VMware Solution を使用するためのコストを最適化するために Azure 予約インスタンスが使用されているか",
- "waf": "費用"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
+ "severity": "高い",
+ "text": "診断設定を有効にしてログを Azure Monitor にエクスポートする",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"severity": "中程度",
- "text": "他の Azure Native Services を使用する場合は、Azure Private-Link の使用を検討してください",
+ "text": "Application Insights を有効にして、より詳細なテレメトリを実現する",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
+ "severity": "高い",
+ "text": "最も重要なメトリックに関するアラートを構成する",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
+ "severity": "高い",
+ "text": "カスタム SSL 証明書が Azure Key Vault に格納され、安全にアクセスして更新できるようにする",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"severity": "高い",
- "text": "必要なすべてのリソースが同じ Azure 可用性ゾーン内に存在することを確認する",
- "waf": "パフォーマンス"
+ "text": "Azure AD を使用して API (データ プレーン) への受信要求を保護する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution ゲスト VM ワークロードに対して Microsoft Defender for Cloud を有効にする",
+ "text": "Microsoft Entra ID を使用して開発者ポータルでユーザーを認証する",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure Arc 対応サーバーを使用して Azure VMware Solution ゲスト VM のワークロードを管理する",
+ "text": "適切なグループを作成して、製品の可視性を制御します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
- "severity": "高い",
- "text": "Azure VMware Solution での診断ログとメトリック ログを有効にするEnable Diagnostic and metric logging on Azure VMware Solution",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "バックエンド機能を使用して、冗長な API バックエンド構成を排除します",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "中程度",
- "text": "Log Analytics エージェントを Azure VMware Solution ゲスト VM ワークロードにデプロイする",
+ "text": "名前付き値を使用して、ポリシーで使用できる共通の値を格納します",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution VM ワークロードのバックアップ ポリシーとソリューションが文書化され、実装されていることを確認します",
+ "text": "DR の場合は、99.99% の SLA で 2 つ以上のリージョンにスケーリングされたデプロイで Premium レベルを活用します",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "少なくとも 1 つのユニットを 2 つ以上の可用性ゾーンにデプロイして、SLA を 99.99% に向上させる",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
+ "severity": "高い",
+ "text": "自動バックアップ・ルーチンがあることを確認する",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "ポリシーを使用して、フェイルオーバー・バックエンドURLとキャッシュを追加し、コールの失敗を減らします。",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
+ "severity": "低い",
+ "text": "高パフォーマンス レベルでログを記録する必要がある場合は、Event Hubs ポリシーを検討してください",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"severity": "中程度",
- "text": "Microsoft Defender for Cloud を使用して、Azure VMware Solution で実行されているワークロードのコンプライアンス監視を行う",
- "waf": "安全"
+ "text": "調整ポリシーを適用して、毎秒の要求数を制御する",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"severity": "中程度",
- "text": "適用可能なコンプライアンス ベースラインは Microsoft Defender for Cloud に追加されていますか",
- "waf": "安全"
+ "text": "負荷が増加したときにインスタンスの数をスケールアウトするように自動スケーリングを構成する",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
- "severity": "高い",
- "text": "Azure VMware Solution のデプロイに使用する Azure リージョンを選択するときにデータ所在地が評価されましたか",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "セルフホステッド ゲートウェイをデプロイする場所は、バックエンド API に近いリージョンが Azure にありません。",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
- "severity": "高い",
- "text": "データ処理への影響 (サービス プロバイダー/サービス コンシューマー モデル) が明確で文書化されているか",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "運用環境のワークロードには Premium レベルを使用します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
"severity": "中程度",
- "text": "コンプライアンス上の理由で必要な場合にのみ、vSAN に CMK (カスタマー マネージド キー) を使用することを検討してください。",
- "waf": "安全"
+ "text": "複数リージョン モデルでは、ポリシーを使用して、可用性または待機時間に基づいてリージョン バックエンドに要求をルーティングします。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "高い",
- "text": "Azure VMware Solution のコア監視分析情報を有効にするダッシュボードを作成するCreate dashboards to enable a core Azure VMware Solution monitoring insights",
- "waf": "オペレーションズ"
+ "text": "APIM の制限に注意する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"severity": "高い",
- "text": "Azure VMware Solution のパフォーマンス (CPU >80%、平均メモリ >80%、vSAN >70%) に関する自動アラートの重大しきい値の警告アラートを作成する",
- "waf": "オペレーションズ"
+ "text": "セルフホステッド ゲートウェイのデプロイに回復性があることを確認します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
- "severity": "高い",
- "text": "vSAN の消費量が 75% を下回っているかどうかを監視するための重要なアラートが作成されていることを確認します (これは VMware からのサポートしきい値です)。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "複数リージョンのデプロイに APIM の前で Azure Front Door を使用するUse Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
- "severity": "高い",
- "text": "Azure Service Health のアラートと通知に対してアラートが構成されていることを確認する",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "中程度",
+ "text": "仮想ネットワーク (VNet) 内にサービスをデプロイするDeploy the service within a Virtual Network (VNet)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
"severity": "中程度",
- "text": "処理のために Azure Storage アカウントまたは Azure EventHub に送信するように Azure VMware Solution ログを構成する",
- "waf": "オペレーションズ"
+ "text": "ネットワーク セキュリティ グループ (NSG) をサブネットにデプロイして、APIM との間のトラフィックを制限または監視します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "低い",
- "text": "VMware vSphere での詳細な分析情報が必要な場合:vRealize Operations や vRealize Network Insights がソリューションで使用されていますか?",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "中程度",
+ "text": "プライベート エンドポイントをデプロイして、APIM が VNet にデプロイされていない場合に受信トラフィックをフィルター処理します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "高い",
- "text": "仮想マシンの vSAN ストレージ ポリシーはシック プロビジョニングを適用するため、このポリシーがデフォルトのストレージ ポリシーではないことを確認します",
- "waf": "オペレーションズ"
+ "text": "パブリックネットワークアクセスの無効化",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"severity": "中程度",
- "text": "vSAN は有限のリソースであるため、vSphere コンテンツ ライブラリが vSAN に配置されていないことを確認する",
+ "text": "PowerShell 自動化スクリプトで管理を簡素化",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "中程度",
- "text": "バックアップ ソリューションのデータ リポジトリが vSAN ストレージの外部に保存されていることを確認します。Azure ネイティブまたはディスク プールでバックアップされるデータストア上",
+ "text": "Infrastructure-as-code を使用して APIM を構成します。Cloud Adaption Framework APIM Landing Zone Accelerator から DevOps のベスト プラクティスを確認する",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure Arc for Servers を使用して Azure VMware Solution で実行されているワークロードがハイブリッド管理されていることを確認する (Arc for Azure VMware Solution はプレビュー段階です)",
+ "text": "Visual Studio Code APIM 拡張機能の使用を促進して API 開発を迅速化する",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution で実行されているワークロードが Azure Log Analytics と Azure Monitor を使用して監視されていることを確認する",
+ "text": "DevOpsとCI/CDをワークフローに実装する",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution で実行されているワークロードを、既存の更新プログラム管理ツールまたは Azure Update Management に含める",
- "waf": "オペレーションズ"
+ "text": "クライアント証明書認証を使用した API の保護",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure Policy を使用して、Azure の管理、監視、セキュリティ ソリューションに Azure VMware Solution ワークロードをオンボードする",
- "waf": "オペレーションズ"
+ "text": "クライアント証明書認証を使用したバックエンド サービスのセキュリティ保護",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"severity": "中程度",
- "text": "Azure VMware Solution で実行されているワークロードが Microsoft Defender for Cloud にオンボードされていることを確認する",
+ "text": "「OWASP API Security Top 10 の脅威を軽減するための推奨事項」の記事を確認し、API に適用できるものを確認します",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"severity": "中程度",
- "text": "vSAN は有限のリソースであるため、バックアップが vSAN に保存されないようにする",
- "waf": "確実"
+ "text": "承認機能を使用して、バックエンド API の OAuth 2.0 トークンの管理を簡素化します",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
- "severity": "中程度",
- "text": "すべてのDRソリューションが検討され、ビジネスに最適なソリューションが決定されましたか?[SRM/JetStream/Zerto/Veeam/...]",
- "waf": "確実"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
+ "severity": "高い",
+ "text": "転送中の情報を暗号化する場合は、最新のTLSバージョンを使用します。可能であれば、古くて不要なプロトコルと暗号を無効にします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
+ "severity": "高い",
+ "text": "シークレット (名前付き値) が Azure Key Vault に格納され、安全にアクセスして更新できるようにする",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"severity": "中程度",
- "text": "ディザスター リカバリー テクノロジがネイティブの Azure IaaS の場合は、Azure Site Recovery を使用します",
+ "text": "可能な限りマネージド ID を使用して、他の Azure リソースに対する認証を行う",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
+ "severity": "高い",
+ "text": "Web アプリケーション ファイアウォール (WAF) を使用するには、APIM の前に Application Gateway をデプロイします",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
+ "severity": "高い",
+ "text": "ビジネスと SLO の要件に基づいて適切なロジック アプリのホスティング プランを選択する",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
"severity": "高い",
- "text": "いずれかの災害ソリューションで自動復旧計画を使用し、手動タスクを可能な限り回避します",
+ "text": "ゾーンの冗長性と可用性ゾーンを使用してリージョンの障害からロジック アプリを保護する",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "中程度",
- "text": "地政学的リージョンのペアをセカンダリディザスタリカバリ環境として使用する",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
+ "severity": "高い",
+ "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"severity": "高い",
- "text": "リージョン間で 2 つの異なるアドレス空間を使用します (例: 10.0.0.0/16 と 192.168.0.0/16)。",
+ "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"severity": "中程度",
- "text": "ExpressRoute Global Reach は、プライマリとセカンダリの Azure VMware Solution プライベート クラウド間の接続に使用されますか、それともネットワーク仮想アプライアンスを介してルーティングされますか?",
+ "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、ロジック アプリ コードを保護",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "低い",
+ "text": "ベスト プラクティスについては、「ベースラインの高可用性ゾーン冗長 Web アプリケーション アーキテクチャ」を参照してください",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "中程度",
- "text": "すべてのバックアップソリューションが検討され、ビジネスに最適なソリューションが決定されましたか?[ MABS/CommVault/Metallic.io/Veeam/ . ]",
+ "text": "Premium レベルと Standard レベルを使用します。これらの層では、ステージング スロットと自動バックアップがサポートされています。",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
- "severity": "中程度",
- "text": "バックアップ ソリューションを Azure VMware Solution プライベート クラウドと同じリージョンにデプロイする",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "リージョンで適用可能な場合は Availability Zones を活用します (Premium v2 または v3 レベルが必要)",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "中程度",
- "text": "バックアップ ソリューションを vSan の外部の Azure ネイティブ コンポーネントにデプロイする",
+ "text": "ヘルスチェックの実装",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "低い",
- "text": "Azure プラットフォームによって管理されている VMware コンポーネントの復元を要求するプロセスは用意されていますか?",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "「Azure App Service のバックアップと復元のベスト プラクティス」を参照してください",
"waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "低い",
- "text": "手動デプロイの場合、すべての構成とデプロイを文書化する必要があります",
- "waf": "オペレーションズ"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "低い",
- "text": "手動デプロイの場合は、Azure VMware Solution プライベート クラウドでの偶発的なアクションを防ぐために、リソース ロックの実装を検討してください",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "Azure App Service の信頼性に関するベスト プラクティスを実装する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
"severity": "低い",
- "text": "自動デプロイの場合は、最小限のプライベート クラウドをデプロイし、必要に応じてスケーリングします",
- "waf": "オペレーションズ"
+ "text": "災害時に App Service アプリを別のリージョンに移動する方法を理解する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "低い",
- "text": "自動デプロイの場合は、デプロイを開始する前にクォータを要求または予約します",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "Azure App Service の信頼性サポートについて理解する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "低い",
- "text": "自動デプロイの場合は、適切なガバナンスのために、自動化または Azure Policy を使用して関連するリソース ロックが作成されていることを確認します",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "App Service プランで実行されている Function Apps に対して \"Always On\" が有効になっていることを確認する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "低い",
- "text": "ExR 認証キーに人間が理解できる名前を実装して、キーの目的/用途を簡単に識別できるようにします",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "正常性チェックを使用した App Service インスタンスの監視",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "severity": "低い",
- "text": "Azure VMware Solution と ExpressRoute のデプロイに個別のサービス プリンシパルを使用する場合は、キー コンテナーを使用してシークレットと承認キーを格納します",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "Application Insights の可用性テストを使用して Web アプリまたは Web サイトの可用性と応答性を監視する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
"severity": "低い",
- "text": "Azure VMware Solution では限られた数の並列操作しかサポートされないため、Azure VMware Solution に多くのリソースをデプロイする必要がある場合に、IaC でアクションをシリアル化するためのリソースの依存関係を定義します。",
- "waf": "オペレーションズ"
+ "text": "Application Insights Standard テストを使用して、Web アプリまたは Web サイトの可用性と応答性を監視する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "低い",
- "text": "単一の Tier-1 ゲートウェイで NSX-T セグメントの自動構成を実行する場合は、NSX-Manager API ではなく Azure Portal API を使用します",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Key Vault を使用して、アプリケーションに必要なシークレットを格納します。 Key Vault は、シークレットを格納するための安全で監査された環境を提供し、Key Vault SDK または App Service Key Vault リファレンスを通じて App Service と適切に統合されています。",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "Key Vault を使用してシークレットを格納する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
- "severity": "中程度",
- "text": "自動スケールアウトを使用する場合は、Azure VMware Solution を実行しているサブスクリプションに対して十分な Azure VMware Solution クォータを申請してください",
- "waf": "パフォーマンス"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "マネージド ID を使用して、Key Vault SDK または App Service Key Vault 参照を使用して Key Vault に接続します。",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "マネージド ID を使用して Key Vault に接続する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
- "severity": "中程度",
- "text": "自動スケールインを使用する場合は、そのようなアクションを実行する前に、ストレージ ポリシーの要件を必ず考慮してください",
- "waf": "パフォーマンス"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service TLS 証明書を Key Vault に格納します。",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "Key Vault を使用して TLS 証明書を格納します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "機密情報を処理するシステムは分離する必要があります。 そのためには、個別の App Service プランまたは App Service Environment を使用し、異なるサブスクリプションまたは管理グループの使用を検討してください。",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "中程度",
- "text": "スケーリング操作は、一度に 1 つのスケール操作しか実行できないため、常に 1 つの SDDC 内でシリアル化する必要があります (複数のクラスタが使用されている場合でも)",
- "waf": "パフォーマンス"
+ "text": "機密情報を処理するシステムを分離する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service のローカル ディスクは暗号化されていないため、機密データを格納しないでください。 (例: D:\\\\Local and %TMP%)。",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"severity": "中程度",
- "text": "アーキテクチャで使用されるサードパーティソリューションでのスケーリング操作を検討および検証します(サポートされているかどうか)",
- "waf": "パフォーマンス"
+ "text": "機密データをローカルディスクに保存しない",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "認証された Web アプリケーションの場合は、Azure AD や Azure AD B2C などの確立された ID プロバイダーを使用します。 選択したアプリケーション フレームワークを利用して、このプロバイダーと統合するか、App Service の認証/承認機能を使用します。",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"severity": "中程度",
- "text": "自動化で環境のスケールイン/スケールアウトの上限を定義して適用する",
- "waf": "パフォーマンス"
+ "text": "認証に確立された ID プロバイダーを使用する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
- "severity": "中程度",
- "text": "監視ルールを実装して、自動スケーリング操作を監視し、成功と失敗を監視して、適切な (自動化された) 応答を有効にします",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "適切に管理され、セキュリティで保護された DevOps デプロイ パイプラインなど、制御された信頼できる環境から App Service にコードをデプロイします。これにより、バージョン管理されておらず、悪意のあるホストからデプロイされることが確認されていないコードが回避されます。",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "信頼できる環境からのデプロイ",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "FTP/FTPS と WebDeploy/SCM の両方の基本認証を無効にします。 これにより、これらのサービスへのアクセスが無効になり、デプロイに Azure AD で保護されたエンドポイントの使用が強制されます。 SCM サイトは、Azure AD 資格情報を使用して開くこともできます。",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"severity": "高い",
- "text": "MONを使用する場合は、同時に構成されたVMの制限(HCXのMON制限[400 - 標準、1000 - 大規模アプライアンス])に注意してください",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "確実"
+ "text": "基本認証の無効化",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "可能な場合は、マネージド ID を使用して Azure AD のセキュリティで保護されたリソースに接続します。 これが不可能な場合は、Key Vault にシークレットを格納し、代わりにマネージド ID を使用して Key Vault に接続します。",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
"severity": "高い",
- "text": "MON を使用する場合、100 を超えるネットワーク拡張で MON を有効にすることはできません",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "確実"
+ "text": "マネージド ID を使用してリソースに接続する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
- "severity": "中程度",
- "text": "移行に VPN 接続を使用する場合は、それに応じて MTU サイズを調整します。",
- "waf": "パフォーマンス"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Container Registry に格納されているイメージを使用する場合は、マネージド ID を使用してこれらをプルします。",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "マネージド ID を使用してコンテナーをプルするPull containers using a Managed Identity",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service の診断設定を構成することで、ログ記録と監視の中央の宛先として、すべてのテレメトリを Log Analytics に送信できます。これにより、HTTP ログ、アプリケーション ログ、プラットフォーム ログなどの App Service のランタイム アクティビティを監視できます。",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "中程度",
- "text": "Azure に接続する接続性の低いリージョン (500 Mbps 以下) の場合は、HCX WAN 最適化アプライアンスのデプロイを検討してください",
- "waf": "パフォーマンス"
+ "text": "App Service ランタイム ログを Log Analytics に送信する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "ログ記録と監視の中央の宛先としてアクティビティ ログを Log Analytics に送信するための診断設定を設定します。これにより、App Service リソース自体のコントロール プレーンのアクティビティを監視できます。",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"severity": "中程度",
- "text": "移行がオンプレミスアプライアンスから開始され、クラウドアプライアンスから開始されていないことを確認します(逆移行は実行しないでください)",
- "waf": "確実"
+ "text": "App Service アクティビティ ログを Log Analytics に送信する",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "リージョンの VNet 統合、ネットワーク セキュリティ グループ、および UDR の組み合わせを使用して、送信ネットワーク アクセスを制御します。 トラフィックは、Azure Firewall などの NVA にルーティングする必要があります。 ファイアウォールのログを必ず監視してください。",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "中程度",
- "text": "Azure NetApp Files を使用して Azure VMware Solution のストレージを拡張する場合は、VM に直接接続するのではなく、これを VMware データストアとして使用することを検討してください。",
- "waf": "確実"
+ "text": "送信ネットワーク アクセスを制御する必要がある",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
- "severity": "中程度",
- "text": "専用の ExpressRoute ゲートウェイが外部データ ストレージ ソリューションに使用されていることを確認する",
- "waf": "確実"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "VNet 統合を使用し、VNet NAT ゲートウェイまたは Azure Firewall などの NVA を使用することで、安定した送信 IP を提供できます。 これにより、受信側は必要に応じて IP に基づいて許可リストに登録できます。 多くの場合、Azure サービスへの通信では、IP アドレスに依存する必要はなく、代わりにサービス エンドポイントなどのメカニズムを使用する必要があります。 (また、受信側でプライベート エンドポイントを使用すると、SNAT の発生が回避され、安定した送信 IP 範囲が提供されます)。",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
+ "severity": "低い",
+ "text": "インターネットアドレスへの送信通信のIPを安定させる",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
- "severity": "中程度",
- "text": "外部データ ストレージ ソリューションに使用されている ExpressRoute ゲートウェイで FastPath が有効になっていることを確認します",
- "waf": "確実"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service のアクセス制限、サービス エンドポイント、またはプライベート エンドポイントの組み合わせを使用して、受信ネットワーク アクセスを制御します。Web アプリ自体と SCM サイトに対して異なるアクセス制限を要求し、構成できます。",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "受信ネットワーク アクセスを制御する必要がある",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Application Gateway や Azure Front Door などの Web アプリケーション ファイアウォールを使用して、悪意のある受信トラフィックから保護します。 WAFのログを必ず監視してください。",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
"severity": "高い",
- "text": "ストレッチ クラスタを使用している場合は、選択したディザスタ リカバリ ソリューションがベンダーによってサポートされていることを確認します",
- "waf": "確実"
+ "text": "App Service の前で WAF を使用するUse a WAF in Front of App Service",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "WAFのみへのアクセスをロックダウンすることで、WAFをバイパスできないようにします。 アクセス制限、サービス・エンドポイントおよびプライベート・エンドポイントを組み合わせて使用します。",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"severity": "高い",
- "text": "ストレッチ クラスターを使用する場合は、提供される SLA が要件を満たしていることを確認します",
- "waf": "確実"
+ "text": "WAFをバイパスすることは避けてください",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service の構成で最小 TLS ポリシーを 1.2 に設定します。",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "最小 TLS ポリシーを 1.2 に設定します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "HTTPS のみを使用するように App Service を構成します。 これにより、App Service は HTTP から HTTPS にリダイレクトされます。 HTTP Strict Transport Security (HSTS) をコード内または WAF から使用して、サイトに HTTPS を使用してのみアクセスする必要があることをブラウザーに通知することを強く検討してください。",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
"severity": "高い",
- "text": "ストレッチ クラスターを使用している場合は、両方の ExpressRoute 回線が接続ハブに接続されていることを確認します。",
- "waf": "確実"
+ "text": "HTTPS のみを使用",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "CORS 構成では、すべての配信元がサービスにアクセスできるため、ワイルドカードを使用しないでください (これにより、CORS の目的が損なわれます)。具体的には、サービスにアクセスできると予想される配信元のみを許可します。",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
"severity": "高い",
- "text": "ストレッチ クラスターを使用している場合は、両方の ExpressRoute 回線で GlobalReach が有効になっていることを確認します。",
- "waf": "確実"
+ "text": "ワイルドカードは CORS に使用しないでください",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "リモート デバッグは、サービスに追加のポートが開き、攻撃対象領域が増加するため、運用環境でオンにしないでください。このサービスは、48 時間後に自動的にリモート デバッグをオフにすることに注意してください。",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
"severity": "高い",
- "text": "サイトの耐障害性の設定を適切に検討し、必要に応じてビジネスに合わせて変更しましたか?",
- "waf": "確実"
+ "text": "リモートデバッグをオフにする",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Defender for App Service を有効にします。 これは(他の脅威の中でも)既知の悪意のあるIPアドレスへの通信を検出します。 操作の一環として、Defender for App Service からの推奨事項を確認します。",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
"severity": "中程度",
- "text": "Azure Bot Service の信頼性サポートの推奨事項に従う",
- "waf": "確実"
+ "text": "Defender for Cloud を有効にする - Defender for App Service",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure は、ネットワーク上で DDoS Basic 保護を提供しており、通常のトラフィック パターンを学習し、異常な動作を検出できるインテリジェントな DDoS Standard 機能によって改善できます。DDoS Standard は仮想ネットワークに適用されるため、Application Gateway や NVA など、アプリの前にあるネットワーク リソース用に構成する必要があります。",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "WAF VNet で DDoS Protection Standard を有効にするEnable DDOS Protection Standard on the WAF VNet",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Container Registry に格納されているイメージを使用する場合は、プライベート エンドポイントとアプリ設定 \"WEBSITE_PULL_IMAGE_OVER_VNET\" を使用して、Azure Container Registry から仮想ネットワーク経由でイメージをプルします。",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "Virtual Network 経由でコンテナーをプルする",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "ペネトレーションテストのルールに従って、Webアプリケーションでペネトレーションテストを実施します。",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
+ "severity": "中程度",
+ "text": "ペネトレーションテストの実施",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "DevSecOps プラクティスに従って脆弱性が検証およびスキャンされた信頼できるコードをデプロイします。",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"severity": "中程度",
- "text": "ローカル データ所在地とリージョン コンプライアンスを備えたボットのデプロイ",
- "waf": "確実"
+ "text": "検証済みコードのデプロイ",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
- "severity": "中程度",
- "text": "Azure Bot Service は、グローバル サービスとリージョン サービスの両方に対してアクティブ/アクティブ モードで実行されます。停止が発生した場合、エラーを検出したり、サービスを管理したりする必要はありません。Azure Bot Service は、複数リージョンの地理的アーキテクチャで自動フェールオーバーと自動復旧を自動的に実行します。EU ボット リージョン サービスの場合、Azure Bot Service は、冗長性を確保するために、アクティブ/アクティブ レプリケーションを備えたヨーロッパ内の 2 つの完全なリージョンを提供します。グローバル ボット サービスの場合、使用可能なすべてのリージョン/地域をグローバル フットプリントとして提供できます。",
- "waf": "確実"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "サポートされているプラットフォーム、プログラミング言語、プロトコル、およびフレームワークの最新バージョンを使用します。",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
+ "severity": "高い",
+ "text": "最新のプラットフォーム、言語、プロトコル、フレームワークを使用",
+ "waf": "安全"
},
{
"checklist": "Azure Landing Zone Review",
@@ -7569,1428 +7130,1867 @@
"link": "https://learn.microsoft.com/azure/firewall/premium-features",
"service": "Firewall",
"severity": "高い",
- "text": "Azure Firewall Premium を使用して、追加のセキュリティ機能を有効にします。",
+ "text": "Azure Firewall Premium を使用して、追加のセキュリティ機能を有効にします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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#idps-signature-rules",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Azure Firewall の脅威インテリジェンス モードを [アラート] と [拒否] に構成して、保護を強化します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
+ "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Azure Firewall の IDPS モードを [拒否] に構成して、保護を強化します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Virtual WAN に接続されていない VNet 内のサブネットの場合は、インターネット トラフィックが Azure Firewall またはネットワーク仮想アプライアンスにリダイレクトされるようにルート テーブルをアタッチします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "診断設定を追加して、リソース固有の宛先テーブルを使用して、すべての Azure Firewall デプロイのログを保存します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
+ "service": "Firewall",
+ "severity": "大事な",
+ "text": "Azure Firewall クラシック ルール (存在する場合) からファイアウォール ポリシーに移行します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Azure Firewall サブネットに /26 プレフィックスを使用します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "ファイアウォールポリシー内のルールを、使用頻度に基づいて「ルールコレクショングループ」と「ルールコレクション」に整理します。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
+ "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "IP グループまたは IP プレフィックスを使用して、IP テーブル・ルールの数を減らします。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "DNATSのソースIPとしてワイルドカード(*やanyなど)を使用せず、受信DNATのソースIPを指定する必要があります。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "SNAT ポートの使用状況を監視し、NAT ゲートウェイの設定を評価し、シームレスなフェールオーバーを確保することで、SNAT ポートの枯渇を防ぎます。ポート数が制限に近づく場合は、SNAT の枯渇が差し迫っている可能性があります。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "346840b8-1064-496e-8396-4b1340172d52",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Azure Firewall Premium を使用している場合は、TLS 検査を有効にします。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
+ "service": "Firewall",
+ "severity": "低い",
+ "text": "Web カテゴリを使用して、特定のトピックへの送信アクセスを許可または拒否します。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "TLS 検査の一環として、Azure App Gateway からのトラフィックの受信を検査用に計画します。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "Azure Firewall DNS プロキシ構成を有効にします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "service": "Firewall",
+ "severity": "高い",
+ "text": "Azure Firewall を Azure Monitor と統合し、診断ログを有効にしてファイアウォール ログを格納および分析します。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "service": "Firewall",
+ "severity": "低い",
+ "text": "ファイアウォールルールのバックアップを実装する",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "App Gateway",
+ "severity": "高い",
+ "text": "0.0.0.0/0 ルートやコントロール プレーン トラフィックをブロックする NSG ルールなど、仮想ネットワークに挿入された Azure PaaS サービスのコントロール プレーン通信を中断しないでください。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "service": "ExpressRoute",
+ "severity": "中程度",
+ "text": "オンプレミスからプライベート エンドポイントと ExpressRoute プライベート ピアリングを介して Azure PaaS サービスにアクセスします。この方法では、公共のインターネット経由のトランジットを回避できます。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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/virtual-network/virtual-network-service-endpoints-overview",
+ "service": "VNet",
+ "severity": "高い",
+ "text": "既定では、すべてのサブネットで仮想ネットワーク サービス エンドポイントを有効にしないでください。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
+ "link": "azure/private-link/inspect-traffic-with-azure-firewall",
+ "service": "Firewall",
+ "severity": "中程度",
+ "text": "Azure Firewall または NVA の IP アドレスではなく FQDN を使用して Azure PaaS サービスへのエグレス トラフィックをフィルター処理し、データの流出を防ぎます。Private Link を使用している場合は、すべての FQDN をブロックでき、それ以外の場合は必要な PaaS サービスのみを許可できます。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "service": "ExpressRoute",
+ "severity": "高い",
+ "text": "Gateway サブネットには、少なくとも /27 プレフィックスを使用します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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)",
+ "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
+ "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
+ "service": "NSG",
+ "severity": "高い",
+ "text": "VirtualNetwork サービス タグを使用して接続を制限する NSG 受信既定の規則に依存しないでください。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
- "severity": "高い",
- "text": "Azure Firewall の脅威インテリジェンス モードを [アラート] と [拒否] に構成して、保護を強化します。",
+ "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "service": "NSG",
+ "severity": "中程度",
+ "text": "NSG を使用して、サブネット間のトラフィックと、プラットフォーム全体の East/West トラフィック (ランディング ゾーン間のトラフィック) を保護します。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
- "severity": "高い",
- "text": "Azure Firewall の IDPS モードを [拒否] に構成して、保護を強化します。",
+ "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "NSG",
+ "severity": "中程度",
+ "text": "NSG とアプリケーション セキュリティ グループを使用して、ランディング ゾーン内のトラフィックをマイクロセグメント化し、中央の NVA を使用してトラフィック フローをフィルター処理しないようにします。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
- "severity": "高い",
- "text": "Virtual WAN に接続されていない VNet 内のサブネットの場合は、インターネット トラフィックが Azure Firewall またはネットワーク仮想アプライアンスにリダイレクトされるようにルート テーブルをアタッチします。",
+ "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
+ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
+ "service": "NSG",
+ "severity": "中程度",
+ "text": "VNet フロー ログを有効にし、Traffic Analytics にフィードして、内部および外部のトラフィック フローに関する分析情報を取得します。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
+ "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "NSG",
"severity": "中程度",
- "text": "診断設定を追加して、リソース固有の宛先テーブルを使用して、すべての Azure Firewall デプロイのログを保存します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "オペレーションズ"
+ "text": "1000 ルールの制限があるため、NSG ごとに 900 を超える NSG ルールを実装しないでください。",
+ "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "大事な",
- "text": "Azure Firewall クラシック ルール (存在する場合) からファイアウォール ポリシーに移行します。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
+ "service": "VWAN",
+ "severity": "中程度",
+ "text": "Virtual WAN ルーティング設計の一覧にシナリオが明示的に説明されている場合は、Virtual WAN を使用します。",
+ "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
- "severity": "高い",
- "text": "Azure Firewall サブネットに /26 プレフィックスを使用します。",
+ "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "service": "VWAN",
+ "severity": "中程度",
+ "text": "Azure リージョンごとに Virtual WAN ハブを使用して、共通のグローバル Azure Virtual WAN を介して Azure リージョン間で複数のランディング ゾーンを接続します。",
+ "waf": "パフォーマンス"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "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/howto-firewall",
+ "service": "VWAN",
+ "severity": "中程度",
+ "text": "送信インターネット トラフィックの保護とフィルタリングを行うには、セキュリティで保護されたハブに Azure Firewall をデプロイします。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "service": "VWAN",
"severity": "中程度",
- "text": "ファイアウォールポリシー内のルールを、使用頻度に基づいて「ルールコレクショングループ」と「ルールコレクション」に整理します。",
- "waf": "パフォーマンス"
+ "text": "Virtual WAN ネットワーク アーキテクチャが、特定されたアーキテクチャ シナリオと一致していることを確認します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "service": "VWAN",
"severity": "中程度",
- "text": "IP グループまたは IP プレフィックスを使用して、IP テーブル・ルールの数を減らします。",
- "waf": "パフォーマンス"
+ "text": "Azure Monitor Insights for Virtual WAN を使用して、Virtual WAN のエンドツーエンド トポロジ、状態、および主要なメトリックを監視します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "service": "VWAN",
"severity": "中程度",
- "text": "DNATSのソースIPとしてワイルドカード(*やanyなど)を使用せず、受信DNATのソースIPを指定する必要があります。",
- "waf": "パフォーマンス"
+ "text": "Virtual WAN のブランチ間トラフィックは、これらのフローを明示的にブロックする必要がない限り、無効にしないでください。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "service": "VWAN",
"severity": "中程度",
- "text": "SNAT ポートの使用状況を監視し、NAT ゲートウェイの設定を評価し、シームレスなフェールオーバーを確保することで、SNAT ポートの枯渇を防ぎます。ポート数が制限に近づく場合は、SNAT の枯渇が差し迫っている可能性があります。",
- "waf": "パフォーマンス"
+ "text": "AS-Path は ExpressRoute や VPN よりも柔軟性が高いため、ハブ ルーティング設定として使用します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "service": "VWAN",
+ "severity": "中程度",
+ "text": "Virtual WAN でラベルベースの伝達を構成すると、仮想ハブ間の接続が損なわれます。",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9c75dfef-573c-461c-a698-68598595581a",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "service": "VWAN",
"severity": "高い",
- "text": "Azure Firewall Premium を使用している場合は、TLS 検査を有効にします。",
- "waf": "パフォーマンス"
+ "text": "仮想ハブに少なくとも /23 プレフィックスを割り当てて、十分な IP スペースが使用可能であることを確認します。",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "severity": "低い",
- "text": "Web カテゴリを使用して、特定のトピックへの送信アクセスを許可または拒否します。",
- "waf": "パフォーマンス"
+ "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "高い",
+ "text": "Azure Policy を戦略的に活用し、環境のコントロールを定義し、ポリシー イニシアチブを使用して関連するポリシーをグループ化します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
+ "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "中程度",
- "text": "TLS 検査の一環として、Azure App Gateway からのトラフィックの受信を検査用に計画します。",
- "waf": "パフォーマンス"
+ "text": "規制とコンプライアンスの要件を Azure Policy 定義と Azure ロールの割り当てにマップします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "中程度",
- "text": "Azure Firewall DNS プロキシ構成を有効にします。",
+ "text": "中間ルート管理グループで Azure Policy 定義を確立して、継承されたスコープで割り当てられるようにします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
+ "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "高い",
- "text": "Azure Firewall を Azure Monitor と統合し、診断ログを有効にしてファイアウォール ログを格納および分析します。",
- "waf": "オペレーションズ"
+ "text": "ポリシーの割り当てを適切な最上位レベルで管理し、必要に応じて下位レベルで除外します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "guid": "43334f24-9116-4341-a2ba-527526944008",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "service": "Policy",
"severity": "低い",
- "text": "ファイアウォールルールのバックアップを実装する",
- "waf": "オペレーションズ"
+ "text": "Azure Policy を使用して、ユーザーがサブスクリプション/管理グループ レベルでプロビジョニングできるサービスを制御します。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "高い",
+ "text": "可能な場合は組み込みポリシーを使用して、運用オーバーヘッドを最小限に抑えます。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "description": "Resource Policy Contributor ロールを特定のスコープに割り当てると、ポリシー管理を関連するチームに委任できます。たとえば、中央のITチームが管理グループレベルのポリシーを監督し、アプリケーションチームがサブスクリプションのポリシーを処理することで、組織の標準に準拠した分散型ガバナンスが可能になります。",
+ "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "service": "Policy",
+ "severity": "中程度",
+ "text": "特定のスコープで組み込みのリソース ポリシー共同作成者ロールを割り当てて、アプリケーション レベルのガバナンスを有効にします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "19048384-5c98-46cb-8913-156a12476e49",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "中程度",
+ "text": "ルート管理グループのスコープで行われる Azure Policy の割り当ての数を制限して、継承されたスコープでの除外による管理を回避します。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
- "severity": "高い",
- "text": "0.0.0.0/0 ルートやコントロール プレーン トラフィックをブロックする NSG ルールなど、仮想ネットワークに挿入された Azure PaaS サービスのコントロール プレーン通信を中断しないでください。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
+ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
+ "service": "Policy",
+ "severity": "中程度",
+ "text": "データ主権の要件が存在する場合は、それらを適用するために Azure ポリシーをデプロイする必要があります。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
+ "service": "Policy",
"severity": "中程度",
- "text": "オンプレミスからプライベート エンドポイントと ExpressRoute プライベート ピアリングを介して Azure PaaS サービスにアクセスします。この方法では、公共のインターネット経由のトランジットを回避できます。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "ソブリン ランディング ゾーンの場合は、ソブリン ポリシー ベースラインをデプロイし、正しい管理グループ レベルで割り当てます。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
- "severity": "高い",
- "text": "既定では、すべてのサブネットで仮想ネットワーク サービス エンドポイントを有効にしないでください。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
+ "service": "Policy",
+ "severity": "中程度",
+ "text": "ソブリン ランディング ゾーンの場合は、ソブリン制御の目標をポリシー マッピングに文書化します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
+ "service": "Policy",
"severity": "中程度",
- "text": "Azure Firewall または NVA の IP アドレスではなく FQDN を使用して Azure PaaS サービスへのエグレス トラフィックをフィルター処理し、データの流出を防ぎます。Private Link を使用している場合は、すべての FQDN をブロックでき、それ以外の場合は必要な PaaS サービスのみを許可できます。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "text": "ソブリン・ランディング・ゾーンについては、「ソブリン・コントロールの目標からポリシー・マッピングまで」の管理プロセスが実施されていることを確認してください。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
- "severity": "高い",
- "text": "Gateway サブネットには、少なくとも /27 プレフィックスを使用します。",
- "waf": "安全"
+ "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
+ "severity": "中程度",
+ "text": "Azure ロールベースのアクセス制御 (Azure RBAC)、データ主権要件、またはデータ保持ポリシーで個別のワークスペースが義務付けられている場合を除き、1 つのモニター ログ ワークスペースを使用してプラットフォームを一元的に管理します。",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Monitor",
"severity": "高い",
- "text": "VirtualNetwork サービス タグを使用して接続を制限する NSG 受信既定の規則に依存しないでください。",
- "waf": "安全"
+ "text": "ログの保持要件が 12 年を超える場合は、ログを Azure Storage にエクスポートします。write-once、read-many ポリシーで不変ストレージを使用して、ユーザーが指定した間隔でデータを消去および変更できないようにします。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "service": "VM",
"severity": "中程度",
- "text": "NSG を使用して、サブネット間のトラフィックと、プラットフォーム全体の East/West トラフィック (ランディング ゾーン間のトラフィック) を保護します。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "安全"
+ "text": "Azure Policy を使用して、OS レベルの仮想マシン (VM) 構成のずれを監視します。ポリシーを使用して Azure Automanage マシン構成の監査機能を有効にすると、アプリケーション チームのワークロードは、わずかな労力で機能機能をすぐに使用できます。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "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",
+ "service": "VM",
"severity": "中程度",
- "text": "NSG とアプリケーション セキュリティ グループを使用して、ランディング ゾーン内のトラフィックをマイクロセグメント化し、中央の NVA を使用してトラフィック フローをフィルター処理しないようにします。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "安全"
+ "text": "Azure Update Manager は、Azure の Windows VM と Linux VM の修正プログラム適用メカニズムとして使用します。",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
+ "service": "VM",
"severity": "中程度",
- "text": "VNet フロー ログを有効にし、Traffic Analytics にフィードして、内部および外部のトラフィック フローに関する分析情報を取得します。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "安全"
+ "text": "Azure Arc を使用して、Azure の外部にある Windows および Linux VM の修正プログラム適用メカニズムとして Azure Update Manager を使用します。",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/networkWatchers",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
+ "guid": "90483845-c986-4cb2-a131-56a12476e49f",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Network Watcher",
"severity": "中程度",
- "text": "1000 ルールの制限があるため、NSG ごとに 900 を超える NSG ルールを実装しないでください。",
- "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "waf": "確実"
+ "text": "Network Watcher を使用して、トラフィック フローを事前に監視します。",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Monitor",
"severity": "中程度",
- "text": "Virtual WAN ルーティング設計の一覧にシナリオが明示的に説明されている場合は、Virtual WAN を使用します。",
- "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
+ "text": "Azure Monitor ログを使用して、分析情報とレポートを作成します。",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
+ "service": "Monitor",
"severity": "中程度",
- "text": "Azure リージョンごとに Virtual WAN ハブを使用して、共通のグローバル Azure Virtual WAN を介して Azure リージョン間で複数のランディング ゾーンを接続します。",
- "waf": "パフォーマンス"
+ "text": "Azure Monitor アラートを使用して、運用アラートを生成します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "Monitor",
"severity": "中程度",
- "text": "送信インターネット トラフィックの保護とフィルタリングを行うには、セキュリティで保護されたハブに Azure Firewall をデプロイします。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "Azure Automation アカウントを使用して変更とインベントリの追跡を使用する場合は、Log Analytics ワークスペースと Automation アカウントをリンクするためにサポートされているリージョンが選択されていることを確認してください。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
- "severity": "中程度",
- "text": "Virtual WAN ネットワーク アーキテクチャが、特定されたアーキテクチャ シナリオと一致していることを確認します。",
+ "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Backup",
+ "severity": "低い",
+ "text": "Azure Backup を使用する場合は、既定の設定が GRS であるため、バックアップに正しいバックアップの種類 (GRS、ZRS、LRS) を使用します。",
"waf": "確実"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "VM",
"severity": "中程度",
- "text": "Azure Monitor Insights for Virtual WAN を使用して、Virtual WAN のエンドツーエンド トポロジ、状態、および主要なメトリックを監視します。",
- "waf": "オペレーションズ"
+ "text": "Azure ゲスト ポリシーを使用して、VM 拡張機能を通じてソフトウェア構成を自動的にデプロイし、準拠したベースライン VM 構成を適用します。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "description": "Azure Policy のゲスト構成機能を使用して、マシンの設定 (OS、アプリケーション、環境など) を監査および修復し、リソースが予想される構成と一致していることを確認し、Update Management では VM のパッチ管理を適用できます。",
+ "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",
"severity": "中程度",
- "text": "Virtual WAN のブランチ間トラフィックは、これらのフローを明示的にブロックする必要がない限り、無効にしないでください。",
- "waf": "確実"
+ "text": "Azure Policy を使用して VM セキュリティ構成のドリフトを監視します。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
"severity": "中程度",
- "text": "AS-Path は ExpressRoute や VPN よりも柔軟性が高いため、ハブ ルーティング設定として使用します。",
- "waf": "確実"
+ "text": "Azure Site Recovery は、Azure から Azure Virtual Machines へのディザスター リカバリー シナリオに使用します。これにより、リージョン間でワークロードをレプリケートできます。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
+ "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "Backup",
"severity": "中程度",
- "text": "Virtual WAN でラベルベースの伝達を構成すると、仮想ハブ間の接続が損なわれます。",
- "waf": "確実"
+ "text": "Azure ネイティブのバックアップ機能、または Azure と互換性のあるサード パーティのバックアップ ソリューションを使用します。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "高い",
+ "text": "診断設定を追加して、Azure Front Door や Azure Application Gateway などのアプリケーション配信サービスから WAF ログを保存します。ログを定期的に確認して、攻撃や誤検知の検出がないか確認します。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "WAF",
+ "severity": "中程度",
+ "text": "Azure Front Door や Azure Application Gateway などのアプリケーション配信サービスから WAF ログを Microsoft Sentinel に送信します。攻撃を検出し、WAF テレメトリを Azure 環境全体に統合します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "guid": "5017f154-e3ab-4369-9829-e7e316183687",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "Key Vault",
"severity": "高い",
- "text": "仮想ハブに少なくとも /23 プレフィックスを割り当てて、十分な IP スペースが使用可能であることを確認します。",
- "waf": "確実"
+ "text": "Azure Key Vault を使用して、シークレットと資格情報を格納します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "高い",
- "text": "Azure Policy を戦略的に活用し、環境のコントロールを定義し、ポリシー イニシアチブを使用して関連するポリシーをグループ化します。",
+ "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
+ "guid": "a0477a20-9945-4bda-9333-4f2491163418",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
+ "service": "Key Vault",
+ "severity": "中程度",
+ "text": "アプリケーションやリージョンごとに異なる Azure Key Vault を使用して、トランザクションのスケール制限を回避し、シークレットへのアクセスを制限します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "規制とコンプライアンスの要件を Azure Policy 定義と Azure ロールの割り当てにマップします。",
+ "text": "論理的な削除ポリシーと消去ポリシーを有効にして Azure Key Vault をプロビジョニングし、削除されたオブジェクトの保持保護を許可します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "中間ルート管理グループで Azure Policy 定義を確立して、継承されたスコープで割り当てられるようにします。",
+ "text": "最小特権モデルに従って、キー、シークレット、証明書を完全に削除する承認を、特殊なカスタム Microsoft Entra ID ロールに制限します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "高い",
- "text": "ポリシーの割り当てを適切な最上位レベルで管理し、必要に応じて下位レベルで除外します。",
+ "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中程度",
+ "text": "公開認証局を使用して証明書の管理と更新プロセスを自動化し、管理を容易にします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "低い",
- "text": "Azure Policy を使用して、ユーザーがサブスクリプション/管理グループ レベルでプロビジョニングできるサービスを制御します。",
+ "guid": "913156a1-2476-4e49-b541-acdce979377b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中程度",
+ "text": "キーと証明書のローテーションのための自動化されたプロセスを確立します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "高い",
- "text": "可能な場合は組み込みポリシーを使用して、運用オーバーヘッドを最小限に抑えます。",
+ "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中程度",
+ "text": "コンテナーでファイアウォールと仮想ネットワーク サービス エンドポイントまたはプライベート エンドポイントを有効にして、キー コンテナーへのアクセスを制御します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "description": "Resource Policy Contributor ロールを特定のスコープに割り当てると、ポリシー管理を関連するチームに委任できます。たとえば、中央のITチームが管理グループレベルのポリシーを監督し、アプリケーションチームがサブスクリプションのポリシーを処理することで、組織の標準に準拠した分散型ガバナンスが可能になります。",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "特定のスコープで組み込みのリソース ポリシー共同作成者ロールを割り当てて、アプリケーション レベルのガバナンスを有効にします。",
+ "text": "プラットフォーム中央の Azure Monitor Log Analytics ワークスペースを使用して、Key Vault の各インスタンス内のキー、証明書、シークレットの使用状況を監査します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "ルート管理グループのスコープで行われる Azure Policy の割り当ての数を制限して、継承されたスコープでの除外による管理を回避します。",
+ "text": "Key Vault のインスタンス化と特権アクセスを委任し、Azure Policy を使用して一貫した準拠構成を適用します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "データ主権の要件が存在する場合は、それらを適用するために Azure ポリシーをデプロイする必要があります。",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "text": "Azure Key Vault は、アプリケーションごと、環境ごと、リージョンごとに使用します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "ソブリン ランディング ゾーンの場合は、ソブリン ポリシー ベースラインをデプロイし、正しい管理グループ レベルで割り当てます。",
+ "text": "独自のキーを持ち込む場合、これは考慮されるすべてのサービスでサポートされているとは限りません。不整合が望ましい結果を妨げないように、適切な軽減策を実装します。レイテンシを最小限に抑える適切なリージョンペアとディザスタリカバリリージョンを選択します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
+ "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
+ "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
+ "service": "Key Vault",
"severity": "中程度",
- "text": "ソブリン ランディング ゾーンの場合は、ソブリン制御の目標をポリシー マッピングに文書化します。",
+ "text": "ソブリン ランディング ゾーンの場合は、Azure Key Vault マネージド HSM を使用してシークレットと資格情報を格納します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
+ "service": "Entra",
"severity": "中程度",
- "text": "ソブリン・ランディング・ゾーンについては、「ソブリン・コントロールの目標からポリシー・マッピングまで」の管理プロセスが実施されていることを確認してください。",
+ "text": "Microsoft Entra ID レポート機能を使用して、アクセス制御監査レポートを生成します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
- "severity": "中程度",
- "text": "Azure ロールベースのアクセス制御 (Azure RBAC)、データ主権要件、またはデータ保持ポリシーで個別のワークスペースが義務付けられている場合を除き、1 つのモニター ログ ワークスペースを使用してプラットフォームを一元的に管理します。",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "オペレーションズ"
+ "guid": "09945bda-4333-44f2-9911-634182ba5275",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
+ "service": "Defender",
+ "severity": "高い",
+ "text": "すべてのサブスクリプションで Defender Cloud セキュリティ態勢管理を有効にします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
+ "service": "Defender",
"severity": "高い",
- "text": "ログの保持要件が 12 年を超える場合は、ログを Azure Storage にエクスポートします。write-once、read-many ポリシーで不変ストレージを使用して、ユーザーが指定した間隔でデータを消去および変更できないようにします。",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "オペレーションズ"
+ "text": "すべてのサブスクリプションで、サーバーの Defender Cloud ワークロード保護プランを有効にします。",
+ "waf": "安全"
+ },
+ {
+ "checklist": "Azure Landing Zone Review",
+ "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
+ "service": "Defender",
+ "severity": "高い",
+ "text": "すべてのサブスクリプションで Azure リソースの Defender Cloud ワークロード保護プランを有効にします。",
+ "waf": "安全"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
+ "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
"service": "VM",
- "severity": "中程度",
- "text": "Azure Policy を使用して、OS レベルの仮想マシン (VM) 構成のずれを監視します。ポリシーを使用して Azure Automanage マシン構成の監査機能を有効にすると、アプリケーション チームのワークロードは、わずかな労力で機能機能をすぐに使用できます。",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "オペレーションズ"
+ "severity": "高い",
+ "text": "IaaS サーバーでエンドポイント保護を有効にします。",
+ "waf": "安全"
},
{
"arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "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",
+ "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
+ "link": "https://learn.microsoft.com/azure/security-center/",
"service": "VM",
"severity": "中程度",
- "text": "Azure Update Manager は、Azure の Windows VM と Linux VM の修正プログラム適用メカニズムとして使用します。",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "オペレーションズ"
+ "text": "Azure Monitor ログと Defender for Cloud を使用して、基本オペレーティング システムの修正プログラムのずれを監視します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "中程度",
- "text": "Azure Arc を使用して、Azure の外部にある Windows および Linux VM の修正プログラム適用メカニズムとして Azure Update Manager を使用します。",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "オペレーションズ"
+ "text": "既定のリソース構成を一元化された Azure Monitor Log Analytics ワークスペースに接続します。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/networkWatchers",
"checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
+ "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
+ "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
+ "service": "Entra",
"severity": "中程度",
- "text": "Network Watcher を使用して、トラフィック フローを事前に監視します。",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "オペレーションズ"
+ "text": "ソブリン ランディング ゾーンの場合は、Entra ID テナントで透明度ログを有効にします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "service": "Entra",
"severity": "中程度",
- "text": "Azure Monitor ログを使用して、分析情報とレポートを作成します。",
- "waf": "オペレーションズ"
+ "text": "Sovereign Landing Zone の場合は、Entra ID テナントでカスタマー ロックボックスを有効にします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
+ "severity": "高い",
+ "text": "ストレージ アカウントへの安全な転送を有効にします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
+ "service": "Storage",
+ "severity": "高い",
+ "text": "ストレージ アカウントのコンテナーの論理的な削除を有効にして、削除されたコンテナーとその内容を回復します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.KeyVault/vaults",
"checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "中程度",
- "text": "Azure Monitor アラートを使用して、運用アラートを生成します。",
+ "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",
+ "severity": "高い",
+ "text": "Key Vault シークレットを使用して、資格情報 (仮想マシン、ユーザー パスワード)、証明書、キーなどの機密情報のハードコーディングを回避します。",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
- "severity": "中程度",
- "text": "Azure Automation アカウントを使用して変更とインベントリの追跡を使用する場合は、Log Analytics ワークスペースと Automation アカウントをリンクするためにサポートされているリージョンが選択されていることを確認してください。",
- "waf": "オペレーションズ"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
+ "severity": "高い",
+ "text": "ビジネスと SLO の要件に基づいて適切なロジック アプリのホスティング プランを選択する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "低い",
- "text": "Azure Backup を使用する場合は、既定の設定が GRS であるため、バックアップに正しいバックアップの種類 (GRS、ZRS、LRS) を使用します。",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
+ "severity": "高い",
+ "text": "ゾーンの冗長性と可用性ゾーンを使用してリージョンの障害からロジック アプリを保護する",
"waf": "確実"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
- "severity": "中程度",
- "text": "Azure ゲスト ポリシーを使用して、VM 拡張機能を通じてソフトウェア構成を自動的にデプロイし、準拠したベースライン VM 構成を適用します。",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
+ "severity": "高い",
+ "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "description": "Azure Policy のゲスト構成機能を使用して、マシンの設定 (OS、アプリケーション、環境など) を監査および修復し、リソースが予想される構成と一致していることを確認し、Update Management では VM のパッチ管理を適用できます。",
- "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",
- "severity": "中程度",
- "text": "Azure Policy を使用して VM セキュリティ構成のドリフトを監視します。",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
+ "severity": "高い",
+ "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
"severity": "中程度",
- "text": "Azure Site Recovery は、Azure から Azure Virtual Machines へのディザスター リカバリー シナリオに使用します。これにより、リージョン間でワークロードをレプリケートできます。",
+ "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、ロジック アプリ コードを保護",
"waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "中程度",
- "text": "Azure ネイティブのバックアップ機能、または Azure と互換性のあるサード パーティのバックアップ ソリューションを使用します。",
+ "text": "Azure Front Door でカスタマー マネージド TLS 証明書を使用する場合は、\"最新\" の証明書バージョンを使用します。証明書の手動更新による停止のリスクを軽減",
"waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "高い",
- "text": "診断設定を追加して、Azure Front Door や Azure Application Gateway などのアプリケーション配信サービスから WAF ログを保存します。ログを定期的に確認して、攻撃や誤検知の検出がないか確認します。",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "Application Gateway v2 SKU を使用していることを確認する",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "中程度",
- "text": "Azure Front Door や Azure Application Gateway などのアプリケーション配信サービスから WAF ログを Microsoft Sentinel に送信します。攻撃を検出し、WAF テレメトリを Azure 環境全体に統合します。",
- "waf": "オペレーションズ"
+ "text": "Azure Load Balancers に Standard SKU を使用していることを確認します",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
- "severity": "高い",
- "text": "Azure Key Vault を使用して、シークレットと資格情報を格納します。",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
+ "severity": "中程度",
+ "text": "Load Balancer フロントエンドの IP アドレスがゾーン冗長であることを確認します (ゾーン フロントエンドが必要な場合を除く)。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "アプリケーションやリージョンごとに異なる Azure Key Vault を使用して、トランザクションのスケール制限を回避し、シークレットへのアクセスを制限します。",
+ "text": "Application Gateways v2 は、IP プレフィックスが /24 以上のサブネットにデプロイする必要があります",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "リバースプロキシの管理全般、特にWAFの管理は、ネットワーキングよりもアプリケーションに近いため、アプリと同じサブスクリプションに属します。Application Gateway と WAF を接続サブスクリプションに一元化することは、1 つのチームによって管理されている場合は問題ない可能性があります。",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "論理的な削除ポリシーと消去ポリシーを有効にして Azure Key Vault をプロビジョニングし、削除されたオブジェクトの保持保護を許可します。",
+ "text": "ランディング ゾーン仮想ネットワーク内の受信 HTTP(S) 接続のプロキシに使用される Azure Application Gateway v2 またはパートナー NVA と、それらがセキュリティ保護しているアプリをデプロイします。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "最小特権モデルに従って、キー、シークレット、証明書を完全に削除する承認を、特殊なカスタム Microsoft Entra ID ロールに制限します。",
+ "text": "アプリケーション ランディング ゾーン内のすべてのパブリック IP アドレスに対して、DDoS ネットワークまたは IP 保護プランを使用します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "公開認証局を使用して証明書の管理と更新プロセスを自動化し、管理を容易にします。",
- "waf": "安全"
+ "text": "自動スケールは、最小インスタンス数が 2 になるように構成します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "キーと証明書のローテーションのための自動化されたプロセスを確立します。",
+ "text": "Application Gateway を複数の可用性ゾーンにデプロイする",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "Azure Front Door と WAF ポリシーを使用して、複数の Azure リージョンにまたがるグローバル HTTP/S アプリを提供し、保護します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"severity": "中程度",
- "text": "コンテナーでファイアウォールと仮想ネットワーク サービス エンドポイントまたはプライベート エンドポイントを有効にして、キー コンテナーへのアクセスを制御します。",
+ "text": "Front Door と Application Gateway を使用して HTTP/S アプリを保護する場合は、Front Door で WAF ポリシーを使用します。Application Gateway をロックダウンして、Front Door からのトラフィックのみを受信します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
+ },
+ {
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
+ "severity": "高い",
+ "text": "Traffic Manager を使用して、HTTP/S 以外のプロトコルにまたがるグローバル アプリを配信します。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "確実"
+ },
+ {
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "低い",
+ "text": "ユーザーが内部アプリケーションへのアクセスのみを必要とする場合、Microsoft Entra ID アプリケーション プロキシは Azure Virtual Desktop (AVD) の代替手段として検討されていますか?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"severity": "中程度",
- "text": "プラットフォーム中央の Azure Monitor Log Analytics ワークスペースを使用して、Key Vault の各インスタンス内のキー、証明書、シークレットの使用状況を監査します。",
+ "text": "ネットワーク内の着信接続用に開かれるファイアウォール ポートの数を減らすには、Microsoft Entra ID アプリケーション プロキシを使用して、リモート ユーザーに内部アプリケーションへの安全で認証されたアクセスを提供することを検討してください。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中程度",
- "text": "Key Vault のインスタンス化と特権アクセスを委任し、Azure Policy を使用して一貫した準拠構成を適用します。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "Front Door の WAF ポリシーを \"防止\" モードでデプロイし、Web アプリケーション ファイアウォールがトラフィックを許可または拒否するための適切なアクションを実行するようにします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中程度",
- "text": "Azure Key Vault は、アプリケーションごと、環境ごと、リージョンごとに使用します。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "Azure Traffic Manager と Azure Front Door を組み合わせることは避けてください。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中程度",
- "text": "独自のキーを持ち込む場合、これは考慮されるすべてのサービスでサポートされているとは限りません。不整合が望ましい結果を妨げないように、適切な軽減策を実装します。レイテンシを最小限に抑える適切なリージョンペアとディザスタリカバリリージョンを選択します。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "Azure Front Door と配信元で同じドメイン名を使用します。ホスト名が一致しないと、微妙なバグが発生する可能性があります。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
- "severity": "中程度",
- "text": "ソブリン ランディング ゾーンの場合は、Azure Key Vault マネージド HSM を使用してシークレットと資格情報を格納します。",
- "waf": "安全"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "低い",
+ "text": "Azure Front Door の配信元グループに配信元が 1 つしかない場合は、正常性プローブを無効にします。",
+ "waf": "パフォーマンス"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"severity": "中程度",
- "text": "Microsoft Entra ID レポート機能を使用して、アクセス制御監査レポートを生成します。",
- "waf": "安全"
+ "text": "Azure Front Door の適切な正常性プローブ エンドポイントを選択します。アプリケーションのすべての依存関係をチェックする正常性エンドポイントの構築を検討してください。",
+ "waf": "確実"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
- "severity": "高い",
- "text": "すべてのサブスクリプションで Defender Cloud セキュリティ態勢管理を有効にします。",
- "waf": "安全"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "低い",
+ "text": "Azure Front Door で HEAD 正常性プローブを使用して、Front Door がアプリケーションに送信するトラフィックを減らします。",
+ "waf": "パフォーマンス"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"severity": "高い",
- "text": "すべてのサブスクリプションで、サーバーの Defender Cloud ワークロード保護プランを有効にします。",
- "waf": "安全"
+ "text": "Load Balancer のアウトバウンド規則の代わりに Azure NAT Gateway を使用して SNAT のスケーラビリティを向上させる",
+ "waf": "確実"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
"severity": "高い",
- "text": "すべてのサブスクリプションで Azure リソースの Defender Cloud ワークロード保護プランを有効にします。",
- "waf": "安全"
+ "text": "Azure Front Door でマネージド TLS 証明書を使用します。運用コストと、証明書の更新による停止のリスクを軽減します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "Azure Front Door WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
"severity": "高い",
- "text": "IaaS サーバーでエンドポイント保護を有効にします。",
+ "text": "Azure Front Door でエンド ツー エンド TLS を使用します。クライアントから Front Door への接続、および Front Door から配信元への接続には TLS を使用します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"severity": "中程度",
- "text": "Azure Monitor ログと Defender for Cloud を使用して、基本オペレーティング システムの修正プログラムのずれを監視します。",
+ "text": "Azure Front Door で HTTP から HTTPS へのリダイレクトを使用します。古いクライアントを自動的に HTTPS リクエストにリダイレクトすることで、クライアントをサポートします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
- "severity": "中程度",
- "text": "既定のリソース構成を一元化された Azure Monitor Log Analytics ワークスペースに接続します。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "Azure Front Door WAF を有効にします。さまざまな攻撃からアプリケーションを保護します。",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
- "severity": "中程度",
- "text": "ソブリン ランディング ゾーンの場合は、Entra ID テナントで透明度ログを有効にします。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "ワークロードに合わせて Azure Front Door WAF を調整するには、検出モードで WAF を構成して誤検知の検出を減らして修正します。",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
- "severity": "中程度",
- "text": "Sovereign Landing Zone の場合は、Entra ID テナントでカスタマー ロックボックスを有効にします。",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
+ "severity": "高い",
+ "text": "Azure Front Door WAF ポリシーで有効になっている要求本文の検査機能を有効にします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
"severity": "高い",
- "text": "ストレージ アカウントへの安全な転送を有効にします。",
+ "text": "Azure Front Door WAF の既定のルール セットを有効にします。デフォルトのルールセットは、一般的な攻撃を検出してブロックします。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
"severity": "高い",
- "text": "ストレージ アカウントのコンテナーの論理的な削除を有効にして、削除されたコンテナーとその内容を回復します。",
+ "text": "Azure Front Door WAF ボット保護ルール セットを有効にします。ボット ルールは、良いボットと悪いボットを検出します。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "高い",
- "text": "Key Vault シークレットを使用して、資格情報 (仮想マシン、ユーザー パスワード)、証明書、キーなどの機密情報のハードコーディングを回避します。",
- "waf": "オペレーションズ"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "最新の Azure Front Door WAF ルール セット バージョンを使用します。ルールセットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "Azure Front Door WAF にレート制限を追加します。レート制限は、クライアントが誤ってまたは意図的に短時間に大量のトラフィックを送信するのをブロックします。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "Azure Front Door WAF のレート制限には高いしきい値を使用します。レート制限のしきい値を高くすると、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多くのリクエストに対する保護を提供します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
- "severity": "高い",
- "text": "Availability Zones (リージョンで適用可能な場合) を活用する (これは自動的に有効になります)",
- "waf": "確実"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "低い",
+ "text": "すべての地理的地域からのトラフィックを想定していない場合は、geo フィルタを使用して、想定外の国からのトラフィックをブロックします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "中程度",
- "text": "Microsoft が開始するフェールオーバーに注意してください。これらは、まれに、影響を受けるリージョンから対応する geo ペア リージョンにすべての IoT ハブをフェールオーバーするために Microsoft によって実行されます。",
- "waf": "確実"
+ "text": "Azure Front Door WAF を使用してトラフィックを geo フィルタリングする場合は、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致できない場合に、正当な要求を誤ってブロックしないようにします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
"severity": "高い",
- "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
- "waf": "確実"
+ "text": "Azure Application Gateway WAF ボット保護ルール セットを有効にします。ボット ルールは、良いボットと悪いボットを検出します。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
"severity": "高い",
- "text": "手動フェールオーバーをトリガーする方法を学習します。",
- "waf": "確実"
+ "text": "Azure Application Gateway WAF ポリシーで有効になっている要求本文の検査機能を有効にします。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
"severity": "高い",
- "text": "フェールオーバー後にフェールバックする方法を学習します。",
- "waf": "確実"
+ "text": "ワークロードの検出モードで Azure Application Gateway WAF を調整します。誤検出を減らします。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "低い",
- "text": "ベスト プラクティスについては、「ベースラインの高可用性ゾーン冗長 Web アプリケーション アーキテクチャ」を参照してください",
- "waf": "確実"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
+ "severity": "高い",
+ "text": "Application Gateway の WAF ポリシーを \"防止\" モードでデプロイします。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "Premium レベルと Standard レベルを使用します。これらの層では、ステージング スロットと自動バックアップがサポートされています。",
- "waf": "確実"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
- "severity": "高い",
- "text": "リージョンで適用可能な場合は Availability Zones を活用します (Premium v2 または v3 レベルが必要)",
- "waf": "確実"
+ "text": "Azure Application Gateway WAF にレート制限を追加します。レート制限は、クライアントが誤ってまたは意図的に短時間に大量のトラフィックを送信するのをブロックします。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "ヘルスチェックの実装",
- "waf": "確実"
+ "text": "Azure Application Gateway WAF のレート制限には高いしきい値を使用します。レート制限のしきい値を高くすると、正当なトラフィックのブロックを回避しながら、インフラストラクチャを圧倒する可能性のある非常に多くのリクエストに対する保護を提供します。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
- "severity": "高い",
- "text": "「Azure App Service のバックアップと復元のベスト プラクティス」を参照してください",
- "waf": "確実"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "severity": "低い",
+ "text": "すべての地理的地域からのトラフィックを想定していない場合は、geo フィルタを使用して、想定外の国からのトラフィックをブロックします。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
- "severity": "高い",
- "text": "Azure App Service の信頼性に関するベスト プラクティスを実装する",
- "waf": "確実"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "Azure Application Gateway WAF を使用してトラフィックを geo フィルタリングする場合は、不明な (ZZ) 場所を指定します。IP アドレスを地理的に一致できない場合に、正当な要求を誤ってブロックしないようにします。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
- "severity": "低い",
- "text": "災害時に App Service アプリを別のリージョンに移動する方法を理解する",
- "waf": "確実"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "最新の Azure Application Gateway WAF ルール セット バージョンを使用します。ルールセットの更新は、現在の脅威の状況を考慮して定期的に更新されます。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
- "severity": "高い",
- "text": "Azure App Service の信頼性サポートについて理解する",
- "waf": "確実"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "診断設定を追加して、Azure Application Gateway WAF ログを保存します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
"severity": "中程度",
- "text": "App Service プランで実行されている Function Apps に対して \"Always On\" が有効になっていることを確認する",
- "waf": "確実"
+ "text": "診断設定を追加して、Azure Front Door WAF ログを保存します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "正常性チェックを使用した App Service インスタンスの監視",
- "waf": "確実"
+ "text": "Azure Application Gateway WAF ログを Microsoft Sentinel に送信します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"severity": "中程度",
- "text": "Application Insights の可用性テストを使用して Web アプリまたは Web サイトの可用性と応答性を監視する",
- "waf": "確実"
+ "text": "Azure Front Door WAF ログを Microsoft Sentinel に送信します。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
- "severity": "低い",
- "text": "Application Insights Standard テストを使用して、Web アプリまたは Web サイトの可用性と応答性を監視する",
- "waf": "確実"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "Azure Application Gateway WAF 構成をコードとして定義します。コードを使用すると、新しいルール セット バージョンをより簡単に採用し、追加の保護を得ることができます。",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Key Vault を使用して、アプリケーションに必要なシークレットを格納します。 Key Vault は、シークレットを格納するための安全で監査された環境を提供し、Key Vault SDK または App Service Key Vault リファレンスを通じて App Service と適切に統合されています。",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "高い",
- "text": "Key Vault を使用してシークレットを格納する",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "従来のWAF構成のかわりにWAFポリシーを使用します。",
+ "waf": "オペレーションズ"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "バックエンドの受信トラフィックをフィルター処理して、Application Gateway サブネット (NSG など) からの接続のみを受け入れるようにします。",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "マネージド ID を使用して、Key Vault SDK または App Service Key Vault 参照を使用して Key Vault に接続します。",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "高い",
- "text": "マネージド ID を使用して Key Vault に接続する",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
+ "severity": "中程度",
+ "text": "配信元が Azure Front Door インスタンスからのトラフィックのみを受け取ることを確認します。",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service TLS 証明書を Key Vault に格納します。",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "高い",
- "text": "Key Vault を使用して TLS 証明書を格納します。",
+ "text": "バックエンド サーバーへのトラフィックを暗号化する必要があります。",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "機密情報を処理するシステムは分離する必要があります。 そのためには、個別の App Service プランまたは App Service Environment を使用し、異なるサブスクリプションまたは管理グループの使用を検討してください。",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
- "severity": "中程度",
- "text": "機密情報を処理するシステムを分離する",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
+ "severity": "高い",
+ "text": "Web アプリケーション ファイアウォールを使用する必要があります。",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service のローカル ディスクは暗号化されていないため、機密データを格納しないでください。 (例: D:\\\\Local and %TMP%)。",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "機密データをローカルディスクに保存しない",
+ "text": "HTTP を HTTPS にリダイレクトする",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "認証された Web アプリケーションの場合は、Azure AD や Azure AD B2C などの確立された ID プロバイダーを使用します。 選択したアプリケーション フレームワークを利用して、このプロバイダーと統合するか、App Service の認証/承認機能を使用します。",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "認証に確立された ID プロバイダーを使用する",
- "waf": "安全"
+ "text": "ゲートウェイで管理される Cookie を使用して、ユーザーセッションからのトラフィックを同じサーバーに転送して処理する",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "適切に管理され、セキュリティで保護された DevOps デプロイ パイプラインなど、制御された信頼できる環境から App Service にコードをデプロイします。これにより、バージョン管理されておらず、悪意のあるホストからデプロイされることが確認されていないコードが回避されます。",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
"severity": "高い",
- "text": "信頼できる環境からのデプロイ",
+ "text": "計画されたサービス更新中に接続ドレインを有効にして、バックエンド プールの既存のメンバーへの接続が失われないようにします",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "FTP/FTPS と WebDeploy/SCM の両方の基本認証を無効にします。 これにより、これらのサービスへのアクセスが無効になり、デプロイに Azure AD で保護されたエンドポイントの使用が強制されます。 SCM サイトは、Azure AD 資格情報を使用して開くこともできます。",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
- "severity": "高い",
- "text": "基本認証の無効化",
- "waf": "安全"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "severity": "低い",
+ "text": "カスタムエラーページを作成して、パーソナライズされたユーザーエクスペリエンスを表示する",
+ "waf": "オペレーションズ"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "可能な場合は、マネージド ID を使用して Azure AD のセキュリティで保護されたリソースに接続します。 これが不可能な場合は、Key Vault にシークレットを格納し、代わりにマネージド ID を使用して Key Vault に接続します。",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
- "severity": "高い",
- "text": "マネージド ID を使用してリソースに接続する",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "HTTP 要求と応答ヘッダーを編集して、クライアントとサーバー間のルーティングと情報交換を容易にします",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Container Registry に格納されているイメージを使用する場合は、マネージド ID を使用してこれらをプルします。",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
- "severity": "高い",
- "text": "マネージド ID を使用してコンテナーをプルするPull containers using a Managed Identity",
- "waf": "安全"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
+ "severity": "中程度",
+ "text": "Front Door を構成して、グローバル Web トラフィックのルーティングと最上位のエンドユーザーのパフォーマンス、および迅速なグローバル フェイルオーバーによる信頼性を最適化する",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service の診断設定を構成することで、ログ記録と監視の中央の宛先として、すべてのテレメトリを Log Analytics に送信できます。これにより、HTTP ログ、アプリケーション ログ、プラットフォーム ログなどの App Service のランタイム アクティビティを監視できます。",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "App Service ランタイム ログを Log Analytics に送信する",
- "waf": "安全"
+ "text": "トランスポート層の負荷分散を使用する",
+ "waf": "パフォーマンス"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "ログ記録と監視の中央の宛先としてアクティビティ ログを Log Analytics に送信するための診断設定を設定します。これにより、App Service リソース自体のコントロール プレーンのアクティビティを監視できます。",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "App Service アクティビティ ログを Log Analytics に送信する",
+ "text": "1 つのゲートウェイ上の複数の Web アプリケーションのホスト名またはドメイン名に基づいてルーティングを構成する",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "リージョンの VNet 統合、ネットワーク セキュリティ グループ、および UDR の組み合わせを使用して、送信ネットワーク アクセスを制御します。 トラフィックは、Azure Firewall などの NVA にルーティングする必要があります。 ファイアウォールのログを必ず監視してください。",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"severity": "中程度",
- "text": "送信ネットワーク アクセスを制御する必要がある",
+ "text": "SSL証明書管理を一元化して、バックエンドサーバーファームからの暗号化と復号化のオーバーヘッドを削減します",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "VNet 統合を使用し、VNet NAT ゲートウェイまたは Azure Firewall などの NVA を使用することで、安定した送信 IP を提供できます。 これにより、受信側は必要に応じて IP に基づいて許可リストに登録できます。 多くの場合、Azure サービスへの通信では、IP アドレスに依存する必要はなく、代わりにサービス エンドポイントなどのメカニズムを使用する必要があります。 (また、受信側でプライベート エンドポイントを使用すると、SNAT の発生が回避され、安定した送信 IP 範囲が提供されます)。",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
"severity": "低い",
- "text": "インターネットアドレスへの送信通信のIPを安定させる",
+ "text": "Application Gateway を使用して WebSocket プロトコルと HTTP/2 プロトコルをネイティブにサポートする",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service のアクセス制限、サービス エンドポイント、またはプライベート エンドポイントの組み合わせを使用して、受信ネットワーク アクセスを制御します。Web アプリ自体と SCM サイトに対して異なるアクセス制限を要求し、構成できます。",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
- "severity": "高い",
- "text": "受信ネットワーク アクセスを制御する必要がある",
- "waf": "安全"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
+ "severity": "中程度",
+ "text": "Azure Data Factory の FTA 回復性プレイブックの活用",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Application Gateway や Azure Front Door などの Web アプリケーション ファイアウォールを使用して、悪意のある受信トラフィックから保護します。 WAFのログを必ず監視してください。",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "高い",
- "text": "App Service の前で WAF を使用するUse a WAF in Front of App Service",
- "waf": "安全"
+ "text": "Availability Zones をサポートするリージョンでゾーン冗長パイプラインを使用するUse zone redundant pipelines in regions that support Availability Zones",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
+ "severity": "中程度",
+ "text": "DevOps を使用して Github と Azure DevOps の統合で ARM テンプレートをバックアップする",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "中程度",
+ "text": "セルフホステッド統合ランタイム VM を別のリージョンにレプリケートしてください",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "中程度",
+ "text": "必ず、姉妹リージョンでネットワークをレプリケートまたは複製してください。別のリージョンに VNet のコピーを作成する必要があります",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "ADF パイプラインで Key Vault が使用されている場合は、Key Vault をレプリケートするために何もする必要はありません。Key Vault はマネージド サービスであり、Microsoft が処理します",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
+ "severity": "低い",
+ "text": "Keyvault 統合を使用している場合は、Keyvault の SLA を使用して可用性を把握します",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "WAFのみへのアクセスをロックダウンすることで、WAFをバイパスできないようにします。 アクセス制限、サービス・エンドポイントおよびプライベート・エンドポイントを組み合わせて使用します。",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "高い",
- "text": "WAFをバイパスすることは避けてください",
- "waf": "安全"
+ "text": "Availability Zones (リージョンで適用可能な場合) を活用する (これは自動的に有効になります)",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service の構成で最小 TLS ポリシーを 1.2 に設定します。",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "中程度",
- "text": "最小 TLS ポリシーを 1.2 に設定します。",
- "waf": "安全"
+ "text": "Microsoft が開始するフェールオーバーに注意してください。これらは、まれに、影響を受けるリージョンから対応する geo ペア リージョンにすべての IoT ハブをフェールオーバーするために Microsoft によって実行されます。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "HTTPS のみを使用するように App Service を構成します。 これにより、App Service は HTTP から HTTPS にリダイレクトされます。 HTTP Strict Transport Security (HSTS) をコード内または WAF から使用して、サイトに HTTPS を使用してのみアクセスする必要があることをブラウザーに通知することを強く検討してください。",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
"severity": "高い",
- "text": "HTTPS のみを使用",
- "waf": "安全"
+ "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "CORS 構成では、すべての配信元がサービスにアクセスできるため、ワイルドカードを使用しないでください (これにより、CORS の目的が損なわれます)。具体的には、サービスにアクセスできると予想される配信元のみを許可します。",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "高い",
- "text": "ワイルドカードは CORS に使用しないでください",
- "waf": "安全"
+ "text": "手動フェールオーバーをトリガーする方法を学習します。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "リモート デバッグは、サービスに追加のポートが開き、攻撃対象領域が増加するため、運用環境でオンにしないでください。このサービスは、48 時間後に自動的にリモート デバッグをオフにすることに注意してください。",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
"severity": "高い",
- "text": "リモートデバッグをオフにする",
- "waf": "安全"
+ "text": "フェールオーバー後にフェールバックする方法を学習します。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Defender for App Service を有効にします。 これは(他の脅威の中でも)既知の悪意のあるIPアドレスへの通信を検出します。 操作の一環として、Defender for App Service からの推奨事項を確認します。",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
"severity": "中程度",
- "text": "Defender for Cloud を有効にする - Defender for App Service",
- "waf": "安全"
+ "text": "Azure Spring Apps では、アプリごとに 2 つのデプロイが許可され、そのうちの 1 つだけが運用トラフィックを受信します。ブルーグリーンデプロイ戦略により、ダウンタイムをゼロにすることができます。ブルー グリーン デプロイは、Standard レベルと Enterprise レベルでのみ使用できます。CI/CD と ADO/GitHub Actions を使用してデプロイを自動化できます",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure は、ネットワーク上で DDoS Basic 保護を提供しており、通常のトラフィック パターンを学習し、異常な動作を検出できるインテリジェントな DDoS Standard 機能によって改善できます。DDoS Standard は仮想ネットワークに適用されるため、Application Gateway や NVA など、アプリの前にあるネットワーク リソース用に構成する必要があります。",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
"severity": "中程度",
- "text": "WAF VNet で DDoS Protection Standard を有効にするEnable DDOS Protection Standard on the WAF VNet",
- "waf": "安全"
+ "text": "Azure Spring Apps インスタンスは、アプリケーション用に複数のリージョンに作成でき、トラフィックは Traffic Manager/Front Door によってルーティングできます。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Container Registry に格納されているイメージを使用する場合は、プライベート エンドポイントとアプリ設定 \"WEBSITE_PULL_IMAGE_OVER_VNET\" を使用して、Azure Container Registry から仮想ネットワーク経由でイメージをプルします。",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"severity": "中程度",
- "text": "Virtual Network 経由でコンテナーをプルする",
- "waf": "安全"
+ "text": "サポートされているリージョンでは、Azure Spring Apps をゾーン冗長としてデプロイできるため、インスタンスは可用性ゾーン間で自動的に分散されます。この機能は、Standard レベルと Enterprise レベルでのみ使用できます。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "ペネトレーションテストのルールに従って、Webアプリケーションでペネトレーションテストを実施します。",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
"severity": "中程度",
- "text": "ペネトレーションテストの実施",
- "waf": "安全"
+ "text": "アプリに複数のアプリ インスタンスを使用する",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "DevSecOps プラクティスに従って脆弱性が検証およびスキャンされた信頼できるコードをデプロイします。",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
"severity": "中程度",
- "text": "検証済みコードのデプロイ",
- "waf": "安全"
+ "text": "Azure Spring Apps をログ、メトリック、トレースで監視します。ASA を Application Insights と統合し、障害を追跡し、ブックを作成します。",
+ "waf": "確実"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "サポートされているプラットフォーム、プログラミング言語、プロトコル、およびフレームワークの最新バージョンを使用します。",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
- "severity": "高い",
- "text": "最新のプラットフォーム、言語、プロトコル、フレームワークを使用",
- "waf": "安全"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
+ "severity": "中程度",
+ "text": "Spring Cloud Gateway で自動スケーリングを設定する",
+ "waf": "確実"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
- "severity": "高い",
- "text": "ビジネスと SLO の要件に基づいて適切なロジック アプリのホスティング プランを選択する",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "低い",
+ "text": "Standard 従量課金プランと専用プランのアプリの自動スケーリングを有効にします。",
"waf": "確実"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
- "severity": "高い",
- "text": "ゾーンの冗長性と可用性ゾーンを使用してリージョンの障害からロジック アプリを保護する",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
+ "severity": "中程度",
+ "text": "ミッション クリティカルなアプリの Spring Boot の商用サポートには、Enterprise プランを使用します。他のレベルでは、OSS のサポートを受けることができます。",
"waf": "確実"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"severity": "高い",
- "text": "重要なワークロードに対するリージョン間 DR 戦略を検討する",
+ "text": "Azure Cache for Redis のゾーン冗長を有効にします。Azure Cache for Redis では、Premium レベルと Enterprise レベルでゾーン冗長構成がサポートされています。ゾーン冗長キャッシュでは、同じリージョン内の異なる Azure Availability Zones にノードを配置できます。これにより、データセンターや AZ の停止が単一障害点として排除され、キャッシュの全体的な可用性が向上します。",
"waf": "確実"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
- "severity": "高い",
- "text": "分離環境にデプロイする場合は、App Service Environment (ASE) v3 を使用するか、それらに移行します",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
+ "severity": "中程度",
+ "text": "Azure Cache for Redis インスタンスのデータ永続化を構成します。キャッシュ データはメモリに格納されるため、まれに複数のノードで計画外の障害が発生すると、すべてのデータがドロップされる可能性があります。データの完全な損失を回避するために、Redis 永続化では、メモリ内データのスナップショットを定期的に取得し、ストレージ アカウントに格納できます。",
"waf": "確実"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"severity": "中程度",
- "text": "Azure DevOps または GitHub を活用して CI/CD を合理化し、ロジック アプリ コードを保護",
- "waf": "オペレーションズ"
+ "text": "geo 冗長ストレージ アカウントを使用して Azure Cache for Redis データを保持するか、geo 冗長性を使用できない場合はゾーン冗長を使用します",
+ "waf": "確実"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
+ "severity": "中程度",
+ "text": "Premium Azure Cache for Redis インスタンスのパッシブ geo レプリケーションを構成します。geo レプリケーションは、2 つ以上の Azure Cache for Redis インスタンス (通常は 2 つの Azure リージョンにまたがる) をリンクするためのメカニズムです。geo レプリケーションは、主にリージョン間のディザスター リカバリー用に設計されています。2 つの Premium レベルのキャッシュ インスタンスは、プライマリ キャッシュへの読み取りと書き込みを提供する方法で geo レプリケーションを介して接続され、そのデータはセカンダリ キャッシュにレプリケートされます。",
+ "waf": "確実"
}
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/checklists/waf_checklist.ko.json b/checklists/waf_checklist.ko.json
index 716589dfd..83be3434f 100644
--- a/checklists/waf_checklist.ko.json
+++ b/checklists/waf_checklist.ko.json
@@ -1,1930 +1,1691 @@
{
"items": [
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
- "severity": "보통",
- "text": "Azure Bot Service의 안정성 지원 권장 사항을 따릅니다",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
- "severity": "보통",
- "text": "로컬 데이터 레지던시 및 지역 규정 준수를 통해 봇 배포Deploying bots with local data residency and regional compliance",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
+ "service": "Entra",
"severity": "보통",
- "text": "Azure Bot Service는 글로벌 및 지역 서비스 모두에 대해 활성-활성 모드로 실행됩니다. 중단이 발생하면 오류를 감지하거나 서비스를 관리할 필요가 없습니다. Azure Bot Service는 다중 지역 지리적 아키텍처에서 자동 장애 조치(failover) 및 자동 복구를 자동으로 수행합니다. EU 봇 지역 서비스의 경우 Azure Bot Service는 중복성을 보장하기 위해 활성/활성 복제가 있는 유럽 내 두 개의 전체 지역을 제공합니다. 글로벌 봇 서비스의 경우 사용 가능한 모든 지역/지역을 글로벌 공간으로 제공할 수 있습니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "text": "Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview 의 데이터 수집 규칙",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "비용"
+ "text": "다중 테넌트에 대한 명확한 규정 또는 비즈니스 요구 사항이 없는 한 Azure 리소스를 관리하기 위해 하나의 Entra 테넌트를 사용합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "text": "기본 데이터 원본을 찾을 수 없는 백업 인스턴스 확인",
- "waf": "비용"
+ "service": "Entra",
+ "severity": "낮다",
+ "text": "다중 테넌트 자동화 접근 방식을 사용하여 Microsoft Entra ID 테넌트를 관리합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "text": "연결되지 않은 서비스(디스크, NIC, IP 주소 등) 삭제 또는 보관",
- "waf": "비용"
+ "service": "Entra",
+ "severity": "높다",
+ "text": "동일한 ID로 다중 테넌트 관리에 Azure Lighthouse를 사용합니다.",
+ "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
"link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "text": "중요 업무용 응용 프로그램에 대한 Site Recovery 저장소와 백업 간의 적절한 균형을 고려합니다.",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "text": "40개의 서로 다른 로그 분석 작업 영역 간의 지출 및 절감 기회 확인 - 비프로덕션 작업 영역에 대해 서로 다른 보존 및 데이터 수집 사용-인식 및 계층 크기 조정을 위한 일일 한도 만들기 - 일일 한도를 설정하는 경우 한도에 도달할 때 경고를 만드는 것 외에도 특정 비율(예: 90%)에 도달했을 때 알림을 받을 경고 규칙도 만들어야 합니다. - 가능한 경우 작업 영역 변환 고려 - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "파트너에게 테넌트를 관리할 수 있는 액세스 권한을 부여하는 경우 Azure Lighthouse를 사용합니다.",
"waf": "비용"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "text": "제거 로그 정책 및 자동화 적용(필요한 경우 로그를 콜드 스토리지로 이동할 수 있음)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "348ef254-c27d-442e-abba-c7571559ab91",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "클라우드 운영 모델에 맞는 RBAC 모델을 적용합니다. Scope and Assign across Management Groups and Subscriptions.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "text": "디스크가 실제로 필요한지 확인하고, 그렇지 않은 경우 삭제하십시오. 필요한 경우 더 낮은 스토리지 계층을 찾거나 백업을 사용합니다.",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "모든 계정 유형에 대해 회사 또는 학교 계정 인증 유형만 사용합니다. Microsoft 계정을 사용하지 마십시오.",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "text": "사용자 지정 규칙을 사용하여 사용하지 않는 스토리지를 하위 계층으로 이동하는 것이 좋습니다 - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "그룹만 사용하여 사용 권한을 할당합니다. 그룹 관리 시스템이 이미 있는 경우 Entra ID 전용 그룹에 온-프레미스 그룹을 추가합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "text": "Advisor가 VM 올바른 크기 조정에 대해 구성되어 있는지 확인합니다. ",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
+ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "Azure 환경에 대한 권한이 있는 모든 사용자에 대해 Microsoft Entra ID 조건부 액세스 정책을 적용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "Cost analysys에서 Meter Category Licenses를 검색하여 확인합니다.",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "text": "모든 Windows VM에서 스크립트 실행 https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- Windows VM을 자주 만드는 경우 정책 구현을 고려합니다.",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
+ "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "Azure 환경에 대한 권한이 있는 모든 사용자에 대해 Multi-Factor Authentication을 적용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
"link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "text": " 이미 라이선스가 있는 경우 AHUB에 넣을 수도 https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "비용"
+ "service": "Entra",
+ "severity": "보통",
+ "text": "Microsoft Entra ID PIM(Privileged Identity Management)을 적용하여 제로 스탠딩 액세스 및 최소 권한을 설정합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "text": "유연성 옵션을 사용하여 예약된 VM 제품군 통합(4-5개 이하의 제품군)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
+ "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "Active Directory Domain Services에서 Entra Domain Services로 전환하려는 경우 모든 워크로드의 호환성을 평가합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "text": "Azure Reserved Instances 활용: 이 기능을 사용하면 1년 또는 3년 동안 VM을 예약할 수 있으므로 PAYG 가격에 비해 상당한 비용 절감 효과를 얻을 수 있습니다.",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "Microsoft Entra ID 로그를 플랫폼 중앙 Azure Monitor와 통합합니다. Azure Monitor는 Azure의 로그 및 모니터링 데이터에 대한 단일 정보 소스를 허용하여 조직에 로그 수집 및 보존에 대한 요구 사항을 충족하는 클라우드 네이티브 옵션을 제공합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "text": "더 큰 디스크만 예약할 수 있습니다 => 1TiB -",
- "waf": "비용"
+ "ammp": true,
+ "checklist": "Azure Landing Zone Review",
+ "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
+ "service": "Entra",
+ "severity": "높다",
+ "text": "응급 액세스 또는 비상 계정을 구현하여 테넌트 전체 계정 잠금을 방지합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "text": "적절한 크기 최적화 후",
- "waf": "비용"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "35037e68-9349-4c15-b371-228514f4cdff",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "특별히 필요한 시나리오가 없는 한 Microsoft Entra ID 역할 할당에 온-프레미스 동기화 계정을 사용하지 마세요.",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
"link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "text": "적용 가능한 경우 확인 및 정책/변경 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 시행",
- "waf": "비용"
+ "service": "Entra",
+ "severity": "보통",
+ "text": "Microsoft Entra ID 애플리케이션 프록시를 사용하여 원격 사용자에게 애플리케이션에 대한 액세스 권한을 부여하는 경우 테넌트당 하나의 인스턴스만 가질 수 있으므로 플랫폼 리소스로 관리합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "text": "VM + 라이선스 부분 할인(ahub + 3YRI)은 약 70% 할인입니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
+ "service": "VNet",
+ "severity": "보통",
+ "text": "최대한의 유연성이 필요한 네트워크 시나리오에는 허브 및 스포크(hub-and-spoke) 네트워크 토폴로지를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "text": "플랫 사이징보다는 VMSS를 사용하여 수요에 맞추는 것이 좋습니다",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "ExpressRoute 게이트웨이, VPN 게이트웨이 및 Azure Firewall 또는 파트너 NVA를 포함한 공유 네트워킹 서비스를 중앙 허브 가상 네트워크에 배포합니다. 필요한 경우 DNS 서비스도 배포합니다.",
"waf": "비용"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "text": "AKS 자동 크기 조정기를 사용하여 클러스터 사용량과 일치시킵니다(Pod 요구 사항이 스케일러와 일치하는지 확인).",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "애플리케이션 랜딩 존의 모든 공용 IP 주소에 대해 DDoS 네트워크 또는 IP 보호 계획을 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "text": "해당하는 경우 복구 지점을 자격 증명 모음 보관으로 이동(유효성 검사)Move recovery points to vault-archive where applicable (Validate)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "비용"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
+ "severity": "보통",
+ "text": "파트너 네트워킹 기술 또는 NVA를 배포할 때 파트너 공급업체의 지침을 따릅니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "text": "가능한 경우 대체와 함께 스폿 VM을 사용하는 것이 좋습니다. 클러스터의 자동 종료를 고려합니다.",
- "waf": "비용"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
+ "service": "ExpressRoute",
+ "severity": "낮다",
+ "text": "허브 및 스포크 시나리오에서 ExpressRoute와 VPN 게이트웨이 간의 전송이 필요한 경우 Azure Route Server를 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "text": "함수 - 연결 재사용",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualHubs",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
+ "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
+ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
+ "service": "ARS",
+ "severity": "낮다",
+ "text": "Route Server를 사용하는 경우 Route Server 서브넷에 /27 접두사를 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "text": "함수 - 로컬에 데이터 캐시",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
+ "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",
+ "severity": "보통",
+ "text": "Azure 지역 간에 여러 허브 및 스포크 토폴로지가 있는 네트워크 아키텍처의 경우 허브 VNet 간의 글로벌 가상 네트워크 피어링을 사용하여 지역을 서로 연결합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "text": "기능 - 콜드 스타트 - '패키지에서 실행' 기능을 사용합니다. 이렇게 하면 코드가 단일 zip 파일로 다운로드됩니다. 예를 들어, 이것은 많은 노드 모듈이 있는 Javascript 함수를 크게 개선할 수 있습니다. 언어별 도구를 사용하여 패키지 크기를 줄입니다(예: 트리 쉐이킹 Javascript 애플리케이션).",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
+ "service": "VNet",
+ "severity": "보통",
+ "text": "네트워크용 Azure Monitor를 사용하여 Azure에서 네트워크의 엔드투엔드 상태를 모니터링합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "text": "기능 - 기능을 따뜻하게 유지",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
+ "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
+ "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",
+ "severity": "보통",
+ "text": "한 지역에 400개 이상의 스포크 네트워크가 있는 경우 VNet 피어링 제한(500) 및 ExpressRoute를 통해 보급할 수 있는 최대 접두사 수(1000)를 우회하기 위해 추가 허브를 배포합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "text": "다른 함수와 함께 자동 크기 조정을 사용하는 경우 모든 리소스에 대한 모든 자동 크기 조정을 구동하는 것이 있을 수 있으므로 별도의 소비 계획으로 이동하는 것이 좋습니다(CPU에 대한 더 높은 계획 고려).",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
+ "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
+ "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",
+ "severity": "보통",
+ "text": "경로 테이블당 경로 수를 400개로 제한합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "text": "지정된 계획의 함수 앱은 모두 함께 크기가 조정되므로 크기 조정과 관련된 모든 문제는 계획의 모든 앱에 영향을 줄 수 있습니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
+ "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "VNet 피어링을 구성할 때 '원격 가상 네트워크에 대한 트래픽 허용' 설정을 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "text": "'대기 시간'에 대한 요금이 청구되나요? 이 질문은 일반적으로 비동기 작업을 수행하고 결과를 기다리는 C # 함수 (예 : await Task.Delay(1000) 또는 await client )의 컨텍스트에서 묻습니다. GetAsync('http://google.com')입니다. 대답은 '예'입니다 - GB 초 계산은 함수의 시작 및 종료 시간과 해당 기간 동안의 메모리 사용량을 기반으로 합니다. CPU 작업 측면에서 해당 시간 동안 실제로 발생하는 일은 계산에 포함되지 않습니다. 이 규칙의 한 가지 예외는 지속성 함수를 사용하는 경우입니다. 오케스트레이터 함수에서 대기하는 데 소요된 시간에 대해서는 요금이 청구되지 않습니다.가능한 경우 수요 형성 기술을 적용합니다(개발 환경?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "비용"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "ExpressRoute Direct를 사용하는 경우 조직의 라우터와 MSEE 간의 계층 2 레벨에서 트래픽을 암호화하도록 MACsec을 구성합니다. 다이어그램은 흐름에서 이 암호화를 보여 줍니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "text": "Frontdoor - 기본 홈페이지 끄기앱의 애플리케이션 설정에서 AzureWebJobsDisableHomepage를 true로 설정합니다. 이렇게 하면 PoP에 204(콘텐츠 없음)가 반환되므로 헤더 데이터만 반환됩니다.",
- "waf": "비용"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "MACsec을 사용할 수 없는 시나리오(예: ExpressRoute Direct를 사용하지 않음)의 경우 VPN 게이트웨이를 사용하여 ExpressRoute 개인 피어링을 통해 IPsec 터널을 설정합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "text": "Frontdoor 프론트도어 - 아무것도 반환하지 않는 무언가로 라우팅합니다. 함수, 함수 프록시를 설정하거나 WebApp에서 200(정상)을 반환하고 콘텐츠를 보내지 않거나 최소한으로 보내는 경로를 추가합니다. 이것의 장점은 호출될 때 로그아웃할 수 있다는 것입니다.",
- "waf": "비용"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "높다",
+ "text": "Azure 지역 및 온-프레미스 위치에서 겹치는 IP 주소 공간이 사용되지 않는지 확인합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "text": "덜 사용되는 데이터에 대한 보관 계층 고려",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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",
+ "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
+ "severity": "보통",
+ "text": "개인 인터넷(RFC 1918)에 대한 주소 할당 범위의 IP 주소를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "text": "크기가 계층과 일치하지 않는 디스크 크기를 확인합니다(예: 513GiB 디스크는 P30(1TiB)를 지불하고 크기 조정을 고려합니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "IP 주소 공간이 낭비되지 않는지 확인하고 불필요하게 큰 가상 네트워크(예: /16)를 만들지 마세요.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "text": "가능하면 프리미엄 또는 울트라 대신 표준 SSD를 사용하는 것이 좋습니다.",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "text": "스토리지 계정의 경우 선택한 계층이 트랜잭션 요금을 합산하지 않는지 확인합니다(다음 계층으로 이동하는 것이 더 저렴할 수 있음).",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "text": "ASR의 경우 RPO/RTO 및 복제 처리량이 허용하는 경우 표준 SSD 디스크를 사용하는 것이 좋습니다",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "text": "스토리지 계정: 핫 계층 및/또는 GRS 필요 확인",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "text": "디스크 - 모든 곳에서 프리미엄 SSD 디스크 사용의 유효성을 검사합니다. 예를 들어 비프로덕션은 표준 SSD 또는 주문형 프리미엄 SSD로 교환할 수 있습니다. ",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "text": "예산을 만들어 비용을 관리하고 이해 관계자에게 지출 이상 및 초과 지출 위험을 자동으로 알리는 경고를 만듭니다.",
- "waf": "비용"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "text": "추가 데이터 분석을 위해 비용 데이터를 스토리지 계정으로 내보냅니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "높다",
+ "text": "프로덕션 및 재해 복구 사이트에 대해 겹치는 IP 주소 범위를 사용하지 마세요.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "text": "리소스를 사용하지 않을 때 일시 중지하여 전용 SQL 풀에 대한 비용을 제어합니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
+ "service": "DNS",
+ "severity": "보통",
+ "text": "Azure의 이름 확인만 필요한 환경의 경우 이름 확인을 위해 위임된 영역(예: 'azure.contoso.com')을 사용하여 확인을 위해 Azure 프라이빗 DNS를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "text": "서버리스 Apache Spark 자동 일시 중지 기능을 활성화하고 그에 따라 제한 시간 값을 설정합니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
+ "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
+ "service": "DNS",
+ "severity": "보통",
+ "text": "Azure 및 온-프레미스에서 이름 확인이 필요하고 Active Directory와 같은 기존 엔터프라이즈 DNS 서비스가 없는 환경의 경우 Azure DNS Private Resolver를 사용하여 DNS 요청을 Azure 또는 온-프레미스 DNS 서버로 라우팅합니다.",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "text": "다양한 크기의 Apache Spark 풀 정의를 여러 개 만듭니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
+ "service": "DNS",
+ "severity": "낮다",
+ "text": "자체 DNS(예: Red Hat OpenShift)가 필요하고 배포하는 특수 워크로드는 선호하는 DNS 솔루션을 사용해야 합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "text": "사전 구매 플랜으로 1년 동안 Azure Synapse SCU(커밋 단위)를 구매하여 Azure Synapse Analytics 비용을 절감하세요.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "비용"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "614658d3-558f-4d77-849b-821112df27ee",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
+ "service": "DNS",
+ "severity": "높다",
+ "text": "Azure DNS에 대한 자동 등록을 사용하도록 설정하여 가상 네트워크 내에 배포된 가상 머신에 대한 DNS 레코드의 수명 주기를 자동으로 관리합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "text": "인터럽트 가능한 작업에 스폿 VM 사용: 할인된 가격으로 입찰 및 구매할 수 있는 VM으로, 중요하지 않은 워크로드에 비용 효율적인 솔루션을 제공합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "비용"
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
+ "service": "Bastion",
+ "severity": "보통",
+ "text": "Azure Bastion을 사용하여 네트워크에 안전하게 연결합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "text": "모든 VM의 적절한 크기 조정",
- "waf": "비용"
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
+ "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
+ "service": "Bastion",
+ "severity": "보통",
+ "text": "서브넷 /26 이상에서 Azure Bastion을 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "text": "VM 크기를 정규화된 최신 크기로 바꾸기",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "WAF",
+ "severity": "보통",
+ "text": "Azure Front Door 및 WAF 정책을 사용하여 랜딩 존에 대한 인바운드 HTTP/S 연결을 위해 Azure 지역 전체에서 전역 보호를 제공합니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "비용"
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "적절한 크기 조정 VM - 사용량을 5% 미만으로 모니터링하는 것으로 시작한 다음 최대 40%까지 작업",
+ "service": "WAF",
+ "severity": "낮다",
+ "text": "Azure Front Door 및 Azure Application Gateway를 사용하여 HTTP/S 앱을 보호하는 경우 Azure Front Door에서 WAF 정책을 사용합니다. Azure Front Door에서만 트래픽을 수신하도록 Azure Application Gateway를 잠급니다.",
"training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "비용"
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "애플리케이션을 컨테이너화하면 VM 밀도를 개선하고 확장 비용을 절감할 수 있습니다",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "비용"
+ "service": "WAF",
+ "severity": "높다",
+ "text": "인바운드 HTTP/S 연결에 WAF 및 기타 역방향 프록시가 필요한 경우 랜딩 존 가상 네트워크 내에 배포하고 보호하고 인터넷에 노출하는 앱과 함께 배포합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
- "severity": "보통",
- "text": "Azure Data Factory에 대한 FTA 복원력 플레이북 활용",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "Azure DDoS 네트워크 또는 IP 보호 플랜을 사용하여 가상 네트워크 내의 공용 IP 주소 엔드포인트를 보호할 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
+ "service": "VNet",
"severity": "높다",
- "text": "가용성 영역을 지원하는 지역에서 영역 중복 파이프라인 사용Use zone redundant pipelines in regions that support Availability Zones",
+ "text": "예정된 호환성이 손상되는 변경 전에 네트워크 아웃바운드 트래픽 구성 및 전략을 관리하는 방법을 계획합니다. 2025년 9월 30일에 새 배포에 대한 기본 아웃바운드 액세스가 사용 중지되고 명시적 액세스 구성만 허용됩니다.",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
- "severity": "보통",
- "text": "DevOps를 사용하여 Github/Azure DevOps 통합으로 ARM 템플릿 백업 ",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
+ "severity": "높다",
+ "text": "보호된 모든 공용 IP 주소(DDoS IP 또는 네트워크 보호)에 대한 DDoS 관련 로그를 저장하는 진단 설정을 추가합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "보통",
- "text": "다른 지역에서 자체 호스팅 통합 런타임 VM을 복제해야 합니다. ",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
+ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
+ "service": "Policy",
+ "severity": "높다",
+ "text": "Virtual Machines에 직접 연결된 공용 IP 주소를 거부하는 정책 할당이 있는지 확인합니다. 특정 VM에서 공용 IP가 필요한 경우 제외를 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "자매 지역에서 네트워크를 복제하거나 복제해야 합니다. 다른 지역에서 Vnet의 복사본을 만들어야 합니다",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "ADF 파이프라인에서 Key Vault를 사용하는 경우 Key Vault를 복제하기 위해 아무 작업도 수행할 필요가 없습니다. Key Vault는 관리되는 서비스이며 Microsoft에서 처리합니다",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "severity": "낮다",
- "text": "Keyvault 통합을 사용하는 경우 Keyvault의 SLA를 사용하여 가용성을 파악합니다",
- "waf": "신뢰도"
+ "text": "ExpressRoute를 Azure에 대한 기본 연결로 사용합니다. VPN을 백업 연결의 소스로 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS Windows 워크로드에 필요한 경우 HostProcess 컨테이너를 사용할 수 있습니다.",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "description": "AS-path 접두사 및 연결 가중치를 사용하여 Azure에서 온-프레미스로의 트래픽에 영향을 주고, 자체 라우터의 전체 BGP 특성 범위를 사용하여 온-프레미스에서 Azure로의 트래픽에 영향을 줄 수 있습니다.",
+ "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "여러 ExpressRoute 회로 또는 여러 온-프레미스 위치를 사용하는 경우 BGP 특성을 사용하여 라우팅을 최적화합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "낮다",
- "text": "이벤트 기반 워크로드를 실행하는 경우 KEDA 사용Use KEDA if running event-driven workloads",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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-about-virtual-network-gateways?source=recommendations#gwsku",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "대역폭 및 성능 요구 사항에 따라 ExpressRoute/VPN 게이트웨이에 적합한 SKU를 선택합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
- "severity": "낮다",
- "text": "Dapr을 사용하여 마이크로 서비스 개발 용이",
- "waf": "작업"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
+ "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
+ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
+ "service": "ExpressRoute",
+ "severity": "높다",
+ "text": "비용을 정당화하는 대역폭에 도달하는 경우에만 무제한 데이터 ExpressRoute 회로를 사용해야 합니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
+ "service": "ExpressRoute",
"severity": "높다",
- "text": "SLA 지원 AKS 제품 사용",
- "waf": "신뢰도"
+ "text": "회로 피어링 위치가 로컬 SKU에 대한 Azure 지역을 지원하는 경우 ExpressRoute의 로컬 SKU를 활용하여 회로 비용을 줄입니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "낮다",
- "text": "Pod 및 배포 정의에서 중단 예산 사용Use Disruption Budgets in your pod and deployment definitions",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
+ "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "지원되는 Azure 지역에 영역 중복 ExpressRoute 게이트웨이를 배포합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
- "severity": "높다",
- "text": "개인 레지스트리를 사용하는 경우 여러 지역에 이미지를 저장하도록 지역 복제를 구성합니다",
- "waf": "신뢰도"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "10Gbps보다 높은 대역폭 또는 전용 10/100Gbps 포트가 필요한 시나리오의 경우 ExpressRoute Direct를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "낮다",
- "text": "kubecost와 같은 외부 애플리케이션을 사용하여 다른 사용자에게 비용 할당",
- "waf": "비용"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
+ "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "짧은 대기 시간이 필요하거나 온-프레미스에서 Azure로의 처리량이 10Gbps보다 커야 하는 경우 FastPath를 사용하도록 설정하여 데이터 경로에서 ExpressRoute 게이트웨이를 우회합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "낮다",
- "text": "축소 모드를 사용하여 노드 삭제/할당 취소",
- "waf": "비용"
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
+ "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
+ "service": "VPN",
+ "severity": "보통",
+ "text": "영역 중복 VPN 게이트웨이를 사용하여 분기 또는 원격 위치를 Azure(사용 가능한 경우)에 연결합니다.",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
+ "service": "VPN",
"severity": "보통",
- "text": "필요한 경우 AKS 클러스터에서 다중 인스턴스 분할 GPU 사용",
- "waf": "비용"
+ "text": "온-프레미스에서 중복 VPN 어플라이언스(활성/활성 또는 활성/수동)를 사용합니다.",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "낮다",
- "text": "개발/테스트 클러스터를 실행하는 경우 NodePool 시작/중지를 사용합니다.",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
+ "service": "ExpressRoute",
+ "severity": "높다",
+ "text": "ExpressRoute Direct를 사용하는 경우 비용을 절감하기 위해 로컬 Azure 지역에 대한 ExpressRoute 로컬 회로를 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "비용"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "Kubernetes용 Azure Policy를 사용하여 클러스터 규정 준수 보장",
+ "text": "트래픽 격리 또는 전용 대역폭이 필요한 경우(예: 프로덕션 환경과 비프로덕션 환경 분리) 다른 ExpressRoute 회로를 사용합니다. 이는 격리된 라우팅 도메인을 보장하고 시끄러운 이웃 위험을 완화하는 데 도움이 됩니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "사용자/시스템 노드 풀이 있는 컨트롤 플레인에서 응용 프로그램 분리",
- "waf": "안전"
+ "text": "기본 제공 Express Route Insights를 사용하여 ExpressRoute 가용성 및 사용률을 모니터링합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "낮다",
- "text": "시스템 nodepool에 taint를 추가하여 전용으로 만듭니다.",
- "waf": "안전"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
+ "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "네트워크 전반, 특히 온-프레미스와 Azure 간의 연결을 모니터링하려면 연결 모니터를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
- "severity": "보통",
- "text": "이미지에 개인 레지스트리(예: ACR) 사용",
- "waf": "안전"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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#need-for-redundant-connectivity-solution",
+ "service": "ExpressRoute",
+ "severity": "보통",
+ "text": "중복성을 위해 서로 다른 피어링 위치의 ExpressRoute 회로를 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "이미지에서 취약성 검사",
- "waf": "안전"
+ "text": "단일 ExpressRoute 회로만 사용하는 경우 사이트 간 VPN을 ExpressRoute의 장애 조치(failover)로 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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))",
+ "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
+ "service": "ExpressRoute",
"severity": "높다",
- "text": "앱 분리 요구 사항 정의(네임스페이스/노드 풀/클러스터)",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
- "severity": "보통",
- "text": "CSI 비밀 저장소 드라이버를 사용하여 Azure Key Vault에 비밀 저장",
- "waf": "안전"
+ "text": "GatewaySubnet에서 경로 테이블을 사용하는 경우 게이트웨이 경로가 전파되었는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d581a947-69a2-4783-942e-9df3664324c8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "service": "ExpressRoute",
"severity": "높다",
- "text": "클러스터에 서비스 주체를 사용하는 경우 주기적으로(예: 분기별) 자격 증명을 새로 고칩니다",
- "waf": "안전"
+ "text": "ExpressRoute를 사용하는 경우 온-프레미스 라우팅은 동적이어야 하며, 연결 오류가 발생할 경우 회로의 나머지 연결로 수렴해야 합니다. 로드는 두 연결 모두에서 이상적으로는 액티브/액티브로 공유해야 하지만 액티브/패시브도 지원됩니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "필요한 경우 키 관리 서비스 etcd 암호화를 추가합니다.",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 AKS용 기밀 컴퓨팅을 사용하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "ExpressRoute 회로의 두 물리적 링크가 네트워크에 있는 두 개의 고유한 에지 디바이스에 연결되어 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "컨테이너용 Defender 사용 고려",
- "waf": "안전"
+ "text": "BFD(Bidirectional Forwarding Detection)가 고객 또는 프로바이더 에지 라우팅 디바이스에서 활성화되고 구성되도록 보장합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "ExpressRoute",
"severity": "높다",
- "text": "서비스 주체 대신 관리 ID 사용",
- "waf": "안전"
+ "text": "복원력을 높이기 위해 ExpressRoute 게이트웨이를 서로 다른 피어링 위치에서 둘 이상의 회로에 연결합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "AAD와 인증 통합(관리형 통합 사용)",
- "waf": "안전"
+ "text": "ExpressRoute 가상 네트워크 게이트웨이에 대한 진단 로그 및 경고를 구성합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
+ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "관리자 kubeconfig에 대한 액세스 제한(get-credentials --admin)",
- "waf": "안전"
+ "text": "VNet 간 통신에 ExpressRoute 회로를 사용하지 마세요.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
- "severity": "보통",
- "text": "AAD RBAC와 권한 부여 통합",
- "waf": "안전"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "service": "N/A",
+ "severity": "낮다",
+ "text": "검사를 위해 Azure 트래픽을 하이브리드 위치로 보내지 마세요. 대신 'Azure의 트래픽이 Azure에 유지됨' 원칙을 따라 Azure의 리소스 간 통신이 Microsoft 백본 네트워크를 통해 발생하도록 합니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
+ "link": "https://learn.microsoft.com/azure/firewall/overview",
+ "service": "Firewall",
"severity": "높다",
- "text": "쿠버네티스에서 RBAC 권한을 제한하기 위해 네임스페이스 사용",
+ "text": "Azure Firewall을 사용하여 인터넷에 대한 Azure 아웃바운드 트래픽, HTTP/S가 아닌 인바운드 연결 및 East/West 트래픽 필터링(조직에 필요한 경우)을 제어합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
+ "service": "Firewall",
"severity": "보통",
- "text": "Pod ID 액세스 관리의 경우 Azure AD 워크로드 ID(미리 보기)를 사용합니다.",
+ "text": "글로벌 Azure Firewall 정책을 만들어 글로벌 네트워크 환경에서 보안 태세를 제어하고 모든 Azure Firewall 인스턴스에 할당합니다. Azure 역할 기반 액세스 제어를 통해 증분 방화벽 정책을 로컬 보안 팀에 위임하여 특정 지역의 요구 사항을 충족하는 세분화된 정책을 허용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
- "severity": "보통",
- "text": "AKS 비대화형 로그인의 경우 kubelogin(미리 보기)을 사용합니다.",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
+ "service": "Firewall",
+ "severity": "낮다",
+ "text": "조직에서 아웃바운드 연결을 보호하기 위해 이러한 솔루션을 사용하려는 경우 Firewall Manager 내에서 지원되는 파트너 SaaS 보안 공급자를 구성합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
- "severity": "보통",
- "text": "AKS 로컬 계정 사용 안 함",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
+ "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
+ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
+ "service": "Firewall",
+ "severity": "높다",
+ "text": "응용 프로그램 규칙을 사용하여 지원되는 프로토콜에 대한 대상 호스트 이름에서 아웃바운드 트래픽을 필터링합니다. FQDN 기반 네트워크 규칙 및 DNS 프록시와 함께 Azure Firewall을 사용하여 다른 프로토콜을 통해 인터넷으로의 송신 트래픽을 필터링합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 Just-in-time 클러스터 액세스 구성",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
+ "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features",
+ "service": "Firewall",
+ "severity": "높다",
+ "text": "Azure Firewall 프리미엄을 사용하여 추가 보안 기능을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS에 필요한 경우 AAD 조건부 액세스 구성",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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#idps-signature-rules",
+ "service": "Firewall",
+ "severity": "높다",
+ "text": "추가 보호를 위해 Azure Firewall 위협 인텔리전스 모드를 경고 및 거부로 구성합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "낮다",
- "text": "Windows AKS 워크로드에 필요한 경우 gMSA를 구성합니다. ",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
+ "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "service": "Firewall",
+ "severity": "높다",
+ "text": "추가 보호를 위해 Azure Firewall IDPS 모드를 거부로 구성합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
- "severity": "보통",
- "text": "더 세밀하게 제어하려면 관리형 Kubelet ID를 사용하는 것이 좋습니다.",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
+ "service": "Firewall",
+ "severity": "높다",
+ "text": "Virtual WAN에 연결되지 않은 VNet의 서브넷의 경우 인터넷 트래픽이 Azure Firewall 또는 네트워크 가상 어플라이언스로 리디렉션되도록 경로 테이블을 연결합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
+ "service": "Firewall",
"severity": "보통",
- "text": "AGIC를 사용하는 경우 클러스터 간에 AppGW를 공유하지 마세요",
- "waf": "신뢰도"
+ "text": "모든 Azure Firewall 배포에 대해 리소스별 대상 테이블을 사용하여 로그를 저장하는 진단 설정을 추가합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
+ "service": "Firewall",
+ "severity": "중요하다",
+ "text": "Azure Firewall 클래식 규칙(있는 경우)에서 방화벽 정책으로 마이그레이션합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "service": "Firewall",
"severity": "높다",
- "text": "AKS HTTP 라우팅 추가 기능을 사용하지 말고, 애플리케이션 라우팅 추가 기능과 함께 관리되는 NGINX 수신을 대신 사용합니다.",
- "waf": "신뢰도"
+ "text": "Azure Firewall 서브넷에 /26 접두사를 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "service": "Firewall",
"severity": "보통",
- "text": "Windows 워크로드의 경우 가속화된 네트워킹을 사용합니다.",
+ "text": "방화벽 정책 내의 규칙을 Rule Collection Groups(규칙 컬렉션 그룹) 및 Rule Collections(규칙 컬렉션)로 정렬하고 사용 빈도에 따라 정렬합니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
- "severity": "높다",
- "text": "표준 ALB 사용(기본 ALB와 반대)",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
+ "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
+ "service": "Firewall",
+ "severity": "보통",
+ "text": "IP 그룹 또는 IP 접두사를 사용하여 IP 테이블 규칙의 수를 줄입니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "service": "Firewall",
"severity": "보통",
- "text": "Azure CNI를 사용하는 경우 NodePools에 다른 서브넷을 사용하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "와일드카드를 DNAT의 소스 IP로 사용하지 마십시오(예: * 또는 any). 들어오는 DNAT에 대한 소스 IP를 지정해야 합니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "service": "Firewall",
"severity": "보통",
- "text": "프라이빗 엔드포인트(기본 설정) 또는 Virtual Network 서비스 엔드포인트를 사용하여 클러스터에서 PaaS 서비스에 액세스",
- "waf": "안전"
+ "text": "SNAT 포트 사용량을 모니터링하고, NAT 게이트웨이 설정을 평가하고, 원활한 장애 조치(failover)를 보장하여 SNAT 포트 고갈을 방지합니다. 포트 수가 제한에 가까워지면 SNAT 고갈이 임박했을 수 있다는 신호입니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "346840b8-1064-496e-8396-4b1340172d52",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
+ "service": "Firewall",
"severity": "높다",
- "text": "요구 사항에 가장 적합한 CNI 네트워크 플러그 인 선택(Azure CNI 권장)",
- "waf": "신뢰도"
+ "text": "Azure Firewall 프리미엄을 사용하는 경우 TLS 검사를 사용하도록 설정합니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "높다",
- "text": "Azure CNI를 사용하는 경우 노드당 최대 Pod 수를 고려하여 서브넷 크기를 적절하게 조정합니다",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
+ "service": "Firewall",
+ "severity": "낮다",
+ "text": "웹 범주를 사용하여 특정 주제에 대한 아웃바운드 액세스를 허용하거나 거부할 수 있습니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "높다",
- "text": "Azure CNI를 사용하는 경우 최대 Pod/노드(기본값 30)를 확인합니다.",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "service": "Firewall",
+ "severity": "보통",
+ "text": "TLS 검사의 일환으로 검사를 위해 Azure App Gateway에서 트래픽을 수신하도록 계획합니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "내부 앱의 경우 조직은 방화벽에서 전체 AKS 서브넷을 여는 경우가 많습니다. 이렇게 하면 노드에 대한 네트워크 액세스도 열리고 잠재적으로 Pod에 대한 액세스도 열립니다(Azure CNI를 사용하는 경우). LoadBalancer IP가 다른 서브넷에 있는 경우 앱 클라이언트에서 이 IP만 사용할 수 있어야 합니다. 또 다른 이유는 AKS 서브넷의 IP 주소가 부족한 리소스인 경우 서비스에 해당 IP 주소를 사용하면 클러스터의 최대 확장성이 감소하기 때문입니다.",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "낮다",
- "text": "개인 IP LoadBalancer 서비스를 사용하는 경우 AKS 서브넷이 아닌 전용 서브넷을 사용합니다",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "service": "Firewall",
+ "severity": "보통",
+ "text": "Azure Firewall DNS 프록시 구성을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "service": "Firewall",
"severity": "높다",
- "text": "그에 따라 서비스 IP 주소 범위의 크기를 조정합니다(클러스터 확장성이 제한됨).",
- "waf": "신뢰도"
+ "text": "Azure Firewall을 Azure Monitor와 통합하고 진단 로깅을 사용하도록 설정하여 방화벽 로그를 저장하고 분석합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "service": "Firewall",
"severity": "낮다",
- "text": "필요한 경우 자체 CNI 플러그인을 추가합니다.",
- "waf": "안전"
+ "text": "방화벽 규칙에 대한 백업 구현Implement backups for your firewall rules",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 AKS에서 노드당 공용 IP 구성",
- "waf": "공연"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "App Gateway",
+ "severity": "높다",
+ "text": "컨트롤 플레인 트래픽을 차단하는 0.0.0.0/0 경로 또는 NSG 규칙과 같이 가상 네트워크에 삽입된 Azure PaaS 서비스에 대한 컨트롤 플레인 통신을 중단하지 마세요.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "service": "ExpressRoute",
"severity": "보통",
- "text": "수신 컨트롤러를 사용하여 LoadBalancer 유형 서비스를 사용하여 노출하는 대신 웹 기반 앱을 노출합니다",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "낮다",
- "text": "송신 트래픽 크기 조정을 위해 Azure NAT Gateway를 outboundType으로 사용",
- "waf": "신뢰도"
+ "text": "프라이빗 엔드포인트 및 ExpressRoute 프라이빗 피어링을 통해 온-프레미스에서 Azure PaaS 서비스에 액세스하세요. 이 방법을 사용하면 공용 인터넷을 통해 전송되지 않습니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
- "severity": "보통",
- "text": "Azure CNI IP 소모를 방지하기 위해 IP의 동적 할당 사용",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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/virtual-network/virtual-network-service-endpoints-overview",
+ "service": "VNet",
"severity": "높다",
- "text": "보안 요구 사항에 필요한 경우 AzFW/NVA를 사용하여 송신 트래픽 필터링",
+ "text": "모든 서브넷에서 기본적으로 가상 네트워크 서비스 엔드포인트를 사용하도록 설정하지 마세요.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
+ "link": "azure/private-link/inspect-traffic-with-azure-firewall",
+ "service": "Firewall",
"severity": "보통",
- "text": "퍼블릭 API 엔드포인트를 사용하는 경우 액세스할 수 있는 IP 주소를 제한합니다",
+ "text": "Azure Firewall 또는 NVA의 IP 주소 대신 FQDN을 사용하여 Azure PaaS 서비스에 대한 송신 트래픽을 필터링하여 데이터 반출을 방지합니다. Private Link를 사용하는 경우 모든 FQDN을 차단할 수 있으며, 그렇지 않으면 필요한 PaaS 서비스만 허용할 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "service": "ExpressRoute",
"severity": "높다",
- "text": "요구 사항에 따라 개인 클러스터를 사용합니다",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "보통",
- "text": "Windows 2019 및 2022 AKS 노드의 경우 Calico 네트워크 정책을 사용할 수 있습니다. ",
+ "text": "게이트웨이 서브넷에 /27 이상의 접두사를 사용합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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)",
+ "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
+ "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
+ "service": "NSG",
"severity": "높다",
- "text": "Kubernetes 네트워크 정책 옵션 사용(Calico/Azure)",
+ "text": "VirtualNetwork 서비스 태그를 사용하여 연결을 제한하는 NSG 인바운드 기본 규칙에 의존하지 마세요.",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "높다",
- "text": "쿠버네티스 네트워크 정책을 사용하여 클러스터 내 보안 강화",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "service": "NSG",
+ "severity": "보통",
+ "text": "NSG를 사용하여 서브넷 간의 트래픽과 플랫폼 전체의 동쪽/서쪽 트래픽(랜딩 존 간 트래픽)을 보호할 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "높다",
- "text": "웹 워크로드(UI 또는 API)에 WAF 사용Use a WAF for web workloads (UIs or APIs)",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "NSG",
+ "severity": "보통",
+ "text": "NSG 및 애플리케이션 보안 그룹을 사용하여 랜딩 존 내의 트래픽을 마이크로 세그먼트화하고 중앙 NVA를 사용하여 트래픽 흐름을 필터링하지 않도록 합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
+ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
+ "service": "NSG",
"severity": "보통",
- "text": "AKS Virtual Network에서 DDoS 표준 사용Use DDoS Standard in the AKS Virtual Network",
+ "text": "VNet 흐름 로그를 사용하도록 설정하고 트래픽 분석에 제공하여 내부 및 외부 트래픽 흐름에 대한 인사이트를 얻을 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
"waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 회사 HTTP 프록시를 추가합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
+ "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "NSG",
+ "severity": "보통",
+ "text": "1,000개의 규칙 제한으로 인해 NSG당 900개 이상의 NSG 규칙을 구현하지 마세요.",
+ "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
+ "service": "VWAN",
"severity": "보통",
- "text": "고급 마이크로서비스 통신 관리를 위해 서비스 메시를 사용하는 것이 좋습니다",
- "waf": "안전"
+ "text": "시나리오가 Virtual WAN 라우팅 디자인 목록에 명시적으로 설명된 경우 Virtual WAN을 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
- "severity": "높다",
- "text": "가장 중요한 메트릭에 대한 경고 구성(권장 사항은 Container Insights 참조)",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "Azure 지역당 Virtual WAN 허브를 사용하여 공통 글로벌 Azure Virtual WAN을 통해 Azure 지역 간에 여러 랜딩 존을 함께 연결합니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "낮다",
- "text": "Azure Advisor에서 클러스터에 대한 권장 사항을 정기적으로 확인합니다.",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "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/howto-firewall",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "아웃바운드 인터넷 트래픽 보호 및 필터링을 위해 보안 허브에 Azure Firewall을 배포합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS 자동 인증서 회전 사용",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "Virtual WAN 네트워크 아키텍처가 식별된 아키텍처 시나리오에 맞는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
- "severity": "높다",
- "text": "kubernetes 버전을 주기적으로(예: 분기별) 업그레이드하거나 AKS 자동 업그레이드 기능을 사용하는 정기적인 프로세스가 있습니다.",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "Virtual WAN용 Azure Monitor Insights를 사용하여 Virtual WAN의 엔드투엔드 토폴로지, 상태 및 주요 메트릭을 모니터링합니다.",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "높다",
- "text": "node-image upgrade를 사용하지 않는 경우 Linux 노드 업그레이드에 kured를 사용합니다.",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "이러한 흐름을 명시적으로 차단해야 하는 경우가 아니면 Virtual WAN에서 분기 간 트래픽을 사용하지 않도록 설정하지 마세요.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
- "severity": "높다",
- "text": "클러스터 노드 이미지를 주기적으로(예: 매주) 업그레이드하는 정기적인 프로세스가 있습니다.",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "AS-Path는 ExpressRoute 또는 VPN보다 유연하므로 허브 라우팅 기본 설정으로 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "낮다",
- "text": "gitops를 고려하여 애플리케이션 또는 클러스터 구성을 여러 클러스터에 배포합니다.",
- "waf": "작업"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "낮다",
- "text": "프라이빗 클러스터에서 AKS 명령 호출을 사용하는 것이 좋습니다.",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "service": "VWAN",
+ "severity": "보통",
+ "text": "Virtual WAN에서 레이블 기반 전파를 구성하지 않으면 가상 허브 간의 연결이 손상됩니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "낮다",
- "text": "계획된 이벤트의 경우 노드 자동 드레인 사용을 고려하십시오.",
- "waf": "작업"
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9c75dfef-573c-461c-a698-68598595581a",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "service": "VWAN",
+ "severity": "높다",
+ "text": "가상 허브에 /23 접두사 이상을 할당하여 충분한 IP 공간을 사용할 수 있도록 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "높다",
- "text": "노드 RG(일명 '인프라 RG')의 운영자가 변경을 수행하지 않도록 자체 거버넌스 관행을 개발합니다.",
- "waf": "작업"
+ "text": "Azure Policy를 전략적으로 활용하고, 정책 이니셔티브를 사용하여 관련 정책을 그룹화하여 환경에 대한 컨트롤을 정의합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "낮다",
- "text": "사용자 정의 노드 RG (일명 '인프라 RG') 이름 사용",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "규정 및 규정 준수 요구 사항을 Azure Policy 정의 및 Azure 역할 할당에 매핑합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "보통",
- "text": "YAML 매니페스트에서 더 이상 사용되지 않는 Kubernetes API를 사용하지 마십시오.",
- "waf": "작업"
+ "text": "상속된 범위에서 할당할 수 있도록 중간 루트 관리 그룹에서 Azure Policy 정의를 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "낮다",
- "text": "테인트 Windows 노드",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "높다",
+ "text": "필요한 경우 최하위 수준에서 제외를 사용하여 가장 적절한 수준에서 정책 할당을 관리합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "43334f24-9116-4341-a2ba-527526944008",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "service": "Policy",
"severity": "낮다",
- "text": "Windows 컨테이너 패치 수준을 호스트 패치 수준과 동기화된 상태로 유지",
- "waf": "작업"
+ "text": "Azure Policy를 사용하여 사용자가 구독/관리 그룹 수준에서 프로비전할 수 있는 서비스를 제어합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "클러스터 수준의 진단 설정을 통해Via Diagnostic Settings at the cluster level",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "낮다",
- "text": "마스터 로그(즉, API 로그)를 Azure Monitor 또는 기본 로그 관리 솔루션으로 보냅니다",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "높다",
+ "text": "가능한 경우 기본 제공 정책을 사용하여 운영 오버헤드를 최소화합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 nodePool 스냅샷을 사용합니다.",
- "waf": "비용"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "description": "Resource Policy Contributor 역할을 특정 범위에 할당하면 정책 관리를 관련 팀에 위임할 수 있습니다. 예를 들어 중앙 IT 팀은 관리 그룹 수준 정책을 감독하고 응용 프로그램 팀은 구독에 대한 정책을 처리하여 조직 표준을 준수하는 분산 거버넌스를 가능하게 할 수 있습니다.",
+ "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "특정 범위에서 기본 제공 Resource Policy Contributor 역할을 할당하여 응용 프로그램 수준 거버넌스를 사용하도록 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "낮다",
- "text": "시간에 민감하지 않은 워크로드에 대한 스폿 노드 풀 고려",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "19048384-5c98-46cb-8913-156a12476e49",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "상속된 범위에서 제외를 통해 관리하지 않도록 루트 관리 그룹 범위에서 수행된 Azure Policy 할당 수를 제한합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "낮다",
- "text": "빠른 버스팅을 위해 AKS 가상 노드 고려",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
+ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "데이터 주권 요구 사항이 있는 경우 이를 적용하기 위해 Azure 정책을 배포해야 합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "높다",
- "text": "Container Insights(또는 Prometheus와 같은 다른 도구)를 사용하여 클러스터 지표 모니터링",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "Sovereign Landing Zone의 경우 주권 정책 기준을 배포하고 올바른 관리 그룹 수준에서 할당합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "높다",
- "text": "Container Insights(또는 Telegraf/ElasticSearch와 같은 다른 도구)를 사용하여 클러스터 로그를 저장하고 분석합니다.",
- "waf": "작업"
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
+ "service": "Policy",
+ "severity": "보통",
+ "text": "Sovereign Landing Zone의 경우 정책 매핑에 대한 Sovereign Control 목표를 문서화합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
+ "service": "Policy",
"severity": "보통",
- "text": "노드의 CPU 및 메모리 사용률 모니터링",
- "waf": "작업"
+ "text": "Sovereign Landing Zone의 경우 '정책 매핑에 대한 Sovereign Control 목표'를 관리하기 위한 프로세스가 마련되어 있는지 확인합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "보통",
- "text": "Azure CNI를 사용하는 경우 노드당 사용되는 Pod IP의 %를 모니터링합니다.",
+ "text": "Azure RBAC(Azure 역할 기반 액세스 제어), 데이터 주권 요구 사항 또는 데이터 보존 정책에 따라 별도의 작업 영역이 필요한 경우를 제외하고 단일 모니터 로그 작업 영역을 사용하여 플랫폼을 중앙에서 관리합니다.",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "OS 디스크의 I/O는 중요한 리소스입니다. 노드의 OS가 I/O에서 제한되면 예측할 수 없는 동작이 발생할 수 있으며, 일반적으로 노드가 NotReady로 선언됩니다",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
- "severity": "보통",
- "text": "노드에서 OS 디스크 큐 크기 모니터링Monitor OS disk queue depth in nodes",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Monitor",
+ "severity": "높다",
+ "text": "로그 보존 요구 사항이 12년을 초과하는 경우 로그를 Azure Storage로 내보냅니다. Write-once, Read-Many 정책과 함께 변경할 수 없는 스토리지를 사용하여 사용자가 지정한 간격 동안 데이터를 지우거나 수정할 수 없도록 합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "service": "VM",
"severity": "보통",
- "text": "AzFW/NVA에서 송신 필터링을 사용하지 않는 경우 표준 ALB 할당 SNAT 포트를 모니터링합니다",
+ "text": "Azure Policy를 사용하여 OS 수준 VM(가상 머신) 구성 드리프트를 모니터링합니다. 정책을 통해 Azure Automanage Machine Configuration 감사 기능을 사용하도록 설정하면 애플리케이션 팀 워크로드가 적은 노력으로 기능 기능을 즉시 사용할 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "service": "VM",
"severity": "보통",
- "text": "AKS 클러스터에 대한 Resource Health 알림 구독Subscribe to resource health notifications for your AKS cluster",
+ "text": "Azure Update Manager를 Azure의 Windows 및 Linux VM에 대한 패치 메커니즘으로 사용합니다.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "높다",
- "text": "Pod 규격에서 요청 및 제한 구성",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
+ "service": "VM",
+ "severity": "보통",
+ "text": "Azure Arc를 사용하여 Azure 외부의 Windows 및 Linux VM에 대한 패치 메커니즘으로 Azure Update Manager를 사용합니다.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "arm-service": "microsoft.network/networkWatchers",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "90483845-c986-4cb2-a131-56a12476e49f",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Network Watcher",
"severity": "보통",
- "text": "네임스페이스에 대한 리소스 할당량 적용Enforce resource quotas for namespaces",
+ "text": "Network Watcher를 사용하여 트래픽 흐름을 사전에 모니터링합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
- "severity": "높다",
- "text": "구독에 노드 풀을 확장할 수 있는 충분한 할당량이 있는지 확인합니다.",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Monitor",
+ "severity": "보통",
+ "text": "인사이트 및 보고를 위해 Azure Monitor 로그를 사용합니다.",
"waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
+ "service": "Monitor",
"severity": "보통",
- "text": "Cluster Autoscaler 사용",
- "waf": "공연"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS 노드 풀에 대한 노드 구성 사용자 지정",
- "waf": "공연"
+ "text": "Azure Monitor 경고를 사용하여 운영 경고를 생성합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "Monitor",
"severity": "보통",
- "text": "필요한 경우 Horizontal Pod Autoscaler 사용",
- "waf": "공연"
+ "text": "Azure Automation 계정을 통해 변경 및 인벤토리 추적을 사용하는 경우 Log Analytics 작업 영역과 자동화 계정을 함께 연결하는 데 지원되는 지역을 선택했는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "노드가 클수록 임시 디스크 및 가속화된 네트워킹과 같은 더 높은 성능과 기능을 제공하지만 폭발 반경이 증가하고 크기 조정 세분성이 감소합니다",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "높다",
- "text": "너무 크거나 너무 작지 않은 적절한 노드 크기를 고려합니다",
- "waf": "공연"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Backup",
+ "severity": "낮다",
+ "text": "Azure Backup을 사용하는 경우 기본 설정은 GRS이므로 백업에 올바른 백업 유형(GRS, ZRS & LRS)을 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "낮다",
- "text": "확장성을 위해 5,000개 이상의 노드가 필요한 경우 추가 AKS 클러스터를 사용하는 것이 좋습니다",
- "waf": "공연"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "VM",
+ "severity": "보통",
+ "text": "Azure 게스트 정책을 사용하여 VM 확장을 통해 소프트웨어 구성을 자동으로 배포하고 규격 기준 VM 구성을 적용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS 자동화를 위해 EventGrid 이벤트를 구독하는 것이 좋습니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "description": "Azure Policy의 게스트 구성 기능을 사용하여 컴퓨터 설정(예: OS, 애플리케이션, 환경)을 감사하고 수정하여 리소스가 예상 구성에 맞게 조정되도록 하고, 업데이트 관리는 VM에 대한 패치 관리를 적용할 수 있습니다.",
+ "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",
+ "severity": "보통",
+ "text": "Azure Policy를 통해 VM 보안 구성 드리프트를 모니터링합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "낮다",
- "text": "AKS 클러스터에서 장기 실행 작업의 경우 이벤트 종료를 고려합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
+ "severity": "보통",
+ "text": "Azure-to-Azure Virtual Machines 재해 복구 시나리오에는 Azure Site Recovery를 사용합니다. 이렇게 하면 지역 간에 워크로드를 복제할 수 있습니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "낮다",
- "text": "필요한 경우 AKS 노드에 Azure Dedicated Host를 사용하는 것이 좋습니다",
- "waf": "공연"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "Backup",
+ "severity": "보통",
+ "text": "Azure 네이티브 백업 기능 또는 Azure 호환 타사 백업 솔루션을 사용합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "높다",
- "text": "임시 OS 디스크 사용",
- "waf": "공연"
+ "text": "Azure Front Door 및 Azure Application Gateway와 같은 애플리케이션 배달 서비스에서 WAF 로그를 저장하는 진단 설정을 추가합니다. 로그를 정기적으로 검토하여 공격 및 가양성 탐지를 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
- "severity": "높다",
- "text": "임시 디스크가 아닌 디스크의 경우 여러 Pod를 실행하는 데 고성능이 필요하고 기본 AKS 로그 회전 임계값을 사용하여 대규모 로그를 생성하므로 많은 Pod/노드를 실행할 때 노드에 높은 IOPS 및 더 큰 OS 디스크를 사용합니다",
- "waf": "공연"
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "WAF",
+ "severity": "보통",
+ "text": "Azure Front Door 및 Azure Application Gateway와 같은 애플리케이션 배달 서비스에서 Microsoft Sentinel로 WAF 로그를 보냅니다. 공격을 탐지하고 WAF 텔레메트리를 전체 Azure 환경에 통합합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
- "severity": "낮다",
- "text": "고성능 스토리지 옵션의 경우 AKS에서 Ultra Disks를 사용합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5017f154-e3ab-4369-9829-e7e316183687",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "Key Vault",
+ "severity": "높다",
+ "text": "Azure Key Vault를 사용하여 비밀과 자격 증명을 저장합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
+ "guid": "a0477a20-9945-4bda-9333-4f2491163418",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
+ "service": "Key Vault",
"severity": "보통",
- "text": "클러스터에서 상태를 유지하지 않고 외부(AzStorage, AzSQL, Cosmos 등)에 데이터를 저장합니다.",
- "waf": "공연"
+ "text": "서로 다른 애플리케이션 및 지역에 대해 서로 다른 Azure Key Vault를 사용하여 트랜잭션 규모 제한을 방지하고 비밀에 대한 액세스를 제한합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "보통",
- "text": "AzFiles 표준을 사용하는 경우 성능상의 이유로 AzFiles 프리미엄 및/또는 ANF를 고려합니다",
- "waf": "공연"
+ "text": "삭제된 개체에 대한 보존 보호를 허용하기 위해 일시 삭제 및 제거 정책을 사용하도록 설정된 Azure Key Vault를 프로비전합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "보통",
- "text": "Azure 디스크 및 AZ를 사용하는 경우 올바른 영역에 스토리지를 프로비전하기 위해 VolumeBindingMode::WaitForFirstConsumer를 사용하여 LRS 디스크의 영역 내에 노드 풀을 사용하거나 여러 영역에 걸쳐 있는 노드 풀에 ZRS 디스크를 사용하는 것이 좋습니다",
- "waf": "공연"
+ "text": "키, 비밀 및 인증서를 영구적으로 삭제할 수 있는 권한 부여를 특수 사용자 지정 Microsoft Entra ID 역할로 제한하여 최소 권한 모델을 따릅니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
- "severity": "높다",
- "text": "지역적으로 적용 가능한 경우 가용성 영역 활용(자동으로 활성화됨)",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "보통",
+ "text": "공용 인증 기관을 통해 인증서 관리 및 갱신 프로세스를 자동화하여 관리를 용이하게 합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "913156a1-2476-4e49-b541-acdce979377b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "보통",
- "text": "Microsoft에서 시작한 장애 조치(failover)에 유의하세요. 드문 경우지만 Microsoft는 영향을 받는 지역의 모든 IoT Hub를 해당 지역 쌍을 이루는 지역으로 장애 조치(failover)하기 위해 이러한 작업을 수행합니다.",
- "waf": "신뢰도"
+ "text": "키 및 인증서 교체를 위한 자동화된 프로세스를 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
- "severity": "높다",
- "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "보통",
+ "text": "자격 증명 모음에서 방화벽 및 가상 네트워크 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용하도록 설정하여 키 자격 증명 모음에 대한 액세스를 제어합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
- "severity": "높다",
- "text": "수동 장애 조치(failover)를 트리거하는 방법을 알아봅니다.",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
+ "service": "Key Vault",
+ "severity": "보통",
+ "text": "플랫폼 중앙 Azure Monitor Log Analytics 작업 영역을 사용하여 Key Vault의 각 인스턴스 내에서 키, 인증서 및 비밀 사용을 감사합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
- "severity": "높다",
- "text": "장애 조치(failover) 후 장애 복구(failback)하는 방법을 알아봅니다.",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "보통",
+ "text": "Key Vault 인스턴스화 및 권한 있는 액세스를 위임하고 Azure Policy를 사용하여 일관된 규정 준수 구성을 적용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub는 미사용 데이터의 암호화를 제공합니다. 사용자 고유의 키를 사용하는 경우 데이터는 여전히 Microsoft 관리형 키를 사용하여 암호화되지만 Microsoft 관리형 키는 고객 관리형 키를 사용하여 암호화됩니다. ",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
- "severity": "낮다",
- "text": "필요한 경우 미사용 데이터 암호화에서 고객 관리형 키 옵션 사용Use customer-managed key option in data at rest encryption when required",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "보통",
+ "text": "애플리케이션별, 환경별, 지역별 Azure Key Vault를 사용합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hubs 네임스페이스를 사용하면 클라이언트가 TLS 1.0 이상을 사용하여 데이터를 보내고 받을 수 있습니다. 더 엄격한 보안 조치를 적용하기 위해 클라이언트가 최신 버전의 TLS를 사용하여 데이터를 보내고 받도록 Event Hubs 네임스페이스를 구성할 수 있습니다. Event Hubs 네임스페이스에 최소 버전의 TLS가 필요한 경우 이전 버전으로 수행된 모든 요청이 실패합니다. ",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "보통",
- "text": "요청에 필요한 최소 버전의 TLS(전송 계층 보안) 적용 ",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "text": "사용자 고유의 키를 가져오려는 경우 고려되는 모든 서비스에서 지원되지 않을 수 있습니다. 불일치가 원하는 결과를 방해하지 않도록 관련 완화를 구현합니다. 대기 시간을 최소화하는 적절한 지역 쌍과 재해 복구 지역을 선택합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Event Hubs 네임스페이스를 만들 때 네임스페이스에 대해 RootManageSharedAccessKey라는 정책 규칙이 자동으로 만들어집니다. 이 정책에는 전체 네임스페이스에 대한 관리 권한이 있습니다. 이 규칙을 관리 루트 계정처럼 취급하고 응용 프로그램에서 사용하지 않는 것이 좋습니다. RBAC에서 AAD를 인증 공급자로 사용하는 것이 좋습니다. ",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
+ "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
+ "service": "Key Vault",
"severity": "보통",
- "text": "필요하지 않은 경우 루트 계정을 사용하지 마십시오.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "text": "Sovereign Landing Zone의 경우 Azure Key Vault 관리형 HSM을 사용하여 비밀과 자격 증명을 저장합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure 리소스에 대한 관리 ID는 Azure VM(Virtual Machines), 함수 앱, Virtual Machine Scale Sets 및 기타 서비스에서 실행되는 애플리케이션에서 Azure AD 자격 증명을 사용하여 Event Hubs 리소스에 대한 액세스 권한을 부여할 수 있습니다. Azure AD 인증과 함께 Azure 리소스에 대한 관리 ID를 사용하면 클라우드에서 실행되는 애플리케이션에 자격 증명을 저장하지 않아도 됩니다. ",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
+ "service": "Entra",
"severity": "보통",
- "text": "가능한 경우 애플리케이션은 관리 ID를 사용하여 Azure Event Hub에 인증해야 합니다. 그렇지 않은 경우 Azure Key Vault 또는 동등한 서비스에 스토리지 자격 증명(SAS, 서비스 주체 자격 증명)을 사용하는 것이 좋습니다",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "Microsoft Entra ID 보고 기능을 사용하여 액세스 제어 감사 보고서를 생성합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "권한을 만들 때 Azure Event Hub에 대한 클라이언트의 액세스를 세밀하게 제어할 수 있습니다. Azure Event Hub의 사용 권한은 개별 리소스 수준(예: 소비자 그룹, 이벤트 허브 엔터티, 이벤트 허브 네임스페이스 등)으로 범위를 지정할 수 있으며 범위가 지정되어야 합니다.",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "09945bda-4333-44f2-9911-634182ba5275",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
+ "service": "Defender",
"severity": "높다",
- "text": "최소 권한 데이터 평면 RBAC 사용",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "text": "모든 구독에 대해 Defender 클라우드 보안 태세 관리를 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub 리소스 로그에는 작업 로그, 가상 네트워크 및 Kafka 로그가 포함됩니다. 런타임 감사 로그는 Event Hubs의 모든 데이터 평면 액세스 작업(예: 이벤트 보내기 또는 받기)에 대해 집계된 진단 정보를 캡처합니다.",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
- "severity": "보통",
- "text": "보안 조사를 위해 로깅을 사용하도록 설정합니다. Azure Monitor를 사용하여 리소스 로그, 런타임 감사 로그 및 Kafka 로그와 같은 메트릭 및 로그를 캡처합니다.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
+ "service": "Defender",
+ "severity": "높다",
+ "text": "모든 구독에서 서버에 대해 Defender 클라우드 워크로드 보호 계획을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure Event Hub는 기본적으로 공용 IP 주소를 가지며 인터넷에 연결할 수 있습니다. 프라이빗 엔드포인트를 사용하면 가상 네트워크와 Azure Event Hub 간의 트래픽이 Microsoft 백본 네트워크를 통해 트래버스할 수 있습니다. 또한 퍼블릭 엔드포인트를 사용하지 않는 경우 사용하지 않도록 설정해야 합니다. ",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
- "severity": "보통",
- "text": "프라이빗 엔드포인트를 사용하여 Azure Event Hub에 액세스하고 해당하는 경우 공용 네트워크 액세스를 사용하지 않도록 설정하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
+ "service": "Defender",
+ "severity": "높다",
+ "text": "모든 구독에서 Azure 리소스에 대한 Defender 클라우드 워크로드 보호 계획을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "IP 방화벽을 사용하면 퍼블릭 엔드포인트를 CIDR(Classless Inter-Domain Routing) 표기법의 IPv4 주소 또는 IPv4 주소 범위 집합으로만 추가로 제한할 수 있습니다. ",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
+ "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
+ "service": "VM",
+ "severity": "높다",
+ "text": "IaaS 서버에서 Endpoint Protection을 사용하도록 설정합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
+ "link": "https://learn.microsoft.com/azure/security-center/",
+ "service": "VM",
"severity": "보통",
- "text": "특정 IP 주소 또는 범위에서 Azure Event Hub 네임스페이스에 대한 액세스만 허용하는 것이 좋습니다",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "text": "Azure Monitor 로그 및 클라우드용 Defender를 통해 기본 운영 체제 패치 드리프트를 모니터링합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "보통",
- "text": "FTA 탄력성 핸드북 활용",
- "waf": "신뢰도"
+ "text": "기본 리소스 구성을 중앙 집중식 Azure Monitor Log Analytics 작업 영역에 연결합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": " 영역 사용 지역의 프리미엄, 전용 또는 표준 SKU를 사용하여 포털에서 만든 새 EH 네임스페이스에 대해 자동으로 설정됩니다. EH 메타데이터와 이벤트 데이터 자체는 모두 영역 간에 복제됩니다",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "severity": "높다",
- "text": "지역적으로 적용 가능한 경우 가용성 영역 활용Leverage Availability Zones if regionally applicable",
- "waf": "신뢰도"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
+ "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "Sovereign Landing Zone의 경우 Entra ID 테넌트에서 투명 로그를 사용하도록 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
- "severity": "보통",
- "text": "예측 가능한 성능을 위해 프리미엄 또는 전용 SKU 사용",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "기본 제공 지역 재해 복구 기능을 사용하도록 설정하면 네임스페이스(Event Hubs, 소비자 그룹 및 설정)의 전체 구성이 기본 네임스페이스에서 보조 네임스페이스로 지속적으로 복제되며, 언제든지 한 번만 장애 조치(failover)를 주 네임스페이스에서 보조 네임스페이스로 이동할 수 있습니다. 활성/수동 기능은 애플리케이션 구성을 변경할 필요 없이 실패한 Azure 지역에서 더 쉽게 복구하고 중단할 수 있도록 설계되었습니다",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
- "severity": "높다",
- "text": "Active Passive 구성을 사용하여 지역 재해 복구 계획Plan for Geo Disaster Recovery using Active Passive configuration",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "다운된 지역에서 이벤트 데이터의 중단 또는 손실을 허용할 수 없는 DR 구성에 사용해야 합니다. 이러한 경우 복제 지침을 따르고 기본 제공 지역 재해 복구 기능(활성/수동)을 사용하지 마세요. 액티브/액티브를 사용하여 서로 다른 지역 및 네임스페이스에서 여러 Event Hubs를 유지 관리하면 허브 간에 이벤트가 복제됩니다",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
- "severity": "보통",
- "text": "Business Critical Applications의 경우 Active Active 구성을 사용합니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "service": "Entra",
"severity": "보통",
- "text": "복원력 있는 Event Hubs 설계",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "높다",
- "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 기능 호스팅 계획을 선택하십시오.",
- "waf": "신뢰도"
+ "text": "Sovereign Landing Zone의 경우 Entra ID 테넌트에서 고객 Lockbox를 사용하도록 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
"severity": "높다",
- "text": "지역적으로 적용 가능한 가용성 영역 활용(소비 계층에는 사용할 수 없음)",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
- "severity": "보통",
- "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
- "waf": "신뢰도"
+ "text": "스토리지 계정에 대한 보안 전송을 사용하도록 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
+ "service": "Storage",
"severity": "높다",
- "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
- "waf": "신뢰도"
+ "text": "스토리지 계정에 대해 컨테이너 일시 삭제를 사용하도록 설정하여 삭제된 컨테이너와 해당 콘텐츠를 복구합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "높다",
- "text": "App Service 계획에서 실행되는 모든 함수 앱에 대해 'Always On'이 사용하도록 설정되어 있는지 확인합니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
- "severity": "보통",
- "text": "함수 앱을 자체 스토리지 계정에 페어링합니다. 긴밀하게 결합되지 않는 한 함수 앱에 대한 스토리지 계정을 다시 사용하지 마세요",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
- "severity": "보통",
- "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 함수 앱 코드를 보호합니다.",
+ "text": "Key Vault 비밀을 사용하여 자격 증명(가상 머신 사용자 암호), 인증서 또는 키와 같은 중요한 정보를 하드 코딩하지 않도록 합니다.",
"waf": "작업"
},
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "높다",
- "text": "읽기 작업에 대해 99.9%의 가용성을 갖도록 복제본 2개 사용",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "보통",
- "text": "읽기/쓰기 작업에 대해 99.9%의 가용성을 갖도록 복제본 3개 사용",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
- "severity": "높다",
- "text": "읽기 및/또는 쓰기 복제본을 활성화하여 가용 영역 활용Leverage Availability Zones by enabling read and/or write replicas",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
- "severity": "보통",
- "text": "지역 중복의 경우 Manually create services in 2 or more regions for Search는 지리적 지역 간에 검색 인덱스를 복제하는 자동화된 방법을 제공하지 않습니다",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
- "severity": "보통",
- "text": "여러 서비스에서 데이터를 동기화하려면 인덱서를 사용하여 여러 서비스의 콘텐츠를 업데이트하거나 REST API를 사용하여 여러 서비스에서 콘텐츠 업데이트를 푸시합니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
- "severity": "보통",
- "text": "Azure Traffic Manager를 사용하여 요청 조정",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
- "severity": "높다",
- "text": "Azure Cognitive Search 인덱스를 백업 및 복원합니다. 이 샘플 코드를 사용하여 인덱스 정의 및 스냅샷을 일련의 Json 파일에 백업합니다",
- "waf": "신뢰도"
- },
{
"checklist": "Identity Review Checklist",
"guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
@@ -2007,6990 +1768,7229 @@
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "낮다",
- "text": "모범 사례는 기준 고가용성 영역 중복 웹 애플리케이션 아키텍처를 참조하세요.",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
+ "severity": "보통",
+ "text": "Azure Bot Service의 안정성 지원 권장 사항을 따릅니다",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
"severity": "보통",
- "text": "프리미엄 및 표준 계층을 사용합니다. 이러한 계층은 스테이징 슬롯 및 자동 백업을 지원합니다.",
+ "text": "로컬 데이터 레지던시 및 지역 규정 준수를 통해 봇 배포Deploying bots with local data residency and regional compliance",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
- "severity": "높다",
- "text": "지역적으로 적용 가능한 경우 가용성 영역 활용(프리미엄 v2 또는 v3 계층 필요)",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
+ "severity": "보통",
+ "text": "Azure Bot Service는 글로벌 및 지역 서비스 모두에 대해 활성-활성 모드로 실행됩니다. 중단이 발생하면 오류를 감지하거나 서비스를 관리할 필요가 없습니다. Azure Bot Service는 다중 지역 지리적 아키텍처에서 자동 장애 조치(failover) 및 자동 복구를 자동으로 수행합니다. EU 봇 지역 서비스의 경우 Azure Bot Service는 중복성을 보장하기 위해 활성/활성 복제가 있는 유럽 내 두 개의 전체 지역을 제공합니다. 글로벌 봇 서비스의 경우 사용 가능한 모든 지역/지역을 글로벌 공간으로 제공할 수 있습니다.",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "스토리지와 관련된 Microsoft 클라우드 보안 벤치마크의 지침 적용",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "상태 확인 구현",
- "waf": "신뢰도"
+ "text": "'스토리지에 대한 Azure 보안 기준' 고려",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
- "severity": "높다",
- "text": "Azure App Service에 대한 백업 및 복원 모범 사례를 참조하세요.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Azure Storage는 기본적으로 공용 IP 주소를 가지며 인터넷에 연결할 수 있습니다. 프라이빗 엔드포인트를 사용하면 액세스가 필요한 Azure Compute 리소스에만 Azure Storage를 안전하게 노출할 수 있으므로 공용 인터넷에 노출되지 않습니다",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "Azure App Service 안정성 모범 사례 구현",
- "waf": "신뢰도"
+ "text": "Azure Storage에 프라이빗 엔드포인트를 사용하는 것이 좋습니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
- "severity": "낮다",
- "text": "App Service 앱을 다른 지역으로 이동하는 방법을 숙지합니다. 재해가 발생하는 동안",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "새로 만든 저장소 계정은 ARM 배포 모델을 사용하여 만들어지므로 RBAC, 감사 등을 모두 사용할 수 있습니다. 구독에 클래식 배포 모델이 있는 이전 저장소 계정이 없는지 확인합니다.",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
+ "severity": "보통",
+ "text": "이전 스토리지 계정이 '클래식 배포 모델'을 사용하지 않는지 확인",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Microsoft Defender를 활용하여 의심스러운 활동 및 잘못된 구성에 대해 알아봅니다.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "Azure App Service의 안정성 지원 숙지",
- "waf": "신뢰도"
+ "text": "모든 스토리지 계정에 대해 Microsoft Defender 사용",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "일시 삭제 메커니즘을 사용하면 실수로 삭제된 Blob을 복구할 수 있습니다.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "App Service 계획에서 실행되는 Function Apps에 대해 \"Always On\"이 사용하도록 설정되어 있는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "Blob에 대해 '일시 삭제' 사용Enable 'soft delete' for blobs",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "예를 들어 애플리케이션이 기밀성, 개인 정보 보호 또는 규정 준수를 위해 삭제된 정보가 즉시 삭제되도록 해야 하는 경우와 같이 특정 Blob 컨테이너에 대해 '일시 삭제'를 선택적으로 사용하지 않도록 설정하는 것이 좋습니다. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "상태 검사를 사용하여 App Service 인스턴스 모니터링Monitor App Service instances using Health checks",
- "waf": "신뢰도"
+ "text": "Blob에 대해 '일시 삭제' 사용 안 함",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "컨테이너에 대한 일시 삭제를 사용하면 컨테이너가 삭제된 후 컨테이너를 복구할 수 있습니다(예: 실수로 인한 삭제 작업에서 복구).",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
+ "severity": "높다",
+ "text": "컨테이너에 대해 '일시 삭제' 사용Enable 'soft delete' for containers",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "예를 들어 애플리케이션이 기밀성, 개인 정보 보호 또는 규정 준수를 위해 삭제된 정보가 즉시 삭제되도록 해야 하는 경우와 같이 특정 Blob 컨테이너에 대해 '일시 삭제'를 선택적으로 사용하지 않도록 설정하는 것이 좋습니다. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "Application Insights 가용성 테스트를 사용하여 웹앱 또는 웹 사이트의 가용성 및 응답성 모니터링",
- "waf": "신뢰도"
+ "text": "컨테이너에 대해 '일시 삭제' 사용 안 함",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
- "severity": "낮다",
- "text": "Application Insights 표준 테스트를 사용하여 웹앱 또는 웹 사이트의 가용성 및 응답성 모니터링",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "사용자가 삭제하기 전에 먼저 삭제 잠금을 제거하도록 강제하여 저장소 계정이 실수로 삭제되는 것을 방지합니다.",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
+ "severity": "높다",
+ "text": "스토리지 계정에 대한 리소스 잠금 사용Enable resource locks on storage accounts",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Key Vault를 사용하여 애플리케이션에 필요한 모든 비밀을 저장합니다. Key Vault는 비밀을 저장하기 위한 안전하고 감사된 환경을 제공하며 Key Vault SDK 또는 App Service Key Vault 참조를 통해 App Service와 잘 통합됩니다.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Blob에 대한 '법적 보존' 또는 '시간 기반 보존' 정책을 고려하면 Blob, 컨테이너 또는 스토리지 계정을 삭제할 수 없습니다. '불가능'은 실제로 '불가능'을 의미합니다. 스토리지 계정에 변경할 수 없는 Blob이 포함된 경우 해당 스토리지 계정을 '제거'하는 유일한 방법은 Azure 구독을 취소하는 것입니다.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "Key Vault를 사용하여 비밀 저장",
+ "text": "변경할 수 없는 Blob 고려",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "관리 ID를 사용하여 Key Vault SDK를 사용하거나 App Service Key Vault 참조를 통해 Key Vault에 연결합니다.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "모든 데이터 전송이 암호화되고, 무결성이 보호되고, 서버가 인증되도록 스토리지 계정에 대한 보호되지 않는 HTTP/80 액세스를 사용하지 않도록 설정하는 것이 좋습니다. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "관리 ID를 사용하여 Key Vault에 연결",
+ "text": "HTTPS 필요, 즉 스토리지 계정에서 포트 80 사용 안 함Require HTTPS, i.e. disable port 80 on the storage account",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service TLS 인증서를 Key Vault에 저장합니다.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "스토리지 계정에서 사용자 지정 도메인(호스트 이름)을 구성할 때 TLS/HTTPS가 필요한지 여부를 확인합니다. 이 경우 저장소 계정 앞에 Azure CDN을 배치해야 할 수 있습니다.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "Key Vault를 사용하여 TLS 인증서를 저장합니다.",
+ "text": "HTTPS를 적용할 때(HTTP 사용 안 함) 스토리지 계정에 사용자 지정 도메인(CNAME)을 사용하지 않는지 확인합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "중요한 정보를 처리하는 시스템은 격리해야 합니다. 이렇게 하려면 별도의 App Service 계획 또는 App Service Environment를 사용하고 다른 구독 또는 관리 그룹을 사용하는 것이 좋습니다.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "클라이언트가 SAS 토큰을 사용하여 Blob 데이터에 액세스할 때 HTTPS를 요구하면 자격 증명 손실 위험을 최소화하는 데 도움이 됩니다.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "민감한 정보를 처리하는 시스템 격리",
+ "text": "SAS(공유 액세스 서명) 토큰을 HTTPS 연결로만 제한",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service의 로컬 디스크는 암호화되지 않으며 중요한 데이터를 저장해서는 안 됩니다. (예: D:\\\\Local and %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
- "severity": "보통",
- "text": "로컬 디스크에 중요한 데이터를 저장하지 마십시오.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "AAD 토큰은 가능한 경우 공유 액세스 서명보다 우선해야 합니다",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
+ "severity": "높다",
+ "text": "Blob 액세스에 Azure AD(Azure Active Directory) 토큰 사용Use Azure Active Directory (Azure AD) tokens for blob access",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "인증된 웹 애플리케이션의 경우 Azure AD 또는 Azure AD B2C와 같이 잘 설정된 ID 공급자를 사용합니다. 선택한 애플리케이션 프레임워크를 활용하여 이 공급자와 통합하거나 App Service 인증/권한 부여 기능을 사용합니다.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "사용자, 그룹 또는 응용 프로그램에 역할을 할당할 때 해당 보안 주체가 작업을 수행하는 데 필요한 권한만 부여합니다. 리소스에 대한 액세스를 제한하면 의도하지 않은 데이터 오용과 악의적인 데이터 오용을 모두 방지할 수 있습니다.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "인증에 설정된 ID 공급자 사용",
+ "text": "IaM 권한의 최소 권한",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "잘 관리되고 안전한 DevOps 배포 파이프라인과 같이 제어되고 신뢰할 수 있는 환경에서 App Service에 코드를 배포합니다. 이렇게 하면 버전이 제어되지 않고 악성 호스트에서 배포되는 것으로 확인되지 않은 코드를 방지할 수 있습니다.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "사용자 위임 SAS는 Azure AD(Azure Active Directory) 자격 증명과 SAS에 지정된 권한으로 보호됩니다. 사용자 위임 SAS는 범위와 기능 측면에서 서비스 SAS와 유사하지만 서비스 SAS에 비해 보안상의 이점을 제공합니다. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"severity": "높다",
- "text": "신뢰할 수 있는 환경에서 배포",
+ "text": "SAS를 사용하는 경우 스토리지 계정 키 기반 SAS보다 '사용자 위임 SAS'를 선호합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "FTP/FTPS 및 WebDeploy/SCM 모두에 대한 기본 인증을 사용 안함으로 설정합니다. 이렇게 하면 이러한 서비스에 대한 액세스가 비활성화되고 배포에 Azure AD 보안 엔드포인트가 사용됩니다. SCM 사이트는 Azure AD 자격 증명을 사용하여 열 수도 있습니다.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "스토리지 계정 키('공유 키')에는 감사 기능이 거의 없습니다. 누가/언제 키 사본을 가져왔는지 모니터링할 수 있지만, 키가 여러 사람의 손에 들어가면 특정 사용자의 사용을 귀속시키는 것은 불가능합니다. AAD 인증에만 의존하면 스토리지 액세스를 사용자에게 더 쉽게 연결할 수 있습니다. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "기본 인증 사용 안 함",
+ "text": "AAD 액세스(및 사용자 위임 SAS)만 지원되도록 스토리지 계정 키를 사용하지 않도록 설정하는 것이 좋습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "가능한 경우 관리 ID를 사용하여 Azure AD 보안 리소스에 연결합니다. 이렇게 할 수 없는 경우 Key Vault에 비밀을 저장하고 대신 관리 ID를 사용하여 Key Vault에 연결합니다.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "활동 로그 데이터를 사용하여 스토리지 계정의 보안을 보거나 변경하는 '시기', '누가', '무엇을' 및 '방법'(예: 스토리지 계정 키, 액세스 정책 등)을 식별합니다.",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "관리 ID를 사용하여 리소스에 연결",
+ "text": "Azure Monitor를 사용하여 스토리지 계정에 대한 컨트롤 플레인 작업을 감사하는 것이 좋습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Container Registry에 저장된 이미지를 사용하는 경우 관리 ID를 사용하여 끌어옵니다.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
- "severity": "높다",
- "text": "관리 ID를 사용하여 컨테이너 끌어오기",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service의 진단 설정을 구성하면 모든 원격 분석을 로깅 및 모니터링의 중앙 대상으로 Log Analytics에 보낼 수 있습니다. 이를 통해 HTTP 로그, 애플리케이션 로그, 플랫폼 로그 등과 같은 App Service의 런타임 활동을 모니터링할 수 있습니다.",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "키 만료 정책을 사용하면 계정 액세스 키 교체에 대한 미리 알림을 설정할 수 있습니다. 지정된 간격이 경과하고 키가 아직 회전되지 않은 경우 알림이 표시됩니다.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "Log Analytics에 App Service 런타임 로그 보내기Send App Service runtime logs to Log Analytics",
+ "text": "스토리지 계정 키를 사용하는 경우 '키 만료 정책'을 사용하도록 설정하는 것이 좋습니다",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "활동 로그를 Log Analytics에 로깅 및 모니터링의 중앙 대상으로 보내도록 진단 설정을 지정합니다. 이렇게 하면 App Service 리소스 자체에서 컨트롤 플레인 작업을 모니터링할 수 있습니다.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS 만료 정책은 SAS가 유효한 권장 간격을 지정합니다. SAS 만료 정책은 서비스 SAS 또는 계정 SAS에 적용됩니다. 사용자가 권장 간격보다 큰 유효 간격을 사용하여 서비스 SAS 또는 계정 SAS를 생성하면 경고가 표시됩니다.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "Log Analytics에 App Service 활동 로그 보내기Send App Service activity logs to Log Analytics",
+ "text": "SAS 만료 정책 구성 고려",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "지역 VNet 통합, 네트워크 보안 그룹 및 UDR의 조합을 사용하여 아웃바운드 네트워크 액세스를 제어합니다. 트래픽은 Azure Firewall과 같은 NVA로 라우팅되어야 합니다. 방화벽의 로그를 모니터링해야 합니다.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "저장된 액세스 정책은 스토리지 계정 키를 다시 생성할 필요 없이 서비스 SAS에 대한 권한을 취소하는 옵션을 제공합니다. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "아웃바운드 네트워크 액세스를 제어해야 함",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "VNet 통합을 사용하고 VNet NAT Gateway 또는 NVA와 같은 Azure Firewall을 사용하여 안정적인 아웃바운드 IP를 제공할 수 있습니다. 이렇게 하면 필요한 경우 수신 당사자가 IP를 기반으로 허용 목록을 만들 수 있습니다. Azure 서비스에 대한 통신의 경우 IP 주소에 의존할 필요가 없는 경우가 많으며 서비스 엔드포인트와 같은 메커니즘을 대신 사용해야 합니다. (또한 수신 끝에서 프라이빗 엔드포인트를 사용하면 SNAT가 발생하지 않고 안정적인 아웃바운드 IP 범위를 제공합니다.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
- "severity": "낮다",
- "text": "인터넷 주소에 대한 아웃바운드 통신을 위한 안정적인 IP 보장",
+ "text": "SAS를 저장된 액세스 정책에 연결하는 것이 좋습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service 액세스 제한, 서비스 엔드포인트 또는 프라이빗 엔드포인트의 조합을 사용하여 인바운드 네트워크 액세스를 제어합니다. 웹앱 자체 및 SCM 사이트에 대해 서로 다른 액세스 제한이 필요하고 구성될 수 있습니다.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
- "severity": "높다",
- "text": "인바운드 네트워크 액세스를 제어해야 합니다.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
+ "severity": "보통",
+ "text": "체크 인된 연결 문자열 및 저장소 계정 키를 검색하도록 응용 프로그램의 소스 코드 리포지토리를 구성하는 것이 좋습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Application Gateway 또는 Azure Front Door와 같은 Web Application Firewall을 사용하여 악의적인 인바운드 트래픽으로부터 보호합니다. WAF의 로그를 모니터링해야 합니다.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "이상적으로 애플리케이션은 관리 ID를 사용하여 Azure Storage에 인증해야 합니다. 이렇게 할 수 없는 경우 Azure KeyVault 또는 동등한 서비스에 스토리지 자격 증명(연결 문자열, 스토리지 계정 키, SAS, 서비스 주체 자격 증명)을 사용하는 것이 좋습니다.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "App Service 앞에서 WAF 사용Use a WAF in front of App Service",
+ "text": "Azure KeyVault에 연결 문자열을 저장하는 것이 좋습니다(관리 ID를 사용할 수 없는 시나리오에서).",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "WAF에 대한 액세스만 잠궈 WAF를 우회할 수 없는지 확인합니다. 액세스 제한, 서비스 엔드포인트 및 프라이빗 엔드포인트의 조합을 사용합니다.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "임시 SAS 서비스 SAS 또는 계정 SAS에서 단기 만료 시간을 사용합니다. 이러한 방식으로 SAS가 손상되더라도 짧은 시간 동안만 유효합니다. 이 방법은 저장된 액세스 정책을 참조할 수 없는 경우에 특히 중요합니다. 또한 단기 만료 시간은 업로드에 사용할 수 있는 시간을 제한하여 Blob에 쓸 수 있는 데이터의 양을 제한합니다.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "WAF가 우회되지 않도록 방지",
+ "text": "임시 SAS의 유효 기간을 단축하기 위해 노력",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service 구성에서 최소 TLS 정책을 1.2로 설정합니다.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS를 만들 때는 가능한 한 구체적이고 제한적이어야 합니다. 훨씬 더 광범위한 액세스를 제공하는 SAS보다 단일 리소스 및 작업에 대해 SAS를 선호합니다.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "최소 TLS 정책을 1.2로 설정합니다.",
+ "text": "SAS에 좁은 범위 적용",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "HTTPS만 사용하도록 App Service를 구성합니다. 이로 인해 App Service가 HTTP에서 HTTPS로 리디렉션됩니다. 코드 또는 WAF에서 HSTS(HTTP Strict Transport Security)를 사용하여 HTTPS를 통해서만 사이트에 액세스해야 함을 브라우저에 알리는 것이 좋습니다.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
- "severity": "높다",
- "text": "HTTPS만 사용",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS에는 SAS를 사용하여 리소스를 요청할 수 있는 권한이 있는 클라이언트 IP 주소 또는 주소 범위에 대한 매개 변수가 포함될 수 있습니다. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
+ "severity": "보통",
+ "text": "가능한 경우 SAS의 범위를 특정 클라이언트 IP 주소로 지정하는 것이 좋습니다",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "CORS 구성에서 와일드카드를 사용하면 모든 원본이 서비스에 액세스할 수 있으므로 CORS의 목적에 어긋나므로 사용하지 마세요. 특히 서비스에 액세스할 수 있을 것으로 예상되는 원본만 허용합니다.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
- "severity": "높다",
- "text": "와일드카드는 CORS에 사용할 수 없습니다.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS는 클라이언트가 업로드하는 데이터의 양을 제한할 수 없습니다. 시간 경과에 따른 스토리지 양의 가격 책정 모델을 고려할 때 클라이언트가 악의적으로 큰 콘텐츠를 업로드했는지 여부를 확인하는 것이 합리적일 수 있습니다.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
+ "severity": "낮다",
+ "text": "클라이언트가 SAS를 사용하여 파일을 업로드한 후 업로드된 데이터를 확인하는 것이 좋습니다. ",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "원격 디버깅은 서비스에서 추가 포트를 열어 공격 노출 영역을 증가시키므로 프로덕션에서 켜면 안 됩니다. 서비스는 48시간 후에 자동으로 원격 디버깅을 설정합니다.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "'로컬 사용자 계정'을 사용하여 SFTP를 통해 Blob Storage에 액세스하는 경우 '일반적인' RBAC 컨트롤이 적용되지 않습니다. NFS 또는 REST를 통한 Blob 액세스는 SFTP 액세스보다 더 제한적일 수 있습니다. 안타깝게도 2023년 초부터 로컬 사용자는 현재 SFTP 엔드포인트에 대해 지원되는 유일한 ID 관리 형태입니다",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"severity": "높다",
- "text": "원격 디버깅 끄기",
+ "text": "SFTP: SFTP 액세스에 대한 '로컬 사용자'의 수를 제한하고 시간이 지남에 따라 액세스가 필요한지 여부를 감사합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "App Service용 Defender를 사용하도록 설정합니다. 이는 다른 위협 중에서도 알려진 악성 IP 주소에 대한 통신을 탐지합니다. 작업의 일부로 App Service용 Defender의 권장 사항을 검토합니다.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "클라우드용 Defender 사용 - App Service용 Defender",
+ "text": "SFTP: SFTP 엔드포인트는 POSIX와 유사한 ACL을 지원하지 않습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure는 네트워크에서 DDoS 기본 보호를 제공하며, 정상적인 트래픽 패턴을 학습하고 비정상적인 동작을 감지할 수 있는 지능형 DDoS 표준 기능으로 개선할 수 있습니다. DDoS 표준은 Virtual Network에 적용되므로 Application Gateway 또는 NVA와 같은 앱 앞의 네트워크 리소스에 대해 구성해야 합니다.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
- "severity": "보통",
- "text": "WAF VNet에서 DDOS 보호 표준 사용Enable DDOS Protection Standard on the WAF VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "스토리지는 CORS(Cross-Origin Resource Sharing), 즉 다른 도메인의 웹앱이 동일 출처 정책을 완화할 수 있도록 하는 HTTP 기능을 지원합니다. CORS를 사용하도록 설정할 때 CorsRules를 최소 권한으로 유지합니다.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
+ "severity": "높다",
+ "text": "지나치게 광범위한 CORS 정책 방지",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure Container Registry에 저장된 이미지를 사용하는 경우 프라이빗 엔드포인트 및 앱 설정 'WEBSITE_PULL_IMAGE_OVER_VNET'를 사용하여 Azure Container Registry에서 가상 네트워크를 통해 끌어옵니다.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
- "severity": "보통",
- "text": "Virtual Network를 통해 컨테이너 끌어오기",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "미사용 데이터는 항상 서버 쪽에서 암호화되며 클라이언트 쪽에서도 암호화될 수 있습니다. 서버 쪽 암호화는 플랫폼 관리형 키(기본값) 또는 고객 관리형 키를 사용하여 발생할 수 있습니다. 클라이언트 쪽 암호화는 클라이언트가 Azure Storage에 Blob별로 암호화/암호 해독 키를 제공하거나 클라이언트 쪽에서 암호화를 완전히 처리하여 발생할 수 있습니다. 따라서 기밀성 보장을 위해 Azure Storage에 전혀 의존하지 않습니다.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
+ "severity": "높다",
+ "text": "미사용 데이터를 암호화하는 방법을 결정합니다. 데이터에 대한 스레드 모델을 이해합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "참여의 침투 테스트 규칙에 따라 웹 응용 프로그램에 대한 침투 테스트를 수행합니다.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "침투 테스트 수행",
+ "text": "사용해야 하는 플랫폼 암호화를 결정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "DevSecOps 사례에 따라 취약성을 검증하고 검사한 신뢰할 수 있는 코드를 배포합니다.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"severity": "보통",
- "text": "유효성이 검사된 코드 배포",
+ "text": "사용해야 하는 클라이언트 쪽 암호화를 결정합니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "지원되는 플랫폼, 프로그래밍 언어, 프로토콜 및 프레임워크의 최신 버전을 사용합니다.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Resource Graph Explorer(resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true)를 활용하여 익명 Blob 액세스를 허용하는 스토리지 계정을 찾습니다.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
"severity": "높다",
- "text": "최신 플랫폼, 언어, 프로토콜 및 프레임워크 사용",
+ "text": "공용 Blob 액세스가 필요한지 또는 특정 스토리지 계정에 대해 사용하지 않도록 설정할 수 있는지 여부를 고려합니다. ",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "보통",
- "text": "Azure Spring Apps는 모든 앱에 대해 두 개의 배포를 허용하며, 그 중 하나만 프로덕션 트래픽을 수신합니다. 블루-그린 배포 전략을 통해 가동 중지 시간 제로를 달성할 수 있습니다. 파란색 녹색 배포는 표준 및 엔터프라이즈 계층에서만 사용할 수 있습니다. ADO/GitHub 작업과 함께 CI/CD를 사용하여 배포를 자동화할 수 있습니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
- "severity": "보통",
- "text": "Azure Spring Apps 인스턴스는 애플리케이션에 대해 여러 지역에서 만들 수 있으며 Traffic Manager/Front Door에서 트래픽을 라우팅할 수 있습니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
- "severity": "보통",
- "text": "지원되는 지역에서 Azure Spring Apps는 영역 중복으로 배포할 수 있으며, 이는 인스턴스가 가용성 영역에 자동으로 분산됨을 의미합니다. 이 기능은 Standard 및 Enterprise 계층에서만 사용할 수 있습니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
- "severity": "보통",
- "text": "앱에 1개 이상의 앱 인스턴스 사용",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
- "severity": "보통",
- "text": "로그, 메트릭 및 추적을 사용하여 Azure Spring Apps를 모니터링합니다. ASA를 Application Insights와 통합하고, 오류를 추적하고, 통합 문서를 만듭니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "보통",
- "text": "Spring Cloud Gateway에서 자동 크기 조정 설정",
+ "text": "유연한 서버 활용",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
- "severity": "낮다",
- "text": "표준 소비 및 전용 플랜이 있는 앱에 대해 자동 크기 조정을 사용하도록 설정합니다.",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
+ "severity": "높다",
+ "text": "지역적으로 적용 가능한 경우 가용 영역 활용Leverage Availability Zones where regionally applicable",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"severity": "보통",
- "text": "중요 업무용 앱에 대한 Spring Boot의 상업적 지원을 위해 Enterprise 플랜을 사용합니다. 다른 계층에서는 OSS 지원을 받을 수 있습니다.",
+ "text": "지역 간 DR 시나리오에 입력 데이터 복제 활용",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
- "severity": "높다",
- "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 Logic App 호스팅 계획 선택Select the right Logic App hosting plan based on your business & SLO requirements",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
+ "text": "Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview 의 데이터 수집 규칙",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
- "severity": "높다",
- "text": "영역 중복 및 가용성 영역을 사용하여 지역 오류로부터 논리 앱 보호Protect logic apps from region failures with zone redundancy and availability zones",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "text": "기본 데이터 원본을 찾을 수 없는 백업 인스턴스 확인",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
- "severity": "높다",
- "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "text": "연결되지 않은 서비스(디스크, NIC, IP 주소 등) 삭제 또는 보관",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
- "severity": "높다",
- "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
+ "text": "중요 업무용 응용 프로그램에 대한 Site Recovery 저장소와 백업 간의 적절한 균형을 고려합니다.",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
- "severity": "보통",
- "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 논리 앱 코드를 보호합니다.",
- "waf": "작업"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "text": "40개의 서로 다른 로그 분석 작업 영역 간의 지출 및 절감 기회 확인 - 비프로덕션 작업 영역에 대해 서로 다른 보존 및 데이터 수집 사용-인식 및 계층 크기 조정을 위한 일일 한도 만들기 - 일일 한도를 설정하는 경우 한도에 도달할 때 경고를 만드는 것 외에도 특정 비율(예: 90%)에 도달했을 때 알림을 받을 경고 규칙도 만들어야 합니다. - 가능한 경우 작업 영역 변환 고려 - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door에서 고객 관리형 TLS 인증서를 사용하는 경우 '최신' 인증서 버전을 사용합니다. 수동 인증서 갱신으로 인한 중단 위험 감소",
- "waf": "작업"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
+ "text": "제거 로그 정책 및 자동화 적용(필요한 경우 로그를 콜드 스토리지로 이동할 수 있음)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Application Gateway v2 SKU를 사용하고 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "text": "디스크가 실제로 필요한지 확인하고, 그렇지 않은 경우 삭제하십시오. 필요한 경우 더 낮은 스토리지 계층을 찾거나 백업을 사용합니다.",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
- "severity": "보통",
- "text": "Azure Load Balancer에 표준 SKU를 사용하고 있는지 확인합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "text": "사용자 지정 규칙을 사용하여 사용하지 않는 스토리지를 하위 계층으로 이동하는 것이 좋습니다 - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
- "severity": "보통",
- "text": "Load Balancer 프런트 엔드 IP 주소가 영역 중복인지 확인합니다(영역 프런트 엔드가 필요하지 않은 경우).",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "text": "Advisor가 VM 올바른 크기 조정에 대해 구성되어 있는지 확인합니다. ",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Application Gateway v2는 IP 접두사가 /24보다 크거나 같은 서브넷에 배포해야 합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "Cost analysys에서 Meter Category Licenses를 검색하여 확인합니다.",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "text": "모든 Windows VM에서 스크립트 실행 https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- Windows VM을 자주 만드는 경우 정책 구현을 고려합니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "description": "일반적으로 역방향 프록시 및 특히 WAF의 관리는 네트워킹보다 애플리케이션에 더 가깝기 때문에 앱과 동일한 구독에 속합니다. 연결 구독에서 Application Gateway 및 WAF를 중앙 집중화하는 것은 단일 팀에서 관리하는 경우 괜찮을 수 있습니다.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
- "severity": "보통",
- "text": "랜딩 영역 가상 네트워크 내에서 그리고 보안 중인 앱을 사용하여 인바운드 HTTP(S) 연결을 프록시하는 데 사용되는 Azure Application Gateway v2 또는 파트너 NVA를 배포합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
+ "text": " 이미 라이선스가 있는 경우 AHUB에 넣을 수도 https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
- "severity": "보통",
- "text": "애플리케이션 랜딩 존의 모든 공용 IP 주소에 대해 DDoS 네트워크 또는 IP 보호 계획을 사용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "text": "유연성 옵션을 사용하여 예약된 VM 제품군 통합(4-5개 이하의 제품군)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
- "severity": "보통",
- "text": "최소 인스턴스 수를 2개로 자동 크기 조정을 구성합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "text": "Azure Reserved Instances 활용: 이 기능을 사용하면 1년 또는 3년 동안 VM을 예약할 수 있으므로 PAYG 가격에 비해 상당한 비용 절감 효과를 얻을 수 있습니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
- "severity": "보통",
- "text": "가용성 영역에 Application Gateway 배포",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "text": "더 큰 디스크만 예약할 수 있습니다 => 1TiB -",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
- "severity": "보통",
- "text": "WAF 정책과 함께 Azure Front Door를 사용하여 여러 Azure 지역에 걸쳐 있는 글로벌 HTTP/S 앱을 제공하고 보호할 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "text": "적절한 크기 최적화 후",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
- "severity": "보통",
- "text": "Front Door 및 Application Gateway를 사용하여 HTTP/S 앱을 보호하는 경우 Front Door에서 WAF 정책을 사용합니다. Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "text": "적용 가능한 경우 확인 및 정책/변경 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 시행",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "높다",
- "text": "Traffic Manager를 사용하여 HTTP/S 이외의 프로토콜에 걸쳐 있는 글로벌 앱을 제공합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "text": "VM + 라이선스 부분 할인(ahub + 3YRI)은 약 70% 할인입니다.",
+ "waf": "비용"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "낮다",
- "text": "사용자가 내부 애플리케이션에만 액세스해야 하는 경우 Microsoft Entra ID 애플리케이션 프록시가 AVD(Azure Virtual Desktop)의 대안으로 고려되었나요?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
+ "text": "플랫 사이징보다는 VMSS를 사용하여 수요에 맞추는 것이 좋습니다",
+ "waf": "비용"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "보통",
- "text": "네트워크에서 들어오는 연결에 대해 열려 있는 방화벽 포트 수를 줄이려면 Microsoft Entra ID 애플리케이션 프록시를 사용하여 원격 사용자에게 내부 애플리케이션에 대한 안전하고 인증된 액세스를 제공하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "text": "AKS 자동 크기 조정기를 사용하여 클러스터 사용량과 일치시킵니다(Pod 요구 사항이 스케일러와 일치하는지 확인).",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "높다",
- "text": "'방지' 모드에서 Front Door에 대한 WAF 정책을 배포합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "text": "해당하는 경우 복구 지점을 자격 증명 모음 보관으로 이동(유효성 검사)Move recovery points to vault-archive where applicable (Validate)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Traffic Manager와 Azure Front Door를 결합하지 마세요.",
- "waf": "안전"
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "text": "가능한 경우 대체와 함께 스폿 VM을 사용하는 것이 좋습니다. 클러스터의 자동 종료를 고려합니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door 및 원본에서 동일한 도메인 이름을 사용합니다. 호스트 이름이 일치하지 않으면 미묘한 버그가 발생할 수 있습니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "text": "함수 - 연결 재사용",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
- "severity": "낮다",
- "text": "Azure Front Door 원본 그룹에 원본이 하나만 있는 경우 상태 프로브를 사용하지 않도록 설정합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "text": "함수 - 로컬에 데이터 캐시",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "비용"
},
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door에 대한 양호한 상태 프로브 엔드포인트를 선택합니다. 애플리케이션의 모든 종속성을 확인하는 상태 엔드포인트를 빌드하는 것이 좋습니다.",
- "waf": "신뢰도"
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
+ "text": "기능 - 콜드 스타트 - '패키지에서 실행' 기능을 사용합니다. 이렇게 하면 코드가 단일 zip 파일로 다운로드됩니다. 예를 들어, 이것은 많은 노드 모듈이 있는 Javascript 함수를 크게 개선할 수 있습니다. 언어별 도구를 사용하여 패키지 크기를 줄입니다(예: 트리 쉐이킹 Javascript 애플리케이션).",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
- "severity": "낮다",
- "text": "Azure Front Door와 함께 HEAD 상태 프로브를 사용하여 Front Door가 애플리케이션으로 보내는 트래픽을 줄입니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
+ "text": "기능 - 기능을 따뜻하게 유지",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "높다",
- "text": "SNAT 확장성 향상을 위해 Load Balancer 아웃바운드 규칙 대신 Azure NAT Gateway 사용",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "text": "다른 함수와 함께 자동 크기 조정을 사용하는 경우 모든 리소스에 대한 모든 자동 크기 조정을 구동하는 것이 있을 수 있으므로 별도의 소비 계획으로 이동하는 것이 좋습니다(CPU에 대한 더 높은 계획 고려).",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door에서 관리형 TLS 인증서를 사용합니다. 운영 비용을 줄이고 인증서 갱신으로 인한 중단 위험을 줄입니다.",
- "waf": "작업"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "text": "지정된 계획의 함수 앱은 모두 함께 크기가 조정되므로 크기 조정과 관련된 모든 문제는 계획의 모든 앱에 영향을 줄 수 있습니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door WAF 구성을 코드로 정의합니다. 코드를 사용하면 새 규칙 집합 버전을 보다 쉽게 채택하고 추가 보호를 얻을 수 있습니다.",
- "waf": "작업"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "text": "'대기 시간'에 대한 요금이 청구되나요? 이 질문은 일반적으로 비동기 작업을 수행하고 결과를 기다리는 C # 함수 (예 : await Task.Delay(1000) 또는 await client )의 컨텍스트에서 묻습니다. GetAsync('http://google.com')입니다. 대답은 '예'입니다 - GB 초 계산은 함수의 시작 및 종료 시간과 해당 기간 동안의 메모리 사용량을 기반으로 합니다. CPU 작업 측면에서 해당 시간 동안 실제로 발생하는 일은 계산에 포함되지 않습니다. 이 규칙의 한 가지 예외는 지속성 함수를 사용하는 경우입니다. 오케스트레이터 함수에서 대기하는 데 소요된 시간에 대해서는 요금이 청구되지 않습니다.가능한 경우 수요 형성 기술을 적용합니다(개발 환경?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "비용"
},
{
- "ammp": true,
"arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door에서 엔드투엔드 TLS를 사용합니다. 클라이언트에서 Front Door로, Front Door에서 원본으로 연결하는 데 TLS를 사용합니다.",
- "waf": "안전"
+ "text": "Frontdoor - 기본 홈페이지 끄기앱의 애플리케이션 설정에서 AzureWebJobsDisableHomepage를 true로 설정합니다. 이렇게 하면 PoP에 204(콘텐츠 없음)가 반환되므로 헤더 데이터만 반환됩니다.",
+ "waf": "비용"
},
{
"arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
"service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door에서 HTTP에서 HTTPS로 리디렉션을 사용합니다. 이전 클라이언트를 HTTPS 요청으로 자동 리디렉션하여 지원합니다.",
- "waf": "안전"
+ "text": "Frontdoor 프론트도어 - 아무것도 반환하지 않는 무언가로 라우팅합니다. 함수, 함수 프록시를 설정하거나 WebApp에서 200(정상)을 반환하고 콘텐츠를 보내지 않거나 최소한으로 보내는 경로를 추가합니다. 이것의 장점은 호출될 때 로그아웃할 수 있다는 것입니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door WAF를 사용하도록 설정합니다. 다양한 공격으로부터 애플리케이션을 보호합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
+ "text": "덜 사용되는 데이터에 대한 보관 계층 고려",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
- "severity": "높다",
- "text": "워크로드에 맞게 Azure Front Door WAF를 튜닝합니다. 가양성 탐지를 줄입니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "text": "크기가 계층과 일치하지 않는 디스크 크기를 확인합니다(예: 513GiB 디스크는 P30(1TiB)를 지불하고 크기 조정을 고려합니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door WAF 정책에서 요청 본문 검사 기능을 사용하도록 설정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "text": "가능하면 프리미엄 또는 울트라 대신 표준 SSD를 사용하는 것이 좋습니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door WAF 기본 규칙 집합을 사용하도록 설정합니다. 기본 규칙 집합은 일반적인 공격을 탐지하고 차단합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "text": "스토리지 계정의 경우 선택한 계층이 트랜잭션 요금을 합산하지 않는지 확인합니다(다음 계층으로 이동하는 것이 더 저렴할 수 있음).",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
- "severity": "높다",
- "text": "Azure Front Door WAF 봇 보호 규칙 집합을 사용하도록 설정합니다. 봇 규칙은 좋은 봇과 나쁜 봇을 감지합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "text": "ASR의 경우 RPO/RTO 및 복제 처리량이 허용하는 경우 표준 SSD 디스크를 사용하는 것이 좋습니다",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
- "severity": "보통",
- "text": "최신 Azure Front Door WAF 규칙 집합 버전을 사용합니다. 규칙 집합 업데이트는 현재 위협 환경을 고려하기 위해 정기적으로 업데이트됩니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
+ "text": "스토리지 계정: 핫 계층 및/또는 GRS 필요 확인",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door WAF에 속도 제한을 추가합니다. 속도 제한은 클라이언트가 실수로 또는 의도적으로 짧은 시간에 많은 양의 트래픽을 보내는 것을 차단합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
+ "text": "디스크 - 모든 곳에서 프리미엄 SSD 디스크 사용의 유효성을 검사합니다. 예를 들어 비프로덕션은 표준 SSD 또는 주문형 프리미엄 SSD로 교환할 수 있습니다. ",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호 기능을 제공합니다. ",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "text": "예산을 만들어 비용을 관리하고 이해 관계자에게 지출 이상 및 초과 지출 위험을 자동으로 알리는 경고를 만듭니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "낮다",
- "text": "모든 지역에서 트래픽이 발생하지 않을 것으로 예상되는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
+ "text": "추가 데이터 분석을 위해 비용 데이터를 스토리지 계정으로 내보냅니다.",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 않도록 합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "text": "리소스를 사용하지 않을 때 일시 중지하여 전용 SQL 풀에 대한 비용을 제어합니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "severity": "높다",
- "text": "Azure Application Gateway WAF 봇 보호 규칙 집합 사용Enable the Azure Application Gateway WAF bot protection rule set 봇 규칙은 좋은 봇과 나쁜 봇을 검색합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "text": "서버리스 Apache Spark 자동 일시 중지 기능을 활성화하고 그에 따라 제한 시간 값을 설정합니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
- "severity": "높다",
- "text": "Azure Application Gateway WAF 정책에서 요청 본문 검사 기능을 사용하도록 설정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "text": "다양한 크기의 Apache Spark 풀 정의를 여러 개 만듭니다.",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
- "severity": "높다",
- "text": "워크로드에 대한 Azure Application Gateway WAF를 조정합니다. 가양성 탐지를 줄입니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "text": "사전 구매 플랜으로 1년 동안 Azure Synapse SCU(커밋 단위)를 구매하여 Azure Synapse Analytics 비용을 절감하세요.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "비용"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
- "severity": "높다",
- "text": "'방지' 모드에서 Application Gateway에 대한 WAF 정책을 배포합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "text": "인터럽트 가능한 작업에 스폿 VM 사용: 할인된 가격으로 입찰 및 구매할 수 있는 VM으로, 중요하지 않은 워크로드에 비용 효율적인 솔루션을 제공합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Azure Application Gateway WAF에 속도 제한을 추가합니다. 속도 제한은 클라이언트가 실수로 또는 의도적으로 짧은 시간에 많은 양의 트래픽을 보내는 것을 차단합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "text": "모든 VM의 적절한 크기 조정",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Azure Application Gateway WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호 기능을 제공합니다. ",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "text": "VM 크기를 정규화된 최신 크기로 바꾸기",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
- "severity": "낮다",
- "text": "모든 지역에서 트래픽이 발생하지 않을 것으로 예상되는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "적절한 크기 조정 VM - 사용량을 5% 미만으로 모니터링하는 것으로 시작한 다음 최대 40%까지 작업",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Azure Application Gateway WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 않도록 합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "애플리케이션을 컨테이너화하면 VM 밀도를 개선하고 확장 비용을 절감할 수 있습니다",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "비용"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
"severity": "보통",
- "text": "최신 Azure Application Gateway WAF 규칙 집합 버전을 사용합니다. 규칙 집합 업데이트는 현재 위협 환경을 고려하기 위해 정기적으로 업데이트됩니다.",
- "waf": "안전"
+ "text": "전역 수준에서 오류 처리 정책 구현",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
"severity": "보통",
- "text": "진단 설정을 추가하여 Azure Application Gateway WAF 로그를 저장합니다.",
+ "text": "모든 API 정책에 요소가 포함되어 있는지 확인합니다.",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
"severity": "보통",
- "text": "진단 설정을 추가하여 Azure Front Door WAF 로그를 저장합니다.",
+ "text": "정책 조각을 사용하여 여러 API에서 동일한 정책 정의를 반복하지 않도록 합니다.",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
"severity": "보통",
- "text": "Azure Application Gateway WAF 로그를 Microsoft Sentinel로 보냅니다.",
+ "text": "API로 수익을 창출할 계획이라면 '수익 창출 지원' 도움말에서 권장사항을 확인하세요",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "보통",
- "text": "Azure Front Door WAF 로그를 Microsoft Sentinel로 보냅니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
+ "severity": "높다",
+ "text": "진단 설정을 사용하도록 설정하여 로그를 Azure Monitor로 내보내기",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"severity": "보통",
- "text": "Azure Application Gateway WAF 구성을 코드로 정의합니다. 코드를 사용하면 새 규칙 집합 버전을 보다 쉽게 채택하고 추가 보호를 얻을 수 있습니다.",
+ "text": "더 자세한 원격 분석을 위해 Application Insights 사용",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
- "severity": "보통",
- "text": "레거시 WAF 구성 대신 WAF 정책을 사용합니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
+ "severity": "높다",
+ "text": "가장 중요한 메트릭에 대한 경고 구성",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
- "severity": "보통",
- "text": "Application Gateway 서브넷의 연결(예: NSG 사용)만 허용하도록 백 엔드에서 인바운드 트래픽을 필터링합니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
+ "severity": "높다",
+ "text": "사용자 지정 SSL 인증서가 안전하게 액세스하고 업데이트할 수 있도록 Azure Key Vault에 저장되어 있는지 확인합니다",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
- "severity": "보통",
- "text": "원본이 Azure Front Door 인스턴스의 트래픽만 가져와야 합니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
+ "severity": "높다",
+ "text": "Azure AD를 사용하여 API(데이터 평면)에 들어오는 요청 보호",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
- "severity": "높다",
- "text": "백 엔드 서버에 대한 트래픽을 암호화해야 합니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "Microsoft Entra ID를 사용하여 개발자 포털에서 사용자 인증",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
- "severity": "높다",
- "text": "웹 응용 프로그램 방화벽을 사용해야 합니다.",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "제품의 가시성을 제어하기 위해 적절한 그룹을 만듭니다",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"severity": "보통",
- "text": "HTTP를 HTTPS로 리디렉션",
- "waf": "안전"
+ "text": "백엔드 기능을 사용하여 중복 API 백엔드 구성 제거",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "보통",
- "text": "게이트웨이 관리 쿠키를 사용하여 처리를 위해 사용자 세션에서 동일한 서버로 트래픽을 전달합니다.",
+ "text": "명명된 값을 사용하여 정책에서 사용할 수 있는 공통 값 저장",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "DR의 경우 99.99% SLA를 위해 둘 이상의 지역에 걸쳐 확장된 배포와 함께 프리미엄 계층을 활용합니다",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "99.99%의 SLA 증가를 위해 둘 이상의 가용성 영역에 하나 이상의 단위를 배포합니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
"severity": "높다",
- "text": "계획된 서비스 업데이트 중에 연결 드레이닝을 사용하도록 설정하여 백 엔드 풀의 기존 멤버에 대한 연결 손실을 방지합니다.",
- "waf": "안전"
+ "text": "자동화된 백업 루틴이 있는지 확인",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "정책을 사용하여 장애 조치 백엔드 URL 및 캐싱을 추가하여 실패한 호출을 줄입니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
"severity": "낮다",
- "text": "사용자 지정 오류 페이지를 만들어 개인화된 사용자 환경 표시",
+ "text": "고성능 수준에서 기록해야 하는 경우 Event Hubs 정책을 고려합니다",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"severity": "보통",
- "text": "HTTP 요청 및 응답 헤더를 편집하여 클라이언트와 서버 간의 라우팅 및 정보 교환을 보다 쉽게 할 수 있습니다.",
- "waf": "안전"
+ "text": "제한 정책을 적용하여 초당 요청 수 제어Apply throttling policies to control the number of requests per second",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
"severity": "보통",
- "text": "빠른 글로벌 장애 조치(failover)를 통해 글로벌 웹 트래픽 라우팅 및 최상위 계층 최종 사용자 성능 및 안정성을 최적화하도록 Front Door 구성",
+ "text": "부하가 증가할 때 인스턴스 수를 확장하도록 자동 크기 조정 구성Configure autoscaling to scale out the number of instances when the load increases",
"waf": "공연"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"severity": "보통",
- "text": "전송 계층 부하 분산 사용Use transport layer load balancing",
+ "text": "Azure에 백 엔드 API에 가까운 지역이 없는 자체 호스팅 게이트웨이를 배포합니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"severity": "보통",
- "text": "단일 게이트웨이에서 여러 웹 응용 프로그램에 대한 호스트 또는 도메인 이름을 기반으로 라우팅 구성Configure routing based on host or domain name for multiple web applications on a single gateway",
- "waf": "안전"
+ "text": "프로덕션 워크로드에 프리미엄 계층을 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
"severity": "보통",
- "text": "SSL 인증서 관리를 중앙 집중화하여 백엔드 서버 팜의 암호화 및 암호 해독 오버헤드를 줄입니다.",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "낮다",
- "text": "WebSocket 및 HTTP/2 프로토콜에 대한 기본 지원을 위해 Application Gateway 사용",
- "waf": "안전"
+ "text": "다중 리전 모델에서는 Policies를 사용하여 가용성 또는 지연 시간에 따라 리전 백엔드로 요청을 라우팅합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "높다",
- "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 Logic App 호스팅 계획 선택Select the right Logic App hosting plan based on your business & SLO requirements",
+ "text": "APIM의 제한에 유의해야 합니다.",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"severity": "높다",
- "text": "영역 중복 및 가용성 영역을 사용하여 지역 오류로부터 논리 앱 보호Protect logic apps from region failures with zone redundancy and availability zones",
+ "text": "자체 호스팅 게이트웨이 배포가 복원력이 있는지 확인합니다.",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "severity": "높다",
- "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "다중 지역 배포를 위해 APIM 앞에서 Azure Front Door 사용Use Azure Front Door in front of APIM for multi-region deployment",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "VNet(Virtual Network) 내에 서비스 배포Deploy the service within a Virtual Network (VNet)",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
+ "severity": "보통",
+ "text": "서브넷에 NSG(네트워크 보안 그룹)를 배포하여 APIM에서 들어오고 나가는 트래픽을 제한하거나 모니터링합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "보통",
+ "text": "프라이빗 엔드포인트를 배포하여 APIM이 VNet에 배포되지 않은 경우 들어오는 트래픽을 필터링합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "높다",
- "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
- "waf": "신뢰도"
+ "text": "공용 네트워크 액세스 사용 안 함",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "PowerShell 자동화 스크립트로 관리 간소화",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "보통",
- "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 논리 앱 코드를 보호합니다.",
+ "text": "Infrastructure-as-code를 통해 APIM을 구성합니다. Cloud Adaption Framework APIM 랜딩 존 가속기에서 DevOps 모범 사례 검토",
"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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "더 빠른 API 개발을 위해 Visual Studio Code APIM 확장 사용 촉진",
+ "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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "워크플로에서 DevOps 및 CI/CD 구현",
+ "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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "클라이언트 인증서 인증을 사용하여 API 보안",
+ "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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "클라이언트 인증서 인증을 사용한 보안 백엔드 서비스",
+ "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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "'OWASP API 보안 상위 10개 위협을 완화하기 위한 권장 사항' 문서를 검토하고 API에 적용할 수 있는 항목을 확인합니다.",
+ "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"severity": "보통",
- "text": "처리된 추론 토큰, 생성된 완료 토큰, 속도 제한 모니터링과 같은 메트릭 관찰",
- "waf": "운영 우수성"
+ "text": "권한 부여 기능을 사용하여 백엔드 API에 대한 OAuth 2.0 토큰 관리 간소화",
+ "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.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
+ "severity": "높다",
+ "text": "전송 중인 정보를 암호화할 때 최신 TLS 버전을 사용합니다. 가능한 경우 오래되고 불필요한 프로토콜과 암호를 사용하지 않도록 설정합니다.",
+ "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
"severity": "높다",
- "text": "Infrastructure as code를 사용하여 Azure OpenAI Service, 모델 배포 및 모든 관련 리소스를 배포합니다",
- "waf": "운영 우수성"
+ "text": "비밀(명명된 값)이 안전하게 액세스하고 업데이트할 수 있도록 Azure Key Vault에 저장되었는지 확인합니다.",
+ "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",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
+ "severity": "보통",
+ "text": "가능할 때마다 관리 ID를 사용하여 다른 Azure 리소스에 인증",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
"severity": "높다",
- "text": "API 키 대신 관리 ID로 Microsoft Entra 인증 사용",
+ "text": "APIM 앞에 Application Gateway를 배포하여 WAF(웹 애플리케이션 방화벽) 사용Use Web Application Firewall (WAF) by deploying Application Gateway in of APIM",
"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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
"severity": "높다",
- "text": "입력과 정답이 있는 알려진 골든 데이터 세트를 사용하여 시스템의 성능/정확도를 평가합니다. 평가를 위해 PromptFlow의 기능을 활용합니다.",
- "waf": "운영 우수성"
+ "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 Logic App 호스팅 계획 선택Select the right Logic App hosting plan based on your business & SLO requirements",
+ "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
"severity": "높다",
- "text": "프로비저닝된 처리량 모델의 사용 평가 ",
- "waf": "공연"
+ "text": "영역 중복 및 가용성 영역을 사용하여 지역 오류로부터 논리 앱 보호Protect logic apps from region failures with zone redundancy and availability zones",
+ "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"severity": "높다",
- "text": "Azure AI 콘텐츠 안전성 검토 및 구현",
- "waf": "운영 우수성"
+ "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
+ "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"severity": "높다",
- "text": "분당 토큰 및 응답을 기반으로 시스템의 처리량을 정의 및 평가하고 요구 사항에 맞춥니다.",
- "waf": "공연"
+ "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
+ "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"severity": "보통",
- "text": "토큰 크기, 스트리밍 옵션을 제한하여 시스템의 대기 시간을 개선합니다.",
- "waf": "공연"
+ "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 논리 앱 코드를 보호합니다.",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "보통",
- "text": "탄력성 요구를 예측하여 우선 순위에 따라 동기 및 일괄 처리 요청 분리를 결정합니다. 우선 순위가 높은 경우 동기 접근 방식을 사용하고 낮은 우선 순위의 경우 큐를 사용한 비동기 일괄 처리가 선호됩니다",
- "waf": "공연"
+ "text": "Azure Front Door에서 고객 관리형 TLS 인증서를 사용하는 경우 '최신' 인증서 버전을 사용합니다. 수동 인증서 갱신으로 인한 중단 위험 감소",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "Application Gateway v2 SKU를 사용하고 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "보통",
- "text": "PTU(프로비저닝된 처리량 단위)를 사용하는 경우 오버플로 요청에 대한 TPM(분당 토큰) 배포를 배포하는 것이 좋습니다. 게이트웨이를 사용하여 PTU 제한에 도달할 때 TPM 배포로 요청을 라우팅합니다.",
- "waf": "공연"
+ "text": "Azure Load Balancer에 표준 SKU를 사용하고 있는지 확인합니다.",
+ "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.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
+ "severity": "보통",
+ "text": "Load Balancer 프런트 엔드 IP 주소가 영역 중복인지 확인합니다(영역 프런트 엔드가 필요하지 않은 경우).",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
"severity": "보통",
- "text": "미세 조정으로 모델 성능이 향상되었는지 여부를 파악하기 위해 미세 조정 없이 성능에 대한 기준이 있습니다.",
- "waf": "공연"
+ "text": "Application Gateways v2는 IP 접두사가 /24보다 크거나 같은 서브넷에 배포해야 합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "일반적으로 역방향 프록시 및 특히 WAF의 관리는 네트워킹보다 애플리케이션에 더 가깝기 때문에 앱과 동일한 구독에 속합니다. 연결 구독에서 Application Gateway 및 WAF를 중앙 집중화하는 것은 단일 팀에서 관리하는 경우 괜찮을 수 있습니다.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "랜딩 존 가상 네트워크 내에서 그리고 보안 중인 앱을 사용하여 인바운드 HTTP(S) 연결을 프록시하는 데 사용되는 Azure Application Gateway v2 또는 파트너 NVA를 배포합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "애플리케이션 랜딩 존의 모든 공용 IP 주소에 대해 DDoS 네트워크 또는 IP 보호 계획을 사용합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
"severity": "보통",
- "text": "워크로드에 대한 TPM 및 RPM의 적절한 할당량이 있는지 확인합니다.",
+ "text": "최소 2개의 인스턴스로 자동 크기 조정을 구성합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"severity": "보통",
- "text": "HAI 도구 키트 지침의 고려 사항을 검토하고 slution에 대한 이러한 상호 작용 방법을 적용합니다",
- "waf": "운영 우수성"
+ "text": "가용성 영역에 Application Gateway 배포Deploy Application Gateway across Availability Zones",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
"severity": "보통",
- "text": "미세 조정이 사용되는 경우 지역 간에 별도의 미세 조정된 모델을 배포합니다.",
- "waf": "신뢰도"
+ "text": "WAF 정책과 함께 Azure Front Door를 사용하여 여러 Azure 지역에 걸쳐 있는 글로벌 HTTP/S 앱을 제공하고 보호할 수 있습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"severity": "보통",
- "text": "중요한 데이터를 정기적으로 백업 및 복제하여 데이터 손실 또는 시스템 장애 발생 시 데이터 가용성과 복구 가능성을 보장합니다. Azure의 백업 및 재해 복구 서비스를 활용하여 데이터를 보호하세요.",
- "waf": "신뢰도"
+ "text": "Front Door 및 Application Gateway를 사용하여 HTTP/S 앱을 보호하는 경우 Front Door에서 WAF 정책을 사용합니다. Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"severity": "높다",
- "text": "SLA를 갖도록 Azure AI 검색 서비스 계층을 선택해야 합니다. ",
+ "text": "Traffic Manager를 사용하여 HTTP/S 이외의 프로토콜에 걸쳐 있는 글로벌 앱을 제공합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"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",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"severity": "낮다",
- "text": "임베딩을 생성하기 전에 데이터 및 민감도를 분류하고 Microsoft Purview를 사용하여 레이블을 지정하고 생성된 임베딩을 동일한 민감도 및 분류로 처리해야 합니다",
+ "text": "사용자가 내부 애플리케이션에만 액세스해야 하는 경우 Microsoft Entra ID 애플리케이션 프록시를 AVD(Azure Virtual Desktop)의 대안으로 고려했나요?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"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에 사용되는 데이터 암호화",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "보통",
+ "text": "네트워크에서 들어오는 연결에 대해 열려 있는 방화벽 포트 수를 줄이려면 Microsoft Entra ID 애플리케이션 프록시를 사용하여 원격 사용자에게 내부 애플리케이션에 대한 안전하고 인증된 액세스를 제공하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"severity": "높다",
- "text": "데이터 소스 간 전송 중인 데이터, RAG(Retrieval-Augmented Generation) 및 LLM 통신에 사용되는 AI 검색에 TLS가 적용되는지 확인합니다.",
+ "text": "Web Application Firewall이 트래픽을 허용하거나 거부하기 위해 적절한 조치를 취하도록 Front Door에 대한 WAF 정책을 '방지' 모드'에 배포합니다.",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
"severity": "높다",
- "text": "RBAC를 사용하여 Azure OpenAI 서비스에 대한 액세스를 관리합니다. 사용자에게 적절한 권한을 할당하고 사용자의 역할과 책임에 따라 액세스를 제한합니다.",
+ "text": "Azure Traffic Manager와 Azure Front Door를 결합하지 마세요.",
"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": "데이터 암호화, 마스킹 또는 수정 기술을 구현하여 비프로덕션 환경에서 또는 테스트 또는 문제 해결을 위해 데이터를 공유할 때 민감한 데이터를 숨기거나 난독화된 값으로 대체합니다.",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "높다",
+ "text": "Azure Front Door 및 원본에서 동일한 도메인 이름을 사용합니다. 일치하지 않는 호스트 이름은 미묘한 버그를 유발할 수 있습니다.",
"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.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "낮다",
+ "text": "Azure Front Door 원본 그룹에 원본이 하나만 있는 경우 상태 프로브를 사용하지 않도록 설정합니다.",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"severity": "보통",
- "text": "규정 준수 규정을 준수하기 위해 데이터 보존 및 폐기 정책을 수립합니다. 더 이상 필요하지 않은 데이터에 대한 안전한 삭제 방법을 구현하고 데이터 보존 및 폐기 활동에 대한 감사 추적을 유지 관리합니다.",
- "waf": "안전"
+ "text": "Azure Front Door에 대한 양호한 상태 프로브 엔드포인트를 선택합니다. 애플리케이션의 모든 종속성을 확인하는 상태 엔드포인트를 구축하는 것이 좋습니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "낮다",
+ "text": "Azure Front Door와 함께 HEAD 상태 프로브를 사용하여 Front Door가 애플리케이션으로 보내는 트래픽을 줄입니다.",
+ "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",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"severity": "높다",
- "text": "Content Safety를 사용하여 Prompt shields 및 groundedness detection 구현 ",
- "waf": "운영 우수성"
+ "text": "SNAT 확장성 향상을 위해 Load Balancer 아웃바운드 규칙 대신 Azure NAT Gateway 사용",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
"severity": "높다",
- "text": "개인 정보 보호 제어를 구현하고 데이터 처리 활동에 필요한 동의 또는 권한을 얻어 GDPR 또는 HIPAA와 같은 관련 데이터 보호 규정을 준수하도록 합니다.",
- "waf": "안전"
+ "text": "Azure Front Door에서 관리형 TLS 인증서를 사용합니다. 운영 비용을 줄이고 인증서 갱신으로 인한 중단 위험을 줄입니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"severity": "보통",
- "text": "데이터 보안 모범 사례, 데이터 안전한 처리의 중요성, 데이터 침해와 관련된 잠재적 위험에 대해 직원을 교육합니다. 데이터 보안 프로토콜을 성실히 따르도록 권장합니다.",
- "waf": "안전"
+ "text": "Azure Front Door WAF 구성을 코드로 정의합니다. 코드를 사용하면 새 규칙 집합 버전을 보다 쉽게 채택하고 추가 보호를 얻을 수 있습니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
"severity": "높다",
- "text": "생산 데이터를 개발 및 테스트 데이터와 분리합니다. 프로덕션에서는 실제 민감한 데이터만 사용하고 개발 및 테스트 환경에서는 익명 또는 합성 데이터를 활용합니다.",
- "waf": "안전"
- },
- {
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "Azure OpenAI",
- "severity": "보통",
- "text": "데이터 민감도 수준이 다양하다면 각 수준에 대해 별도의 인덱스를 만드는 것이 좋습니다. 예를 들어, 일반 데이터에 대한 인덱스와 민감한 데이터에 대한 인덱스가 있을 수 있으며, 각각 다른 액세스 프로토콜에 의해 제어됩니다",
+ "text": "Azure Front Door에서 엔드투엔드 TLS를 사용합니다. 클라이언트에서 Front Door로, Front Door에서 원본으로 연결하는 데 TLS를 사용합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"severity": "보통",
- "text": "한 단계 더 나아가 중요한 데이터 세트를 서비스의 다른 인스턴스에 배치합니다. 각 인스턴스는 고유한 특정 RBAC 정책 집합으로 제어할 수 있습니다",
+ "text": "Azure Front Door에서 HTTP를 HTTPS로 리디렉션을 사용합니다. 이전 클라이언트를 HTTPS 요청으로 자동으로 리디렉션하여 지원합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "Azure OpenAI",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
"severity": "높다",
- "text": "민감한 정보에서 생성된 임베딩과 벡터는 그 자체로 민감하다는 점을 인식해야 합니다. 이 데이터에는 원본 자료와 동일한 보호 조치가 제공되어야 합니다",
+ "text": "Azure Front Door WAF를 사용하도록 설정합니다. 다양한 공격으로부터 응용 프로그램을 보호합니다.",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
"severity": "높다",
- "text": "임베딩 및 벡터가 있는 데이터 저장소에 RBAC를 적용하고 역할의 액세스 요구 사항에 따라 액세스 범위를 지정합니다.",
+ "text": "검색 모드에서 WAF를 구성하여 가양성 검색을 줄이고 수정하여 워크로드에 맞게 Azure Front Door WAF를 조정합니다.",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
"severity": "높다",
- "text": "AI 서비스에 대한 프라이빗 엔드포인트를 구성하여 네트워크 내 서비스 액세스를 제한합니다.",
+ "text": "Azure Front Door WAF 정책에서 요청 본문 검사 기능을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
"severity": "높다",
- "text": "Azure Firewall 및 UDR을 사용하여 엄격한 인바운드 및 아웃바운드 트래픽 제어를 적용하고 외부 통합 지점을 제한합니다.",
+ "text": "Azure Front Door WAF 기본 규칙 집합을 사용하도록 설정합니다. 기본 규칙 집합은 일반적인 공격을 탐지하고 차단합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
- "service": "Azure OpenAI",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
"severity": "높다",
- "text": "네트워크 세분화 및 액세스 제어를 구현하여 LLM 애플리케이션에 대한 액세스를 인증된 사용자 및 시스템으로만 제한하고 측면 이동을 방지합니다.",
+ "text": "Azure Front Door WAF 봇 보호 규칙 집합을 사용하도록 설정합니다. 봇 규칙은 좋은 봇과 나쁜 봇을 감지합니다.",
"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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"severity": "보통",
- "text": "LLMLingua 또는 gprtrim과 같은 프롬프트 압축 도구 사용",
- "waf": "비용 최적화"
+ "text": "최신 Azure Front Door WAF 규칙 집합 버전을 사용합니다. 규칙 집합 업데이트는 현재 위협 환경을 고려하기 위해 정기적으로 업데이트됩니다.",
+ "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와 같은 인증 및 권한 부여 메커니즘으로 적절하게 보호되어 무단 액세스를 방지해야 합니다.",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
+ "severity": "보통",
+ "text": "Azure Front Door WAF에 속도 제한을 추가합니다. 속도 제한은 클라이언트가 실수로 또는 의도적으로 짧은 시간에 많은 양의 트래픽을 보내는 것을 차단합니다.",
"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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"severity": "보통",
- "text": "다단계 인증(multi-factor authentication)과 같은 강력한 최종 사용자 인증 메커니즘을 적용하여 LLM 애플리케이션 및 관련 네트워크 리소스에 대한 무단 액세스를 방지합니다.",
+ "text": "Azure Front Door WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호를 제공합니다. ",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
- "severity": "보통",
- "text": "네트워크 모니터링 도구를 구현하여 의심스럽거나 악의적인 활동에 대한 네트워크 트래픽을 탐지하고 분석합니다. 로깅을 활성화하여 네트워크 이벤트를 캡처하고 보안 사고 발생 시 포렌식 분석을 용이하게 합니다.",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "낮다",
+ "text": "모든 지역에서 트래픽이 발생할 것으로 예상되지 않는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "보통",
- "text": "보안 감사 및 침투 테스트를 수행하여 LLM 애플리케이션의 네트워크 인프라에서 네트워크 보안 약점 또는 취약성을 식별하고 해결합니다.",
+ "text": "Azure Front Door WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 마세요.",
"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": "운영 우수성"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
+ "severity": "높다",
+ "text": "Azure Application Gateway WAF 봇 보호 규칙 집합을 사용하도록 설정합니다. 봇 규칙은 좋은 봇과 나쁜 봇을 감지합니다.",
+ "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": "운영 우수성"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
+ "severity": "높다",
+ "text": "Azure Application Gateway WAF 정책에서 요청 본문 검사 기능을 사용하도록 설정합니다.",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
"severity": "높다",
- "text": "Azure AI Services 리소스의 진단 로그를 사용하도록 설정해야 함",
- "waf": "운영 우수성"
+ "text": "워크로드에 대한 검색 모드에서 Azure Application Gateway WAF를 조정합니다. 거짓 긍정 탐지를 줄입니다.",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
"severity": "높다",
- "text": "키 액세스(로컬 인증)는 보안을 위해 사용하지 않도록 설정하는 것이 좋습니다. 키 기반 액세스를 사용하지 않도록 설정하면 Microsoft Entra ID가 유일한 액세스 방법이 되어 최소 권한 원칙과 세분화된 제어를 유지할 수 있습니다. ",
+ "text": "'방지' 모드에서 Application Gateway에 대한 WAF 정책을 배포합니다.",
"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에서 안전하게 검색합니다.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "Azure Application Gateway WAF에 속도 제한을 추가합니다. 속도 제한은 클라이언트가 실수로 또는 의도적으로 짧은 시간에 많은 양의 트래픽을 보내는 것을 차단합니다.",
"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에 저장된 키를 정기적으로 회전하고 만료하여 무단 액세스의 위험을 최소화합니다.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "Azure Application Gateway WAF 속도 제한에 높은 임계값을 사용합니다. 높은 속도 제한 임계값은 합법적인 트래픽 차단을 방지하는 동시에 인프라를 압도할 수 있는 매우 많은 수의 요청에 대한 보호를 제공합니다. ",
"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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "severity": "낮다",
+ "text": "모든 지역에서 트래픽이 발생할 것으로 예상되지 않는 경우 지역 필터를 사용하여 예상하지 못한 국가의 트래픽을 차단합니다.",
+ "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(교차 사이트 스크립팅) 또는 보안 구성 오류와 같은 일반적인 취약성을 방지합니다",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "Azure Application Gateway WAF를 사용하여 트래픽을 지리적으로 필터링할 때 알 수 없는(ZZ) 위치를 지정합니다. IP 주소를 지리적으로 일치시킬 수 없는 경우 합법적인 요청을 실수로 차단하지 마세요.",
"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 라이브러리와 다른 시스템 컴포넌트를 정기적으로 업데이트하고 패치하는 프로세스를 설정합니다.",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "최신 Azure Application Gateway WAF 규칙 집합 버전을 사용합니다. 규칙 집합 업데이트는 현재 위협 환경을 고려하기 위해 정기적으로 업데이트됩니다.",
"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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "진단 설정을 추가하여 Azure Application Gateway WAF 로그를 저장합니다.",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
"severity": "보통",
- "text": "기본 모델과 미세 조정된 모델 및 토큰 단계 크기의 비용 차이를 이해합니다.",
- "waf": "비용 최적화"
+ "text": "진단 설정을 추가하여 Azure Front Door WAF 로그를 저장합니다.",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
+ "severity": "보통",
+ "text": "Azure Application Gateway WAF 로그를 Microsoft Sentinel로 보냅니다.",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"severity": "보통",
- "text": "모델 사용을 모니터링하는 비용 추적 시스템을 설정하고 해당 정보를 사용하여 모델 선택 및 프롬프트 크기를 알립니다",
- "waf": "비용 최적화"
+ "text": "Azure Front Door WAF 로그를 Microsoft Sentinel로 보냅니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
"severity": "보통",
- "text": "모델 응답당 토큰 수에 대한 최대 제한을 설정합니다. 유효한 응답에 사용할 수 있을 만큼 충분히 큰지 확인하기 위해 크기를 최적화합니다",
- "waf": "비용 최적화"
+ "text": "Azure Application Gateway WAF 구성을 코드로 정의합니다. 코드를 사용하면 새 규칙 집합 버전을 보다 쉽게 채택하고 추가 보호를 얻을 수 있습니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
"severity": "보통",
- "text": "안정성을 위한 AI 검색 설정에 대해 제공된 지침을 검토합니다.",
- "waf": "운영 우수성"
+ "text": "레거시 WAF 구성 대신 WAF 정책을 사용합니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
"severity": "보통",
- "text": "AI Search Vector 스토리지 계획 및 관리",
- "waf": "운영 우수성"
+ "text": "예를 들어 NSG를 사용하여 Application Gateway 서브넷의 연결만 허용하도록 백 엔드에서 인바운드 트래픽을 필터링합니다.",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"severity": "보통",
- "text": "LLMOps 사례를 적용하여 GenAI 애플리케이션의 라이프사이클 관리를 자동화합니다.",
- "waf": "운영 우수성"
+ "text": "원본이 Azure Front Door 인스턴스의 트래픽만 가져와야 합니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "높다",
- "text": "청구 모델 사용 평가 - PAYG 대 PTU",
- "waf": "비용 최적화"
+ "text": "백엔드 서버에 대한 트래픽을 암호화해야 합니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
+ "severity": "높다",
+ "text": "웹 응용 프로그램 방화벽을 사용해야 합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"severity": "보통",
- "text": "모델 버전 간에 전환할 때 프롬프트와 응용 프로그램의 품질을 평가합니다.",
- "waf": "운영 우수성"
+ "text": "HTTP를 HTTPS로 리디렉션",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
"severity": "보통",
- "text": "GenAI 앱을 평가, 모니터링 및 개선하여 근거, 관련성, 정확성, 일관성, 유창성 등의 기능을 제공합니다.",
- "waf": "운영 우수성"
+ "text": "게이트웨이 관리 쿠키를 사용하여 처리를 위해 사용자 세션에서 동일한 서버로 트래픽을 전달합니다.",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
+ "severity": "높다",
+ "text": "계획된 서비스 업데이트 중에 연결 드레이닝을 사용하도록 설정하여 백 엔드 풀의 기존 멤버에 대한 연결 손실을 방지합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "severity": "낮다",
+ "text": "사용자 지정 오류 페이지를 만들어 개인화된 사용자 환경을 표시합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "294798b1-578b-4219-a46c-eb5443513592",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
"severity": "보통",
- "text": "다양한 검색 매개 변수를 기반으로 Azure AI Search 결과를 평가합니다",
- "waf": "운영 우수성"
+ "text": "클라이언트와 서버 간의 더 쉬운 라우팅 및 정보 교환을 위해 HTTP 요청 및 응답 헤더를 편집합니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
"severity": "보통",
- "text": "데이터를 사용하여 프롬프트 엔지니어링 및 RAG와 같은 다른 기본 접근 방식을 시도한 경우에만 모델을 미세 조정하여 정확도를 높이는 방법으로 살펴보십시오",
- "waf": "운영 우수성"
+ "text": "Front Door를 구성하여 글로벌 웹 트래픽 라우팅, 최상위 최종 사용자 성능 및 빠른 글로벌 장애 조치(failover)를 통해 안정성을 최적화합니다.",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
"severity": "보통",
- "text": "프롬프트 엔지니어링 기법을 사용하여 LLM 응답의 정확도 향상",
- "waf": "운영 우수성"
+ "text": "전송 계층 부하 분산 사용",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"severity": "보통",
- "text": "GenAI 애플리케이션을 위한 레드 팀",
+ "text": "단일 게이트웨이에서 여러 웹 응용 프로그램에 대한 호스트 또는 도메인 이름을 기반으로 라우팅을 구성합니다.",
"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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"severity": "보통",
- "text": "최종 사용자에게 LLM 응답에 대한 점수 매기기 옵션을 제공하고 이러한 점수를 추적합니다. ",
- "waf": "운영 우수성"
+ "text": "SSL 인증서 관리를 중앙 집중화하여 백엔드 서버 팜의 암호화 및 암호 해독 오버헤드를 줄입니다.",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
+ "severity": "낮다",
+ "text": "WebSocket 및 HTTP/2 프로토콜에 대한 기본 지원을 위해 Application Gateway 사용",
+ "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.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "severity": "높다",
+ "text": "읽기 작업에 대해 99.9%의 가용성을 갖도록 복제본 2개 사용",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "보통",
- "text": "유연한 서버 활용",
+ "text": "읽기/쓰기 작업에 대해 99.9%의 가용성을 갖도록 복제본 3개 사용",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
"severity": "높다",
- "text": "지역적으로 적용 가능한 경우 가용 영역 활용Leverage Availability Zones where regionally applicable",
+ "text": "읽기 및/또는 쓰기 복제본을 활성화하여 가용 영역 활용Leverage Availability Zones by enabling read and/or write replicas",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"severity": "보통",
- "text": "지역 간 DR 시나리오에 입력 데이터 복제 활용",
+ "text": "지역 중복의 경우 Manually create services in 2 or more regions for Search는 지리적 지역 간에 검색 인덱스를 복제하는 자동화된 방법을 제공하지 않습니다",
"waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"severity": "보통",
- "text": "다중 테넌트에 대한 명확한 규정 또는 비즈니스 요구 사항이 없는 한 Azure 리소스를 관리하기 위해 하나의 Entra 테넌트를 사용합니다.",
- "waf": "작업"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "낮다",
- "text": "다중 테넌트 자동화 접근 방식을 사용하여 Microsoft Entra ID 테넌트를 관리합니다.",
- "waf": "작업"
+ "text": "여러 서비스에서 데이터를 동기화하려면 인덱서를 사용하여 여러 서비스의 콘텐츠를 업데이트하거나 REST API를 사용하여 여러 서비스에서 콘텐츠 업데이트를 푸시합니다.",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
- "severity": "높다",
- "text": "동일한 ID로 다중 테넌트 관리에 Azure Lighthouse를 사용합니다.",
- "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
- "waf": "작업"
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
+ "severity": "보통",
+ "text": "Azure Traffic Manager를 사용하여 요청 조정",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
"severity": "높다",
- "text": "파트너에게 테넌트를 관리할 수 있는 액세스 권한을 부여하는 경우 Azure Lighthouse를 사용합니다.",
- "waf": "비용"
+ "text": "Azure Cognitive Search 인덱스를 백업 및 복원합니다. 이 샘플 코드를 사용하여 인덱스 정의 및 스냅샷을 일련의 Json 파일에 백업합니다",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"severity": "높다",
- "text": "클라우드 운영 모델에 맞는 RBAC 모델을 적용합니다. Scope and Assign across Management Groups and Subscriptions.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "안전"
+ "text": "Azure Cache for Redis에 대한 영역 중복성을 사용하도록 설정합니다. Azure Cache for Redis는 프리미엄 및 엔터프라이즈 계층에서 영역 중복 구성을 지원합니다. 영역 중복 캐시는 동일한 지역의 여러 Azure 가용성 영역에 노드를 배치할 수 있습니다. 데이터 센터 또는 AZ 중단을 단일 장애 지점으로 제거하고 캐시의 전반적인 가용성을 높입니다.",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
- "severity": "높다",
- "text": "모든 계정 유형에 대해 회사 또는 학교 계정 인증 유형만 사용합니다. Microsoft 계정을 사용하지 마십시오.",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "안전"
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
+ "severity": "보통",
+ "text": "Azure Cache for Redis 인스턴스에 대한 데이터 지속성을 구성합니다. 캐시 데이터는 메모리에 저장되기 때문에 드물게 계획되지 않은 여러 노드의 오류로 인해 모든 데이터가 삭제될 수 있습니다. 데이터가 완전히 손실되는 것을 방지하기 위해 Redis 지속성을 사용하면 메모리 내 데이터의 주기적인 스냅숏을 만들어 저장소 계정에 저장할 수 있습니다.",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"severity": "보통",
- "text": "그룹만 사용하여 사용 권한을 할당합니다. 그룹 관리 시스템이 이미 있는 경우 Entra ID 전용 그룹에 온-프레미스 그룹을 추가합니다.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "안전"
+ "text": "지역 중복 스토리지 계정을 사용하여 Azure Cache for Redis 데이터를 유지하거나 지역 중복을 사용할 수 없는 경우 영역 중복을 유지합니다",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
- "severity": "높다",
- "text": "Azure 환경에 대한 권한이 있는 모든 사용자에 대해 Microsoft Entra ID 조건부 액세스 정책을 적용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "안전"
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
+ "severity": "보통",
+ "text": "프리미엄 Azure Cache for Redis 인스턴스에 대한 수동 지역 복제를 구성합니다. 지역에서 복제는 일반적으로 두 개의 Azure 지역에 걸쳐 있는 둘 이상의 Azure Cache for Redis 인스턴스를 연결하는 메커니즘입니다. 지역에서 복제는 주로 지역 간 재해 복구를 위해 설계되었습니다. 두 개의 프리미엄 계층 캐시 인스턴스는 주 캐시에 대한 읽기 및 쓰기를 제공하는 방식으로 지역 복제를 통해 연결되며, 해당 데이터는 보조 캐시에 복제됩니다.",
+ "waf": "신뢰도"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"severity": "높다",
- "text": "Azure 환경에 대한 권한이 있는 모든 사용자에 대해 Multi-Factor Authentication을 적용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "text": "ADDS 도메인 컨트롤러가 네이티브 Azure의 ID 구독에 배포되었는지 확인합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"severity": "보통",
- "text": "Microsoft Entra ID PIM(Privileged Identity Management)을 적용하여 제로 스탠딩 액세스 및 최소 권한을 설정합니다.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "ADDS 사이트 및 서비스가 Azure 기반 리소스(Azure VMware Solution 포함)의 인증 요청을 Azure에 로컬로 유지하도록 구성되어 있는지 확인합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
- "severity": "보통",
- "text": "Active Directory Domain Services에서 Entra Domain Services로 전환하려는 경우 모든 워크로드의 호환성을 평가합니다.",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "vCenter가 ADDS에 연결되어 있는지 확인하여 '명명된 사용자 계정'을 기반으로 인증을 사용하도록 설정합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "보통",
- "text": "Microsoft Entra ID 로그를 플랫폼 중앙 Azure Monitor와 통합합니다. Azure Monitor는 Azure의 로그 및 모니터링 데이터에 대한 단일 정보 소스를 허용하여 조직에 로그 수집 및 보존에 대한 요구 사항을 충족하는 클라우드 네이티브 옵션을 제공합니다.",
+ "text": "vCenter에서 ADDS로의 연결이 보안 프로토콜(LDAPS)을 사용하고 있는지 확인합니다.",
"waf": "안전"
},
{
- "ammp": true,
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
- "severity": "높다",
- "text": "응급 액세스 또는 비상 계정을 구현하여 테넌트 전체 계정 잠금을 방지합니다.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "vCenter IdP의 CloudAdmin 계정은 긴급 계정으로만 사용됩니다(Break-glass).",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
- "severity": "보통",
- "text": "특별히 필요한 시나리오가 없는 한 Microsoft Entra ID 역할 할당에 온-프레미스 동기화 계정을 사용하지 마세요.",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "NSX-Manager가 외부 ID 제공자(LDAPS)와 통합되었는지 확인합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"severity": "보통",
- "text": "Microsoft Entra ID 애플리케이션 프록시를 사용하여 원격 사용자에게 애플리케이션에 대한 액세스 권한을 부여하는 경우 테넌트당 하나의 인스턴스만 가질 수 있으므로 플랫폼 리소스로 관리합니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "VMware vSphere에서 사용하기 위해 RBAC 모델이 생성되었습니까?",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "보통",
- "text": "최대한의 유연성이 필요한 네트워크 시나리오에는 허브 및 스포크(hub-and-spoke) 네트워크 토폴로지를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "RBAC 권한은 특정 사용자가 아닌 ADDS 그룹에 부여해야 합니다",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"severity": "높다",
- "text": "ExpressRoute 게이트웨이, VPN 게이트웨이 및 Azure Firewall 또는 파트너 NVA를 포함한 공유 네트워킹 서비스를 중앙 허브 가상 네트워크에 배포합니다. 필요한 경우 DNS 서비스도 배포합니다.",
- "waf": "비용"
+ "text": "Azure의 Azure VMware Solution 리소스에 대한 RBAC 권한은 제한된 소유자 집합으로만 '잠김'됩니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
"severity": "높다",
- "text": "애플리케이션 랜딩 존의 모든 공용 IP 주소에 대해 DDoS 네트워크 또는 IP 보호 계획을 사용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "모든 사용자 지정 역할의 범위가 CloudAdmin 허용 권한 부여로 지정되었는지 확인합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
- "severity": "보통",
- "text": "파트너 네트워킹 기술 또는 NVA를 배포할 때 파트너 공급업체의 지침을 따릅니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
- "severity": "낮다",
- "text": "허브 및 스포크 시나리오에서 ExpressRoute와 VPN 게이트웨이 간의 전송이 필요한 경우 Azure Route Server를 사용합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "현재 고객 사용 사례에 대해 올바른 Azure VMware Solution 연결 모델을 선택했습니까?",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
- "severity": "낮다",
- "text": "Route Server를 사용하는 경우 Route Server 서브넷에 /27 접두사를 사용합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "'연결 모니터'를 사용하여 온-프레미스에서 Azure로의 ExpressRoute 또는 VPN 연결이 모니터링되는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure 지역 간에 여러 허브 및 스포크 토폴로지가 있는 네트워크 아키텍처의 경우 허브 VNet 간의 글로벌 가상 네트워크 피어링을 사용하여 지역을 서로 연결합니다.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
- "waf": "공연"
+ "text": "Azure VMware Solution 백 엔드 ExpressRoute 연결을 모니터링하기 위해 Azure 네이티브 리소스에서 Azure VMware Solution 가상 머신으로 연결 모니터가 만들어졌는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "보통",
- "text": "네트워크용 Azure Monitor를 사용하여 Azure에서 네트워크의 엔드투엔드 상태를 모니터링합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "text": "엔드-2-엔드 연결을 모니터링하기 위해 온-프레미스 리소스에서 Azure VMware Solution 가상 머신으로 연결 모니터가 만들어졌는지 확인합니다.",
"waf": "작업"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
- "severity": "보통",
- "text": "한 지역에 400개 이상의 스포크 네트워크가 있는 경우 VNet 피어링 제한(500) 및 ExpressRoute를 통해 보급할 수 있는 최대 접두사 수(1000)를 우회하기 위해 추가 허브를 배포합니다.",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "경로 서버를 사용하는 경우 경로 서버에서 ExR 게이트웨이로, 온-프레미스로 1,000개 이상의 경로가 전파되지 않도록 합니다(ARS 제한).",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
- "severity": "보통",
- "text": "경로 테이블당 경로 수를 400개로 제한합니다.",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "Azure Portal에서 Azure VMware Solution 리소스를 관리하는 역할에 대해 Privileged Identity Management가 구현되어 있나요(고정 권한이 허용되지 않음).",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
"severity": "높다",
- "text": "VNet 피어링을 구성할 때 '원격 가상 네트워크에 대한 트래픽 허용' 설정을 사용합니다.",
- "waf": "신뢰도"
+ "text": "Azure VMware Solution PIM 역할에 대해 Privileged Identity Management 감사 보고를 구현해야 합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"severity": "보통",
- "text": "ExpressRoute Direct를 사용하는 경우 조직의 라우터와 MSEE 간의 계층 2 레벨에서 트래픽을 암호화하도록 MACsec을 구성합니다. 다이어그램은 흐름에서 이 암호화를 보여 줍니다.",
+ "text": "Privileged Identity Management를 사용하는 경우 Azure VMware Solution 자동 호스트 교체 알림에 대한 유효한 SMTP 레코드를 사용하여 유효한 Entra ID 사용 계정을 만들었는지 확인합니다. (상시 권한 필요)",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "CloudAdmin 계정 사용을 긴급 액세스로만 제한",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "vCenter에서 사용자 지정 RBAC 역할을 만들어 vCenter 내에서 최소 권한 모델 구현",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
"severity": "보통",
- "text": "MACsec을 사용할 수 없는 시나리오(예: ExpressRoute Direct를 사용하지 않음)의 경우 VPN 게이트웨이를 사용하여 ExpressRoute 개인 피어링을 통해 IPsec 터널을 설정합니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "cloudadmin(vCenter) 및 admin(NSX) 자격 증명을 정기적으로 순환하도록 정의된 프로세스입니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"severity": "높다",
- "text": "Azure 지역 및 온-프레미스 위치에서 겹치는 IP 주소 공간이 사용되지 않는지 확인합니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Azure VMware Solution에서 실행되는 워크로드(VM)에 사용할 중앙 집중식 ID 공급자 사용",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
"severity": "보통",
- "text": "개인 인터넷(RFC 1918)에 대한 주소 할당 범위의 IP 주소를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "NSX-T 내에서 East-West 트래픽 필터링이 구현되었는지 여부",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"severity": "높다",
- "text": "IP 주소 공간이 낭비되지 않는지 확인하고 불필요하게 큰 가상 네트워크(예: /16)를 만들지 마세요.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "공연"
+ "text": "Azure VMware Solution의 워크로드는 인터넷에 직접 노출되지 않습니다. 트래픽은 Azure Application Gateway, Azure Firewall 또는 제3자 솔루션에 의해 필터링되고 검사됩니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"severity": "높다",
- "text": "프로덕션 및 재해 복구 사이트에 대해 겹치는 IP 주소 범위를 사용하지 마세요.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "신뢰도"
+ "text": "감사 및 로깅은 Azure VMware Solution 및 Azure VMware Solution 기반 워크로드에 대한 인바운드 인터넷 요청에 대해 구현됩니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure의 이름 확인만 필요한 환경의 경우 이름 확인을 위해 위임된 영역(예: 'azure.contoso.com')을 사용하여 확인을 위해 Azure 프라이빗 DNS를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "작업"
+ "text": "세션 모니터링은 의심스러운/악의적인 활동을 식별하기 위해 Azure VMware Solution 또는 Azure VMware Solution 기반 워크로드의 아웃바운드 인터넷 연결에 대해 구현됩니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure 및 온-프레미스에서 이름 확인이 필요하고 Active Directory와 같은 기존 엔터프라이즈 DNS 서비스가 없는 환경의 경우 Azure DNS Private Resolver를 사용하여 DNS 요청을 Azure 또는 온-프레미스 DNS 서버로 라우팅합니다.",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "text": "Azure의 ExR/VPN Gateway 서브넷에서 DDoS 표준 보호를 사용할 수 있나요?",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
- "severity": "낮다",
- "text": "자체 DNS(예: Red Hat OpenShift)가 필요하고 배포하는 특수 워크로드는 선호하는 DNS 솔루션을 사용해야 합니다.",
- "waf": "작업"
- },
- {
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
- "severity": "높다",
- "text": "Azure DNS에 대한 자동 등록을 사용하도록 설정하여 가상 네트워크 내에 배포된 가상 머신에 대한 DNS 레코드의 수명 주기를 자동으로 관리합니다.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "작업"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "전용 PAW(Privileged Access Workstation)를 사용하여 Azure VMware Solution, vCenter, NSX Manager 및 HCX Manager 관리",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure Bastion을 사용하여 네트워크에 안전하게 연결합니다.",
+ "text": "Azure VMware Solution에서 실행되는 워크로드에 대해 Advanced Threat Detection(클라우드용 Microsoft Defender 또는 ASC) 사용",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
"severity": "보통",
- "text": "서브넷 /26 이상에서 Azure Bastion을 사용합니다.",
+ "text": "서버용 Azure ARC를 사용하여 Azure 네이티브 기술을 사용하여 Azure VMware Solution에서 실행되는 워크로드를 적절하게 제어합니다(Azure VMware Solution용 Azure ARC는 아직 사용할 수 없음).",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
- "severity": "보통",
- "text": "Azure Front Door 및 WAF 정책을 사용하여 랜딩 존에 대한 인바운드 HTTP/S 연결을 위해 Azure 지역 전체에서 전역 보호를 제공합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "Azure VMware Solution의 워크로드가 런타임 중에 충분한 데이터 암호화(예: 게스트 내 디스크 암호화 및 SQL TDE)를 사용하는지 확인합니다. (vSAN 미사용 암호화가 기본값임)",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
"severity": "낮다",
- "text": "Azure Front Door 및 Azure Application Gateway를 사용하여 HTTP/S 앱을 보호하는 경우 Azure Front Door에서 WAF 정책을 사용합니다. Azure Front Door에서만 트래픽을 수신하도록 Azure Application Gateway를 잠급니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "게스트 내 암호화를 사용하는 경우 가능한 경우 Azure Key Vault에 암호화 키를 저장합니다",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "severity": "높다",
- "text": "인바운드 HTTP/S 연결에 WAF 및 기타 역방향 프록시가 필요한 경우 랜딩 존 가상 네트워크 내에 배포하고 보호하고 인터넷에 노출하는 앱과 함께 배포합니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure VMware Solution에서 실행되는 워크로드에 대해 확장된 보안 업데이트 지원을 사용하는 것이 좋습니다(Azure VMware Solution은 ESU에 적합함).",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"severity": "높다",
- "text": "Azure DDoS 네트워크 또는 IP 보호 플랜을 사용하여 가상 네트워크 내의 공용 IP 주소 엔드포인트를 보호할 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "text": "적절한 vSAN 데이터 이중화 방법이 사용되는지 확인합니다(RAID 규격).",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
"severity": "높다",
- "text": "예정된 호환성이 손상되는 변경 전에 네트워크 아웃바운드 트래픽 구성 및 전략을 관리하는 방법을 계획합니다. 2025년 9월 30일에 새 배포에 대한 기본 아웃바운드 액세스가 사용 중지되고 명시적 액세스 구성만 허용됩니다.",
+ "text": "vSAN 스토리지 요구 사항을 충족하기 위해 장애 허용 정책이 적용되어 있는지 확인합니다",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "높다",
- "text": "보호된 모든 공용 IP 주소(DDoS IP 또는 네트워크 보호)에 대한 DDoS 관련 로그를 저장하는 진단 설정을 추가합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "충분한 할당량을 요청했는지 확인하고 성장 및 재해 복구 요구 사항을 고려했는지 확인합니다",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "ESXi에 대한 액세스 제약 조건을 이해하고 타사 솔루션에 영향을 줄 수 있는 액세스 제한이 있는지 확인합니다.",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "새 노드 요청에 대한 리드 타임을 염두에 두고 ESXi 호스트 밀도 및 효율성에 대한 정책이 있는지 확인합니다",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure VMware Solution에 대한 적절한 비용 관리 프로세스가 있는지 확인 - Azure Cost Management를 사용할 수 있습니다.",
+ "waf": "비용"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "Azure VMware Solution 사용 비용을 최적화하는 데 사용되는 Azure 예약 인스턴스입니까?",
+ "waf": "비용"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "다른 Azure 네이티브 서비스를 사용할 때 Azure Private-Link 사용 고려",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"severity": "높다",
- "text": "Virtual Machines에 직접 연결된 공용 IP 주소를 거부하는 정책 할당이 있는지 확인합니다. 특정 VM에서 공용 IP가 필요한 경우 제외를 사용합니다.",
- "waf": "안전"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "ExpressRoute를 Azure에 대한 기본 연결로 사용합니다. VPN을 백업 연결의 소스로 사용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "필요한 모든 리소스가 동일한 Azure 가용성 영역 내에 있는지 확인합니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "description": "AS-path 접두사 및 연결 가중치를 사용하여 Azure에서 온-프레미스로의 트래픽에 영향을 주고, 자체 라우터의 전체 BGP 특성 범위를 사용하여 온-프레미스에서 Azure로의 트래픽에 영향을 줄 수 있습니다.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "보통",
- "text": "여러 ExpressRoute 회로 또는 여러 온-프레미스 위치를 사용하는 경우 BGP 특성을 사용하여 라우팅을 최적화합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
+ "text": "Azure VMware Solution 게스트 VM 워크로드에 대해 클라우드용 Microsoft Defender 사용",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "보통",
- "text": "대역폭 및 성능 요구 사항에 따라 ExpressRoute/VPN 게이트웨이에 적합한 SKU를 선택합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "공연"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
- "severity": "높다",
- "text": "비용을 정당화하는 대역폭에 도달하는 경우에만 무제한 데이터 ExpressRoute 회로를 사용해야 합니다.",
- "waf": "비용"
+ "text": "Azure Arc 지원 서버를 사용하여 Azure VMware Solution 게스트 VM 워크로드 관리",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
"severity": "높다",
- "text": "회로 피어링 위치가 로컬 SKU에 대한 Azure 지역을 지원하는 경우 ExpressRoute의 로컬 SKU를 활용하여 회로 비용을 줄입니다.",
- "waf": "비용"
+ "text": "Azure VMware Solution에서 진단 및 메트릭 로깅 사용Enable Diagnostic and metric logging on Azure VMware Solution",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"severity": "보통",
- "text": "지원되는 Azure 지역에 영역 중복 ExpressRoute 게이트웨이를 배포합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
+ "text": "Azure VMware Solution 게스트 VM 워크로드에 Log Analytics 에이전트 배포",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"severity": "보통",
- "text": "10Gbps보다 높은 대역폭 또는 전용 10/100Gbps 포트가 필요한 시나리오의 경우 ExpressRoute Direct를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "공연"
+ "text": "Azure VMware Solution VM 워크로드에 대한 백업 정책 및 솔루션을 문서화하고 구현했는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "보통",
- "text": "짧은 대기 시간이 필요하거나 온-프레미스에서 Azure로의 처리량이 10Gbps보다 커야 하는 경우 FastPath를 사용하도록 설정하여 데이터 경로에서 ExpressRoute 게이트웨이를 우회합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "공연"
+ "text": "클라우드용 Microsoft Defender를 사용하여 Azure VMware Solution에서 실행되는 워크로드의 규정 준수 모니터링",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"severity": "보통",
- "text": "영역 중복 VPN 게이트웨이를 사용하여 분기 또는 원격 위치를 Azure(사용 가능한 경우)에 연결합니다.",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "신뢰도"
+ "text": "적용 가능한 규정 준수 기준이 클라우드용 Microsoft Defender에 추가되었나요?",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
- "severity": "보통",
- "text": "온-프레미스에서 중복 VPN 어플라이언스(활성/활성 또는 활성/수동)를 사용합니다.",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "Azure VMware Solution 배포에 사용할 Azure 지역을 선택할 때 데이터 보존이 평가되었나요?",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
"severity": "높다",
- "text": "ExpressRoute Direct를 사용하는 경우 비용을 절감하기 위해 로컬 Azure 지역에 대한 ExpressRoute 로컬 회로를 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "비용"
+ "text": "데이터 처리의 영향(서비스 제공자/서비스 소비자 모델)이 명확하고 문서화되어 있습니까?",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "보통",
- "text": "트래픽 격리 또는 전용 대역폭이 필요한 경우(예: 프로덕션 환경과 비프로덕션 환경 분리) 다른 ExpressRoute 회로를 사용합니다. 이는 격리된 라우팅 도메인을 보장하고 시끄러운 이웃 위험을 완화하는 데 도움이 됩니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "규정 준수를 위해 필요한 경우에만 vSAN에 CMK(고객 관리 키)를 사용하는 것이 좋습니다.",
"waf": "안전"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "기본 제공 Express Route Insights를 사용하여 ExpressRoute 가용성 및 사용률을 모니터링합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "핵심 Azure VMware Solution 모니터링 인사이트를 사용하도록 설정하는 대시보드 만들기",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "네트워크 전반, 특히 온-프레미스와 Azure 간의 연결을 모니터링하려면 연결 모니터를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "Azure VMware Solution 성능에 대한 자동 경고에 대한 중요 임계값에 대한 경고 만들기(CPU >80%, 평균 메모리>80%, vSAN>70%)",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "중복성을 위해 서로 다른 피어링 위치의 ExpressRoute 회로를 사용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "단일 ExpressRoute 회로만 사용하는 경우 사이트 간 VPN을 ExpressRoute의 장애 조치(failover)로 사용합니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
"severity": "높다",
- "text": "GatewaySubnet에서 경로 테이블을 사용하는 경우 게이트웨이 경로가 전파되었는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "VMware의 지원 임계값이므로 vSAN 사용량이 75% 미만인지 모니터링하기 위해 중요한 경고가 생성되었는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"severity": "높다",
- "text": "ExpressRoute를 사용하는 경우 온-프레미스 라우팅은 동적이어야 하며, 연결 오류가 발생할 경우 회로의 나머지 연결로 수렴해야 합니다. 로드는 두 연결 모두에서 이상적으로는 액티브/액티브로 공유해야 하지만 액티브/패시브도 지원됩니다.",
- "waf": "신뢰도"
+ "text": "Azure Service Health 경고 및 알림에 대해 경고가 구성되었는지 확인",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"severity": "보통",
- "text": "ExpressRoute 회로의 두 물리적 링크가 네트워크에 있는 두 개의 고유한 에지 디바이스에 연결되어 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
+ "text": "처리를 위해 Azure Storage 계정 또는 Azure EventHub로 보내도록 Azure VMware Solution 로깅 구성",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "BFD(Bidirectional Forwarding Detection)가 고객 또는 프로바이더 에지 라우팅 디바이스에서 활성화되고 구성되도록 보장합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "VMware vSphere에 대한 심층적인 통찰력이 필요한 경우: 솔루션에서 vRealize Operations 및/또는 vRealize Network Insights가 사용됩니까?",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
"severity": "높다",
- "text": "복원력을 높이기 위해 ExpressRoute 게이트웨이를 서로 다른 피어링 위치에서 둘 이상의 회로에 연결합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "신뢰도"
+ "text": "VM에 대한 vSAN 스토리지 정책은 씩 프로비저닝을 적용하므로 기본 스토리지 정책이 아닌지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"severity": "보통",
- "text": "ExpressRoute 가상 네트워크 게이트웨이에 대한 진단 로그 및 경고를 구성합니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "vSAN은 유한한 리소스이므로 vSphere 컨텐츠 라이브러리가 vSAN에 배치되지 않도록 합니다.",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"severity": "보통",
- "text": "VNet 간 통신에 ExpressRoute 회로를 사용하지 마세요.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "공연"
+ "text": "백업 솔루션에 대한 데이터 저장소가 vSAN 스토리지 외부에 저장되어 있는지 확인합니다. Azure 네이티브 또는 디스크 풀 지원 데이터 저장소에서",
+ "waf": "작업"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "severity": "낮다",
- "text": "검사를 위해 Azure 트래픽을 하이브리드 위치로 보내지 마세요. 대신 'Azure의 트래픽이 Azure에 유지됨' 원칙을 따라 Azure의 리소스 간 통신이 Microsoft 백본 네트워크를 통해 발생하도록 합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure VMware Solution에서 실행되는 워크로드가 서버용 Azure Arc를 사용하여 하이브리드 관리되는지 확인합니다(Arc for Azure VMware Solution은 미리 보기 상태임).",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
- "severity": "높다",
- "text": "Azure Firewall을 사용하여 인터넷에 대한 Azure 아웃바운드 트래픽, HTTP/S가 아닌 인바운드 연결 및 East/West 트래픽 필터링(조직에 필요한 경우)을 제어합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure Log Analytics 및 Azure Monitor를 사용하여 Azure VMware Solution에서 실행되는 워크로드를 모니터링하는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"severity": "보통",
- "text": "글로벌 Azure Firewall 정책을 만들어 글로벌 네트워크 환경에서 보안 태세를 제어하고 모든 Azure Firewall 인스턴스에 할당합니다. Azure 역할 기반 액세스 제어를 통해 증분 방화벽 정책을 로컬 보안 팀에 위임하여 특정 지역의 요구 사항을 충족하는 세분화된 정책을 허용합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "text": "기존 업데이트 관리 도구 또는 Azure 업데이트 관리에 Azure VMware Solution에서 실행되는 워크로드 포함",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
- "severity": "낮다",
- "text": "조직에서 아웃바운드 연결을 보호하기 위해 이러한 솔루션을 사용하려는 경우 Firewall Manager 내에서 지원되는 파트너 SaaS 보안 공급자를 구성합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure Policy를 사용하여 Azure 관리, 모니터링 및 보안 솔루션에서 Azure VMware Solution 워크로드 온보딩",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
- "severity": "높다",
- "text": "응용 프로그램 규칙을 사용하여 지원되는 프로토콜에 대한 대상 호스트 이름에서 아웃바운드 트래픽을 필터링합니다. FQDN 기반 네트워크 규칙 및 DNS 프록시와 함께 Azure Firewall을 사용하여 다른 프로토콜을 통해 인터넷으로의 송신 트래픽을 필터링합니다.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "Azure VMware Solution에서 실행되는 워크로드가 클라우드용 Microsoft Defender에 온보딩되었는지 확인",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
- "severity": "높다",
- "text": "Azure Firewall 프리미엄을 사용하여 추가 보안 기능을 사용하도록 설정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "vSAN은 유한한 리소스이므로 백업이 vSAN에 저장되지 않도록 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
- "severity": "높다",
- "text": "추가 보호를 위해 Azure Firewall 위협 인텔리전스 모드를 경고 및 거부로 구성합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "모든 DR 솔루션을 고려하고 비즈니스에 가장 적합한 솔루션을 결정했습니까? [SRM/제트스트림/제르토/빔/...]",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
- "severity": "높다",
- "text": "추가 보호를 위해 Azure Firewall IDPS 모드를 거부로 구성합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "재해 복구 기술이 네이티브 Azure IaaS인 경우 Azure Site Recovery 사용Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
"severity": "높다",
- "text": "Virtual WAN에 연결되지 않은 VNet의 서브넷의 경우 인터넷 트래픽이 Azure Firewall 또는 네트워크 가상 어플라이언스로 리디렉션되도록 경로 테이블을 연결합니다.",
- "waf": "안전"
+ "text": "재해 솔루션 중 하나와 함께 자동화된 복구 계획을 사용하고 가능한 한 수동 작업을 피하십시오.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"severity": "보통",
- "text": "모든 Azure Firewall 배포에 대해 리소스별 대상 테이블을 사용하여 로그를 저장하는 진단 설정을 추가합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "작업"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "중요하다",
- "text": "Azure Firewall 클래식 규칙(있는 경우)에서 방화벽 정책으로 마이그레이션합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "작업"
+ "text": "지정학적 지역 쌍을 보조 재해 복구 환경으로 사용Use the geopolitical region pair as the secondary disaster recovery environment",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
"severity": "높다",
- "text": "Azure Firewall 서브넷에 /26 접두사를 사용합니다.",
- "waf": "안전"
+ "text": "지역 간에 2개의 서로 다른 주소 공간을 사용합니다(예: 서로 다른 지역에 대해 10.0.0.0/16 및 192.168.0.0/16).",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"severity": "보통",
- "text": "방화벽 정책 내의 규칙을 Rule Collection Groups(규칙 컬렉션 그룹) 및 Rule Collections(규칙 컬렉션)로 정렬하고 사용 빈도에 따라 정렬합니다.",
- "waf": "공연"
+ "text": "ExpressRoute Global Reach는 기본 및 보조 Azure VMware Solution 프라이빗 클라우드 간의 연결에 사용되나요, 아니면 네트워크 가상 어플라이언스를 통해 라우팅이 수행되나요?",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"severity": "보통",
- "text": "IP 그룹 또는 IP 접두사를 사용하여 IP 테이블 규칙의 수를 줄입니다.",
- "waf": "공연"
+ "text": "모든 백업 솔루션을 고려하고 비즈니스에 가장 적합한 솔루션을 결정했습니까? [ MABS/CommVault/Metallic.io/Veeam/입니다. ]",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"severity": "보통",
- "text": "와일드카드를 DNAT의 소스 IP로 사용하지 마십시오(예: * 또는 any). 들어오는 DNAT에 대한 소스 IP를 지정해야 합니다.",
- "waf": "공연"
+ "text": "Azure VMware Solution 프라이빗 클라우드와 동일한 지역에 백업 솔루션 배포Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"severity": "보통",
- "text": "SNAT 포트 사용량을 모니터링하고, NAT 게이트웨이 설정을 평가하고, 원활한 장애 조치(failover)를 보장하여 SNAT 포트 고갈을 방지합니다. 포트 수가 제한에 가까워지면 SNAT 고갈이 임박했을 수 있다는 신호입니다.",
- "waf": "공연"
+ "text": "vSan의 외부, Azure 네이티브 구성 요소에 백업 솔루션 배포",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
- "severity": "높다",
- "text": "Azure Firewall 프리미엄을 사용하는 경우 TLS 검사를 사용하도록 설정합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "Azure 플랫폼에서 관리하는 VMware 구성 요소의 복원을 요청하는 프로세스가 마련되어 있나요?",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
"severity": "낮다",
- "text": "웹 범주를 사용하여 특정 주제에 대한 아웃바운드 액세스를 허용하거나 거부할 수 있습니다.",
- "waf": "공연"
+ "text": "수동 배포의 경우 모든 구성 및 배포를 문서화해야 합니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
- "severity": "보통",
- "text": "TLS 검사의 일환으로 검사를 위해 Azure App Gateway에서 트래픽을 수신하도록 계획합니다.",
- "waf": "공연"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "수동 배포의 경우 Azure VMware Solution 프라이빗 클라우드에서 실수로 인한 작업을 방지하기 위해 리소스 잠금을 구현하는 것이 좋습니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
- "severity": "보통",
- "text": "Azure Firewall DNS 프록시 구성을 사용하도록 설정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "자동화된 배포의 경우 최소한의 프라이빗 클라우드를 배포하고 필요에 따라 확장합니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
- "severity": "높다",
- "text": "Azure Firewall을 Azure Monitor와 통합하고 진단 로깅을 사용하도록 설정하여 방화벽 로그를 저장하고 분석합니다.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "자동화된 배포의 경우 배포를 시작하기 전에 할당량을 요청하거나 예약합니다",
"waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
"severity": "낮다",
- "text": "방화벽 규칙에 대한 백업 구현Implement backups for your firewall rules",
+ "text": "자동화된 배포의 경우 적절한 거버넌스를 위해 자동화 또는 Azure Policy를 통해 관련 리소스 잠금을 만들어야 합니다",
"waf": "작업"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
- "severity": "높다",
- "text": "컨트롤 플레인 트래픽을 차단하는 0.0.0.0/0 경로 또는 NSG 규칙과 같이 가상 네트워크에 삽입된 Azure PaaS 서비스에 대한 컨트롤 플레인 통신을 중단하지 마세요.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "ExR 인증 키에 대해 사람이 이해할 수 있는 이름을 구현하여 키의 목적/용도를 쉽게 식별할 수 있습니다.",
+ "waf": "작업"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
- "severity": "보통",
- "text": "프라이빗 엔드포인트 및 ExpressRoute 프라이빗 피어링을 통해 온-프레미스에서 Azure PaaS 서비스에 액세스하세요. 이 방법을 사용하면 공용 인터넷을 통해 전송되지 않습니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "Azure VMware Solution 및 ExpressRoute를 배포하는 데 별도의 서비스 원칙을 사용하는 경우 Key Vault를 사용하여 비밀 및 권한 부여 키를 저장합니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
- "severity": "높다",
- "text": "모든 서브넷에서 기본적으로 가상 네트워크 서비스 엔드포인트를 사용하도록 설정하지 마세요.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "Azure VMware Solution은 제한된 수의 병렬 작업만 지원하므로 많은 리소스를 Azure VMware Solution 배포해야 하는 경우 IaC에서 작업을 직렬화하기 위한 리소스 종속성을 정의합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "severity": "낮다",
+ "text": "단일 Tier-1 게이트웨이를 사용하여 NSX-T 세그먼트의 자동화된 구성을 수행하는 경우 NSX-Manager API 대신 Azure Portal API를 사용합니다",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure Firewall 또는 NVA의 IP 주소 대신 FQDN을 사용하여 Azure PaaS 서비스에 대한 송신 트래픽을 필터링하여 데이터 반출을 방지합니다. Private Link를 사용하는 경우 모든 FQDN을 차단할 수 있으며, 그렇지 않으면 필요한 PaaS 서비스만 허용할 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "안전"
+ "text": "자동화된 스케일 아웃을 사용하려는 경우 Azure VMware Solution을 실행하는 구독에 대해 충분한 Azure VMware Solution 할당량을 적용해야 합니다",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
- "severity": "높다",
- "text": "게이트웨이 서브넷에 /27 이상의 접두사를 사용합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "자동 축소를 사용하려는 경우 이러한 작업을 수행하기 전에 스토리지 정책 요구 사항을 고려해야 합니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
- "severity": "높다",
- "text": "VirtualNetwork 서비스 태그를 사용하여 연결을 제한하는 NSG 인바운드 기본 규칙에 의존하지 마세요.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
+ "severity": "보통",
+ "text": "한 번에 하나의 크기 조정 작업만 수행할 수 있으므로 크기 조정 작업은 항상 단일 SDDC 내에서 직렬화되어야 합니다(여러 클러스터를 사용하는 경우에도)",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"severity": "보통",
- "text": "NSG를 사용하여 서브넷 간의 트래픽과 플랫폼 전체의 동쪽/서쪽 트래픽(랜딩 존 간 트래픽)을 보호할 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "안전"
+ "text": "아키텍처에 사용되는 제3자 솔루션에 대한 확장 작업을 고려하고 검증합니다(지원 여부)Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
"severity": "보통",
- "text": "NSG 및 애플리케이션 보안 그룹을 사용하여 랜딩 존 내의 트래픽을 마이크로 세그먼트화하고 중앙 NVA를 사용하여 트래픽 흐름을 필터링하지 않도록 합니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "안전"
+ "text": "자동화에서 환경에 대한 규모 확장/축소 최대 한도 정의 및 적용Define and enforce scale in/out maximum limits for your environment in the automations",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
"severity": "보통",
- "text": "VNet 흐름 로그를 사용하도록 설정하고 트래픽 분석에 제공하여 내부 및 외부 트래픽 흐름에 대한 인사이트를 얻을 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "안전"
+ "text": "모니터링 규칙을 구현하여 자동화된 조정 작업을 모니터링하고 성공 및 실패를 모니터링하여 적절한(자동) 응답을 사용하도록 설정합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
- "severity": "보통",
- "text": "1,000개의 규칙 제한으로 인해 NSG당 900개 이상의 NSG 규칙을 구현하지 마세요.",
- "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "MON을 사용하는 경우 동시에 구성된 VM의 제한(HCX에 대한 MON 제한[400 - 표준, 1000 - 대형 어플라이언스])을 알고 있어야 합니다.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
- "severity": "보통",
- "text": "시나리오가 Virtual WAN 라우팅 디자인 목록에 명시적으로 설명된 경우 Virtual WAN을 사용합니다.",
- "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
- "waf": "작업"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "MON을 사용하는 경우 100개 이상의 네트워크 확장에서 MON을 사용하도록 설정할 수 없습니다",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
"severity": "보통",
- "text": "Azure 지역당 Virtual WAN 허브를 사용하여 공통 글로벌 Azure Virtual WAN을 통해 Azure 지역 간에 여러 랜딩 존을 함께 연결합니다.",
+ "text": "마이그레이션에 VPN 연결을 사용하는 경우 그에 따라 MTU 크기를 조정합니다.",
"waf": "공연"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"severity": "보통",
- "text": "아웃바운드 인터넷 트래픽 보호 및 필터링을 위해 보안 허브에 Azure Firewall을 배포합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "text": "Azure(500Mbps 이하)에 연결하는 낮은 연결 지역의 경우 HCX WAN 최적화 어플라이언스 배포를 고려합니다.",
+ "waf": "공연"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"severity": "보통",
- "text": "Virtual WAN 네트워크 아키텍처가 식별된 아키텍처 시나리오에 맞는지 확인합니다.",
+ "text": "마이그레이션이 클라우드 어플라이언스가 아닌 온-프레미스 어플라이언스에서 시작되는지 확인합니다(역방향 마이그레이션을 수행하지 않음).",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"severity": "보통",
- "text": "Virtual WAN용 Azure Monitor Insights를 사용하여 Virtual WAN의 엔드투엔드 토폴로지, 상태 및 주요 메트릭을 모니터링합니다.",
- "waf": "작업"
+ "text": "Azure NetApp Files를 사용하여 Azure VMware Solution용 스토리지를 확장하는 경우 VM에 직접 연결하는 대신 VMware 데이터 저장소로 사용하는 것이 좋습니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"severity": "보통",
- "text": "이러한 흐름을 명시적으로 차단해야 하는 경우가 아니면 Virtual WAN에서 분기 간 트래픽을 사용하지 않도록 설정하지 마세요.",
+ "text": "전용 ExpressRoute 게이트웨이가 외부 데이터 스토리지 솔루션에 사용되고 있는지 확인합니다.",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"severity": "보통",
- "text": "AS-Path는 ExpressRoute 또는 VPN보다 유연하므로 허브 라우팅 기본 설정으로 사용합니다.",
+ "text": "외부 데이터 스토리지 솔루션에 사용되는 ExpressRoute 게이트웨이에서 FastPath를 사용하도록 설정되어 있는지 확인합니다.",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
- "severity": "보통",
- "text": "Virtual WAN에서 레이블 기반 전파를 구성하지 않으면 가상 허브 간의 연결이 손상됩니다.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "확장된 클러스터를 사용하는 경우 선택한 재해 복구 솔루션이 공급업체에서 지원되는지 확인합니다",
"waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"severity": "높다",
- "text": "가상 허브에 /23 접두사 이상을 할당하여 충분한 IP 공간을 사용할 수 있도록 합니다.",
+ "text": "확장된 클러스터를 사용하는 경우 제공된 SLA가 요구 사항을 충족하는지 확인합니다",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
"severity": "높다",
- "text": "Azure Policy를 전략적으로 활용하고, 정책 이니셔티브를 사용하여 관련 정책을 그룹화하여 환경에 대한 컨트롤을 정의합니다.",
- "waf": "안전"
+ "text": "확장된 클러스터를 사용하는 경우 두 ExpressRoute 회로가 모두 연결 허브에 연결되어 있는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "보통",
- "text": "규정 및 규정 준수 요구 사항을 Azure Policy 정의 및 Azure 역할 할당에 매핑합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "확장된 클러스터를 사용하는 경우 두 ExpressRoute 회로 모두에서 GlobalReach를 사용하도록 설정되어 있는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "보통",
- "text": "상속된 범위에서 할당할 수 있도록 중간 루트 관리 그룹에서 Azure Policy 정의를 설정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
+ "severity": "높다",
+ "text": "사이트 재해 허용 범위 설정을 적절하게 고려하고 필요한 경우 비즈니스에 맞게 변경하십시오.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"severity": "높다",
- "text": "필요한 경우 최하위 수준에서 제외를 사용하여 가장 적절한 수준에서 정책 할당을 관리합니다.",
- "waf": "안전"
+ "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 Logic App 호스팅 계획 선택Select the right Logic App hosting plan based on your business & SLO requirements",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "낮다",
- "text": "Azure Policy를 사용하여 사용자가 구독/관리 그룹 수준에서 프로비전할 수 있는 서비스를 제어합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
+ "severity": "높다",
+ "text": "영역 중복 및 가용성 영역을 사용하여 지역 오류로부터 논리 앱 보호Protect logic apps from region failures with zone redundancy and availability zones",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
"severity": "높다",
- "text": "가능한 경우 기본 제공 정책을 사용하여 운영 오버헤드를 최소화합니다.",
- "waf": "안전"
+ "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
+ "severity": "높다",
+ "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
+ "severity": "보통",
+ "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 논리 앱 코드를 보호합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "description": "Resource Policy Contributor 역할을 특정 범위에 할당하면 정책 관리를 관련 팀에 위임할 수 있습니다. 예를 들어 중앙 IT 팀은 관리 그룹 수준 정책을 감독하고 응용 프로그램 팀은 구독에 대한 정책을 처리하여 조직 표준을 준수하는 분산 거버넌스를 가능하게 할 수 있습니다.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"severity": "보통",
- "text": "특정 범위에서 기본 제공 Resource Policy Contributor 역할을 할당하여 응용 프로그램 수준 거버넌스를 사용하도록 설정합니다.",
- "waf": "안전"
+ "text": "ACSS(Azure Center for SAP solutions)는 SAP를 Azure의 최상위 워크로드로 만드는 Azure 제품입니다. ACSS는 Azure에서 SAP 시스템을 통합 워크로드로 만들고 실행할 수 있도록 하는 엔드투엔드 솔루션으로, 혁신을 위한 보다 원활한 기반을 제공합니다. 신규 및 기존 Azure 기반 SAP 시스템 모두에 대한 관리 기능을 활용할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"severity": "보통",
- "text": "상속된 범위에서 제외를 통해 관리하지 않도록 루트 관리 그룹 범위에서 수행된 Azure Policy 할당 수를 제한합니다.",
- "waf": "안전"
+ "text": "Azure는 Linux 및 Windows에서 SAP 배포 자동화를 지원합니다. SAP Deployment Automation Framework는 SAP 환경을 배포, 설치 및 유지 관리할 수 있는 오픈 소스 오케스트레이션 도구입니다.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
"severity": "보통",
- "text": "데이터 주권 요구 사항이 있는 경우 이를 적용하기 위해 Azure 정책을 배포해야 합니다.",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "안전"
+ "text": "RTO를 충족하는 시점과 시간 프레임에서 프로덕션 데이터베이스에 대한 특정 시점으로 복구를 수행합니다. 특정 시점 복구에는 일반적으로 DBMS 계층 또는 SAP를 통해 데이터를 삭제하는 운영자 오류가 포함됩니다",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"severity": "보통",
- "text": "Sovereign Landing Zone의 경우 주권 정책 기준을 배포하고 올바른 관리 그룹 수준에서 할당합니다.",
- "waf": "안전"
+ "text": "백업 및 복구 시간을 테스트하여 재해 발생 후 모든 시스템을 동시에 복원하기 위한 RTO 요구 사항을 충족하는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
- "severity": "보통",
- "text": "Sovereign Landing Zone의 경우 정책 매핑에 대한 Sovereign Control 목표를 문서화합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "쌍을 이루는 지역 간에 표준 스토리지를 복제할 수 있지만 표준 스토리지를 사용하여 데이터베이스 또는 가상 하드 디스크를 저장할 수는 없습니다. 사용하는 쌍을 이루는 지역 간에만 백업을 복제할 수 있습니다. 다른 모든 데이터의 경우 SQL Server Always On 또는 SAP HANA 시스템 복제와 같은 네이티브 DBMS 기능을 사용하여 복제를 실행합니다. SAP 애플리케이션 계층에 Site Recovery, rsync 또는 robocopy 및 기타 타사 소프트웨어의 조합을 사용합니다.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "보통",
- "text": "Sovereign Landing Zone의 경우 '정책 매핑에 대한 Sovereign Control 목표'를 관리하기 위한 프로세스가 마련되어 있는지 확인합니다.",
- "waf": "안전"
+ "text": "Azure 가용성 영역을 사용하여 고가용성을 달성하는 경우 SAP 애플리케이션 서버와 데이터베이스 서버 간의 대기 시간을 고려해야 합니다. 대기 시간이 긴 영역의 경우 SAP 애플리케이션 서버와 데이터베이스 서버가 항상 동일한 영역에서 실행되도록 운영 절차를 마련해야 합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "온-프레미스에서 기본 및 보조 Azure 재해 복구 지역으로의 ExpressRoute 연결을 설정합니다. 또한 ExpressRoute를 사용하는 대신 온-프레미스에서 주 및 보조 Azure 재해 복구 지역으로 VPN 연결을 설정하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "낮다",
+ "text": "DR 지역에서 데이터의 암호를 해독할 수 있도록 지역 간에 인증서, 비밀 또는 키와 같은 키 자격 증명 모음 콘텐츠를 복제합니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"severity": "보통",
- "text": "Azure RBAC(Azure 역할 기반 액세스 제어), 데이터 주권 요구 사항 또는 데이터 보존 정책에 따라 별도의 작업 영역이 필요한 경우를 제외하고 단일 모니터 로그 작업 영역을 사용하여 플랫폼을 중앙에서 관리합니다.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "작업"
+ "text": "기본 및 재해 복구 가상 네트워크를 피어링합니다. 예를 들어 HANA 시스템 복제의 경우 SAP HANA DB 가상 네트워크를 재해 복구 사이트의 SAP HANA DB 가상 네트워크에 피어링해야 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "severity": "낮다",
+ "text": "SAP 배포에 Azure NetApp Files 스토리지를 사용하는 경우 최소한 두 지역의 프리미엄 계층에 두 개의 Azure NetApp Files 계정을 만듭니다.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "높다",
- "text": "로그 보존 요구 사항이 12년을 초과하는 경우 로그를 Azure Storage로 내보냅니다. Write-once, Read-Many 정책과 함께 변경할 수 없는 스토리지를 사용하여 사용자가 지정한 간격 동안 데이터를 지우거나 수정할 수 없도록 합니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "작업"
+ "text": "기본 데이터베이스 복제 기술을 사용하여 HA 쌍의 데이터베이스를 동기화해야 합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
- "severity": "보통",
- "text": "Azure Policy를 사용하여 OS 수준 VM(가상 머신) 구성 드리프트를 모니터링합니다. 정책을 통해 Azure Automanage Machine Configuration 감사 기능을 사용하도록 설정하면 애플리케이션 팀 워크로드가 적은 노력으로 기능 기능을 즉시 사용할 수 있습니다.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "기본 VNet(가상 네트워크)에 대한 CIDR은 DR 사이트 VNet의 CIDR과 충돌하거나 겹치지 않아야 합니다",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
- "severity": "보통",
- "text": "Azure Update Manager를 Azure의 Windows 및 Linux VM에 대한 패치 메커니즘으로 사용합니다.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "Site Recovery를 사용하여 응용 프로그램 서버를 DR 사이트에 복제합니다. Site Recovery는 중앙 서비스 클러스터 VM을 DR 사이트에 복제하는 데도 도움이 될 수 있습니다. DR을 호출할 때 DR 사이트에서 Linux Pacemaker 클러스터를 다시 구성해야 합니다(예: VIP 또는 SBD 바꾸기, corosync.conf 실행 등).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
- "severity": "보통",
- "text": "Azure Arc를 사용하여 Azure 외부의 Windows 및 Linux VM에 대한 패치 메커니즘으로 Azure Update Manager를 사용합니다.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "단일 장애 지점에 대한 SAP 소프트웨어의 가용성을 고려합니다. 여기에는 SAP NetWeaver 및 SAP S/4HANA 아키텍처, SAP ABAP 및 ASCS + SCS에서 사용되는 DBMS와 같은 애플리케이션 내의 단일 실패 지점이 포함됩니다. 또한 SAP Web Dispatcher와 같은 다른 도구도 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/networkWatchers",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
- "severity": "보통",
- "text": "Network Watcher를 사용하여 트래픽 흐름을 사전에 모니터링합니다.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "SAP 및 SAP 데이터베이스의 경우 자동 장애 조치(failover) 클러스터를 구현하는 것이 좋습니다. Windows에서 Windows Server 장애 조치(failover) 클러스터링은 장애 조치(failover)를 지원합니다. Linux에서 Linux Pacemaker 또는 SIOS Protection Suite 및 Veritas InfoScale과 같은 타사 툴은 장애 조치를 지원합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
- "severity": "보통",
- "text": "인사이트 및 보고를 위해 Azure Monitor 로그를 사용합니다.",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "Azure는 기본 및 보조 VM이 DBMS 데이터에 대한 스토리지를 공유하는 아키텍처를 지원하지 않습니다. DBMS 계층의 경우 일반적인 아키텍처 패턴은 기본 및 보조 VM에서 사용하는 것과 다른 스토리지 스택을 사용하여 동시에 데이터베이스를 복제하는 것입니다.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "보통",
- "text": "Azure Monitor 경고를 사용하여 운영 경고를 생성합니다.",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "DBMS 데이터 및 트랜잭션/다시 실행 로그 파일은 Azure 지원 블록 스토리지 또는 Azure NetApp Files에 저장됩니다. Azure Files 또는 Azure Premium Files는 DBMS 데이터 및/또는 SAP 워크로드가 있는 다시 실행 로그 파일에 대한 스토리지로 지원되지 않습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "ASCS + SCS 구성 요소 및 특정 고가용성 시나리오에 대해 Windows에서 Azure 공유 디스크를 사용할 수 있습니다. SAP 애플리케이션 계층 구성 요소 및 DBMS 계층에 대해 장애 조치(failover) 클러스터를 별도로 설정합니다. Azure는 현재 SAP 애플리케이션 계층 구성 요소와 DBMS 계층을 하나의 장애 조치(failover) 클러스터로 결합하는 고가용성 아키텍처를 지원하지 않습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
- "severity": "보통",
- "text": "Azure Automation 계정을 통해 변경 및 인벤토리 추적을 사용하는 경우 Log Analytics 작업 영역과 자동화 계정을 함께 연결하는 데 지원되는 지역을 선택했는지 확인합니다.",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "SAP ASCS(애플리케이션 계층 구성 요소) 및 DBMS 계층에 대한 대부분의 장애 조치(failover) 클러스터에는 장애 조치(failover) 클러스터에 대한 가상 IP 주소가 필요합니다. Azure Load Balancer는 다른 모든 경우에 대한 가상 IP 주소를 처리해야 합니다. 한 가지 설계 원칙은 클러스터 구성당 하나의 부하 분산 장치를 사용하는 것입니다. 부하 분산 장치의 표준 버전(표준 Load Balancer SKU)을 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "낮다",
- "text": "Azure Backup을 사용하는 경우 기본 설정은 GRS이므로 백업에 올바른 백업 유형(GRS, ZRS & LRS)을 사용합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "로드 밸런서에서 유동 IP가 사용하도록 설정되어 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
- "severity": "보통",
- "text": "Azure 게스트 정책을 사용하여 VM 확장을 통해 소프트웨어 구성을 자동으로 배포하고 규격 기준 VM 구성을 적용합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "고가용성 인프라를 배포하기 전에 선택한 지역에 따라 Azure 가용성 집합 또는 가용성 영역을 사용하여 배포할지 여부를 결정합니다.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "description": "Azure Policy의 게스트 구성 기능을 사용하여 컴퓨터 설정(예: OS, 애플리케이션, 환경)을 감사하고 수정하여 리소스가 예상 구성에 맞게 조정되도록 하고, 업데이트 관리는 VM에 대한 패치 관리를 적용할 수 있습니다.",
- "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",
- "severity": "보통",
- "text": "Azure Policy를 통해 VM 보안 구성 드리프트를 모니터링합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "SAP 구성 요소(중앙 서비스, 애플리케이션 서버 및 데이터베이스)용 애플리케이션에 대한 인프라 SLA를 충족하려면 모든 구성 요소에 대해 동일한 고가용성 옵션(VM, 가용성 집합, 가용성 영역)을 선택해야 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
- "severity": "보통",
- "text": "Azure-to-Azure Virtual Machines 재해 복구 시나리오에는 Azure Site Recovery를 사용합니다. 이렇게 하면 지역 간에 워크로드를 복제할 수 있습니다.",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "동일한 가용성 집합에 서로 다른 역할의 서버를 혼합하지 마십시오. 중앙 서비스 VM, 데이터베이스 VM, 애플리케이션 VM을 자체 가용성 집합으로 유지",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"severity": "보통",
- "text": "Azure 네이티브 백업 기능 또는 Azure 호환 타사 백업 솔루션을 사용합니다.",
- "waf": "작업"
+ "text": "근접 배치 그룹을 사용하지 않는 한 Azure 가용성 영역 내에 Azure 가용성 집합을 배포할 수 없습니다.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"severity": "높다",
- "text": "Azure Front Door 및 Azure Application Gateway와 같은 애플리케이션 배달 서비스에서 WAF 로그를 저장하는 진단 설정을 추가합니다. 로그를 정기적으로 검토하여 공격 및 가양성 탐지를 확인합니다.",
- "waf": "작업"
+ "text": "가용성 집합을 만들 때 사용 가능한 최대 장애 도메인 및 업데이트 도메인 수를 사용합니다. 예를 들어 하나의 가용성 집합에 두 개 이상의 VM을 배포하는 경우 Azure의 계획된 유지 관리 외에도 잠재적인 물리적 하드웨어 오류, 네트워크 중단 또는 전원 중단의 영향을 제한하기 위해 최대 장애 도메인 수(3개)와 충분한 업데이트 도메인을 사용합니다. 장애 도메인의 기본 수는 2개이며 나중에 온라인으로 변경할 수 없습니다.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
- "severity": "보통",
- "text": "Azure Front Door 및 Azure Application Gateway와 같은 애플리케이션 배달 서비스에서 Microsoft Sentinel로 WAF 로그를 보냅니다. 공격을 탐지하고 WAF 텔레메트리를 전체 Azure 환경에 통합합니다.",
- "waf": "작업"
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "가용성 집합 배포에서 Azure 근접 배치 그룹을 사용하는 경우 세 가지 SAP 구성 요소(중앙 서비스, 애플리케이션 서버 및 데이터베이스)가 모두 동일한 근접 배치 그룹에 있어야 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "높다",
- "text": "Azure Key Vault를 사용하여 비밀과 자격 증명을 저장합니다.",
- "waf": "안전"
+ "text": "SAP SID당 하나의 근접 배치 그룹을 사용합니다. 그룹은 가용성 영역 또는 Azure 지역에 걸쳐 있지 않습니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
- "severity": "보통",
- "text": "서로 다른 애플리케이션 및 지역에 대해 서로 다른 Azure Key Vault를 사용하여 트랜잭션 규모 제한을 방지하고 비밀에 대한 액세스를 제한합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "운영 체제에 따라 다음 서비스 중 하나를 사용하여 SAP 중앙 서비스 클러스터를 실행합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "보통",
- "text": "삭제된 개체에 대한 보존 보호를 허용하기 위해 일시 삭제 및 제거 정책을 사용하도록 설정된 Azure Key Vault를 프로비전합니다.",
- "waf": "안전"
+ "text": "Azure는 현재 동일한 Linux Pacemaker 클러스터에서 ASCS와 DB HA의 결합을 지원하지 않습니다. 개별 클러스터로 분리합니다. 그러나 최대 5개의 여러 중앙 서비스 클러스터를 한 쌍의 VM으로 결합할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"severity": "보통",
- "text": "키, 비밀 및 인증서를 영구적으로 삭제할 수 있는 권한 부여를 특수 사용자 지정 Microsoft Entra ID 역할로 제한하여 최소 권한 모델을 따릅니다.",
- "waf": "안전"
+ "text": "가용성 집합 또는 가용성 영역의 고가용성 쌍에 두 VM을 모두 배포합니다. 이러한 VM은 크기가 동일하고 스토리지 구성이 동일해야 합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"severity": "보통",
- "text": "공용 인증 기관을 통해 인증서 관리 및 갱신 프로세스를 자동화하여 관리를 용이하게 합니다.",
- "waf": "안전"
+ "text": "Azure는 RHEL(Red Hat Enterprise Linux)에서 실행되는 동일한 고가용성 클러스터에 SAP HANA, ASCS/SCS 및 ERS 인스턴스의 설치 및 구성을 지원합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "보통",
- "text": "키 및 인증서 교체를 위한 자동화된 프로세스를 설정합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "프리미엄 관리형 SSD에서 모든 프로덕션 시스템을 실행하고 Azure NetApp Files 또는 Ultra Disk Storage를 사용합니다. 적어도 OS 디스크는 프리미엄 계층에 있어야 더 나은 성능과 최상의 SLA를 달성할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "보통",
- "text": "자격 증명 모음에서 방화벽 및 가상 네트워크 서비스 엔드포인트 또는 프라이빗 엔드포인트를 사용하도록 설정하여 키 자격 증명 모음에 대한 액세스를 제어합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "Azure의 SAP HANA는 SAP에서 인증한 스토리지 유형에서만 실행해야 합니다. 특정 볼륨은 해당되는 경우 특정 디스크 구성에서 실행되어야 합니다. 이러한 구성에는 Write Accelerator 사용 및 Premium Storage 사용이 포함됩니다. 또한 스토리지에서 실행되는 파일 시스템이 시스템에서 실행되는 DBMS와 호환되는지 확인해야 합니다.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "SAP 워크로드에 사용하는 스토리지 유형에 따라 고가용성을 구성하는 것이 좋습니다. Azure에서 사용할 수 있는 일부 스토리지 서비스는 Azure Site Recovery에서 지원되지 않으므로 고가용성 구성이 다를 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "일부 지역에서는 다양한 네이티브 Azure Storage 서비스(예: Azure Files, Azure NetApp Files, Azure Shared Disk)를 사용하지 못할 수 있습니다. 따라서 장애 조치(failover) 후 DR 지역에서 유사한 SAP를 설정하려면 해당 스토리지 서비스가 DR 사이트에서 제공되는지 확인합니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
"severity": "보통",
- "text": "플랫폼 중앙 Azure Monitor Log Analytics 작업 영역을 사용하여 Key Vault의 각 인스턴스 내에서 키, 인증서 및 비밀 사용을 감사합니다.",
- "waf": "안전"
+ "text": "SAP System Start-Stop을 자동화하여 비용을 관리합니다.",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "보통",
- "text": "Key Vault 인스턴스화 및 권한 있는 액세스를 위임하고 Azure Policy를 사용하여 일관된 규정 준수 구성을 적용합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "낮다",
+ "text": "SAP HANA와 함께 Azure Premium Storage를 사용하는 경우 Azure 표준 SSD 스토리지를 사용하여 비용에 민감한 스토리지 솔루션을 선택할 수 있습니다. 그러나 표준 SSD 또는 표준 HDD Azure Storage를 선택하면 개별 VM의 SLA에 영향을 줍니다. 또한 비프로덕션 환경과 같이 I/O 처리량이 낮고 대기 시간이 짧은 시스템의 경우 더 낮은 시리즈 VM을 사용할 수 있습니다.",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "보통",
- "text": "애플리케이션별, 환경별, 지역별 Azure Key Vault를 사용합니다.",
- "waf": "안전"
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "낮다",
+ "text": "저렴한 대체 구성(다목적)으로 비프로덕션 HANA 데이터베이스 서버 VM에 대해 저성능 SKU를 선택할 수 있습니다. 그러나 E 시리즈와 같은 일부 VM 유형은 HANA 인증(SAP HANA 하드웨어 디렉터리)되지 않았거나 1ms 미만의 스토리지 대기 시간을 달성할 수 없습니다.",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "보통",
- "text": "사용자 고유의 키를 가져오려는 경우 고려되는 모든 서비스에서 지원되지 않을 수 있습니다. 불일치가 원하는 결과를 방해하지 않도록 관련 완화를 구현합니다. 대기 시간을 최소화하는 적절한 지역 쌍과 재해 복구 지역을 선택합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "관리 그룹, 구독, 리소스 그룹 및 리소스에 대한 RBAC 모델 적용Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
"waf": "안전"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "보통",
- "text": "Sovereign Landing Zone의 경우 Azure Key Vault 관리형 HSM을 사용하여 비밀과 자격 증명을 저장합니다.",
+ "text": "클라우드 커넥터를 통해 SAP 클라우드 애플리케이션에서 SAP 온-프레미스(IaaS 포함)로 ID를 전달하기 위한 보안 주체 전파 적용",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "보통",
- "text": "Microsoft Entra ID 보고 기능을 사용하여 액세스 제어 감사 보고서를 생성합니다.",
+ "text": "SAML을 사용하여 Azure AD로 SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics 및 SAP C4C와 같은 SAP SaaS 애플리케이션에 대한 SSO를 구현합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
- "severity": "높다",
- "text": "모든 구독에 대해 Defender 클라우드 보안 태세 관리를 사용하도록 설정합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAML을 사용하여 SAP Fiori 및 SAP Web GUI와 같은 SAP NetWeaver 기반 웹 애플리케이션에 대한 SSO를 구현합니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
- "severity": "높다",
- "text": "모든 구독에서 서버에 대해 Defender 클라우드 워크로드 보호 계획을 사용하도록 설정합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAML을 사용하여 SAP Fiori 및 SAP Web GUI와 같은 SAP NetWeaver 기반 웹 애플리케이션에 대한 SSO를 구현합니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
- "severity": "높다",
- "text": "모든 구독에서 Azure 리소스에 대한 Defender 클라우드 워크로드 보호 계획을 사용하도록 설정합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAP NetWeaver SSO 또는 파트너 솔루션을 사용하여 SAP GUI에 대한 SSO를 구현할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "severity": "높다",
- "text": "IaaS 서버에서 Endpoint Protection을 사용하도록 설정합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAP GUI 및 웹 브라우저 액세스를 위한 SSO의 경우 구성 및 유지 관리가 용이하여 SNC/Kerberos/SPNEGO(간단하고 보호된 GSSAPI 협상 메커니즘)를 구현합니다. X.509 클라이언트 인증서를 사용하는 SSO의 경우 SAP SSO 솔루션의 구성 요소인 SAP 보안 로그인 서버를 고려합니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
"severity": "보통",
- "text": "Azure Monitor 로그 및 클라우드용 Defender를 통해 기본 운영 체제 패치 드리프트를 모니터링합니다.",
+ "text": "SAP GUI 및 웹 브라우저 액세스를 위한 SSO의 경우 구성 및 유지 관리가 용이하여 SNC/Kerberos/SPNEGO(간단하고 보호된 GSSAPI 협상 메커니즘)를 구현합니다. X.509 클라이언트 인증서를 사용하는 SSO의 경우 SAP SSO 솔루션의 구성 요소인 SAP 보안 로그인 서버를 고려합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
"severity": "보통",
- "text": "기본 리소스 구성을 중앙 집중식 Azure Monitor Log Analytics 작업 영역에 연결합니다.",
+ "text": "SAP NetWeaver용 OAuth를 사용하여 SSO를 구현하여 타사 또는 사용자 지정 애플리케이션이 SAP NetWeaver OData 서비스에 액세스할 수 있도록 합니다.",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"severity": "보통",
- "text": "Sovereign Landing Zone의 경우 Entra ID 테넌트에서 투명 로그를 사용하도록 설정합니다.",
+ "text": "SAP HANA에 대한 SSO 구현",
"waf": "안전"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
"severity": "보통",
- "text": "Sovereign Landing Zone의 경우 Entra ID 테넌트에서 고객 Lockbox를 사용하도록 설정합니다.",
+ "text": "Azure AD를 RISE에서 호스트되는 SAP 시스템의 ID 공급자로 간주합니다. 자세한 내용은 Azure AD와 서비스 통합을 참조하세요.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
- "severity": "높다",
- "text": "스토리지 계정에 대한 보안 전송을 사용하도록 설정합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAP에 액세스하는 애플리케이션의 경우 보안 주체 전파를 사용하여 SSO를 설정할 수 있습니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
- "severity": "높다",
- "text": "스토리지 계정에 대해 컨테이너 일시 삭제를 사용하도록 설정하여 삭제된 컨테이너와 해당 콘텐츠를 복구합니다.",
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAP IAS(Identity Authentication Service)가 필요한 SAP BTP 서비스 또는 SaaS 솔루션을 사용하는 경우 SAP Cloud Identity Authentication Services와 Azure AD 간에 SSO를 구현하여 해당 SAP 서비스에 액세스하는 것이 좋습니다. 이 통합을 통해 SAP IAS는 프록시 ID 공급자 역할을 하고 중앙 사용자 저장소 및 ID 공급자인 Azure AD에 인증 요청을 전달할 수 있습니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "높다",
- "text": "Key Vault 비밀을 사용하여 자격 증명(가상 머신 사용자 암호), 인증서 또는 키와 같은 중요한 정보를 하드 코딩하지 않도록 합니다.",
- "waf": "작업"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
- "severity": "높다",
- "text": "Azure Cache for Redis에 대한 영역 중복성을 사용하도록 설정합니다. Azure Cache for Redis는 프리미엄 및 엔터프라이즈 계층에서 영역 중복 구성을 지원합니다. 영역 중복 캐시는 동일한 지역의 여러 Azure 가용성 영역에 노드를 배치할 수 있습니다. 데이터 센터 또는 AZ 중단을 단일 장애 지점으로 제거하고 캐시의 전반적인 가용성을 높입니다.",
- "waf": "신뢰도"
- },
- {
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
"severity": "보통",
- "text": "Azure Cache for Redis 인스턴스에 대한 데이터 지속성을 구성합니다. 캐시 데이터는 메모리에 저장되기 때문에 드물게 계획되지 않은 여러 노드의 오류로 인해 모든 데이터가 삭제될 수 있습니다. 데이터가 완전히 손실되는 것을 방지하기 위해 Redis 지속성을 사용하면 메모리 내 데이터의 주기적인 스냅숏을 만들어 저장소 계정에 저장할 수 있습니다.",
- "waf": "신뢰도"
+ "text": "SAP BTP에 대한 SSO 구현",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
"severity": "보통",
- "text": "지역 중복 스토리지 계정을 사용하여 Azure Cache for Redis 데이터를 유지하거나 지역 중복을 사용할 수 없는 경우 영역 중복을 유지합니다",
- "waf": "신뢰도"
+ "text": "SAP SuccessFactors를 사용하는 경우 Azure AD 자동화된 사용자 프로비저닝을 사용하는 것이 좋습니다. 이 통합을 통해 SAP SuccessFactors에 새 직원을 추가할 때 Azure AD에서 해당 사용자 계정을 자동으로 만들 수 있습니다. 필요에 따라 Microsoft 365 또는 Azure AD 지원하는 기타 SaaS 애플리케이션에서 사용자 계정을 만들 수 있습니다. SAP SuccessFactors에 이메일 주소의 쓰기 저장을 사용합니다.",
+ "waf": "안전"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
"severity": "보통",
- "text": "프리미엄 Azure Cache for Redis 인스턴스에 대한 수동 지역 복제를 구성합니다. 지역에서 복제는 일반적으로 두 개의 Azure 지역에 걸쳐 있는 둘 이상의 Azure Cache for Redis 인스턴스를 연결하는 메커니즘입니다. 지역에서 복제는 주로 지역 간 재해 복구를 위해 설계되었습니다. 두 개의 프리미엄 계층 캐시 인스턴스는 주 캐시에 대한 읽기 및 쓰기를 제공하는 방식으로 지역 복제를 통해 연결되며, 해당 데이터는 보조 캐시에 복제됩니다.",
- "waf": "신뢰도"
+ "text": "SAP 구독에 기존 관리 그룹 정책 적용",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
- "severity": "보통",
- "text": "ACSS(Azure Center for SAP solutions)는 SAP를 Azure의 최상위 워크로드로 만드는 Azure 제품입니다. ACSS는 Azure에서 SAP 시스템을 통합 워크로드로 만들고 실행할 수 있도록 하는 엔드투엔드 솔루션으로, 혁신을 위한 보다 원활한 기반을 제공합니다. 신규 및 기존 Azure 기반 SAP 시스템 모두에 대한 관리 기능을 활용할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "severity": "높다",
+ "text": "긴밀하게 결합된 애플리케이션을 동일한 SAP 구독에 통합하여 추가적인 라우팅 및 관리 복잡성 방지",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
"waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
- "severity": "보통",
- "text": "Azure는 Linux 및 Windows에서 SAP 배포 자동화를 지원합니다. SAP Deployment Automation Framework는 SAP 환경을 배포, 설치 및 유지 관리할 수 있는 오픈 소스 오케스트레이션 도구입니다.",
- "training": "https://github.com/Azure/sap-automation",
+ "severity": "높다",
+ "text": "구독을 배율 단위로 활용하고 리소스를 확장하려면 환경별로 구독을 배포하는 것이 좋습니다. 샌드박스, 비프로덕션, 프로덕션 ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
"waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
"service": "SAP",
- "severity": "보통",
- "text": "RTO를 충족하는 시점과 시간 프레임에서 프로덕션 데이터베이스에 대한 특정 시점으로 복구를 수행합니다. 특정 시점 복구에는 일반적으로 DBMS 계층 또는 SAP를 통해 데이터를 삭제하는 운영자 오류가 포함됩니다",
- "waf": "신뢰도"
+ "severity": "높다",
+ "text": "구독 프로비저닝의 일부로 할당량 증가 확인(예: 구독 내에서 사용 가능한 총 VM 코어)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
"service": "SAP",
- "severity": "보통",
- "text": "백업 및 복구 시간을 테스트하여 재해 발생 후 모든 시스템을 동시에 복원하기 위한 RTO 요구 사항을 충족하는지 확인합니다.",
- "waf": "신뢰도"
+ "severity": "낮다",
+ "text": "할당량 API는 Azure 서비스에 대한 할당량을 보고 관리하는 데 사용할 수 있는 REST API입니다. 필요한 경우 사용을 고려하십시오.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
"service": "SAP",
"severity": "높다",
- "text": "쌍을 이루는 지역 간에 표준 스토리지를 복제할 수 있지만 표준 스토리지를 사용하여 데이터베이스 또는 가상 하드 디스크를 저장할 수는 없습니다. 사용하는 쌍을 이루는 지역 간에만 백업을 복제할 수 있습니다. 다른 모든 데이터의 경우 SQL Server Always On 또는 SAP HANA 시스템 복제와 같은 네이티브 DBMS 기능을 사용하여 복제를 실행합니다. SAP 애플리케이션 계층에 Site Recovery, rsync 또는 robocopy 및 기타 타사 소프트웨어의 조합을 사용합니다.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "신뢰도"
+ "text": "가용성 영역에 배포하는 경우 할당량이 승인되면 VM의 영역 배포를 사용할 수 있는지 확인합니다. 필요한 구독, VM 시리즈, CPU 수 및 가용성 영역을 사용하여 지원 요청을 제출합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
"service": "SAP",
- "severity": "보통",
- "text": "Azure 가용성 영역을 사용하여 고가용성을 달성하는 경우 SAP 애플리케이션 서버와 데이터베이스 서버 간의 대기 시간을 고려해야 합니다. 대기 시간이 긴 영역의 경우 SAP 애플리케이션 서버와 데이터베이스 서버가 항상 동일한 영역에서 실행되도록 운영 절차를 마련해야 합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "높다",
+ "text": "예를 들어 선택한 배포 지역 내에서 필요한 서비스 및 기능을 사용할 수 있는지 확인합니다. ANF, 지역 등.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
"service": "SAP",
- "severity": "높다",
- "text": "온-프레미스에서 기본 및 보조 Azure 재해 복구 지역으로의 ExpressRoute 연결을 설정합니다. 또한 ExpressRoute를 사용하는 대신 온-프레미스에서 주 및 보조 Azure 재해 복구 지역으로 VPN 연결을 설정하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "비용 분류 및 리소스 그룹화를 위해 Azure 리소스 태그 활용(BillTo, 부서(또는 사업부), 환경(프로덕션, 스테이지, 개발), 계층(웹 계층, 애플리케이션 계층), 애플리케이션 소유자, 프로젝트 이름)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
- "severity": "낮다",
- "text": "DR 지역에서 데이터의 암호를 해독할 수 있도록 지역 간에 인증서, 비밀 또는 키와 같은 키 자격 증명 모음 콘텐츠를 복제합니다.",
+ "severity": "높다",
+ "text": "Azure Backup 서비스를 사용하여 HANA 데이터베이스를 보호할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
"service": "SAP",
"severity": "보통",
- "text": "기본 및 재해 복구 가상 네트워크를 피어링합니다. 예를 들어 HANA 시스템 복제의 경우 SAP HANA DB 가상 네트워크를 재해 복구 사이트의 SAP HANA DB 가상 네트워크에 피어링해야 합니다.",
+ "text": "HANA, Oracle 또는 DB2 데이터베이스용 Azure NetApp Files를 배포하는 경우 Azure 애플리케이션 일치 스냅샷 도구(AzAcSnap)를 사용하여 애플리케이션 일치 스냅샷을 만듭니다. AzAcSnap은 Oracle 데이터베이스도 지원합니다. 개별 VM이 아닌 중앙 VM에서 AzAcSnap을 사용하는 것이 좋습니다.",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
"service": "SAP",
- "severity": "낮다",
- "text": "SAP 배포에 Azure NetApp Files 스토리지를 사용하는 경우 최소한 두 지역의 프리미엄 계층에 두 개의 Azure NetApp Files 계정을 만듭니다.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "신뢰도"
+ "severity": "높다",
+ "text": "운영 체제와 SAP 시스템 간의 표준 시간대 일치를 확인합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
"service": "SAP",
- "severity": "높다",
- "text": "기본 데이터베이스 복제 기술을 사용하여 HA 쌍의 데이터베이스를 동기화해야 합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "severity": "보통",
+ "text": "동일한 클러스터에서 서로 다른 애플리케이션 서비스를 그룹화하지 마세요. 예를 들어 DRBD와 중앙 서비스 클러스터를 동일한 클러스터에 결합하지 마세요. 그러나 동일한 Pacemaker 클러스터를 사용하여 약 5개의 서로 다른 중앙 서비스(다중 SID 클러스터)를 관리할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
"service": "SAP",
- "severity": "높다",
- "text": "기본 VNet(가상 네트워크)에 대한 CIDR은 DR 사이트 VNet의 CIDR과 충돌하거나 겹치지 않아야 합니다",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "낮다",
+ "text": "Azure 실행 비용을 절감하고 최적화하기 위해 다시 알림 모델에서 개발/테스트 시스템을 실행하는 것이 좋습니다.",
+ "waf": "비용"
},
{
"checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
"service": "SAP",
- "severity": "높다",
- "text": "Site Recovery를 사용하여 응용 프로그램 서버를 DR 사이트에 복제합니다. Site Recovery는 중앙 서비스 클러스터 VM을 DR 사이트에 복제하는 데도 도움이 될 수 있습니다. DR을 호출할 때 DR 사이트에서 Linux Pacemaker 클러스터를 다시 구성해야 합니다(예: VIP 또는 SBD 바꾸기, corosync.conf 실행 등).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "SAP 자산을 관리하여 고객과 파트너 관계를 맺는 경우 Azure Lighthouse를 사용하는 것이 좋습니다. Azure Lighthouse를 사용하면 관리 서비스 공급자가 Azure 네이티브 ID 서비스를 사용하여 고객 환경에 인증할 수 있습니다. 고객은 언제든지 액세스 권한을 취소하고 서비스 제공업체의 조치를 감사할 수 있으므로 고객의 손에 제어 권한을 부여합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
"service": "SAP",
- "severity": "높다",
- "text": "단일 장애 지점에 대한 SAP 소프트웨어의 가용성을 고려합니다. 여기에는 SAP NetWeaver 및 SAP S/4HANA 아키텍처, SAP ABAP 및 ASCS + SCS에서 사용되는 DBMS와 같은 애플리케이션 내의 단일 실패 지점이 포함됩니다. 또한 SAP Web Dispatcher와 같은 다른 도구도 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "Azure Update Manager를 사용하여 단일 VM 또는 여러 VM에 대해 사용 가능한 업데이트의 상태를 확인하고 정기적인 패치를 예약하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
"service": "SAP",
- "severity": "높다",
- "text": "SAP 및 SAP 데이터베이스의 경우 자동 장애 조치(failover) 클러스터를 구현하는 것이 좋습니다. Windows에서 Windows Server 장애 조치(failover) 클러스터링은 장애 조치(failover)를 지원합니다. Linux에서 Linux Pacemaker 또는 SIOS Protection Suite 및 Veritas InfoScale과 같은 타사 툴은 장애 조치를 지원합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "낮다",
+ "text": "SAP Landscape Management(LaMa)를 사용하여 SAP Basis 운영을 최적화하고 관리합니다. Azure용 SAP LaMa 커넥터를 사용하여 SAP 시스템을 재배치, 복사, 복제 및 새로 고칩니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
"service": "SAP",
- "severity": "높다",
- "text": "Azure는 기본 및 보조 VM이 DBMS 데이터에 대한 스토리지를 공유하는 아키텍처를 지원하지 않습니다. DBMS 계층의 경우 일반적인 아키텍처 패턴은 기본 및 보조 VM에서 사용하는 것과 다른 스토리지 스택을 사용하여 동시에 데이터베이스를 복제하는 것입니다.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "SAP용 Azure Monitor 솔루션을 사용하여 Azure에서 SAP 워크로드(SAP HANA, 고가용성 SUSE 클러스터 및 SQL 시스템)를 모니터링합니다. SAP Solution Manager를 사용하여 SAP용 Azure Monitor 솔루션을 보완하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
"service": "SAP",
"severity": "높다",
- "text": "DBMS 데이터 및 트랜잭션/다시 실행 로그 파일은 Azure 지원 블록 스토리지 또는 Azure NetApp Files에 저장됩니다. Azure Files 또는 Azure Premium Files는 DBMS 데이터 및/또는 SAP 워크로드가 있는 다시 실행 로그 파일에 대한 스토리지로 지원되지 않습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "신뢰도"
+ "text": "SAP용 VM 확장 검사를 실행합니다. SAP용 VM 확장은 VM(가상 머신)의 할당된 관리 ID를 사용하여 VM 모니터링 및 구성 데이터에 액세스합니다. 이 검사는 SAP 애플리케이션의 모든 성능 메트릭이 기본 SAP용 Azure 확장에서 제공되는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"service": "SAP",
- "severity": "높다",
- "text": "ASCS + SCS 구성 요소 및 특정 고가용성 시나리오에 대해 Windows에서 Azure 공유 디스크를 사용할 수 있습니다. SAP 애플리케이션 계층 구성 요소 및 DBMS 계층에 대해 장애 조치(failover) 클러스터를 별도로 설정합니다. Azure는 현재 SAP 애플리케이션 계층 구성 요소와 DBMS 계층을 하나의 장애 조치(failover) 클러스터로 결합하는 고가용성 아키텍처를 지원하지 않습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "액세스 제어 및 규정 준수 보고에 Azure Policy를 사용합니다. Azure Policy는 일관된 정책 준수와 빠른 위반 감지를 보장하기 위해 조직 전체 설정을 적용하는 기능을 제공합니다. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
"service": "SAP",
- "severity": "높다",
- "text": "SAP ASCS(애플리케이션 계층 구성 요소) 및 DBMS 계층에 대한 대부분의 장애 조치(failover) 클러스터에는 장애 조치(failover) 클러스터에 대한 가상 IP 주소가 필요합니다. Azure Load Balancer는 다른 모든 경우에 대한 가상 IP 주소를 처리해야 합니다. 한 가지 설계 원칙은 클러스터 구성당 하나의 부하 분산 장치를 사용하는 것입니다. 부하 분산 장치의 표준 버전(표준 Load Balancer SKU)을 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "Azure Network Watcher의 연결 모니터를 사용하여 SAP 데이터베이스 및 애플리케이션 서버에 대한 대기 시간 메트릭을 모니터링합니다. 또는 Azure Monitor를 사용하여 네트워크 대기 시간 측정값을 수집하고 표시합니다.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
"service": "SAP",
- "severity": "높다",
- "text": "로드 밸런서에서 유동 IP가 사용하도록 설정되어 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "프로비저닝된 Azure 인프라에서 SAP HANA에 대한 품질 검사를 수행하여 프로비저닝된 VM이 Azure의 SAP HANA 모범 사례를 준수하는지 확인합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
"service": "SAP",
"severity": "높다",
- "text": "고가용성 인프라를 배포하기 전에 선택한 지역에 따라 Azure 가용성 집합 또는 가용성 영역을 사용하여 배포할지 여부를 결정합니다.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "신뢰도"
+ "text": "각 Azure 구독에 대해 영역 배포 전에 Azure 가용성 영역에서 대기 시간 테스트를 실행하여 Azure에서 SAP를 배포하기 위한 대기 시간이 짧은 영역을 선택합니다.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
"service": "SAP",
- "severity": "높다",
- "text": "SAP 구성 요소(중앙 서비스, 애플리케이션 서버 및 데이터베이스)용 애플리케이션에 대한 인프라 SLA를 충족하려면 모든 구성 요소에 대해 동일한 고가용성 옵션(VM, 가용성 집합, 가용성 영역)을 선택해야 합니다.",
+ "severity": "보통",
+ "text": "복원력 보고서를 실행하여 프로비저닝된 전체 Azure 인프라(컴퓨팅, 데이터베이스, 네트워킹, 스토리지, Site Recovery)의 구성이 Azure용 클라우드 적응 프레임워크에서 정의한 구성을 준수하는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
"service": "SAP",
- "severity": "높다",
- "text": "동일한 가용성 집합에 서로 다른 역할의 서버를 혼합하지 마십시오. 중앙 서비스 VM, 데이터베이스 VM, 애플리케이션 VM을 자체 가용성 집합으로 유지",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "SAP용 Microsoft Sentinel 솔루션을 사용하여 위협 방지를 구현합니다. 이 솔루션을 사용하여 SAP 시스템을 모니터링하고 비즈니스 로직 및 애플리케이션 계층 전체에서 정교한 위협을 탐지할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
"service": "SAP",
"severity": "보통",
- "text": "근접 배치 그룹을 사용하지 않는 한 Azure 가용성 영역 내에 Azure 가용성 집합을 배포할 수 없습니다.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "신뢰도"
+ "text": "Azure 태그 지정을 활용하여 리소스를 논리적으로 그룹화 및 추적하고, 배포를 자동화하고, 가장 중요한 것은 발생한 비용에 대한 가시성을 제공할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
"service": "SAP",
- "severity": "높다",
- "text": "가용성 집합을 만들 때 사용 가능한 최대 장애 도메인 및 업데이트 도메인 수를 사용합니다. 예를 들어 하나의 가용성 집합에 두 개 이상의 VM을 배포하는 경우 Azure의 계획된 유지 관리 외에도 잠재적인 물리적 하드웨어 오류, 네트워크 중단 또는 전원 중단의 영향을 제한하기 위해 최대 장애 도메인 수(3개)와 충분한 업데이트 도메인을 사용합니다. 장애 도메인의 기본 수는 2개이며 나중에 온라인으로 변경할 수 없습니다.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "severity": "낮다",
+ "text": "대기 시간에 민감한 애플리케이션에 대해 VM 간 대기 시간 모니터링을 사용합니다.",
+ "waf": "공연"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "Azure Site Recovery 모니터링을 사용하여 SAP 애플리케이션 서버에 대한 재해 복구 서비스의 상태를 유지 관리합니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
"service": "SAP",
- "severity": "높다",
- "text": "가용성 집합 배포에서 Azure 근접 배치 그룹을 사용하는 경우 세 가지 SAP 구성 요소(중앙 서비스, 애플리케이션 서버 및 데이터베이스)가 모두 동일한 근접 배치 그룹에 있어야 합니다.",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "모든 데이터베이스 파일 시스템 및 실행 프로그램을 바이러스 백신 검사에서 제외합니다. 이를 포함하면 성능 문제가 발생할 수 있습니다. 제외 목록에 대한 규범적 세부 정보는 데이터베이스 공급업체에 문의하십시오. 예를 들어 Oracle은 바이러스 백신 검사에서 /oracle//sapdata를 제외할 것을 권장합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
"service": "SAP",
- "severity": "높다",
- "text": "SAP SID당 하나의 근접 배치 그룹을 사용합니다. 그룹은 가용성 영역 또는 Azure 지역에 걸쳐 있지 않습니다.",
- "waf": "신뢰도"
+ "severity": "낮다",
+ "text": "마이그레이션 후 비 HANA 데이터베이스에 대한 전체 데이터베이스 통계를 수집하는 것이 좋습니다. 예를 들어 SAP Note 1020260 - Oracle 통계 제공을 구현합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
"service": "SAP",
- "severity": "높다",
- "text": "운영 체제에 따라 다음 서비스 중 하나를 사용하여 SAP 중앙 서비스 클러스터를 실행합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "Azure에서 SAP를 사용하는 모든 Oracle 배포에 Oracle ASM(Automatic Storage Management)을 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
"service": "SAP",
"severity": "보통",
- "text": "Azure는 현재 동일한 Linux Pacemaker 클러스터에서 ASCS와 DB HA의 결합을 지원하지 않습니다. 개별 클러스터로 분리합니다. 그러나 최대 5개의 여러 중앙 서비스 클러스터를 한 쌍의 VM으로 결합할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "text": "Oracle을 실행하는 Azure의 SAP의 경우 SQL 스크립트 컬렉션은 성능 문제를 진단하는 데 도움이 될 수 있습니다. AWR(Automatic Workload Repository) 보고서에는 Oracle 시스템의 문제점을 진단하는 데 유용한 정보가 포함되어 있습니다. 여러 세션 동안 AWR 보고서를 실행하고 피크 시간을 선택하여 광범위한 분석 범위를 보장하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
"service": "SAP",
- "severity": "보통",
- "text": "가용성 집합 또는 가용성 영역의 고가용성 쌍에 두 VM을 모두 배포합니다. 이러한 VM은 크기가 동일하고 스토리지 구성이 동일해야 합니다.",
- "waf": "신뢰도"
+ "severity": "높다",
+ "text": "Azure Site Recovery 모니터링을 사용하여 SAP 애플리케이션 서버에 대한 재해 복구 서비스의 상태를 유지 관리합니다.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
"service": "SAP",
"severity": "보통",
- "text": "Azure는 RHEL(Red Hat Enterprise Linux)에서 실행되는 동일한 고가용성 클러스터에 SAP HANA, ASCS/SCS 및 ERS 인스턴스의 설치 및 구성을 지원합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "text": "HTTP/S 앱을 안전하게 배달하려면 Application Gateway v2를 사용하고 WAF 보호 및 정책이 사용하도록 설정되어 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
- "severity": "높다",
- "text": "프리미엄 관리형 SSD에서 모든 프로덕션 시스템을 실행하고 Azure NetApp Files 또는 Ultra Disk Storage를 사용합니다. 적어도 OS 디스크는 프리미엄 계층에 있어야 더 나은 성능과 최상의 SLA를 달성할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "Azure로 마이그레이션하는 동안 가상 머신의 DNS 또는 가상 이름이 변경되지 않은 경우 백그라운드 DNS 및 가상 이름은 SAP 환경의 많은 시스템 인터페이스를 연결하며, 고객은 시간이 지남에 따라 개발자가 정의하는 인터페이스를 인식하는 경우에만 인식할 수 있습니다. 마이그레이션 후 가상 또는 DNS 이름이 변경될 때 다양한 시스템 간에 연결 문제가 발생하며, 이러한 유형의 문제를 방지하기 위해 DNS 별칭을 유지하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"service": "SAP",
- "severity": "높다",
- "text": "Azure의 SAP HANA는 SAP에서 인증한 스토리지 유형에서만 실행해야 합니다. 특정 볼륨은 해당되는 경우 특정 디스크 구성에서 실행되어야 합니다. 이러한 구성에는 Write Accelerator 사용 및 Premium Storage 사용이 포함됩니다. 또한 스토리지에서 실행되는 파일 시스템이 시스템에서 실행되는 DBMS와 호환되는지 확인해야 합니다.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "서로 다른 DNS 영역을 사용하여 각 환경(샌드박스, 개발, 사전 프로덕션 및 프로덕션)을 서로 구분합니다. 예외는 자체 VNet을 사용하는 SAP 배포의 경우입니다. 여기서는 프라이빗 DNS 영역이 필요하지 않을 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
"service": "SAP",
- "severity": "높다",
- "text": "SAP 워크로드에 사용하는 스토리지 유형에 따라 고가용성을 구성하는 것이 좋습니다. Azure에서 사용할 수 있는 일부 스토리지 서비스는 Azure Site Recovery에서 지원되지 않으므로 고가용성 구성이 다를 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "severity": "보통",
+ "text": "로컬 및 글로벌 VNet 피어링은 연결을 제공하며, 여러 Azure 지역에서 SAP 배포를 위한 랜딩 존 간의 연결을 보장하기 위해 선호되는 접근 방식입니다",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
"waf": "신뢰도"
},
{
"checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
"service": "SAP",
"severity": "높다",
- "text": "일부 지역에서는 다양한 네이티브 Azure Storage 서비스(예: Azure Files, Azure NetApp Files, Azure Shared Disk)를 사용하지 못할 수 있습니다. 따라서 장애 조치(failover) 후 DR 지역에서 유사한 SAP를 설정하려면 해당 스토리지 서비스가 DR 사이트에서 제공되는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "SAP 애플리케이션과 SAP 데이터베이스 서버 간에 NVA를 배포하는 것은 지원되지 않습니다",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/optimize-your-azure-costs-by-automating-sap-system-start-stop/ba-p/2120675",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
"service": "SAP",
"severity": "보통",
- "text": "SAP System Start-Stop을 자동화하여 비용을 관리합니다.",
- "waf": "비용"
+ "text": "Azure 지역 및 온-프레미스 위치 간에 글로벌 전송 연결이 필요한 신규, 대규모 또는 글로벌 네트워크에서 Azure 배포에 Virtual WAN을 사용합니다. 이 방법을 사용하면 Azure 네트워킹에 대한 전이적 라우팅을 수동으로 설정할 필요가 없으며 Azure의 SAP 배포에 대한 표준을 따를 수 있습니다.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
"service": "SAP",
- "severity": "낮다",
- "text": "SAP HANA와 함께 Azure Premium Storage를 사용하는 경우 Azure 표준 SSD 스토리지를 사용하여 비용에 민감한 스토리지 솔루션을 선택할 수 있습니다. 그러나 표준 SSD 또는 표준 HDD Azure Storage를 선택하면 개별 VM의 SLA에 영향을 줍니다. 또한 비프로덕션 환경과 같이 I/O 처리량이 낮고 대기 시간이 짧은 시스템의 경우 더 낮은 시리즈 VM을 사용할 수 있습니다.",
- "waf": "비용"
+ "severity": "보통",
+ "text": "파트너 NVA를 사용하는 경우에만 지역 간에 NVA(네트워크 가상 어플라이언스)를 배포하는 것이 좋습니다. 네이티브 NVA가 있는 경우 지역 또는 VNet 간의 NVA가 필요하지 않습니다. 파트너 네트워킹 기술 및 NVA를 배포하는 경우 공급업체의 지침에 따라 Azure 네트워킹과 충돌하는 구성을 확인합니다.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
"service": "SAP",
- "severity": "낮다",
- "text": "저렴한 대체 구성(다목적)으로 비프로덕션 HANA 데이터베이스 서버 VM에 대해 저성능 SKU를 선택할 수 있습니다. 그러나 E 시리즈와 같은 일부 VM 유형은 HANA 인증(SAP HANA 하드웨어 디렉터리)되지 않았거나 1ms 미만의 스토리지 대기 시간을 달성할 수 없습니다.",
- "waf": "비용"
+ "severity": "보통",
+ "text": "Virtual WAN은 가상 WAN 기반 토폴로지에 대한 스포크 VNet 간의 연결을 관리하며(UDR[사용자 정의 라우팅] 또는 NVA를 설정할 필요 없음) 동일한 가상 허브의 VNet 간 트래픽에 대한 최대 네트워크 처리량은 초당 50기가비트입니다. 필요한 경우 SAP 랜딩 존은 VNet 피어링을 사용하여 다른 랜딩 존에 연결하고 이 대역폭 제한을 극복할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
"severity": "높다",
- "text": "관리 그룹, 구독, 리소스 그룹 및 리소스에 대한 RBAC 모델 적용Enforce a RBAC model for management groups, subscriptions, resource groups and resources",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "text": "SAP 워크로드를 실행하는 VM에 대한 공용 IP 할당은 권장되지 않습니다.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
"service": "SAP",
- "severity": "보통",
- "text": "클라우드 커넥터를 통해 SAP 클라우드 애플리케이션에서 SAP 온-프레미스(IaaS 포함)로 ID를 전달하기 위한 보안 주체 전파 적용",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "안전"
+ "severity": "높다",
+ "text": "ASR을 구성할 때 DR 쪽에서 IP 주소를 예약하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
"service": "SAP",
- "severity": "보통",
- "text": "SAML을 사용하여 Azure AD로 SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics 및 SAP C4C와 같은 SAP SaaS 애플리케이션에 대한 SSO를 구현합니다.",
- "waf": "안전"
+ "severity": "높다",
+ "text": "프로덕션 및 DR 사이트에 겹치는 IP 주소 범위를 사용하지 마십시오.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
"service": "SAP",
"severity": "보통",
- "text": "SAML을 사용하여 SAP Fiori 및 SAP Web GUI와 같은 SAP NetWeaver 기반 웹 애플리케이션에 대한 SSO를 구현합니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "안전"
+ "text": "Azure는 VNet에서 여러 위임된 서브넷을 만드는 데 도움이 되지만 Azure NetApp Files용 VNet에는 위임된 서브넷이 하나만 존재할 수 있습니다. Azure NetApp Files에 대해 둘 이상의 위임된 서브넷을 사용하는 경우 새 볼륨을 만들려는 시도가 실패합니다.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
"severity": "보통",
- "text": "SAML을 사용하여 SAP Fiori 및 SAP Web GUI와 같은 SAP NetWeaver 기반 웹 애플리케이션에 대한 SSO를 구현합니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
+ "text": "Azure Firewall을 사용하여 인터넷에 대한 Azure 아웃바운드 트래픽, 비 HTTP/S 인바운드 연결 및 East/West 트래픽 필터링(조직에 필요한 경우)을 제어합니다",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
"service": "SAP",
"severity": "보통",
- "text": "SAP NetWeaver SSO 또는 파트너 솔루션을 사용하여 SAP GUI에 대한 SSO를 구현할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
+ "text": "Application Gateway, SAP Web Dispatcher 및 기타 타사 서비스 간의 비교에서 볼 수 있듯이 Application Gateway가 SAP 웹앱에 대한 역방향 프록시 역할을 하는 경우 Application Gateway 및 Web Application Firewall에 제한 사항이 있습니다.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
"severity": "보통",
- "text": "SAP GUI 및 웹 브라우저 액세스를 위한 SSO의 경우 구성 및 유지 관리가 용이하여 SNC/Kerberos/SPNEGO(간단하고 보호된 GSSAPI 협상 메커니즘)를 구현합니다. X.509 클라이언트 인증서를 사용하는 SSO의 경우 SAP SSO 솔루션의 구성 요소인 SAP 보안 로그인 서버를 고려합니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "text": "Azure Front Door 및 WAF 정책을 사용하여 랜딩 존에 대한 인바운드 HTTP/S 연결을 위해 Azure 지역에서 전역 보호를 제공합니다.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
"service": "SAP",
"severity": "보통",
- "text": "SAP GUI 및 웹 브라우저 액세스를 위한 SSO의 경우 구성 및 유지 관리가 용이하여 SNC/Kerberos/SPNEGO(간단하고 보호된 GSSAPI 협상 메커니즘)를 구현합니다. X.509 클라이언트 인증서를 사용하는 SSO의 경우 SAP SSO 솔루션의 구성 요소인 SAP 보안 로그인 서버를 고려합니다.",
+ "text": "Azure Front Door 및 Application Gateway를 사용하여 HTTP/S 애플리케이션을 보호하는 경우 Azure Front Door의 Web Application Firewall 정책을 활용합니다. Azure Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "SAP",
"severity": "보통",
- "text": "SAP NetWeaver용 OAuth를 사용하여 SSO를 구현하여 타사 또는 사용자 지정 애플리케이션이 SAP NetWeaver OData 서비스에 액세스할 수 있도록 합니다.",
+ "text": "웹 애플리케이션 방화벽을 사용하여 트래픽이 인터넷에 노출될 때 트래픽을 검사합니다. 또 다른 옵션은 부하 분산 장치 또는 Application Gateway 또는 타사 솔루션과 같은 기본 제공 방화벽 기능이 있는 리소스와 함께 사용하는 것입니다.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
"service": "SAP",
"severity": "보통",
- "text": "SAP HANA에 대한 SSO 구현",
- "waf": "안전"
+ "text": "Azure 지역 및 온-프레미스 위치 간에 글로벌 전송 연결이 필요한 신규, 대규모 또는 글로벌 네트워크에서 Azure 배포에 Virtual WAN을 사용합니다. 이 방법을 사용하면 Azure 네트워킹에 대한 전이적 라우팅을 수동으로 설정할 필요가 없으며 Azure의 SAP 배포에 대한 표준을 따를 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
"service": "SAP",
"severity": "보통",
- "text": "Azure AD를 RISE에서 호스트되는 SAP 시스템의 ID 공급자로 간주합니다. 자세한 내용은 Azure AD와 서비스 통합을 참조하세요.",
+ "text": "데이터 유출을 방지하려면 Azure Private Link를 사용하여 Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen2, Azure Data Factory 등과 같은 PaaS(Platform as a Service) 리소스에 안전하게 액세스합니다. Azure 프라이빗 엔드포인트는 VNet과 Azure Storage, Azure Backup 등과 같은 서비스 간의 트래픽을 보호하는 데도 도움이 될 수 있습니다. VNet과 프라이빗 엔드포인트 사용 서비스 간의 트래픽은 Microsoft 글로벌 네트워크를 통해 이동하므로 공용 인터넷에 노출되지 않습니다.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
"service": "SAP",
- "severity": "보통",
- "text": "SAP에 액세스하는 애플리케이션의 경우 보안 주체 전파를 사용하여 SSO를 설정할 수 있습니다.",
- "waf": "안전"
+ "severity": "높다",
+ "text": "SAP 애플리케이션 및 DBMS 계층에 사용되는 VM에서 Azure 가속 네트워킹이 사용하도록 설정되어 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
"service": "SAP",
"severity": "보통",
- "text": "SAP IAS(Identity Authentication Service)가 필요한 SAP BTP 서비스 또는 SaaS 솔루션을 사용하는 경우 SAP Cloud Identity Authentication Services와 Azure AD 간에 SSO를 구현하여 해당 SAP 서비스에 액세스하는 것이 좋습니다. 이 통합을 통해 SAP IAS는 프록시 ID 공급자 역할을 하고 중앙 사용자 저장소 및 ID 공급자인 Azure AD에 인증 요청을 전달할 수 있습니다.",
+ "text": "Azure Load Balancer에 대한 내부 배포가 DSR(Direct Server Return)을 사용하도록 설정되어 있는지 확인합니다. 이 설정(유동 IP 사용)은 DBMS 계층의 고가용성 구성에 내부 부하 분산 장치 구성을 사용할 때 대기 시간을 줄입니다.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"service": "SAP",
"severity": "보통",
- "text": "SAP BTP에 대한 SSO 구현",
+ "text": "ASG(애플리케이션 보안 그룹) 및 NSG 규칙을 사용하여 SAP 애플리케이션과 DBMS 계층 간에 네트워크 보안 액세스 제어 목록을 정의할 수 있습니다. ASG는 보안을 관리하는 데 도움이 되도록 가상 머신을 그룹화합니다.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
- "severity": "보통",
- "text": "SAP SuccessFactors를 사용하는 경우 Azure AD 자동화된 사용자 프로비저닝을 사용하는 것이 좋습니다. 이 통합을 통해 SAP SuccessFactors에 새 직원을 추가할 때 Azure AD에서 해당 사용자 계정을 자동으로 만들 수 있습니다. 필요에 따라 Microsoft 365 또는 Azure AD 지원하는 기타 SaaS 애플리케이션에서 사용자 계정을 만들 수 있습니다. SAP SuccessFactors에 이메일 주소의 쓰기 저장을 사용합니다.",
- "waf": "안전"
+ "severity": "높다",
+ "text": "피어링되지 않은 다른 Azure VNet에 SAP 애플리케이션 계층 및 SAP DBMS를 배치하는 것은 지원되지 않습니다.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
"service": "SAP",
"severity": "보통",
- "text": "SAP 구독에 기존 관리 그룹 정책 적용",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "작업"
+ "text": "SAP 애플리케이션에서 네트워크 대기 시간을 최적화하려면 Azure 근접 배치 그룹을 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "높다",
- "text": "긴밀하게 결합된 애플리케이션을 동일한 SAP 구독에 통합하여 추가적인 라우팅 및 관리 복잡성 방지",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "작업"
+ "text": "온-프레미스와 Azure 간에 분할된 SAP 애플리케이션 서버 계층 및 DBMS 계층을 실행하는 것은 전혀 지원되지 않습니다. 두 계층 모두 온-프레미스 또는 Azure에 완전히 상주해야 합니다.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
"service": "SAP",
"severity": "높다",
- "text": "구독을 배율 단위로 활용하고 리소스를 확장하려면 환경별로 구독을 배포하는 것이 좋습니다. 샌드박스, 비프로덕션, 프로덕션 ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "작업"
+ "text": "계층 간의 과도한 네트워크 트래픽으로 인해 발생할 수 있는 상당한 비용 때문에 다른 VNet에서 SAP 시스템의 DBMS(데이터베이스 관리 시스템) 및 애플리케이션 계층을 호스트하고 VNet 피어링과 연결하는 것은 권장되지 않습니다. Azure 가상 네트워크 내에서 서브넷을 사용하여 SAP 애플리케이션 계층과 DBMS 계층을 분리하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "비용"
},
{
"checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
"service": "SAP",
"severity": "높다",
- "text": "구독 프로비저닝의 일부로 할당량 증가 확인(예: 구독 내에서 사용 가능한 총 VM 코어)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "작업"
+ "text": "Linux 게스트 운영 체제에서 Load Balancer를 사용하는 경우 Linux 네트워크 매개 변수 net.ipv4.tcp_timestamps가 0으로 설정되어 있는지 확인합니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
"service": "SAP",
- "severity": "낮다",
- "text": "할당량 API는 Azure 서비스에 대한 할당량을 보고 관리하는 데 사용할 수 있는 REST API입니다. 필요한 경우 사용을 고려하십시오.",
- "waf": "작업"
+ "severity": "보통",
+ "text": "SAP RISE/ECS 배포의 경우 가상 피어링은 고객의 기존 Azure 환경과의 연결을 설정하는 기본 방법입니다. SAP vnet과 고객 vnet은 모두 NSG(네트워크 보안 그룹)로 보호되므로 vnet 피어링을 통해 SAP 및 데이터베이스 포트에서 통신할 수 있습니다",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
"service": "SAP",
"severity": "높다",
- "text": "가용성 영역에 배포하는 경우 할당량이 승인되면 VM의 영역 배포를 사용할 수 있는지 확인합니다. 필요한 구독, VM 시리즈, CPU 수 및 가용성 영역을 사용하여 지원 요청을 제출합니다.",
- "waf": "작업"
+ "text": "Azure VM에 대한 SAP HANA 데이터베이스 백업을 검토합니다.",
+ "waf": "비용"
},
{
"checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "보통",
+ "text": "SAP에 사용되는 Site Recovery 기본 제공 모니터링을 검토합니다.",
+ "waf": "비용"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
"service": "SAP",
"severity": "높다",
- "text": "예를 들어 선택한 배포 지역 내에서 필요한 서비스 및 기능을 사용할 수 있는지 확인합니다. ANF, 지역 등.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "text": "SAP HANA 시스템 환경 모니터링 지침을 검토합니다.",
"waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
"service": "SAP",
"severity": "보통",
- "text": "비용 분류 및 리소스 그룹화를 위해 Azure 리소스 태그 활용(BillTo, 부서(또는 사업부), 환경(프로덕션, 스테이지, 개발), 계층(웹 계층, 애플리케이션 계층), 애플리케이션 소유자, 프로젝트 이름)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "text": "Azure Linux VM 백업 전략에서 Oracle Database를 검토합니다.",
"waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
"service": "SAP",
- "severity": "높다",
- "text": "Azure Backup 서비스를 사용하여 HANA 데이터베이스를 보호할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "보통",
+ "text": "SQL Server 2016에서 Azure Blob Storage 사용을 검토합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
"service": "SAP",
"severity": "보통",
- "text": "HANA, Oracle 또는 DB2 데이터베이스용 Azure NetApp Files를 배포하는 경우 Azure 애플리케이션 일치 스냅샷 도구(AzAcSnap)를 사용하여 애플리케이션 일치 스냅샷을 만듭니다. AzAcSnap은 Oracle 데이터베이스도 지원합니다. 개별 VM이 아닌 중앙 VM에서 AzAcSnap을 사용하는 것이 좋습니다.",
- "waf": "신뢰도"
+ "text": "Azure VM에 대한 자동화된 Backup v2 사용을 검토합니다.",
+ "waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
"service": "SAP",
"severity": "높다",
- "text": "운영 체제와 SAP 시스템 간의 표준 시간대 일치를 확인합니다.",
+ "text": "프리미엄 디스크(V1)를 사용할 때 M 시리즈에 쓰기 가속기 사용Enabling Write accelerator for M series when using premium disks(V1)",
"waf": "작업"
},
{
"checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
"service": "SAP",
"severity": "보통",
- "text": "동일한 클러스터에서 서로 다른 애플리케이션 서비스를 그룹화하지 마세요. 예를 들어 DRBD와 중앙 서비스 클러스터를 동일한 클러스터에 결합하지 마세요. 그러나 동일한 Pacemaker 클러스터를 사용하여 약 5개의 서로 다른 중앙 서비스(다중 SID 클러스터)를 관리할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "신뢰도"
+ "text": "가용성 영역 대기 시간을 테스트합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
"service": "SAP",
- "severity": "낮다",
- "text": "Azure 실행 비용을 절감하고 최적화하기 위해 다시 알림 모델에서 개발/테스트 시스템을 실행하는 것이 좋습니다.",
- "waf": "비용"
+ "severity": "보통",
+ "text": "모든 SAP 구성 요소에 대해 SAP EarlyWatch Alert를 활성화합니다.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
"service": "SAP",
"severity": "보통",
- "text": "SAP 자산을 관리하여 고객과 파트너 관계를 맺는 경우 Azure Lighthouse를 사용하는 것이 좋습니다. Azure Lighthouse를 사용하면 관리 서비스 공급자가 Azure 네이티브 ID 서비스를 사용하여 고객 환경에 인증할 수 있습니다. 고객은 언제든지 액세스 권한을 취소하고 서비스 제공업체의 조치를 감사할 수 있으므로 고객의 손에 제어 권한을 부여합니다.",
- "waf": "작업"
+ "text": "SAP ABAPMeter 보고서 /SSA/CAT를 사용하여 SAP 애플리케이션 서버-데이터베이스 서버 대기 시간을 검토합니다.",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
"service": "SAP",
"severity": "보통",
- "text": "Azure Update Manager를 사용하여 단일 VM 또는 여러 VM에 대해 사용 가능한 업데이트의 상태를 확인하고 정기적인 패치를 예약하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "작업"
+ "text": "CCMS를 사용하여 SQL Server 성능 모니터링을 검토합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
"service": "SAP",
- "severity": "낮다",
- "text": "SAP Landscape Management(LaMa)를 사용하여 SAP Basis 운영을 최적화하고 관리합니다. Azure용 SAP LaMa 커넥터를 사용하여 SAP 시스템을 재배치, 복사, 복제 및 새로 고칩니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "작업"
+ "severity": "보통",
+ "text": "SAP 애플리케이션 계층 VM과 DBMS VM(NIPING) 간의 네트워크 대기 시간을 테스트합니다.",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
"service": "SAP",
"severity": "보통",
- "text": "SAP용 Azure Monitor 솔루션을 사용하여 Azure에서 SAP 워크로드(SAP HANA, 고가용성 SUSE 클러스터 및 SQL 시스템)를 모니터링합니다. SAP Solution Manager를 사용하여 SAP용 Azure Monitor 솔루션을 보완하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "작업"
+ "text": "SAP HANA Studio 경고를 검토합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
"service": "SAP",
- "severity": "높다",
- "text": "SAP용 VM 확장 검사를 실행합니다. SAP용 VM 확장은 VM(가상 머신)의 할당된 관리 ID를 사용하여 VM 모니터링 및 구성 데이터에 액세스합니다. 이 검사는 SAP 애플리케이션의 모든 성능 메트릭이 기본 SAP용 Azure 확장에서 제공되는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "작업"
+ "severity": "보통",
+ "text": "HANA_Configuration_Minichecks를 사용하여 SAP HANA 상태 검사를 수행합니다.",
+ "waf": "공연"
},
{
"checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "보통",
- "text": "액세스 제어 및 규정 준수 보고에 Azure Policy를 사용합니다. Azure Policy는 일관된 정책 준수와 빠른 위반 감지를 보장하기 위해 조직 전체 설정을 적용하는 기능을 제공합니다. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "작업"
+ "text": "Azure, 온-프레미스 또는 기타 클라우드 환경에서 Windows 및 Linux VM을 실행하는 경우 Azure Automation의 업데이트 관리 센터를 사용하여 보안 패치를 포함한 운영 체제 업데이트를 관리할 수 있습니다.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
"service": "SAP",
"severity": "보통",
- "text": "Azure Network Watcher의 연결 모니터를 사용하여 SAP 데이터베이스 및 애플리케이션 서버에 대한 대기 시간 메트릭을 모니터링합니다. 또는 Azure Monitor를 사용하여 네트워크 대기 시간 측정값을 수집하고 표시합니다.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "작업"
+ "text": "SAP는 SAP 시스템을 보호하기 위해 즉각적인 조치가 필요한 매우 중요한 보안 패치 또는 핫픽스를 릴리스하므로 SAP 보안 OSS 노트를 정기적으로 검토합니다.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
- "severity": "보통",
- "text": "프로비저닝된 Azure 인프라에서 SAP HANA에 대한 품질 검사를 수행하여 프로비저닝된 VM이 Azure의 SAP HANA 모범 사례를 준수하는지 확인합니다.",
- "waf": "작업"
+ "severity": "낮다",
+ "text": "SQL Server SAP의 경우 SQL Server SAP 시스템에서 계정을 사용하지 않으므로 SQL Server 시스템 관리자 계정을 사용하지 않도록 설정할 수 있습니다. 원래 시스템 관리자 계정을 비활성화하기 전에 시스템 관리자 권한이 있는 다른 사용자가 서버에 액세스할 수 있는지 확인합니다.",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"service": "SAP",
"severity": "높다",
- "text": "각 Azure 구독에 대해 영역 배포 전에 Azure 가용성 영역에서 대기 시간 테스트를 실행하여 Azure에서 SAP를 배포하기 위한 대기 시간이 짧은 영역을 선택합니다.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "공연"
+ "text": "xp_cmdshell 비활성화합니다. SQL Server 기능 xp_cmdshell SQL Server 내부 운영 체제 명령 셸을 사용할 수 있습니다. 이는 보안 감사에서 발생할 수 있는 잠재적 위험입니다.",
+ "training": "https://me.sap.com/notes/3019299/E",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "Azure에서 SAP HANA 데이터베이스 서버를 암호화하는 데는 SAP HANA 네이티브 암호화 기술이 사용됩니다. 또한 Azure에서 SQL Server를 사용하는 경우 TDE(투명한 데이터 암호화)를 사용하여 데이터 및 로그 파일을 보호하고 백업도 암호화되도록 합니다.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "waf": "안전"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
"service": "SAP",
"severity": "보통",
- "text": "복원력 보고서를 실행하여 프로비저닝된 전체 Azure 인프라(컴퓨팅, 데이터베이스, 네트워킹, 스토리지, Site Recovery)의 구성이 Azure용 클라우드 적응 프레임워크에서 정의한 구성을 준수하는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
- "waf": "신뢰도"
+ "text": "Azure Storage 암호화는 모든 Azure Resource Manager 및 클래식 스토리지 계정에 대해 사용하도록 설정되며 사용하지 않도록 설정할 수 없습니다. 데이터는 기본적으로 암호화되므로 Azure Storage 암호화를 사용하기 위해 코드 또는 애플리케이션을 수정할 필요가 없습니다.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "waf": "안전"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "SAP",
+ "severity": "높다",
+ "text": "Azure Key Vault를 사용하여 비밀 및 자격 증명 저장",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
"service": "SAP",
"severity": "보통",
- "text": "SAP용 Microsoft Sentinel 솔루션을 사용하여 위협 방지를 구현합니다. 이 솔루션을 사용하여 SAP 시스템을 모니터링하고 비즈니스 로직 및 애플리케이션 계층 전체에서 정교한 위협을 탐지할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "text": "무단 변경으로부터 보호하기 위해 성공적인 배포 후 Azure 리소스를 잠그는 것이 좋습니다. 사용자 지정된 Azure 정책(Custome 역할)을 사용하여 구독별로 LOCK 제약 조건 및 규칙을 적용할 수도 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
"service": "SAP",
"severity": "보통",
- "text": "Azure 태그 지정을 활용하여 리소스를 논리적으로 그룹화 및 추적하고, 배포를 자동화하고, 가장 중요한 것은 발생한 비용에 대한 가시성을 제공할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "작업"
+ "text": "삭제된 개체에 대한 보존 보호를 허용하기 위해 일시 삭제 및 제거 정책을 사용하도록 설정된 Azure Key Vault를 프로비전합니다.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
"service": "SAP",
- "severity": "낮다",
- "text": "대기 시간에 민감한 애플리케이션에 대해 VM 간 대기 시간 모니터링을 사용합니다.",
- "waf": "공연"
+ "severity": "높다",
+ "text": "기존 요구 사항에 따라 규정 및 규정 준수 제어(내부/외부) - 필요한 Azure 정책 및 Azure RBAC 역할 결정",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "severity": "보통",
- "text": "Azure Site Recovery 모니터링을 사용하여 SAP 애플리케이션 서버에 대한 재해 복구 서비스의 상태를 유지 관리합니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "높다",
+ "text": "SAP 환경에서 엔드포인트용 Microsoft Defender 사용하도록 설정하는 경우 모든 서버를 대상으로 하는 대신 DBMS 서버에서 데이터 및 로그 파일을 제외하는 것이 좋습니다. 대상 파일을 제외할 때 DBMS 공급업체의 권장 사항을 따릅니다.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
"service": "SAP",
- "severity": "보통",
- "text": "모든 데이터베이스 파일 시스템 및 실행 프로그램을 바이러스 백신 검사에서 제외합니다. 이를 포함하면 성능 문제가 발생할 수 있습니다. 제외 목록에 대한 규범적 세부 정보는 데이터베이스 공급업체에 문의하십시오. 예를 들어 Oracle은 바이러스 백신 검사에서 /oracle//sapdata를 제외할 것을 권장합니다.",
- "waf": "공연"
+ "severity": "높다",
+ "text": "클라우드용 Microsoft Defender의 Just-In-Time 액세스 권한이 있는 SAP 관리자 사용자 지정 역할을 위임합니다.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
"severity": "낮다",
- "text": "마이그레이션 후 비 HANA 데이터베이스에 대한 전체 데이터베이스 통계를 수집하는 것이 좋습니다. 예를 들어 SAP Note 1020260 - Oracle 통계 제공을 구현합니다.",
- "waf": "공연"
+ "text": "타사 보안 제품을 DIAG(SAP GUI)용 SNC(Secure Network Communications), RFC 및 HTTPS용 SPNEGO와 통합하여 전송 중인 데이터를 암호화합니다.",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
"service": "SAP",
"severity": "보통",
- "text": "Azure에서 SAP를 사용하는 모든 Oracle 배포에 Oracle ASM(Automatic Storage Management)을 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "공연"
+ "text": "보안 주체 암호화 기능을 위해 기본적으로 Microsoft 관리형 키를 사용하고 필요한 경우 고객 관리형 키를 사용합니다.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
"service": "SAP",
- "severity": "보통",
- "text": "Oracle을 실행하는 Azure의 SAP의 경우 SQL 스크립트 컬렉션은 성능 문제를 진단하는 데 도움이 될 수 있습니다. AWR(Automatic Workload Repository) 보고서에는 Oracle 시스템의 문제점을 진단하는 데 유용한 정보가 포함되어 있습니다. 여러 세션 동안 AWR 보고서를 실행하고 피크 시간을 선택하여 광범위한 분석 범위를 보장하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "공연"
+ "severity": "높다",
+ "text": "애플리케이션, 환경, 지역당 Azure Key Vault를 사용합니다.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
"service": "SAP",
"severity": "높다",
- "text": "Azure Site Recovery 모니터링을 사용하여 SAP 애플리케이션 서버에 대한 재해 복구 서비스의 상태를 유지 관리합니다.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "작업"
+ "text": "비 HANA Windows 및 비 Windows 운영 체제에 대한 디스크 암호화 키 및 비밀을 제어하고 관리하려면 Azure Key Vault를 사용합니다. SAP HANA는 Azure Key Vault에서 지원되지 않으므로 SAP ABAP 또는 SSH 키와 같은 대체 방법을 사용해야 합니다.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
"service": "SAP",
- "severity": "보통",
- "text": "HTTP/S 앱을 안전하게 배달하려면 Application Gateway v2를 사용하고 WAF 보호 및 정책이 사용하도록 설정되어 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "severity": "높다",
+ "text": "실수로 인한 네트워크 관련 변경을 방지하기 위해 Azure의 SAP 스포크 구독에 대한 RBAC(역할 기반 액세스 제어) 역할 사용자 지정",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
"waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
"service": "SAP",
- "severity": "보통",
- "text": "Azure로 마이그레이션하는 동안 가상 머신의 DNS 또는 가상 이름이 변경되지 않은 경우 백그라운드 DNS 및 가상 이름은 SAP 환경의 많은 시스템 인터페이스를 연결하며, 고객은 시간이 지남에 따라 개발자가 정의하는 인터페이스를 인식하는 경우에만 인식할 수 있습니다. 마이그레이션 후 가상 또는 DNS 이름이 변경될 때 다양한 시스템 간에 연결 문제가 발생하며, 이러한 유형의 문제를 방지하기 위해 DNS 별칭을 유지하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "작업"
+ "severity": "높다",
+ "text": "나머지 SAP 자산에서 DMZ 및 NVA를 격리하고, Azure Private Link를 구성하고, Azure의 SAP 리소스를 안전하게 관리 및 제어합니다",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
"service": "SAP",
- "severity": "보통",
- "text": "서로 다른 DNS 영역을 사용하여 각 환경(샌드박스, 개발, 사전 프로덕션 및 프로덕션)을 서로 구분합니다. 예외는 자체 VNet을 사용하는 SAP 배포의 경우입니다. 여기서는 프라이빗 DNS 영역이 필요하지 않을 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "작업"
+ "severity": "낮다",
+ "text": "Azure에서 Microsoft 맬웨어 방지 소프트웨어를 사용하여 악성 파일, 애드웨어 및 기타 위협으로부터 가상 머신을 보호하는 것이 좋습니다.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
"service": "SAP",
- "severity": "보통",
- "text": "로컬 및 글로벌 VNet 피어링은 연결을 제공하며, 여러 Azure 지역에서 SAP 배포를 위한 랜딩 존 간의 연결을 보장하기 위해 선호되는 접근 방식입니다",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
- "waf": "신뢰도"
+ "severity": "낮다",
+ "text": "더욱 강력한 보호를 위해 엔드포인트용 Microsoft Defender 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
"service": "SAP",
"severity": "높다",
- "text": "SAP 애플리케이션과 SAP 데이터베이스 서버 간에 NVA를 배포하는 것은 지원되지 않습니다",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "공연"
+ "text": "가상 네트워크 피어링을 통해 스포크 네트워크에 연결된 허브 가상 네트워크를 통해 모든 트래픽을 전달하여 SAP 애플리케이션 및 데이터베이스 서버를 인터넷 또는 온-프레미스 네트워크에서 격리합니다. 피어링된 가상 네트워크는 Azure의 SAP 솔루션이 공용 인터넷에서 격리되도록 보장합니다.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
"service": "SAP",
- "severity": "보통",
- "text": "Azure 지역 및 온-프레미스 위치 간에 글로벌 전송 연결이 필요한 신규, 대규모 또는 글로벌 네트워크에서 Azure 배포에 Virtual WAN을 사용합니다. 이 방법을 사용하면 Azure 네트워킹에 대한 전이적 라우팅을 수동으로 설정할 필요가 없으며 Azure의 SAP 배포에 대한 표준을 따를 수 있습니다.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "작업"
+ "severity": "낮다",
+ "text": "SAP Fiori와 같은 인터넷 연결 애플리케이션의 경우 보안 수준을 유지하면서 애플리케이션 요구 사항에 따라 부하를 분산해야 합니다. 계층 7 보안의 경우 Azure Marketplace에서 사용할 수 있는 타사 WAF(Web Application Firewall)를 사용할 수 있습니다.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "waf": "안전"
},
{
"checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
"service": "SAP",
"severity": "보통",
- "text": "파트너 NVA를 사용하는 경우에만 지역 간에 NVA(네트워크 가상 어플라이언스)를 배포하는 것이 좋습니다. 네이티브 NVA가 있는 경우 지역 또는 VNet 간의 NVA가 필요하지 않습니다. 파트너 네트워킹 기술 및 NVA를 배포하는 경우 공급업체의 지침에 따라 Azure 네트워킹과 충돌하는 구성을 확인합니다.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "작업"
+ "text": "SAP용 Azure Monitor 솔루션에서 보안 통신을 사용하도록 설정하려면 루트 인증서 또는 서버 인증서를 사용하도록 선택할 수 있습니다. 루트 인증서를 사용하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"severity": "보통",
- "text": "Virtual WAN은 가상 WAN 기반 토폴로지에 대한 스포크 VNet 간의 연결을 관리하며(UDR[사용자 정의 라우팅] 또는 NVA를 설정할 필요 없음) 동일한 가상 허브의 VNet 간 트래픽에 대한 최대 네트워크 처리량은 초당 50기가비트입니다. 필요한 경우 SAP 랜딩 존은 VNet 피어링을 사용하여 다른 랜딩 존에 연결하고 이 대역폭 제한을 극복할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "text": "Azure Data Factory에 대한 FTA 복원력 플레이북 활용",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "높다",
+ "text": "가용성 영역을 지원하는 지역에서 영역 중복 파이프라인 사용Use zone redundant pipelines in regions that support Availability Zones",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
+ "severity": "보통",
+ "text": "DevOps를 사용하여 Github/Azure DevOps 통합으로 ARM 템플릿 백업 ",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "보통",
+ "text": "다른 지역에서 자체 호스팅 통합 런타임 VM을 복제해야 합니다. ",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "보통",
+ "text": "자매 지역에서 네트워크를 복제하거나 복제해야 합니다. 다른 지역에서 Vnet의 복사본을 만들어야 합니다",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "ADF 파이프라인에서 Key Vault를 사용하는 경우 Key Vault를 복제하기 위해 아무 작업도 수행할 필요가 없습니다. Key Vault는 관리되는 서비스이며 Microsoft에서 처리합니다",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
+ "severity": "낮다",
+ "text": "Keyvault 통합을 사용하는 경우 Keyvault의 SLA를 사용하여 가용성을 파악합니다",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "AKS Windows 워크로드에 필요한 경우 HostProcess 컨테이너를 사용할 수 있습니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "이벤트 기반 워크로드를 실행하는 경우 KEDA 사용Use KEDA if running event-driven workloads",
+ "waf": "공연"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "Dapr을 사용하여 마이크로 서비스 개발 용이",
"waf": "작업"
},
{
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"severity": "높다",
- "text": "SAP 워크로드를 실행하는 VM에 대한 공용 IP 할당은 권장되지 않습니다.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "안전"
+ "text": "SLA 지원 AKS 제품 사용",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
- "severity": "높다",
- "text": "ASR을 구성할 때 DR 쪽에서 IP 주소를 예약하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "작업"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "Pod 및 배포 정의에서 중단 예산 사용Use Disruption Budgets in your pod and deployment definitions",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "높다",
- "text": "프로덕션 및 DR 사이트에 겹치는 IP 주소 범위를 사용하지 마십시오.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "작업"
+ "text": "개인 레지스트리를 사용하는 경우 여러 지역에 이미지를 저장하도록 지역 복제를 구성합니다",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
- "severity": "보통",
- "text": "Azure는 VNet에서 여러 위임된 서브넷을 만드는 데 도움이 되지만 Azure NetApp Files용 VNet에는 위임된 서브넷이 하나만 존재할 수 있습니다. Azure NetApp Files에 대해 둘 이상의 위임된 서브넷을 사용하는 경우 새 볼륨을 만들려는 시도가 실패합니다.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "작업"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "kubecost와 같은 외부 애플리케이션을 사용하여 다른 사용자에게 비용 할당",
+ "waf": "비용"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
- "severity": "보통",
- "text": "Azure Firewall을 사용하여 인터넷에 대한 Azure 아웃바운드 트래픽, 비 HTTP/S 인바운드 연결 및 East/West 트래픽 필터링(조직에 필요한 경우)을 제어합니다",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "축소 모드를 사용하여 노드 삭제/할당 취소",
+ "waf": "비용"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"severity": "보통",
- "text": "Application Gateway, SAP Web Dispatcher 및 기타 타사 서비스 간의 비교에서 볼 수 있듯이 Application Gateway가 SAP 웹앱에 대한 역방향 프록시 역할을 하는 경우 Application Gateway 및 Web Application Firewall에 제한 사항이 있습니다.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
- "waf": "안전"
+ "text": "필요한 경우 AKS 클러스터에서 다중 인스턴스 분할 GPU 사용",
+ "waf": "비용"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "보통",
- "text": "Azure Front Door 및 WAF 정책을 사용하여 랜딩 존에 대한 인바운드 HTTP/S 연결을 위해 Azure 지역에서 전역 보호를 제공합니다.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "개발/테스트 클러스터를 실행하는 경우 NodePool 시작/중지를 사용합니다.",
+ "waf": "비용"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure Front Door 및 Application Gateway를 사용하여 HTTP/S 애플리케이션을 보호하는 경우 Azure Front Door의 Web Application Firewall 정책을 활용합니다. Azure Front Door에서만 트래픽을 수신하도록 Application Gateway를 잠급니다.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "text": "Kubernetes용 Azure Policy를 사용하여 클러스터 규정 준수 보장",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"severity": "보통",
- "text": "웹 애플리케이션 방화벽을 사용하여 트래픽이 인터넷에 노출될 때 트래픽을 검사합니다. 또 다른 옵션은 부하 분산 장치 또는 Application Gateway 또는 타사 솔루션과 같은 기본 제공 방화벽 기능이 있는 리소스와 함께 사용하는 것입니다.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "text": "사용자/시스템 노드 풀이 있는 컨트롤 플레인에서 응용 프로그램 분리",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
- "severity": "보통",
- "text": "Azure 지역 및 온-프레미스 위치 간에 글로벌 전송 연결이 필요한 신규, 대규모 또는 글로벌 네트워크에서 Azure 배포에 Virtual WAN을 사용합니다. 이 방법을 사용하면 Azure 네트워킹에 대한 전이적 라우팅을 수동으로 설정할 필요가 없으며 Azure의 SAP 배포에 대한 표준을 따를 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "공연"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
- "severity": "보통",
- "text": "데이터 유출을 방지하려면 Azure Private Link를 사용하여 Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen2, Azure Data Factory 등과 같은 PaaS(Platform as a Service) 리소스에 안전하게 액세스합니다. Azure 프라이빗 엔드포인트는 VNet과 Azure Storage, Azure Backup 등과 같은 서비스 간의 트래픽을 보호하는 데도 도움이 될 수 있습니다. VNet과 프라이빗 엔드포인트 사용 서비스 간의 트래픽은 Microsoft 글로벌 네트워크를 통해 이동하므로 공용 인터넷에 노출되지 않습니다.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "시스템 nodepool에 taint를 추가하여 전용으로 만듭니다.",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
- "severity": "높다",
- "text": "SAP 애플리케이션 및 DBMS 계층에 사용되는 VM에서 Azure 가속 네트워킹이 사용하도록 설정되어 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "공연"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure Load Balancer에 대한 내부 배포가 DSR(Direct Server Return)을 사용하도록 설정되어 있는지 확인합니다. 이 설정(유동 IP 사용)은 DBMS 계층의 고가용성 구성에 내부 부하 분산 장치 구성을 사용할 때 대기 시간을 줄입니다.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "text": "이미지에 개인 레지스트리(예: ACR) 사용",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "보통",
- "text": "ASG(애플리케이션 보안 그룹) 및 NSG 규칙을 사용하여 SAP 애플리케이션과 DBMS 계층 간에 네트워크 보안 액세스 제어 목록을 정의할 수 있습니다. ASG는 보안을 관리하는 데 도움이 되도록 가상 머신을 그룹화합니다.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "text": "이미지에서 취약성 검사",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"severity": "높다",
- "text": "피어링되지 않은 다른 Azure VNet에 SAP 애플리케이션 계층 및 SAP DBMS를 배치하는 것은 지원되지 않습니다.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "공연"
+ "text": "앱 분리 요구 사항 정의(네임스페이스/노드 풀/클러스터)",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP 애플리케이션에서 네트워크 대기 시간을 최적화하려면 Azure 근접 배치 그룹을 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "공연"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "높다",
- "text": "온-프레미스와 Azure 간에 분할된 SAP 애플리케이션 서버 계층 및 DBMS 계층을 실행하는 것은 전혀 지원되지 않습니다. 두 계층 모두 온-프레미스 또는 Azure에 완전히 상주해야 합니다.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "공연"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "높다",
- "text": "계층 간의 과도한 네트워크 트래픽으로 인해 발생할 수 있는 상당한 비용 때문에 다른 VNet에서 SAP 시스템의 DBMS(데이터베이스 관리 시스템) 및 애플리케이션 계층을 호스트하고 VNet 피어링과 연결하는 것은 권장되지 않습니다. Azure 가상 네트워크 내에서 서브넷을 사용하여 SAP 애플리케이션 계층과 DBMS 계층을 분리하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "비용"
+ "text": "CSI 비밀 저장소 드라이버를 사용하여 Azure Key Vault에 비밀 저장",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"severity": "높다",
- "text": "Linux 게스트 운영 체제에서 Load Balancer를 사용하는 경우 Linux 네트워크 매개 변수 net.ipv4.tcp_timestamps가 0으로 설정되어 있는지 확인합니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "공연"
+ "text": "클러스터에 서비스 주체를 사용하는 경우 주기적으로(예: 분기별) 자격 증명을 새로 고칩니다",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP RISE/ECS 배포의 경우 가상 피어링은 고객의 기존 Azure 환경과의 연결을 설정하는 기본 방법입니다. SAP vnet과 고객 vnet은 모두 NSG(네트워크 보안 그룹)로 보호되므로 vnet 피어링을 통해 SAP 및 데이터베이스 포트에서 통신할 수 있습니다",
+ "text": "필요한 경우 키 관리 서비스 etcd 암호화를 추가합니다.",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
- "severity": "높다",
- "text": "Azure VM에 대한 SAP HANA 데이터베이스 백업을 검토합니다.",
- "waf": "비용"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 AKS용 기밀 컴퓨팅을 사용하는 것이 좋습니다.",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP에 사용되는 Site Recovery 기본 제공 모니터링을 검토합니다.",
- "waf": "비용"
+ "text": "컨테이너용 Defender 사용 고려",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "높다",
- "text": "SAP HANA 시스템 환경 모니터링 지침을 검토합니다.",
- "waf": "작업"
+ "text": "서비스 주체 대신 관리 ID 사용",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure Linux VM 백업 전략에서 Oracle Database를 검토합니다.",
- "waf": "작업"
+ "text": "AAD와 인증 통합(관리형 통합 사용)",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "보통",
- "text": "SQL Server 2016에서 Azure Blob Storage 사용을 검토합니다.",
- "waf": "작업"
+ "text": "관리자 kubeconfig에 대한 액세스 제한(get-credentials --admin)",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure VM에 대한 자동화된 Backup v2 사용을 검토합니다.",
- "waf": "작업"
+ "text": "AAD RBAC와 권한 부여 통합",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"severity": "높다",
- "text": "프리미엄 디스크(V1)를 사용할 때 M 시리즈에 쓰기 가속기 사용Enabling Write accelerator for M series when using premium disks(V1)",
- "waf": "작업"
+ "text": "쿠버네티스에서 RBAC 권한을 제한하기 위해 네임스페이스 사용",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
"severity": "보통",
- "text": "가용성 영역 대기 시간을 테스트합니다.",
- "waf": "공연"
+ "text": "Pod ID 액세스 관리의 경우 Azure AD 워크로드 ID(미리 보기)를 사용합니다.",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
"severity": "보통",
- "text": "모든 SAP 구성 요소에 대해 SAP EarlyWatch Alert를 활성화합니다.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "공연"
+ "text": "AKS 비대화형 로그인의 경우 kubelogin(미리 보기)을 사용합니다.",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP ABAPMeter 보고서 /SSA/CAT를 사용하여 SAP 애플리케이션 서버-데이터베이스 서버 대기 시간을 검토합니다.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "공연"
+ "text": "AKS 로컬 계정 사용 안 함",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
- "severity": "보통",
- "text": "CCMS를 사용하여 SQL Server 성능 모니터링을 검토합니다.",
- "waf": "공연"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 Just-in-time 클러스터 액세스 구성",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "AKS에 필요한 경우 AAD 조건부 액세스 구성",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "Windows AKS 워크로드에 필요한 경우 gMSA를 구성합니다. ",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP 애플리케이션 계층 VM과 DBMS VM(NIPING) 간의 네트워크 대기 시간을 테스트합니다.",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "공연"
+ "text": "더 세밀하게 제어하려면 관리형 Kubelet ID를 사용하는 것이 좋습니다.",
+ "waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP HANA Studio 경고를 검토합니다.",
- "waf": "공연"
+ "text": "AGIC를 사용하는 경우 클러스터 간에 AppGW를 공유하지 마세요",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "AKS HTTP 라우팅 추가 기능을 사용하지 말고, 애플리케이션 라우팅 추가 기능과 함께 관리되는 NGINX 수신을 대신 사용합니다.",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"severity": "보통",
- "text": "HANA_Configuration_Minichecks를 사용하여 SAP HANA 상태 검사를 수행합니다.",
+ "text": "Windows 워크로드의 경우 가속화된 네트워킹을 사용합니다.",
"waf": "공연"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "표준 ALB 사용(기본 ALB와 반대)",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure, 온-프레미스 또는 기타 클라우드 환경에서 Windows 및 Linux VM을 실행하는 경우 Azure Automation의 업데이트 관리 센터를 사용하여 보안 패치를 포함한 운영 체제 업데이트를 관리할 수 있습니다.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "text": "Azure CNI를 사용하는 경우 NodePools에 다른 서브넷을 사용하는 것이 좋습니다.",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"severity": "보통",
- "text": "SAP는 SAP 시스템을 보호하기 위해 즉각적인 조치가 필요한 매우 중요한 보안 패치 또는 핫픽스를 릴리스하므로 SAP 보안 OSS 노트를 정기적으로 검토합니다.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
+ "text": "프라이빗 엔드포인트(기본 설정) 또는 Virtual Network 서비스 엔드포인트를 사용하여 클러스터에서 PaaS 서비스에 액세스",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "severity": "낮다",
- "text": "SQL Server SAP의 경우 SQL Server SAP 시스템에서 계정을 사용하지 않으므로 SQL Server 시스템 관리자 계정을 사용하지 않도록 설정할 수 있습니다. 원래 시스템 관리자 계정을 비활성화하기 전에 시스템 관리자 권한이 있는 다른 사용자가 서버에 액세스할 수 있는지 확인합니다.",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "요구 사항에 가장 적합한 CNI 네트워크 플러그 인 선택(Azure CNI 권장)",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "높다",
- "text": "xp_cmdshell 비활성화합니다. SQL Server 기능 xp_cmdshell SQL Server 내부 운영 체제 명령 셸을 사용할 수 있습니다. 이는 보안 감사에서 발생할 수 있는 잠재적 위험입니다.",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "안전"
+ "text": "Azure CNI를 사용하는 경우 노드당 최대 Pod 수를 고려하여 서브넷 크기를 적절하게 조정합니다",
+ "waf": "공연"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "높다",
- "text": "Azure에서 SAP HANA 데이터베이스 서버를 암호화하는 데는 SAP HANA 네이티브 암호화 기술이 사용됩니다. 또한 Azure에서 SQL Server를 사용하는 경우 TDE(투명한 데이터 암호화)를 사용하여 데이터 및 로그 파일을 보호하고 백업도 암호화되도록 합니다.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "waf": "안전"
+ "text": "Azure CNI를 사용하는 경우 최대 Pod/노드(기본값 30)를 확인합니다.",
+ "waf": "공연"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
- "severity": "보통",
- "text": "Azure Storage 암호화는 모든 Azure Resource Manager 및 클래식 스토리지 계정에 대해 사용하도록 설정되며 사용하지 않도록 설정할 수 없습니다. 데이터는 기본적으로 암호화되므로 Azure Storage 암호화를 사용하기 위해 코드 또는 애플리케이션을 수정할 필요가 없습니다.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "내부 앱의 경우 조직은 방화벽에서 전체 AKS 서브넷을 여는 경우가 많습니다. 이렇게 하면 노드에 대한 네트워크 액세스도 열리고 잠재적으로 Pod에 대한 액세스도 열립니다(Azure CNI를 사용하는 경우). LoadBalancer IP가 다른 서브넷에 있는 경우 앱 클라이언트에서 이 IP만 사용할 수 있어야 합니다. 또 다른 이유는 AKS 서브넷의 IP 주소가 부족한 리소스인 경우 서비스에 해당 IP 주소를 사용하면 클러스터의 최대 확장성이 감소하기 때문입니다.",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "개인 IP LoadBalancer 서비스를 사용하는 경우 AKS 서브넷이 아닌 전용 서브넷을 사용합니다",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "높다",
- "text": "Azure Key Vault를 사용하여 비밀 및 자격 증명 저장",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "안전"
+ "text": "그에 따라 서비스 IP 주소 범위의 크기를 조정합니다(클러스터 확장성이 제한됨).",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
- "severity": "보통",
- "text": "무단 변경으로부터 보호하기 위해 성공적인 배포 후 Azure 리소스를 잠그는 것이 좋습니다. 사용자 지정된 Azure 정책(Custome 역할)을 사용하여 구독별로 LOCK 제약 조건 및 규칙을 적용할 수도 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 자체 CNI 플러그인을 추가합니다.",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 AKS에서 노드당 공용 IP 구성",
+ "waf": "공연"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"severity": "보통",
- "text": "삭제된 개체에 대한 보존 보호를 허용하기 위해 일시 삭제 및 제거 정책을 사용하도록 설정된 Azure Key Vault를 프로비전합니다.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "안전"
+ "text": "수신 컨트롤러를 사용하여 LoadBalancer 유형 서비스를 사용하여 노출하는 대신 웹 기반 앱을 노출합니다",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
- "severity": "높다",
- "text": "기존 요구 사항에 따라 규정 및 규정 준수 제어(내부/외부) - 필요한 Azure 정책 및 Azure RBAC 역할 결정",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "송신 트래픽 크기 조정을 위해 Azure NAT Gateway를 outboundType으로 사용",
+ "waf": "신뢰도"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "Azure CNI IP 소모를 방지하기 위해 IP의 동적 할당 사용",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "높다",
- "text": "SAP 환경에서 엔드포인트용 Microsoft Defender 사용하도록 설정하는 경우 모든 서버를 대상으로 하는 대신 DBMS 서버에서 데이터 및 로그 파일을 제외하는 것이 좋습니다. 대상 파일을 제외할 때 DBMS 공급업체의 권장 사항을 따릅니다.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "text": "보안 요구 사항에 필요한 경우 AzFW/NVA를 사용하여 송신 트래픽 필터링",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
- "severity": "높다",
- "text": "클라우드용 Microsoft Defender의 Just-In-Time 액세스 권한이 있는 SAP 관리자 사용자 지정 역할을 위임합니다.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "퍼블릭 API 엔드포인트를 사용하는 경우 액세스할 수 있는 IP 주소를 제한합니다",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "severity": "낮다",
- "text": "타사 보안 제품을 DIAG(SAP GUI)용 SNC(Secure Network Communications), RFC 및 HTTPS용 SPNEGO와 통합하여 전송 중인 데이터를 암호화합니다.",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "요구 사항에 따라 개인 클러스터를 사용합니다",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "보통",
- "text": "보안 주체 암호화 기능을 위해 기본적으로 Microsoft 관리형 키를 사용하고 필요한 경우 고객 관리형 키를 사용합니다.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Windows 2019 및 2022 AKS 노드의 경우 Calico 네트워크 정책을 사용할 수 있습니다. ",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "높다",
- "text": "애플리케이션, 환경, 지역당 Azure Key Vault를 사용합니다.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Kubernetes 네트워크 정책 옵션 사용(Calico/Azure)",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "높다",
- "text": "비 HANA Windows 및 비 Windows 운영 체제에 대한 디스크 암호화 키 및 비밀을 제어하고 관리하려면 Azure Key Vault를 사용합니다. SAP HANA는 Azure Key Vault에서 지원되지 않으므로 SAP ABAP 또는 SSH 키와 같은 대체 방법을 사용해야 합니다.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "text": "쿠버네티스 네트워크 정책을 사용하여 클러스터 내 보안 강화",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "높다",
- "text": "실수로 인한 네트워크 관련 변경을 방지하기 위해 Azure의 SAP 스포크 구독에 대한 RBAC(역할 기반 액세스 제어) 역할 사용자 지정",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "text": "웹 워크로드(UI 또는 API)에 WAF 사용Use a WAF for web workloads (UIs or APIs)",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
- "severity": "높다",
- "text": "나머지 SAP 자산에서 DMZ 및 NVA를 격리하고, Azure Private Link를 구성하고, Azure의 SAP 리소스를 안전하게 관리 및 제어합니다",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "AKS Virtual Network에서 DDoS 표준 사용Use DDoS Standard in the AKS Virtual Network",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
"severity": "낮다",
- "text": "Azure에서 Microsoft 맬웨어 방지 소프트웨어를 사용하여 악성 파일, 애드웨어 및 기타 위협으로부터 가상 머신을 보호하는 것이 좋습니다.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
+ "text": "필요한 경우 회사 HTTP 프록시를 추가합니다.",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "severity": "낮다",
- "text": "더욱 강력한 보호를 위해 엔드포인트용 Microsoft Defender 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "고급 마이크로서비스 통신 관리를 위해 서비스 메시를 사용하는 것이 좋습니다",
"waf": "안전"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
"severity": "높다",
- "text": "가상 네트워크 피어링을 통해 스포크 네트워크에 연결된 허브 가상 네트워크를 통해 모든 트래픽을 전달하여 SAP 애플리케이션 및 데이터베이스 서버를 인터넷 또는 온-프레미스 네트워크에서 격리합니다. 피어링된 가상 네트워크는 Azure의 SAP 솔루션이 공용 인터넷에서 격리되도록 보장합니다.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "안전"
+ "text": "가장 중요한 메트릭에 대한 경고 구성(권장 사항은 Container Insights 참조)",
+ "waf": "작업"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
"severity": "낮다",
- "text": "SAP Fiori와 같은 인터넷 연결 애플리케이션의 경우 보안 수준을 유지하면서 애플리케이션 요구 사항에 따라 부하를 분산해야 합니다. 계층 7 보안의 경우 Azure Marketplace에서 사용할 수 있는 타사 WAF(Web Application Firewall)를 사용할 수 있습니다.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
- "waf": "안전"
+ "text": "Azure Advisor에서 클러스터에 대한 권장 사항을 정기적으로 확인합니다.",
+ "waf": "작업"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
- "severity": "보통",
- "text": "SAP용 Azure Monitor 솔루션에서 보안 통신을 사용하도록 설정하려면 루트 인증서 또는 서버 인증서를 사용하도록 선택할 수 있습니다. 루트 인증서를 사용하는 것이 좋습니다.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "AKS 자동 인증서 회전 사용",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
"severity": "높다",
- "text": "ADDS 도메인 컨트롤러가 네이티브 Azure의 ID 구독에 배포되었는지 확인합니다.",
- "waf": "안전"
+ "text": "kubernetes 버전을 주기적으로(예: 분기별) 업그레이드하거나 AKS 자동 업그레이드 기능을 사용하는 정기적인 프로세스가 있습니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
- "severity": "보통",
- "text": "ADDS 사이트 및 서비스가 Azure 기반 리소스(Azure VMware Solution 포함)의 인증 요청을 Azure에 로컬로 유지하도록 구성되어 있는지 확인합니다.",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "node-image upgrade를 사용하지 않는 경우 Linux 노드 업그레이드에 kured를 사용합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
"severity": "높다",
- "text": "vCenter가 ADDS에 연결되어 있는지 확인하여 '명명된 사용자 계정'을 기반으로 인증을 사용하도록 설정합니다.",
- "waf": "안전"
+ "text": "클러스터 노드 이미지를 주기적으로(예: 매주) 업그레이드하는 정기적인 프로세스가 있습니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
- "severity": "보통",
- "text": "vCenter에서 ADDS로의 연결이 보안 프로토콜(LDAPS)을 사용하고 있는지 확인합니다.",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "gitops를 고려하여 애플리케이션 또는 클러스터 구성을 여러 클러스터에 배포합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
- "severity": "보통",
- "text": "vCenter IdP의 CloudAdmin 계정은 긴급 계정으로만 사용됩니다(Break-glass).",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "프라이빗 클러스터에서 AKS 명령 호출을 사용하는 것이 좋습니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "계획된 이벤트의 경우 노드 자동 드레인 사용을 고려하십시오.",
+ "waf": "작업"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
"severity": "높다",
- "text": "NSX-Manager가 외부 ID 제공자(LDAPS)와 통합되었는지 확인합니다.",
- "waf": "안전"
+ "text": "노드 RG(일명 '인프라 RG')의 운영자가 변경을 수행하지 않도록 자체 거버넌스 관행을 개발합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
- "severity": "보통",
- "text": "VMware vSphere에서 사용하기 위해 RBAC 모델이 생성되었습니까?",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "사용자 정의 노드 RG (일명 '인프라 RG') 이름 사용",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "보통",
- "text": "RBAC 권한은 특정 사용자가 아닌 ADDS 그룹에 부여해야 합니다",
- "waf": "안전"
+ "text": "YAML 매니페스트에서 더 이상 사용되지 않는 Kubernetes API를 사용하지 마십시오.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
- "severity": "높다",
- "text": "Azure의 Azure VMware Solution 리소스에 대한 RBAC 권한은 제한된 소유자 집합으로만 '잠김'됩니다",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "테인트 Windows 노드",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
- "severity": "높다",
- "text": "모든 사용자 지정 역할의 범위가 CloudAdmin 허용 권한 부여로 지정되었는지 확인합니다.",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "Windows 컨테이너 패치 수준을 호스트 패치 수준과 동기화된 상태로 유지",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "severity": "높다",
- "text": "현재 고객 사용 사례에 대해 올바른 Azure VMware Solution 연결 모델을 선택했습니까?",
- "waf": "공연"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "클러스터 수준의 진단 설정을 통해Via Diagnostic Settings at the cluster level",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "마스터 로그(즉, API 로그)를 Azure Monitor 또는 기본 로그 관리 솔루션으로 보냅니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
- "severity": "높다",
- "text": "'연결 모니터'를 사용하여 온-프레미스에서 Azure로의 ExpressRoute 또는 VPN 연결이 모니터링되는지 확인합니다.",
- "waf": "작업"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 nodePool 스냅샷을 사용합니다.",
+ "waf": "비용"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure VMware Solution 백 엔드 ExpressRoute 연결을 모니터링하기 위해 Azure 네이티브 리소스에서 Azure VMware Solution 가상 머신으로 연결 모니터가 만들어졌는지 확인합니다.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "시간에 민감하지 않은 워크로드에 대한 스폿 노드 풀 고려",
"waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
- "severity": "보통",
- "text": "엔드-2-엔드 연결을 모니터링하기 위해 온-프레미스 리소스에서 Azure VMware Solution 가상 머신으로 연결 모니터가 만들어졌는지 확인합니다.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "빠른 버스팅을 위해 AKS 가상 노드 고려",
"waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "높다",
- "text": "경로 서버를 사용하는 경우 경로 서버에서 ExR 게이트웨이로, 온-프레미스로 1,000개 이상의 경로가 전파되지 않도록 합니다(ARS 제한).",
+ "text": "Container Insights(또는 Prometheus와 같은 다른 도구)를 사용하여 클러스터 지표 모니터링",
"waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
"severity": "높다",
- "text": "Azure Portal에서 Azure VMware Solution 리소스를 관리하는 역할에 대해 Privileged Identity Management가 구현되어 있나요(고정 권한이 허용되지 않음).",
- "waf": "안전"
+ "text": "Container Insights(또는 Telegraf/ElasticSearch와 같은 다른 도구)를 사용하여 클러스터 로그를 저장하고 분석합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
- "severity": "높다",
- "text": "Azure VMware Solution PIM 역할에 대해 Privileged Identity Management 감사 보고를 구현해야 합니다.",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "노드의 CPU 및 메모리 사용률 모니터링",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "보통",
- "text": "Privileged Identity Management를 사용하는 경우 Azure VMware Solution 자동 호스트 교체 알림에 대한 유효한 SMTP 레코드를 사용하여 유효한 Entra ID 사용 계정을 만들었는지 확인합니다. (상시 권한 필요)",
- "waf": "안전"
+ "text": "Azure CNI를 사용하는 경우 노드당 사용되는 Pod IP의 %를 모니터링합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
- "severity": "높다",
- "text": "CloudAdmin 계정 사용을 긴급 액세스로만 제한",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "OS 디스크의 I/O는 중요한 리소스입니다. 노드의 OS가 I/O에서 제한되면 예측할 수 없는 동작이 발생할 수 있으며, 일반적으로 노드가 NotReady로 선언됩니다",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
+ "severity": "보통",
+ "text": "노드에서 OS 디스크 큐 크기 모니터링Monitor OS disk queue depth in nodes",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "보통",
- "text": "vCenter에서 사용자 지정 RBAC 역할을 만들어 vCenter 내에서 최소 권한 모델 구현",
- "waf": "안전"
+ "text": "AzFW/NVA에서 송신 필터링을 사용하지 않는 경우 표준 ALB 할당 SNAT 포트를 모니터링합니다",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "보통",
- "text": "cloudadmin(vCenter) 및 admin(NSX) 자격 증명을 정기적으로 순환하도록 정의된 프로세스입니다.",
- "waf": "안전"
+ "text": "AKS 클러스터에 대한 Resource Health 알림 구독Subscribe to resource health notifications for your AKS cluster",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "높다",
- "text": "Azure VMware Solution에서 실행되는 워크로드(VM)에 사용할 중앙 집중식 ID 공급자 사용",
- "waf": "안전"
+ "text": "Pod 규격에서 요청 및 제한 구성",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "보통",
- "text": "NSX-T 내에서 East-West 트래픽 필터링이 구현되었는지 여부",
- "waf": "안전"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
- "severity": "높다",
- "text": "Azure VMware Solution의 워크로드는 인터넷에 직접 노출되지 않습니다. 트래픽은 Azure Application Gateway, Azure Firewall 또는 제3자 솔루션에 의해 필터링되고 검사됩니다",
- "waf": "안전"
+ "text": "네임스페이스에 대한 리소스 할당량 적용Enforce resource quotas for namespaces",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
"severity": "높다",
- "text": "감사 및 로깅은 Azure VMware Solution 및 Azure VMware Solution 기반 워크로드에 대한 인바운드 인터넷 요청에 대해 구현됩니다",
- "waf": "안전"
+ "text": "구독에 노드 풀을 확장할 수 있는 충분한 할당량이 있는지 확인합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "보통",
- "text": "세션 모니터링은 의심스러운/악의적인 활동을 식별하기 위해 Azure VMware Solution 또는 Azure VMware Solution 기반 워크로드의 아웃바운드 인터넷 연결에 대해 구현됩니다",
- "waf": "안전"
+ "text": "Cluster Autoscaler 사용",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure의 ExR/VPN Gateway 서브넷에서 DDoS 표준 보호를 사용할 수 있나요?",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "AKS 노드 풀에 대한 노드 구성 사용자 지정",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "보통",
- "text": "전용 PAW(Privileged Access Workstation)를 사용하여 Azure VMware Solution, vCenter, NSX Manager 및 HCX Manager 관리",
- "waf": "안전"
+ "text": "필요한 경우 Horizontal Pod Autoscaler 사용",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure VMware Solution에서 실행되는 워크로드에 대해 Advanced Threat Detection(클라우드용 Microsoft Defender 또는 ASC) 사용",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "노드가 클수록 임시 디스크 및 가속화된 네트워킹과 같은 더 높은 성능과 기능을 제공하지만 폭발 반경이 증가하고 크기 조정 세분성이 감소합니다",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
+ "severity": "높다",
+ "text": "너무 크거나 너무 작지 않은 적절한 노드 크기를 고려합니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
- "severity": "보통",
- "text": "서버용 Azure ARC를 사용하여 Azure 네이티브 기술을 사용하여 Azure VMware Solution에서 실행되는 워크로드를 적절하게 제어합니다(Azure VMware Solution용 Azure ARC는 아직 사용할 수 없음).",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "확장성을 위해 5,000개 이상의 노드가 필요한 경우 추가 AKS 클러스터를 사용하는 것이 좋습니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
"severity": "낮다",
- "text": "Azure VMware Solution의 워크로드가 런타임 중에 충분한 데이터 암호화(예: 게스트 내 디스크 암호화 및 SQL TDE)를 사용하는지 확인합니다. (vSAN 미사용 암호화가 기본값임)",
- "waf": "안전"
+ "text": "AKS 자동화를 위해 EventGrid 이벤트를 구독하는 것이 좋습니다.",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
"severity": "낮다",
- "text": "게스트 내 암호화를 사용하는 경우 가능한 경우 Azure Key Vault에 암호화 키를 저장합니다",
- "waf": "안전"
+ "text": "AKS 클러스터에서 장기 실행 작업의 경우 이벤트 종료를 고려합니다.",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure VMware Solution에서 실행되는 워크로드에 대해 확장된 보안 업데이트 지원을 사용하는 것이 좋습니다(Azure VMware Solution은 ESU에 적합함).",
- "waf": "안전"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "필요한 경우 AKS 노드에 Azure Dedicated Host를 사용하는 것이 좋습니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
"severity": "높다",
- "text": "적절한 vSAN 데이터 이중화 방법이 사용되는지 확인합니다(RAID 규격).",
- "waf": "신뢰도"
+ "text": "임시 OS 디스크 사용",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
"severity": "높다",
- "text": "vSAN 스토리지 요구 사항을 충족하기 위해 장애 허용 정책이 적용되어 있는지 확인합니다",
- "waf": "신뢰도"
+ "text": "임시 디스크가 아닌 디스크의 경우 여러 Pod를 실행하는 데 고성능이 필요하고 기본 AKS 로그 회전 임계값을 사용하여 대규모 로그를 생성하므로 많은 Pod/노드를 실행할 때 노드에 높은 IOPS 및 더 큰 OS 디스크를 사용합니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
- "severity": "높다",
- "text": "충분한 할당량을 요청했는지 확인하고 성장 및 재해 복구 요구 사항을 고려했는지 확인합니다",
- "waf": "신뢰도"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
+ "severity": "낮다",
+ "text": "고성능 스토리지 옵션의 경우 AKS에서 Ultra Disks를 사용합니다.",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
"severity": "보통",
- "text": "ESXi에 대한 액세스 제약 조건을 이해하고 타사 솔루션에 영향을 줄 수 있는 액세스 제한이 있는지 확인합니다.",
- "waf": "작업"
+ "text": "클러스터에서 상태를 유지하지 않고 외부(AzStorage, AzSQL, Cosmos 등)에 데이터를 저장합니다.",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
"severity": "보통",
- "text": "새 노드 요청에 대한 리드 타임을 염두에 두고 ESXi 호스트 밀도 및 효율성에 대한 정책이 있는지 확인합니다",
- "waf": "작업"
+ "text": "AzFiles 표준을 사용하는 경우 성능상의 이유로 AzFiles 프리미엄 및/또는 ANF를 고려합니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
"severity": "보통",
- "text": "Azure VMware Solution에 대한 적절한 비용 관리 프로세스가 있는지 확인 - Azure Cost Management를 사용할 수 있습니다.",
- "waf": "비용"
+ "text": "Azure 디스크 및 AZ를 사용하는 경우 올바른 영역에 스토리지를 프로비전하기 위해 VolumeBindingMode::WaitForFirstConsumer를 사용하여 LRS 디스크의 영역 내에 노드 풀을 사용하거나 여러 영역에 걸쳐 있는 노드 풀에 ZRS 디스크를 사용하는 것이 좋습니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub는 미사용 데이터의 암호화를 제공합니다. 사용자 고유의 키를 사용하는 경우 데이터는 여전히 Microsoft 관리형 키를 사용하여 암호화되지만 Microsoft 관리형 키는 고객 관리형 키를 사용하여 암호화됩니다. ",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
"severity": "낮다",
- "text": "Azure VMware Solution 사용 비용을 최적화하는 데 사용되는 Azure 예약 인스턴스입니까?",
- "waf": "비용"
+ "text": "필요한 경우 미사용 데이터 암호화에서 고객 관리형 키 옵션 사용Use customer-managed key option in data at rest encryption when required",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hubs 네임스페이스를 사용하면 클라이언트가 TLS 1.0 이상을 사용하여 데이터를 보내고 받을 수 있습니다. 더 엄격한 보안 조치를 적용하기 위해 클라이언트가 최신 버전의 TLS를 사용하여 데이터를 보내고 받도록 Event Hubs 네임스페이스를 구성할 수 있습니다. Event Hubs 네임스페이스에 최소 버전의 TLS가 필요한 경우 이전 버전으로 수행된 모든 요청이 실패합니다. ",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "다른 Azure 네이티브 서비스를 사용할 때 Azure Private-Link 사용 고려",
+ "text": "요청에 필요한 최소 버전의 TLS(전송 계층 보안) 적용 ",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
- "severity": "높다",
- "text": "필요한 모든 리소스가 동일한 Azure 가용성 영역 내에 있는지 확인합니다.",
- "waf": "공연"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Event Hubs 네임스페이스를 만들 때 네임스페이스에 대해 RootManageSharedAccessKey라는 정책 규칙이 자동으로 만들어집니다. 이 정책에는 전체 네임스페이스에 대한 관리 권한이 있습니다. 이 규칙을 관리 루트 계정처럼 취급하고 응용 프로그램에서 사용하지 않는 것이 좋습니다. RBAC에서 AAD를 인증 공급자로 사용하는 것이 좋습니다. ",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "Azure VMware Solution 게스트 VM 워크로드에 대해 클라우드용 Microsoft Defender 사용",
+ "text": "필요하지 않은 경우 루트 계정을 사용하지 마십시오.",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure 리소스에 대한 관리 ID는 Azure VM(Virtual Machines), 함수 앱, Virtual Machine Scale Sets 및 기타 서비스에서 실행되는 애플리케이션에서 Azure AD 자격 증명을 사용하여 Event Hubs 리소스에 대한 액세스 권한을 부여할 수 있습니다. Azure AD 인증과 함께 Azure 리소스에 대한 관리 ID를 사용하면 클라우드에서 실행되는 애플리케이션에 자격 증명을 저장하지 않아도 됩니다. ",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "Azure Arc 지원 서버를 사용하여 Azure VMware Solution 게스트 VM 워크로드 관리",
+ "text": "가능한 경우 애플리케이션은 관리 ID를 사용하여 Azure Event Hub에 인증해야 합니다. 그렇지 않은 경우 Azure Key Vault 또는 동등한 서비스에 스토리지 자격 증명(SAS, 서비스 주체 자격 증명)을 사용하는 것이 좋습니다",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "권한을 만들 때 Azure Event Hub에 대한 클라이언트의 액세스를 세밀하게 제어할 수 있습니다. Azure Event Hub의 사용 권한은 개별 리소스 수준(예: 소비자 그룹, 이벤트 허브 엔터티, 이벤트 허브 네임스페이스 등)으로 범위를 지정할 수 있으며 범위가 지정되어야 합니다.",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
+ "service": "Event Hubs",
"severity": "높다",
- "text": "Azure VMware Solution에서 진단 및 메트릭 로깅 사용Enable Diagnostic and metric logging on Azure VMware Solution",
- "waf": "작업"
+ "text": "최소 권한 데이터 평면 RBAC 사용",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub 리소스 로그에는 작업 로그, 가상 네트워크 및 Kafka 로그가 포함됩니다. 런타임 감사 로그는 Event Hubs의 모든 데이터 평면 액세스 작업(예: 이벤트 보내기 또는 받기)에 대해 집계된 진단 정보를 캡처합니다.",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "Azure VMware Solution 게스트 VM 워크로드에 Log Analytics 에이전트 배포",
- "waf": "작업"
+ "text": "보안 조사를 위해 로깅을 사용하도록 설정합니다. Azure Monitor를 사용하여 리소스 로그, 런타임 감사 로그 및 Kafka 로그와 같은 메트릭 및 로그를 캡처합니다.",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure Event Hub는 기본적으로 공용 IP 주소를 가지며 인터넷에 연결할 수 있습니다. 프라이빗 엔드포인트를 사용하면 가상 네트워크와 Azure Event Hub 간의 트래픽이 Microsoft 백본 네트워크를 통해 트래버스할 수 있습니다. 또한 퍼블릭 엔드포인트를 사용하지 않는 경우 사용하지 않도록 설정해야 합니다. ",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "Azure VMware Solution VM 워크로드에 대한 백업 정책 및 솔루션을 문서화하고 구현했는지 확인합니다.",
- "waf": "작업"
+ "text": "프라이빗 엔드포인트를 사용하여 Azure Event Hub에 액세스하고 해당하는 경우 공용 네트워크 액세스를 사용하지 않도록 설정하는 것이 좋습니다.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "IP 방화벽을 사용하면 퍼블릭 엔드포인트를 CIDR(Classless Inter-Domain Routing) 표기법의 IPv4 주소 또는 IPv4 주소 범위 집합으로만 추가로 제한할 수 있습니다. ",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "클라우드용 Microsoft Defender를 사용하여 Azure VMware Solution에서 실행되는 워크로드의 규정 준수 모니터링",
+ "text": "특정 IP 주소 또는 범위에서 Azure Event Hub 네임스페이스에 대한 액세스만 허용하는 것이 좋습니다",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
+ "severity": "보통",
+ "text": "FTA 탄력성 핸드북 활용",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": " 영역 사용 지역의 프리미엄, 전용 또는 표준 SKU를 사용하여 포털에서 만든 새 EH 네임스페이스에 대해 자동으로 설정됩니다. EH 메타데이터와 이벤트 데이터 자체는 모두 영역 간에 복제됩니다",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
+ "severity": "높다",
+ "text": "지역적으로 적용 가능한 경우 가용성 영역 활용Leverage Availability Zones if regionally applicable",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "적용 가능한 규정 준수 기준이 클라우드용 Microsoft Defender에 추가되었나요?",
- "waf": "안전"
+ "text": "예측 가능한 성능을 위해 프리미엄 또는 전용 SKU 사용",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "기본 제공 지역 재해 복구 기능을 사용하도록 설정하면 네임스페이스(Event Hubs, 소비자 그룹 및 설정)의 전체 구성이 기본 네임스페이스에서 보조 네임스페이스로 지속적으로 복제되며, 언제든지 한 번만 장애 조치(failover)를 주 네임스페이스에서 보조 네임스페이스로 이동할 수 있습니다. 활성/수동 기능은 애플리케이션 구성을 변경할 필요 없이 실패한 Azure 지역에서 더 쉽게 복구하고 중단할 수 있도록 설계되었습니다",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
"severity": "높다",
- "text": "Azure VMware Solution 배포에 사용할 Azure 지역을 선택할 때 데이터 보존이 평가되었나요?",
- "waf": "안전"
+ "text": "Active Passive 구성을 사용하여 지역 재해 복구 계획Plan for Geo Disaster Recovery using Active Passive configuration",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
- "severity": "높다",
- "text": "데이터 처리의 영향(서비스 제공자/서비스 소비자 모델)이 명확하고 문서화되어 있습니까?",
- "waf": "안전"
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "다운된 지역에서 이벤트 데이터의 중단 또는 손실을 허용할 수 없는 DR 구성에 사용해야 합니다. 이러한 경우 복제 지침을 따르고 기본 제공 지역 재해 복구 기능(활성/수동)을 사용하지 마세요. 액티브/액티브를 사용하여 서로 다른 지역 및 네임스페이스에서 여러 Event Hubs를 유지 관리하면 허브 간에 이벤트가 복제됩니다",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
+ "severity": "보통",
+ "text": "Business Critical Applications의 경우 Active Active 구성을 사용합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
"severity": "보통",
- "text": "규정 준수를 위해 필요한 경우에만 vSAN에 CMK(고객 관리 키)를 사용하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "복원력 있는 Event Hubs 설계",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
- "severity": "높다",
- "text": "핵심 Azure VMware Solution 모니터링 인사이트를 사용하도록 설정하는 대시보드 만들기",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "낮다",
+ "text": "모범 사례는 기준 고가용성 영역 중복 웹 애플리케이션 아키텍처를 참조하세요.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
- "severity": "높다",
- "text": "Azure VMware Solution 성능에 대한 자동 경고에 대한 중요 임계값에 대한 경고 만들기(CPU >80%, 평균 메모리>80%, vSAN>70%)",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "프리미엄 및 표준 계층을 사용합니다. 이러한 계층은 스테이징 슬롯 및 자동 백업을 지원합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
"severity": "높다",
- "text": "VMware의 지원 임계값이므로 vSAN 사용량이 75% 미만인지 모니터링하기 위해 중요한 경고가 생성되었는지 확인합니다.",
- "waf": "작업"
+ "text": "지역적으로 적용 가능한 경우 가용성 영역 활용(프리미엄 v2 또는 v3 계층 필요)",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "상태 확인 구현",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
"severity": "높다",
- "text": "Azure Service Health 경고 및 알림에 대해 경고가 구성되었는지 확인",
- "waf": "작업"
+ "text": "Azure App Service에 대한 백업 및 복원 모범 사례를 참조하세요.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
- "severity": "보통",
- "text": "처리를 위해 Azure Storage 계정 또는 Azure EventHub로 보내도록 Azure VMware Solution 로깅 구성",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "Azure App Service 안정성 모범 사례 구현",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
"severity": "낮다",
- "text": "VMware vSphere에 대한 심층적인 통찰력이 필요한 경우: 솔루션에서 vRealize Operations 및/또는 vRealize Network Insights가 사용됩니까?",
- "waf": "작업"
+ "text": "App Service 앱을 다른 지역으로 이동하는 방법을 숙지합니다. 재해가 발생하는 동안",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
"severity": "높다",
- "text": "VM에 대한 vSAN 스토리지 정책은 씩 프로비저닝을 적용하므로 기본 스토리지 정책이 아닌지 확인합니다.",
- "waf": "작업"
+ "text": "Azure App Service의 안정성 지원 숙지",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"severity": "보통",
- "text": "vSAN은 유한한 리소스이므로 vSphere 컨텐츠 라이브러리가 vSAN에 배치되지 않도록 합니다.",
- "waf": "작업"
+ "text": "App Service 계획에서 실행되는 Function Apps에 대해 \"Always On\"이 사용하도록 설정되어 있는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "보통",
- "text": "백업 솔루션에 대한 데이터 저장소가 vSAN 스토리지 외부에 저장되어 있는지 확인합니다. Azure 네이티브 또는 디스크 풀 지원 데이터 저장소에서",
- "waf": "작업"
+ "text": "상태 검사를 사용하여 App Service 인스턴스 모니터링Monitor App Service instances using Health checks",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"severity": "보통",
- "text": "Azure VMware Solution에서 실행되는 워크로드가 서버용 Azure Arc를 사용하여 하이브리드 관리되는지 확인합니다(Arc for Azure VMware Solution은 미리 보기 상태임).",
- "waf": "작업"
+ "text": "Application Insights 가용성 테스트를 사용하여 웹앱 또는 웹 사이트의 가용성 및 응답성 모니터링",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure Log Analytics 및 Azure Monitor를 사용하여 Azure VMware Solution에서 실행되는 워크로드를 모니터링하는지 확인합니다.",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
+ "severity": "낮다",
+ "text": "Application Insights 표준 테스트를 사용하여 웹앱 또는 웹 사이트의 가용성 및 응답성 모니터링",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
- "severity": "보통",
- "text": "기존 업데이트 관리 도구 또는 Azure 업데이트 관리에 Azure VMware Solution에서 실행되는 워크로드 포함",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Key Vault를 사용하여 애플리케이션에 필요한 모든 비밀을 저장합니다. Key Vault는 비밀을 저장하기 위한 안전하고 감사된 환경을 제공하며 Key Vault SDK 또는 App Service Key Vault 참조를 통해 App Service와 잘 통합됩니다.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "Key Vault를 사용하여 비밀 저장",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure Policy를 사용하여 Azure 관리, 모니터링 및 보안 솔루션에서 Azure VMware Solution 워크로드 온보딩",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "관리 ID를 사용하여 Key Vault SDK를 사용하거나 App Service Key Vault 참조를 통해 Key Vault에 연결합니다.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "관리 ID를 사용하여 Key Vault에 연결",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service TLS 인증서를 Key Vault에 저장합니다.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "Key Vault를 사용하여 TLS 인증서를 저장합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "중요한 정보를 처리하는 시스템은 격리해야 합니다. 이렇게 하려면 별도의 App Service 계획 또는 App Service Environment를 사용하고 다른 구독 또는 관리 그룹을 사용하는 것이 좋습니다.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "보통",
- "text": "Azure VMware Solution에서 실행되는 워크로드가 클라우드용 Microsoft Defender에 온보딩되었는지 확인",
+ "text": "민감한 정보를 처리하는 시스템 격리",
"waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service의 로컬 디스크는 암호화되지 않으며 중요한 데이터를 저장해서는 안 됩니다. (예: D:\\\\Local and %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"severity": "보통",
- "text": "vSAN은 유한한 리소스이므로 백업이 vSAN에 저장되지 않도록 합니다.",
- "waf": "신뢰도"
+ "text": "로컬 디스크에 중요한 데이터를 저장하지 마십시오.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "인증된 웹 애플리케이션의 경우 Azure AD 또는 Azure AD B2C와 같이 잘 설정된 ID 공급자를 사용합니다. 선택한 애플리케이션 프레임워크를 활용하여 이 공급자와 통합하거나 App Service 인증/권한 부여 기능을 사용합니다.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
"severity": "보통",
- "text": "모든 DR 솔루션을 고려하고 비즈니스에 가장 적합한 솔루션을 결정했습니까? [SRM/제트스트림/제르토/빔/...]",
- "waf": "신뢰도"
+ "text": "인증에 설정된 ID 공급자 사용",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
- "severity": "보통",
- "text": "재해 복구 기술이 네이티브 Azure IaaS인 경우 Azure Site Recovery 사용Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS",
- "waf": "신뢰도"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "잘 관리되고 안전한 DevOps 배포 파이프라인과 같이 제어되고 신뢰할 수 있는 환경에서 App Service에 코드를 배포합니다. 이렇게 하면 버전이 제어되지 않고 악성 호스트에서 배포되는 것으로 확인되지 않은 코드를 방지할 수 있습니다.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "신뢰할 수 있는 환경에서 배포",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "FTP/FTPS 및 WebDeploy/SCM 모두에 대한 기본 인증을 사용 안함으로 설정합니다. 이렇게 하면 이러한 서비스에 대한 액세스가 비활성화되고 배포에 Azure AD 보안 엔드포인트가 사용됩니다. SCM 사이트는 Azure AD 자격 증명을 사용하여 열 수도 있습니다.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"severity": "높다",
- "text": "재해 솔루션 중 하나와 함께 자동화된 복구 계획을 사용하고 가능한 한 수동 작업을 피하십시오.",
- "waf": "신뢰도"
+ "text": "기본 인증 사용 안 함",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "보통",
- "text": "지정학적 지역 쌍을 보조 재해 복구 환경으로 사용Use the geopolitical region pair as the secondary disaster recovery environment",
- "waf": "신뢰도"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "가능한 경우 관리 ID를 사용하여 Azure AD 보안 리소스에 연결합니다. 이렇게 할 수 없는 경우 Key Vault에 비밀을 저장하고 대신 관리 ID를 사용하여 Key Vault에 연결합니다.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "관리 ID를 사용하여 리소스에 연결",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Container Registry에 저장된 이미지를 사용하는 경우 관리 ID를 사용하여 끌어옵니다.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
"severity": "높다",
- "text": "지역 간에 2개의 서로 다른 주소 공간을 사용합니다(예: 서로 다른 지역에 대해 10.0.0.0/16 및 192.168.0.0/16).",
- "waf": "신뢰도"
+ "text": "관리 ID를 사용하여 컨테이너 끌어오기",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service의 진단 설정을 구성하면 모든 원격 분석을 로깅 및 모니터링의 중앙 대상으로 Log Analytics에 보낼 수 있습니다. 이를 통해 HTTP 로그, 애플리케이션 로그, 플랫폼 로그 등과 같은 App Service의 런타임 활동을 모니터링할 수 있습니다.",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "보통",
- "text": "ExpressRoute Global Reach는 기본 및 보조 Azure VMware Solution 프라이빗 클라우드 간의 연결에 사용되나요, 아니면 네트워크 가상 어플라이언스를 통해 라우팅이 수행되나요?",
- "waf": "신뢰도"
+ "text": "Log Analytics에 App Service 런타임 로그 보내기Send App Service runtime logs to Log Analytics",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "활동 로그를 Log Analytics에 로깅 및 모니터링의 중앙 대상으로 보내도록 진단 설정을 지정합니다. 이렇게 하면 App Service 리소스 자체에서 컨트롤 플레인 작업을 모니터링할 수 있습니다.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"severity": "보통",
- "text": "모든 백업 솔루션을 고려하고 비즈니스에 가장 적합한 솔루션을 결정했습니까? [ MABS/CommVault/Metallic.io/Veeam/입니다. ]",
- "waf": "신뢰도"
+ "text": "Log Analytics에 App Service 활동 로그 보내기Send App Service activity logs to Log Analytics",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "지역 VNet 통합, 네트워크 보안 그룹 및 UDR의 조합을 사용하여 아웃바운드 네트워크 액세스를 제어합니다. 트래픽은 Azure Firewall과 같은 NVA로 라우팅되어야 합니다. 방화벽의 로그를 모니터링해야 합니다.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "보통",
- "text": "Azure VMware Solution 프라이빗 클라우드와 동일한 지역에 백업 솔루션 배포Deploy your backup solution in the same region as your Azure VMware Solution private cloud",
- "waf": "신뢰도"
+ "text": "아웃바운드 네트워크 액세스를 제어해야 함",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "VNet 통합을 사용하고 VNet NAT Gateway 또는 NVA와 같은 Azure Firewall을 사용하여 안정적인 아웃바운드 IP를 제공할 수 있습니다. 이렇게 하면 필요한 경우 수신 당사자가 IP를 기반으로 허용 목록을 만들 수 있습니다. Azure 서비스에 대한 통신의 경우 IP 주소에 의존할 필요가 없는 경우가 많으며 서비스 엔드포인트와 같은 메커니즘을 대신 사용해야 합니다. (또한 수신 끝에서 프라이빗 엔드포인트를 사용하면 SNAT가 발생하지 않고 안정적인 아웃바운드 IP 범위를 제공합니다.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
+ "severity": "낮다",
+ "text": "인터넷 주소에 대한 아웃바운드 통신을 위한 안정적인 IP 보장",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service 액세스 제한, 서비스 엔드포인트 또는 프라이빗 엔드포인트의 조합을 사용하여 인바운드 네트워크 액세스를 제어합니다. 웹앱 자체 및 SCM 사이트에 대해 서로 다른 액세스 제한이 필요하고 구성될 수 있습니다.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "인바운드 네트워크 액세스를 제어해야 합니다.",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Application Gateway 또는 Azure Front Door와 같은 Web Application Firewall을 사용하여 악의적인 인바운드 트래픽으로부터 보호합니다. WAF의 로그를 모니터링해야 합니다.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "App Service 앞에서 WAF 사용Use a WAF in front of App Service",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "WAF에 대한 액세스만 잠궈 WAF를 우회할 수 없는지 확인합니다. 액세스 제한, 서비스 엔드포인트 및 프라이빗 엔드포인트의 조합을 사용합니다.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "WAF가 우회되지 않도록 방지",
+ "waf": "안전"
+ },
+ {
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service 구성에서 최소 TLS 정책을 1.2로 설정합니다.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
"severity": "보통",
- "text": "vSan의 외부, Azure 네이티브 구성 요소에 백업 솔루션 배포",
- "waf": "신뢰도"
+ "text": "최소 TLS 정책을 1.2로 설정합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "낮다",
- "text": "Azure 플랫폼에서 관리하는 VMware 구성 요소의 복원을 요청하는 프로세스가 마련되어 있나요?",
- "waf": "신뢰도"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "HTTPS만 사용하도록 App Service를 구성합니다. 이로 인해 App Service가 HTTP에서 HTTPS로 리디렉션됩니다. 코드 또는 WAF에서 HSTS(HTTP Strict Transport Security)를 사용하여 HTTPS를 통해서만 사이트에 액세스해야 함을 브라우저에 알리는 것이 좋습니다.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "HTTPS만 사용",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "낮다",
- "text": "수동 배포의 경우 모든 구성 및 배포를 문서화해야 합니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "CORS 구성에서 와일드카드를 사용하면 모든 원본이 서비스에 액세스할 수 있으므로 CORS의 목적에 어긋나므로 사용하지 마세요. 특히 서비스에 액세스할 수 있을 것으로 예상되는 원본만 허용합니다.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "와일드카드는 CORS에 사용할 수 없습니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "낮다",
- "text": "수동 배포의 경우 Azure VMware Solution 프라이빗 클라우드에서 실수로 인한 작업을 방지하기 위해 리소스 잠금을 구현하는 것이 좋습니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "원격 디버깅은 서비스에서 추가 포트를 열어 공격 노출 영역을 증가시키므로 프로덕션에서 켜면 안 됩니다. 서비스는 48시간 후에 자동으로 원격 디버깅을 설정합니다.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "원격 디버깅 끄기",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "severity": "낮다",
- "text": "자동화된 배포의 경우 최소한의 프라이빗 클라우드를 배포하고 필요에 따라 확장합니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "App Service용 Defender를 사용하도록 설정합니다. 이는 다른 위협 중에서도 알려진 악성 IP 주소에 대한 통신을 탐지합니다. 작업의 일부로 App Service용 Defender의 권장 사항을 검토합니다.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "클라우드용 Defender 사용 - App Service용 Defender",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "낮다",
- "text": "자동화된 배포의 경우 배포를 시작하기 전에 할당량을 요청하거나 예약합니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure는 네트워크에서 DDoS 기본 보호를 제공하며, 정상적인 트래픽 패턴을 학습하고 비정상적인 동작을 감지할 수 있는 지능형 DDoS 표준 기능으로 개선할 수 있습니다. DDoS 표준은 Virtual Network에 적용되므로 Application Gateway 또는 NVA와 같은 앱 앞의 네트워크 리소스에 대해 구성해야 합니다.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "WAF VNet에서 DDOS 보호 표준 사용Enable DDOS Protection Standard on the WAF VNet",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "낮다",
- "text": "자동화된 배포의 경우 적절한 거버넌스를 위해 자동화 또는 Azure Policy를 통해 관련 리소스 잠금을 만들어야 합니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure Container Registry에 저장된 이미지를 사용하는 경우 프라이빗 엔드포인트 및 앱 설정 'WEBSITE_PULL_IMAGE_OVER_VNET'를 사용하여 Azure Container Registry에서 가상 네트워크를 통해 끌어옵니다.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "Virtual Network를 통해 컨테이너 끌어오기",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "낮다",
- "text": "ExR 인증 키에 대해 사람이 이해할 수 있는 이름을 구현하여 키의 목적/용도를 쉽게 식별할 수 있습니다.",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "참여의 침투 테스트 규칙에 따라 웹 응용 프로그램에 대한 침투 테스트를 수행합니다.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "침투 테스트 수행",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "severity": "낮다",
- "text": "Azure VMware Solution 및 ExpressRoute를 배포하는 데 별도의 서비스 원칙을 사용하는 경우 Key Vault를 사용하여 비밀 및 권한 부여 키를 저장합니다",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "DevSecOps 사례에 따라 취약성을 검증하고 검사한 신뢰할 수 있는 코드를 배포합니다.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
+ "severity": "보통",
+ "text": "유효성이 검사된 코드 배포",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
- "severity": "낮다",
- "text": "Azure VMware Solution은 제한된 수의 병렬 작업만 지원하므로 많은 리소스를 Azure VMware Solution 배포해야 하는 경우 IaC에서 작업을 직렬화하기 위한 리소스 종속성을 정의합니다.",
- "waf": "작업"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "지원되는 플랫폼, 프로그래밍 언어, 프로토콜 및 프레임워크의 최신 버전을 사용합니다.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
+ "severity": "높다",
+ "text": "최신 플랫폼, 언어, 프로토콜 및 프레임워크 사용",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "낮다",
- "text": "단일 Tier-1 게이트웨이를 사용하여 NSX-T 세그먼트의 자동화된 구성을 수행하는 경우 NSX-Manager API 대신 Azure Portal API를 사용합니다",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
- "severity": "보통",
- "text": "자동화된 스케일 아웃을 사용하려는 경우 Azure VMware Solution을 실행하는 구독에 대해 충분한 Azure VMware Solution 할당량을 적용해야 합니다",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
- "severity": "보통",
- "text": "자동 축소를 사용하려는 경우 이러한 작업을 수행하기 전에 스토리지 정책 요구 사항을 고려해야 합니다",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
- "severity": "보통",
- "text": "한 번에 하나의 크기 조정 작업만 수행할 수 있으므로 크기 조정 작업은 항상 단일 SDDC 내에서 직렬화되어야 합니다(여러 클러스터를 사용하는 경우에도)",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
- "severity": "보통",
- "text": "아키텍처에 사용되는 제3자 솔루션에 대한 확장 작업을 고려하고 검증합니다(지원 여부)Consider and validate scaling operations on 3rd party solutions used in the architecture (supported or not)",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
+ "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": "자동화에서 환경에 대한 규모 확장/축소 최대 한도 정의 및 적용Define and enforce scale in/out maximum limits for your environment in the automations",
- "waf": "공연"
+ "text": "처리된 추론 토큰, 생성된 완료 토큰, 속도 제한 모니터링과 같은 메트릭 관찰",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "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": "MON을 사용하는 경우 동시에 구성된 VM의 제한(HCX에 대한 MON 제한[400 - 표준, 1000 - 대형 어플라이언스])을 알고 있어야 합니다.",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "신뢰도"
+ "text": "Infrastructure as code를 사용하여 Azure OpenAI Service, 모델 배포 및 모든 관련 리소스를 배포합니다",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "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": "MON을 사용하는 경우 100개 이상의 네트워크 확장에서 MON을 사용하도록 설정할 수 없습니다",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "신뢰도"
+ "text": "API 키 대신 관리 ID로 Microsoft Entra 인증 사용",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
- "severity": "보통",
- "text": "마이그레이션에 VPN 연결을 사용하는 경우 그에 따라 MTU 크기를 조정합니다.",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure(500Mbps 이하)에 연결하는 낮은 연결 지역의 경우 HCX WAN 최적화 어플라이언스 배포를 고려합니다.",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "severity": "보통",
- "text": "Azure NetApp Files를 사용하여 Azure VMware Solution용 스토리지를 확장하는 경우 VM에 직접 연결하는 대신 VMware 데이터 저장소로 사용하는 것이 좋습니다.",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
+ "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": "전용 ExpressRoute 게이트웨이가 외부 데이터 스토리지 솔루션에 사용되고 있는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "토큰 크기, 스트리밍 옵션을 제한하여 시스템의 대기 시간을 개선합니다.",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "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": "외부 데이터 스토리지 솔루션에 사용되는 ExpressRoute 게이트웨이에서 FastPath를 사용하도록 설정되어 있는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "탄력성 요구를 예측하여 우선 순위에 따라 동기 및 일괄 처리 요청 분리를 결정합니다. 우선 순위가 높은 경우 동기 접근 방식을 사용하고 낮은 우선 순위의 경우 큐를 사용한 비동기 일괄 처리가 선호됩니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
+ "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": "확장된 클러스터를 사용하는 경우 선택한 재해 복구 솔루션이 공급업체에서 지원되는지 확인합니다",
- "waf": "신뢰도"
+ "text": "소비자의 예상 수요를 기반으로 토큰 사용 요구 사항을 벤치마킹합니다. 프로비저닝된 처리량 단위 배포를 사용하는 경우 처리량의 유효성을 검사하는 데 도움이 되도록 Azure OpenAI 벤치마킹 도구를 사용하는 것이 좋습니다",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "severity": "높다",
- "text": "확장된 클러스터를 사용하는 경우 제공된 SLA가 요구 사항을 충족하는지 확인합니다",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
+ "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": "확장된 클러스터를 사용하는 경우 두 ExpressRoute 회로가 모두 연결 허브에 연결되어 있는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "올바른 작업에 적합한 모델을 선택하십시오. 속도, 응답 품질 및 출력 복잡성 간에 적절한 절충점이 있는 모델 선택",
+ "waf": "공연"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "높다",
- "text": "확장된 클러스터를 사용하는 경우 두 ExpressRoute 회로 모두에서 GlobalReach를 사용하도록 설정되어 있는지 확인합니다.",
- "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "severity": "높다",
- "text": "사이트 재해 허용 범위 설정을 적절하게 고려하고 필요한 경우 비즈니스에 맞게 변경하십시오.",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
- "severity": "보통",
- "text": "전역 수준에서 오류 처리 정책 구현",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "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": "모든 API 정책에 요소가 포함되어 있는지 확인합니다.",
- "waf": "작업"
+ "text": "워크로드에 대한 TPM 및 RPM의 적절한 할당량이 있는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
+ "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": "정책 조각을 사용하여 여러 API에서 동일한 정책 정의를 반복하지 않도록 합니다.",
- "waf": "작업"
+ "text": "HAI 도구 키트 지침의 고려 사항을 검토하고 slution에 대한 이러한 상호 작용 방법을 적용합니다",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "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": "API로 수익을 창출할 계획이라면 '수익 창출 지원' 도움말에서 권장사항을 확인하세요",
- "waf": "작업"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
- "severity": "높다",
- "text": "진단 설정을 사용하도록 설정하여 로그를 Azure Monitor로 내보내기",
- "waf": "작업"
+ "text": "미세 조정이 사용되는 경우 지역 간에 별도의 미세 조정된 모델을 배포합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "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": "더 자세한 원격 분석을 위해 Application Insights 사용",
- "waf": "작업"
+ "text": "중요한 데이터를 정기적으로 백업 및 복제하여 데이터 손실 또는 시스템 장애 발생 시 데이터 가용성과 복구 가능성을 보장합니다. Azure의 백업 및 재해 복구 서비스를 활용하여 데이터를 보호하세요.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
+ "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": "가장 중요한 메트릭에 대한 경고 구성",
- "waf": "작업"
+ "text": "SLA를 갖도록 Azure AI 검색 서비스 계층을 선택해야 합니다. ",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
- "severity": "높다",
- "text": "사용자 지정 SSL 인증서가 안전하게 액세스하고 업데이트할 수 있도록 Azure Key Vault에 저장되어 있는지 확인합니다",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "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": "Azure AD를 사용하여 API(데이터 평면)에 들어오는 요청 보호",
+ "text": "BYOK(옵션)를 사용한 SSE/디스크 암호화로 RAG에 사용되는 데이터 암호화",
"waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "severity": "보통",
- "text": "Microsoft Entra ID를 사용하여 개발자 포털에서 사용자 인증",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "severity": "보통",
- "text": "제품의 가시성을 제어하기 위해 적절한 그룹을 만듭니다",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
+ "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": "백엔드 기능을 사용하여 중복 API 백엔드 구성 제거",
- "waf": "작업"
+ "text": "데이터 암호화, 마스킹 또는 수정 기술을 구현하여 비프로덕션 환경에서 또는 테스트 또는 문제 해결을 위해 데이터를 공유할 때 민감한 데이터를 숨기거나 난독화된 값으로 대체합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
+ "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": "DR의 경우 99.99% SLA를 위해 둘 이상의 지역에 걸쳐 확장된 배포와 함께 프리미엄 계층을 활용합니다",
- "waf": "신뢰도"
+ "text": "규정 준수 규정을 준수하기 위해 데이터 보존 및 폐기 정책을 수립합니다. 더 이상 필요하지 않은 데이터에 대한 안전한 삭제 방법을 구현하고 데이터 보존 및 폐기 활동에 대한 감사 추적을 유지 관리합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "보통",
- "text": "99.99%의 SLA 증가를 위해 둘 이상의 가용성 영역에 하나 이상의 단위를 배포합니다.",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "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": "자동화된 백업 루틴이 있는지 확인",
- "waf": "신뢰도"
+ "text": "개인 정보 보호 제어를 구현하고 데이터 처리 활동에 필요한 동의 또는 권한을 얻어 GDPR 또는 HIPAA와 같은 관련 데이터 보호 규정을 준수하도록 합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"severity": "보통",
- "text": "정책을 사용하여 장애 조치 백엔드 URL 및 캐싱을 추가하여 실패한 호출을 줄입니다.",
- "waf": "신뢰도"
+ "text": "데이터 보안 모범 사례, 데이터 안전한 처리의 중요성, 데이터 침해와 관련된 잠재적 위험에 대해 직원을 교육합니다. 데이터 보안 프로토콜을 성실히 따르도록 권장합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "낮다",
- "text": "고성능 수준에서 기록해야 하는 경우 Event Hubs 정책을 고려합니다",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "Azure OpenAI",
"severity": "보통",
- "text": "제한 정책을 적용하여 초당 요청 수 제어Apply throttling policies to control the number of requests per second",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "공연"
+ "text": "데이터 민감도 수준이 다양하다면 각 수준에 대해 별도의 인덱스를 만드는 것이 좋습니다. 예를 들어, 일반 데이터에 대한 인덱스와 민감한 데이터에 대한 인덱스가 있을 수 있으며, 각각 다른 액세스 프로토콜에 의해 제어됩니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"severity": "보통",
- "text": "부하가 증가할 때 인스턴스 수를 확장하도록 자동 크기 조정 구성Configure autoscaling to scale out the number of instances when the load increases",
- "waf": "공연"
+ "text": "한 단계 더 나아가 중요한 데이터 세트를 서비스의 다른 인스턴스에 배치합니다. 각 인스턴스는 고유한 특정 RBAC 정책 집합으로 제어할 수 있습니다",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
- "severity": "보통",
- "text": "Azure에 백 엔드 API에 가까운 지역이 없는 자체 호스팅 게이트웨이를 배포합니다.",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
- "severity": "보통",
- "text": "다중 리전 모델에서는 Policies를 사용하여 가용성 또는 지연 시간에 따라 리전 백엔드로 요청을 라우팅합니다.",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
+ "service": "Azure OpenAI",
"severity": "높다",
- "text": "APIM의 제한에 유의해야 합니다.",
- "waf": "신뢰도"
+ "text": "Azure Firewall 및 UDR을 사용하여 엄격한 인바운드 및 아웃바운드 트래픽 제어를 적용하고 외부 통합 지점을 제한합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
+ "service": "Azure OpenAI",
"severity": "높다",
- "text": "자체 호스팅 게이트웨이 배포가 복원력이 있는지 확인합니다.",
- "waf": "신뢰도"
+ "text": "네트워크 세분화 및 액세스 제어를 구현하여 LLM 애플리케이션에 대한 액세스를 인증된 사용자 및 시스템으로만 제한하고 측면 이동을 방지합니다.",
+ "waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
+ "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": "다중 지역 배포를 위해 APIM 앞에서 Azure Front Door 사용Use Azure Front Door in front of APIM for multi-region deployment",
- "waf": "공연"
+ "text": "LLMLingua 또는 gprtrim과 같은 프롬프트 압축 도구 사용",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
- "severity": "보통",
- "text": "VNet(Virtual Network) 내에 서비스 배포Deploy the service within a Virtual Network (VNet)",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
+ "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": "서브넷에 NSG(네트워크 보안 그룹)를 배포하여 APIM에서 들어오고 나가는 트래픽을 제한하거나 모니터링합니다.",
+ "text": "다단계 인증(multi-factor authentication)과 같은 강력한 최종 사용자 인증 메커니즘을 적용하여 LLM 애플리케이션 및 관련 네트워크 리소스에 대한 무단 액세스를 방지합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "Azure OpenAI",
"severity": "보통",
- "text": "프라이빗 엔드포인트를 배포하여 APIM이 VNet에 배포되지 않은 경우 들어오는 트래픽을 필터링합니다.",
+ "text": "네트워크 모니터링 도구를 구현하여 의심스럽거나 악의적인 활동에 대한 네트워크 트래픽을 탐지하고 분석합니다. 로깅을 활성화하여 네트워크 이벤트를 캡처하고 보안 사고 발생 시 포렌식 분석을 용이하게 합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
- "severity": "높다",
- "text": "공용 네트워크 액세스 사용 안 함",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "severity": "보통",
- "text": "PowerShell 자동화 스크립트로 관리 간소화",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "보통",
- "text": "Infrastructure-as-code를 통해 APIM을 구성합니다. Cloud Adaption Framework APIM 랜딩 존 가속기에서 DevOps 모범 사례 검토",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
- "severity": "보통",
- "text": "더 빠른 API 개발을 위해 Visual Studio Code APIM 확장 사용 촉진",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
- "severity": "보통",
- "text": "워크플로에서 DevOps 및 CI/CD 구현",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "severity": "보통",
- "text": "클라이언트 인증서 인증을 사용하여 API 보안",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
- "severity": "보통",
- "text": "클라이언트 인증서 인증을 사용한 보안 백엔드 서비스",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
- "severity": "보통",
- "text": "'OWASP API 보안 상위 10개 위협을 완화하기 위한 권장 사항' 문서를 검토하고 API에 적용할 수 있는 항목을 확인합니다.",
- "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
- "severity": "보통",
- "text": "권한 부여 기능을 사용하여 백엔드 API에 대한 OAuth 2.0 토큰 관리 간소화",
+ "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.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
+ "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": "전송 중인 정보를 암호화할 때 최신 TLS 버전을 사용합니다. 가능한 경우 오래되고 불필요한 프로토콜과 암호를 사용하지 않도록 설정합니다.",
+ "text": "LLM 라이브러리와 다른 시스템 컴포넌트를 정기적으로 업데이트하고 패치하는 프로세스를 설정합니다.",
"waf": "안전"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
+ "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 Key Vault에 저장되었는지 확인합니다.",
- "waf": "안전"
+ "text": "Azure OpenAI 또는 기타 LLM 사용 약관, 정책 및 지침, 허용되는 사용 사례 준수",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "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": "가능할 때마다 관리 ID를 사용하여 다른 Azure 리소스에 인증",
- "waf": "안전"
+ "text": "기본 모델과 미세 조정된 모델 및 토큰 단계 크기의 비용 차이를 이해합니다.",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
+ "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": "APIM 앞에 Application Gateway를 배포하여 WAF(웹 애플리케이션 방화벽) 사용Use Web Application Firewall (WAF) by deploying Application Gateway in of APIM",
- "waf": "안전"
+ "text": "가능한 경우 호출당 오버헤드를 최소화하여 전체 비용을 줄일 수 있는 일괄 처리 요청. 배치 크기를 최적화해야 합니다.",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "스토리지와 관련된 Microsoft 클라우드 보안 벤치마크의 지침 적용",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
+ "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": "'스토리지에 대한 Azure 보안 기준' 고려",
- "waf": "안전"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Azure Storage는 기본적으로 공용 IP 주소를 가지며 인터넷에 연결할 수 있습니다. 프라이빗 엔드포인트를 사용하면 액세스가 필요한 Azure Compute 리소스에만 Azure Storage를 안전하게 노출할 수 있으므로 공용 인터넷에 노출되지 않습니다",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "Azure Storage에 프라이빗 엔드포인트를 사용하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "모델 사용을 모니터링하는 비용 추적 시스템을 설정하고 해당 정보를 사용하여 모델 선택 및 프롬프트 크기를 알립니다",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "새로 만든 저장소 계정은 ARM 배포 모델을 사용하여 만들어지므로 RBAC, 감사 등을 모두 사용할 수 있습니다. 구독에 클래식 배포 모델이 있는 이전 저장소 계정이 없는지 확인합니다.",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
+ "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": "안전"
+ "text": "모델 응답당 토큰 수에 대한 최대 제한을 설정합니다. 유효한 응답에 사용할 수 있을 만큼 충분히 큰지 확인하기 위해 크기를 최적화합니다",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Microsoft Defender를 활용하여 의심스러운 활동 및 잘못된 구성에 대해 알아봅니다.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "모든 스토리지 계정에 대해 Microsoft Defender 사용",
- "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.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "일시 삭제 메커니즘을 사용하면 실수로 삭제된 Blob을 복구할 수 있습니다.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
+ "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": "Blob에 대해 '일시 삭제' 사용Enable 'soft delete' for blobs",
- "waf": "안전"
+ "text": "AI Search Vector 스토리지 계획 및 관리",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "예를 들어 애플리케이션이 기밀성, 개인 정보 보호 또는 규정 준수를 위해 삭제된 정보가 즉시 삭제되도록 해야 하는 경우와 같이 특정 Blob 컨테이너에 대해 '일시 삭제'를 선택적으로 사용하지 않도록 설정하는 것이 좋습니다. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "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": "Blob에 대해 '일시 삭제' 사용 안 함",
- "waf": "안전"
+ "text": "LLMOps 사례를 적용하여 GenAI 애플리케이션의 라이프사이클 관리를 자동화합니다.",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "컨테이너에 대한 일시 삭제를 사용하면 컨테이너가 삭제된 후 컨테이너를 복구할 수 있습니다(예: 실수로 인한 삭제 작업에서 복구).",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
+ "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": "컨테이너에 대해 '일시 삭제' 사용Enable 'soft delete' for containers",
- "waf": "안전"
+ "text": "청구 모델 사용 평가 - PAYG 대 PTU",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "예를 들어 애플리케이션이 기밀성, 개인 정보 보호 또는 규정 준수를 위해 삭제된 정보가 즉시 삭제되도록 해야 하는 경우와 같이 특정 Blob 컨테이너에 대해 '일시 삭제'를 선택적으로 사용하지 않도록 설정하는 것이 좋습니다. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
+ "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": "안전"
+ "text": "모델 버전 간에 전환할 때 프롬프트와 응용 프로그램의 품질을 평가합니다.",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "사용자가 삭제하기 전에 먼저 삭제 잠금을 제거하도록 강제하여 저장소 계정이 실수로 삭제되는 것을 방지합니다.",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "스토리지 계정에 대한 리소스 잠금 사용Enable resource locks on storage accounts",
- "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.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Blob에 대한 '법적 보존' 또는 '시간 기반 보존' 정책을 고려하면 Blob, 컨테이너 또는 스토리지 계정을 삭제할 수 없습니다. '불가능'은 실제로 '불가능'을 의미합니다. 스토리지 계정에 변경할 수 없는 Blob이 포함된 경우 해당 스토리지 계정을 '제거'하는 유일한 방법은 Azure 구독을 취소하는 것입니다.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "변경할 수 없는 Blob 고려",
- "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.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "모든 데이터 전송이 암호화되고, 무결성이 보호되고, 서버가 인증되도록 스토리지 계정에 대한 보호되지 않는 HTTP/80 액세스를 사용하지 않도록 설정하는 것이 좋습니다. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "HTTPS 필요, 즉 스토리지 계정에서 포트 80 사용 안 함Require HTTPS, i.e. disable port 80 on the storage account",
- "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.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "스토리지 계정에서 사용자 지정 도메인(호스트 이름)을 구성할 때 TLS/HTTPS가 필요한지 여부를 확인합니다. 이 경우 저장소 계정 앞에 Azure CDN을 배치해야 할 수 있습니다.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "HTTPS를 적용할 때(HTTP 사용 안 함) 스토리지 계정에 사용자 지정 도메인(CNAME)을 사용하지 않는지 확인합니다.",
- "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.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "클라이언트가 SAS 토큰을 사용하여 Blob 데이터에 액세스할 때 HTTPS를 요구하면 자격 증명 손실 위험을 최소화하는 데 도움이 됩니다.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "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": "SAS(공유 액세스 서명) 토큰을 HTTPS 연결로만 제한",
+ "text": "GenAI 애플리케이션을 위한 레드 팀",
"waf": "안전"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "AAD 토큰은 가능한 경우 공유 액세스 서명보다 우선해야 합니다",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
+ "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": "Blob 액세스에 Azure AD(Azure Active Directory) 토큰 사용Use Azure Active Directory (Azure AD) tokens for blob access",
- "waf": "안전"
+ "text": "할당량 관리 방법 고려",
+ "waf": "비용 최적화"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "사용자, 그룹 또는 응용 프로그램에 역할을 할당할 때 해당 보안 주체가 작업을 수행하는 데 필요한 권한만 부여합니다. 리소스에 대한 액세스를 제한하면 의도하지 않은 데이터 오용과 악의적인 데이터 오용을 모두 방지할 수 있습니다.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
+ "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": "IaM 권한의 최소 권한",
- "waf": "안전"
+ "text": "APIM 기반 게이트웨이와 같은 Load Balancer 솔루션을 사용하여 서비스 및 지역 간에 부하와 용량을 분산합니다",
+ "waf": "운영 우수성"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "사용자 위임 SAS는 Azure AD(Azure Active Directory) 자격 증명과 SAS에 지정된 권한으로 보호됩니다. 사용자 위임 SAS는 범위와 기능 측면에서 서비스 SAS와 유사하지만 서비스 SAS에 비해 보안상의 이점을 제공합니다. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "높다",
- "text": "SAS를 사용하는 경우 스토리지 계정 키 기반 SAS보다 '사용자 위임 SAS'를 선호합니다.",
- "waf": "안전"
+ "text": "지역적으로 적용 가능한 경우 가용성 영역 활용(자동으로 활성화됨)",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "스토리지 계정 키('공유 키')에는 감사 기능이 거의 없습니다. 누가/언제 키 사본을 가져왔는지 모니터링할 수 있지만, 키가 여러 사람의 손에 들어가면 특정 사용자의 사용을 귀속시키는 것은 불가능합니다. AAD 인증에만 의존하면 스토리지 액세스를 사용자에게 더 쉽게 연결할 수 있습니다. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "AAD 액세스(및 사용자 위임 SAS)만 지원되도록 스토리지 계정 키를 사용하지 않도록 설정하는 것이 좋습니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "severity": "보통",
+ "text": "Microsoft에서 시작한 장애 조치(failover)에 유의하세요. 드문 경우지만 Microsoft는 영향을 받는 지역의 모든 IoT Hub를 해당 지역 쌍을 이루는 지역으로 장애 조치(failover)하기 위해 이러한 작업을 수행합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "활동 로그 데이터를 사용하여 스토리지 계정의 보안을 보거나 변경하는 '시기', '누가', '무엇을' 및 '방법'(예: 스토리지 계정 키, 액세스 정책 등)을 식별합니다.",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
"severity": "높다",
- "text": "Azure Monitor를 사용하여 스토리지 계정에 대한 컨트롤 플레인 작업을 감사하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "키 만료 정책을 사용하면 계정 액세스 키 교체에 대한 미리 알림을 설정할 수 있습니다. 지정된 간격이 경과하고 키가 아직 회전되지 않은 경우 알림이 표시됩니다.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
- "severity": "보통",
- "text": "스토리지 계정 키를 사용하는 경우 '키 만료 정책'을 사용하도록 설정하는 것이 좋습니다",
- "waf": "안전"
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "severity": "높다",
+ "text": "수동 장애 조치(failover)를 트리거하는 방법을 알아봅니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS 만료 정책은 SAS가 유효한 권장 간격을 지정합니다. SAS 만료 정책은 서비스 SAS 또는 계정 SAS에 적용됩니다. 사용자가 권장 간격보다 큰 유효 간격을 사용하여 서비스 SAS 또는 계정 SAS를 생성하면 경고가 표시됩니다.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
- "severity": "보통",
- "text": "SAS 만료 정책 구성 고려",
- "waf": "안전"
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
+ "severity": "높다",
+ "text": "장애 조치(failover) 후 장애 복구(failback)하는 방법을 알아봅니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "저장된 액세스 정책은 스토리지 계정 키를 다시 생성할 필요 없이 서비스 SAS에 대한 권한을 취소하는 옵션을 제공합니다. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
- "severity": "보통",
- "text": "SAS를 저장된 액세스 정책에 연결하는 것이 좋습니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
+ "severity": "높다",
+ "text": "비즈니스 및 SLO 요구 사항에 따라 올바른 기능 호스팅 계획을 선택하십시오.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
+ "severity": "높다",
+ "text": "지역적으로 적용 가능한 가용성 영역 활용(소비 계층에는 사용할 수 없음)",
+ "waf": "신뢰도"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
"severity": "보통",
- "text": "체크 인된 연결 문자열 및 저장소 계정 키를 검색하도록 응용 프로그램의 소스 코드 리포지토리를 구성하는 것이 좋습니다.",
- "waf": "안전"
+ "text": "중요한 워크로드에 대한 지역 간 DR 전략 고려",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "이상적으로 애플리케이션은 관리 ID를 사용하여 Azure Storage에 인증해야 합니다. 이렇게 할 수 없는 경우 Azure KeyVault 또는 동등한 서비스에 스토리지 자격 증명(연결 문자열, 스토리지 계정 키, SAS, 서비스 주체 자격 증명)을 사용하는 것이 좋습니다.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "높다",
- "text": "Azure KeyVault에 연결 문자열을 저장하는 것이 좋습니다(관리 ID를 사용할 수 없는 시나리오에서).",
- "waf": "안전"
+ "text": "격리된 환경에 배포하는 경우 ASE(App Service Environment) v3을 사용하거나 마이그레이션합니다",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "임시 SAS 서비스 SAS 또는 계정 SAS에서 단기 만료 시간을 사용합니다. 이러한 방식으로 SAS가 손상되더라도 짧은 시간 동안만 유효합니다. 이 방법은 저장된 액세스 정책을 참조할 수 없는 경우에 특히 중요합니다. 또한 단기 만료 시간은 업로드에 사용할 수 있는 시간을 제한하여 Blob에 쓸 수 있는 데이터의 양을 제한합니다.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
"severity": "높다",
- "text": "임시 SAS의 유효 기간을 단축하기 위해 노력",
- "waf": "안전"
+ "text": "App Service 계획에서 실행되는 모든 함수 앱에 대해 'Always On'이 사용하도록 설정되어 있는지 확인합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS를 만들 때는 가능한 한 구체적이고 제한적이어야 합니다. 훨씬 더 광범위한 액세스를 제공하는 SAS보다 단일 리소스 및 작업에 대해 SAS를 선호합니다.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "보통",
- "text": "SAS에 좁은 범위 적용",
- "waf": "안전"
+ "text": "함수 앱을 자체 스토리지 계정에 페어링합니다. 긴밀하게 결합되지 않는 한 함수 앱에 대한 스토리지 계정을 다시 사용하지 마세요",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS에는 SAS를 사용하여 리소스를 요청할 수 있는 권한이 있는 클라이언트 IP 주소 또는 주소 범위에 대한 매개 변수가 포함될 수 있습니다. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"severity": "보통",
- "text": "가능한 경우 SAS의 범위를 특정 클라이언트 IP 주소로 지정하는 것이 좋습니다",
- "waf": "안전"
+ "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 함수 앱 코드를 보호합니다.",
+ "waf": "작업"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS는 클라이언트가 업로드하는 데이터의 양을 제한할 수 없습니다. 시간 경과에 따른 스토리지 양의 가격 책정 모델을 고려할 때 클라이언트가 악의적으로 큰 콘텐츠를 업로드했는지 여부를 확인하는 것이 합리적일 수 있습니다.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "severity": "낮다",
- "text": "클라이언트가 SAS를 사용하여 파일을 업로드한 후 업로드된 데이터를 확인하는 것이 좋습니다. ",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
+ "severity": "보통",
+ "text": "Azure Spring Apps는 모든 앱에 대해 두 개의 배포를 허용하며, 그 중 하나만 프로덕션 트래픽을 수신합니다. 블루-그린 배포 전략을 통해 가동 중지 시간 제로를 달성할 수 있습니다. 파란색 녹색 배포는 표준 및 엔터프라이즈 계층에서만 사용할 수 있습니다. ADO/GitHub 작업과 함께 CI/CD를 사용하여 배포를 자동화할 수 있습니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "'로컬 사용자 계정'을 사용하여 SFTP를 통해 Blob Storage에 액세스하는 경우 '일반적인' RBAC 컨트롤이 적용되지 않습니다. NFS 또는 REST를 통한 Blob 액세스는 SFTP 액세스보다 더 제한적일 수 있습니다. 안타깝게도 2023년 초부터 로컬 사용자는 현재 SFTP 엔드포인트에 대해 지원되는 유일한 ID 관리 형태입니다",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "SFTP: SFTP 액세스에 대한 '로컬 사용자'의 수를 제한하고 시간이 지남에 따라 액세스가 필요한지 여부를 감사합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
+ "severity": "보통",
+ "text": "Azure Spring Apps 인스턴스는 애플리케이션에 대해 여러 지역에서 만들 수 있으며 Traffic Manager/Front Door에서 트래픽을 라우팅할 수 있습니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"severity": "보통",
- "text": "SFTP: SFTP 엔드포인트는 POSIX와 유사한 ACL을 지원하지 않습니다.",
- "waf": "안전"
+ "text": "지원되는 지역에서 Azure Spring Apps는 영역 중복으로 배포할 수 있으며, 이는 인스턴스가 가용성 영역에 자동으로 분산됨을 의미합니다. 이 기능은 Standard 및 Enterprise 계층에서만 사용할 수 있습니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "스토리지는 CORS(Cross-Origin Resource Sharing), 즉 다른 도메인의 웹앱이 동일 출처 정책을 완화할 수 있도록 하는 HTTP 기능을 지원합니다. CORS를 사용하도록 설정할 때 CorsRules를 최소 권한으로 유지합니다.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "지나치게 광범위한 CORS 정책 방지",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
+ "severity": "보통",
+ "text": "앱에 1개 이상의 앱 인스턴스 사용",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "미사용 데이터는 항상 서버 쪽에서 암호화되며 클라이언트 쪽에서도 암호화될 수 있습니다. 서버 쪽 암호화는 플랫폼 관리형 키(기본값) 또는 고객 관리형 키를 사용하여 발생할 수 있습니다. 클라이언트 쪽 암호화는 클라이언트가 Azure Storage에 Blob별로 암호화/암호 해독 키를 제공하거나 클라이언트 쪽에서 암호화를 완전히 처리하여 발생할 수 있습니다. 따라서 기밀성 보장을 위해 Azure Storage에 전혀 의존하지 않습니다.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "severity": "높다",
- "text": "미사용 데이터를 암호화하는 방법을 결정합니다. 데이터에 대한 스레드 모델을 이해합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
+ "severity": "보통",
+ "text": "로그, 메트릭 및 추적을 사용하여 Azure Spring Apps를 모니터링합니다. ASA를 Application Insights와 통합하고, 오류를 추적하고, 통합 문서를 만듭니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
"severity": "보통",
- "text": "사용해야 하는 플랫폼 암호화를 결정합니다.",
- "waf": "안전"
+ "text": "Spring Cloud Gateway에서 자동 크기 조정 설정",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
- "severity": "보통",
- "text": "사용해야 하는 클라이언트 쪽 암호화를 결정합니다.",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "낮다",
+ "text": "표준 소비 및 전용 플랜이 있는 앱에 대해 자동 크기 조정을 사용하도록 설정합니다.",
+ "waf": "신뢰도"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Resource Graph Explorer(resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true)를 활용하여 익명 Blob 액세스를 허용하는 스토리지 계정을 찾습니다.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
- "severity": "높다",
- "text": "공용 Blob 액세스가 필요한지 또는 특정 스토리지 계정에 대해 사용하지 않도록 설정할 수 있는지 여부를 고려합니다. ",
- "waf": "안전"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
+ "severity": "보통",
+ "text": "중요 업무용 앱에 대한 Spring Boot의 상업적 지원을 위해 Enterprise 플랜을 사용합니다. 다른 계층에서는 OSS 지원을 받을 수 있습니다.",
+ "waf": "신뢰도"
}
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
@@ -9017,12 +9017,12 @@
"name": "성취"
},
{
- "description": "현재 설계에는 적용되지 않습니다.",
- "name": "해당 없음"
+ "description": "권장 사항은 이해되었지만 현재 요구 사항에 필요하지 않음",
+ "name": "필요 없음"
},
{
- "description": "필요 없음",
- "name": "필요 없음"
+ "description": "현재 설계에는 적용되지 않습니다.",
+ "name": "해당 없음"
}
]
}
\ No newline at end of file
diff --git a/checklists/waf_checklist.pt.json b/checklists/waf_checklist.pt.json
index 698fd7a65..1e41cb251 100644
--- a/checklists/waf_checklist.pt.json
+++ b/checklists/waf_checklist.pt.json
@@ -1,8831 +1,8831 @@
{
"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.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
+ "severity": "Média",
+ "text": "Siga as recomendações de suporte de confiabilidade no Serviço de Bot do Azure",
+ "waf": "Fiabilidade"
},
{
- "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.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
+ "severity": "Média",
+ "text": "Implantando bots com residência de dados local e conformidade regional",
+ "waf": "Fiabilidade"
},
{
- "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.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
+ "severity": "Média",
+ "text": "O Serviço de Bot do Azure é executado no modo ativo-ativo para serviços globais e regionais. Quando ocorre uma paralisação, você não precisa detectar erros ou gerenciar o serviço. O Serviço de Bot do Azure executa automaticamente o failover automático e a recuperação automática em uma arquitetura geográfica de várias regiões. Para o serviço regional de bot da UE, o Serviço de Bot do Azure fornece duas regiões completas dentro da Europa com replicação ativa/ativa para garantir redundância. Para o serviço de bot global, todas as regiões/geografias disponíveis podem ser servidas como a presença global.",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "Os Aplicativos Spring do Azure permitem duas implantações para cada aplicativo, apenas um dos quais recebe tráfego de produção. Você pode obter tempo de inatividade zero com estratégias de implantação em verde azul. A implantação verde azul só está disponível nas camadas Standard e Enterprise. Você pode automatizar a implantação usando CI/CD com ações do ADO/GitHub",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "As instâncias do Azure Spring Apps podem ser criadas em várias regiões para seus aplicativos e o tráfego pode ser roteado pelo Gerenciador de Tráfego/Front Door.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"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"
+ "text": "Na região com suporte, os Aplicativos Spring do Azure podem ser implantados como zona redundante, o que significa que as instâncias são distribuídas automaticamente entre zonas de disponibilidade. Esse recurso só está disponível nas camadas Standard e Enterprise.",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "Usar mais de 1 instância de aplicativo para seus aplicativos",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "Monitore os Aplicativos Spring do Azure com logs, métricas e rastreamento. Integre o ASA com insights de aplicativos e rastreie falhas e crie pastas de trabalho.",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "Configurar o dimensionamento automático no Spring Cloud Gateway",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "Baixo",
+ "text": "Habilite o dimensionamento automático para os aplicativos com o plano de consumo padrão e dedicado.",
+ "waf": "Fiabilidade"
},
{
- "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.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
+ "severity": "Média",
+ "text": "Use o plano Enterprise para suporte comercial de inicialização spring para aplicativos de missão crítica. Com outras camadas, você obtém suporte a OSS.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "Alto",
- "text": "Examinar e implementar a segurança de conteúdo do Azure AI",
- "waf": "Excelência Operacional"
+ "text": "Aproveitar zonas de disponibilidade, se aplicável regionalmente (isso é habilitado automaticamente)",
+ "waf": "Fiabilidade"
},
{
- "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.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "severity": "Média",
+ "text": "Esteja ciente dos failovers iniciados pela Microsoft. Eles são exercidos pela Microsoft em raras situações para fazer failover de todos os hubs IoT de uma região afetada para a região geo-emparelhada correspondente.",
+ "waf": "Fiabilidade"
},
{
- "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.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
+ "severity": "Alto",
+ "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
+ "waf": "Fiabilidade"
},
{
- "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.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
+ "severity": "Alto",
+ "text": "Saiba como acionar um failover manual.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
"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"
+ "text": "Saiba como fazer failback após um failover.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
"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"
+ "text": "Selecione o plano de hospedagem de aplicativo lógico certo com base em seus requisitos de negócios e SLO",
+ "waf": "Fiabilidade"
},
{
- "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.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
+ "severity": "Alto",
+ "text": "Proteja aplicativos lógicos contra falhas de região com redundância de zona e zonas de disponibilidade",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
+ "severity": "Alto",
+ "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
"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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"severity": "Alto",
- "text": "Implemente novas tentativas e verificações de integridade com o padrão de Gateway como APIM",
+ "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
"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",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"severity": "Média",
- "text": "Garantir que tenha cotas adequadas de TPM e RPM para a carga de trabalho",
- "waf": "Fiabilidade"
+ "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código de Aplicativo Lógico",
+ "waf": "Operações"
},
{
- "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",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"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"
+ "text": "Aproveite o Manual de Resiliência de FTA para o Azure Data Factory",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "Alto",
+ "text": "Usar pipelines redundantes de zona em regiões que oferecem suporte a zonas de disponibilidade",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"severity": "Média",
- "text": "Implantar modelos ajustados separados entre regiões se o ajuste fino for empregado",
+ "text": "Usar DevOps para fazer backup dos modelos ARM com a integração Github/Azure DevOps ",
"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",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"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.",
+ "text": "Certifique-se de replicar as VMs do Self-Hosted Integration Runtime em outra região ",
"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 ",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "Média",
+ "text": "Certifique-se de replicar ou duplicar sua rede na região irmã. Você tem que fazer uma cópia do seu Vnet em outra região",
"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",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "Se seus pipelines do ADF usarem o Cofre de Chaves, você não precisará fazer nada para replicar o Cofre de Chaves. O Cofre de Chaves é um serviço gerenciado e a Microsoft cuida dele para você",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
"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",
+ "text": "Se estiver usando a integração do Keyvault, use o SLA do Keyvault para entender sua disponibilidade",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aplicar as orientações do benchmark de segurança na nuvem da Microsoft relacionadas ao armazenamento",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Considere a 'linha de base de segurança do Azure para armazenamento'",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "O Armazenamento do Azure, por padrão, tem um endereço IP público e pode ser acessado pela Internet. Os pontos de extremidade privados permitem expor com segurança o Armazenamento do Azure apenas aos recursos de Computação do Azure que precisam de acesso, eliminando assim a exposição à Internet pública",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Criptografar dados usados para RAG com criptografia SSE/Disco com BYOK opcional",
+ "text": "Considere o uso de pontos de extremidade privados para o Armazenamento do Azure",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "As contas de armazenamento recém-criadas são criadas usando o modelo de implantação ARM, para que o RBAC, a auditoria, etc., estejam todos habilitados. Verifique se não há contas de armazenamento antigas com modelo de implantação clássico em uma assinatura",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Verifique se as contas de armazenamento mais antigas não estão usando o 'modelo de implantação clássico'",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aproveite o Microsoft Defender para saber mais sobre atividades suspeitas e configurações incorretas.",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"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",
+ "text": "Habilitar o Microsoft Defender para todas as suas contas de armazenamento",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "O mecanismo soft-delete permite recuperar blobs excluídos acidentalmente.",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
"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",
+ "text": "Ativar 'exclusão suave' para blobs",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere desativar seletivamente a \"exclusão suave\" para determinados contêineres de blob, por exemplo, se o aplicativo tiver que garantir que as informações excluídas sejam imediatamente excluídas, por exemplo, por motivos de confidencialidade, privacidade ou conformidade. ",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Desativar 'exclusão suave' para blobs",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "A exclusão suave para contêineres permite que você recupere um contêiner depois que ele tenha sido excluído, por exemplo, recuperar de uma operação de exclusão acidental.",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
"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",
+ "text": "Ativar 'exclusão suave' para contêineres",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere desativar seletivamente a \"exclusão suave\" para determinados contêineres de blob, por exemplo, se o aplicativo tiver que garantir que as informações excluídas sejam imediatamente excluídas, por exemplo, por motivos de confidencialidade, privacidade ou conformidade. ",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
"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",
+ "text": "Desativar 'exclusão suave' para contêineres",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Evita a exclusão acidental de uma conta de armazenamento, forçando o usuário a remover primeiro o bloqueio de exclusão, antes da exclusão",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
"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.",
+ "text": "Habilitar bloqueios de recursos em contas de armazenamento",
"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.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere políticas de \"retenção legal\" ou \"retenção baseada em tempo\" para blobs, de modo que seja impossível excluir o blob, o contêiner ou a conta de armazenamento. Por favor, note que \"impossível\" significa na verdade \"impossível\"; uma vez que uma conta de armazenamento contém um blob imutável, a única maneira de 'se livrar' dessa conta de armazenamento é cancelando a assinatura do Azure.",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Considere blobs imutáveis",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Considere desabilitar o acesso HTTP/80 desprotegido à conta de armazenamento, para que todas as transferências de dados sejam criptografadas, protegidas por integridade e o servidor seja autenticado. ",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
"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.",
+ "text": "Exigir HTTPS, ou seja, desativar a porta 80 na conta de armazenamento",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Ao configurar um domínio personalizado (nome do host) em uma conta de armazenamento, verifique se você precisa de TLS/HTTPS; em caso afirmativo, talvez seja necessário colocar a CDN do Azure na frente da sua conta de armazenamento.",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
+ "severity": "Alto",
+ "text": "Ao impor HTTPS (desabilitando HTTP), verifique se você não usa domínios personalizados (CNAME) para a conta de armazenamento.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Exigir HTTPS quando um cliente usa um token SAS para acessar dados de blob ajuda a minimizar o risco de perda de credenciais.",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"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",
+ "text": "Limitar tokens de assinatura de acesso compartilhado (SAS) somente a conexões HTTPS",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Os tokens AAD devem ser favorecidos em relação às assinaturas de acesso compartilhado, sempre que possível",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
"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",
+ "text": "Usar tokens do Azure Active Directory (Azure AD) para acesso de blob",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Ao atribuir uma função a um usuário, grupo ou aplicativo, conceda a essa entidade de segurança apenas as permissões necessárias para que eles executem suas tarefas. Limitar o acesso aos recursos ajuda a evitar o uso indevido não intencional e mal-intencionado de seus dados.",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Privilégio mínimo nas permissões do IaM",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Uma SAS de delegação de usuário é protegida com credenciais do Azure Active Directory (Azure AD) e também pelas permissões especificadas para a SAS. Uma SAS de delegação de usuário é análoga a uma SAS de serviço em termos de escopo e função, mas oferece benefícios de segurança em relação à SAS de serviço. ",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"severity": "Alto",
- "text": "Configurar o ponto de extremidade privado para serviços de IA para restringir o acesso ao serviço em sua rede",
+ "text": "Ao usar o SAS, prefira o SAS de delegação de usuário ao SAS baseado em chave de conta de armazenamento.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "As chaves de conta de armazenamento ('chaves compartilhadas') têm pouquíssimos recursos de auditoria. Embora possa ser monitorado em quem/quando foi obtida uma cópia das chaves, uma vez que as chaves estão nas mãos de várias pessoas, é impossível atribuir o uso a um usuário específico. Depender exclusivamente da autenticação do AAD facilita a vinculação do acesso ao armazenamento a um usuário. ",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"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",
+ "text": "Considere desabilitar as chaves de conta de armazenamento, para que somente o acesso ao AAD (e a delegação de usuários SAS) seja suportado.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Use os dados do Registro de atividades para identificar \"quando\", \"quem\", \"o que\" e \"como\" a segurança da sua conta de armazenamento está sendo visualizada ou alterada (ou seja, chaves de conta de armazenamento, políticas de acesso, etc.).",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
"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",
+ "text": "Considere usar o Azure Monitor para auditar as operações do plano de controle na conta de armazenamento",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Uma política de expiração de chave permite que você defina um lembrete para a rotação das chaves de acesso da conta. O lembrete será exibido se o intervalo especificado tiver decorrido e as teclas ainda não tiverem sido giradas.",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
"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.",
+ "text": "Ao usar chaves de conta de armazenamento, considere habilitar uma 'política de expiração de chave'",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Uma diretiva de expiração SAS especifica um intervalo recomendado sobre o qual a SAS é válida. As políticas de expiração do SAS se aplicam a um SAS de serviço ou a um SAS de conta. Quando um usuário gera SAS de serviço ou SAS de conta com um intervalo de validade maior do que o intervalo recomendado, ele verá um aviso.",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
"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",
+ "text": "Considere configurar uma política de expiração SAS",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "As políticas de acesso armazenado oferecem a opção de revogar permissões para uma SAS de serviço sem precisar gerar novamente as chaves da conta de armazenamento. ",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"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",
+ "text": "Considere vincular o SAS a uma política de acesso armazenado",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"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",
+ "text": "Considere configurar o repositório de código-fonte do aplicativo para detectar cadeias de conexão com check-in e chaves de conta de armazenamento.",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Idealmente, seu aplicativo deve estar usando uma identidade gerenciada para autenticar no Armazenamento do Azure. Se isso não for possível, considere ter a credencial de armazenamento (cadeia de conexão, chave de conta de armazenamento, SAS, credencial da entidade de serviço) no Azure KeyVault ou em um serviço equivalente.",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Os logs de diagnóstico nos recursos de serviços de IA do Azure devem ser habilitados",
- "waf": "Excelência Operacional"
+ "text": "Considere armazenar cadeias de conexão no Cofre de Chaves do Azure (em cenários em que identidades gerenciadas não são possíveis)",
+ "waf": "Segurança"
},
{
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Use tempos de expiração de curto prazo em um SAS de serviço SAS ad hoc ou SAS de conta. Dessa forma, mesmo que um SAS seja comprometido, ele é válido apenas por um curto período de tempo. Essa prática é especialmente importante se você não puder fazer referência a uma política de acesso armazenado. Os tempos de expiração de curto prazo também limitam a quantidade de dados que podem ser gravados em um blob, limitando o tempo disponível para carregar nele.",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"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. ",
+ "text": "Esforce-se por curtos períodos de validade para SAS ad-hoc",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Ao criar um SAS, seja o mais específico e restritivo possível. Prefira um SAS para um único recurso e operação em vez de um SAS que dá acesso muito mais amplo.",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Aplicar um escopo restrito a uma SAS",
"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.",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Uma SAS pode incluir parâmetros nos quais endereços IP de cliente ou intervalos de endereços estão autorizados a solicitar um recurso usando a SAS. ",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Considere a definição do escopo do SAS para um endereço IP de cliente específico, sempre que possível",
"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.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Um SAS não pode restringir a quantidade de dados que um cliente carrega; Dado o modelo de precificação da quantidade de armazenamento ao longo do tempo, pode fazer sentido validar se os clientes carregaram conteúdo maliciosamente grande.",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
+ "severity": "Baixo",
+ "text": "Considere verificar os dados carregados, depois que os clientes usaram um SAS para carregar um arquivo. ",
+ "waf": "Segurança"
},
{
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Ao acessar o armazenamento de blob via SFTP usando uma 'conta de usuário local', os controles RBAC 'normais' não se aplicam. O acesso a blobs via NFS ou REST pode ser mais restritivo do que o acesso a SFTP. Infelizmente, no início de 2023, os usuários locais são a única forma de gerenciamento de identidade que atualmente é suportada para o ponto de extremidade SFTP",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"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",
+ "text": "SFTP: Limite a quantidade de 'usuários locais' para acesso SFTP e audite se o acesso é necessário ao longo do tempo.",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "SFTP: O ponto de extremidade SFTP não oferece suporte a ACLs do tipo POSIX.",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "O armazenamento oferece suporte a CORS (Cross-Origin Resource Sharing), ou seja, um recurso HTTP que permite que aplicativos Web de um domínio diferente afrouxem a política de mesma origem. Ao habilitar o CORS, mantenha o CorsRules com o menor privilégio.",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
"severity": "Alto",
- "text": "Configure um processo para atualizar e corrigir regularmente as bibliotecas LLM e outros componentes do sistema",
+ "text": "Evite políticas CORS excessivamente amplas",
"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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Os dados em repouso são sempre criptografados no lado do servidor e, além disso, também podem ser criptografados no lado do cliente. A criptografia do lado do servidor pode acontecer usando uma chave gerenciada por plataforma (padrão) ou uma chave gerenciada pelo cliente. A criptografia do lado do cliente pode acontecer fazendo com que o cliente forneça uma chave de criptografia/descriptografia por blob para o armazenamento do Azure ou manipulando completamente a criptografia no lado do cliente. portanto, não depende do Armazenamento do Azure para garantias de confidencialidade.",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
"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"
+ "text": "Determine como os dados em repouso devem ser criptografados. Entenda o modelo de thread para dados.",
+ "waf": "Segurança"
},
{
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"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"
+ "text": "Determine qual/se a criptografia de plataforma deve ser usada.",
+ "waf": "Segurança"
},
{
- "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.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
+ "severity": "Média",
+ "text": "Determine qual/se a criptografia do lado do cliente deve ser usada.",
+ "waf": "Segurança"
},
{
- "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.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "Aproveite o Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) para localizar contas de armazenamento que permitem acesso anônimo a blobs.",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
+ "severity": "Alto",
+ "text": "Considere se o acesso de blob público é necessário ou se pode ser desabilitado para determinadas contas de armazenamento. ",
+ "waf": "Segurança"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"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"
+ "text": "O Azure Center for SAP solutions (ACSS) é uma oferta do Azure que torna o SAP uma carga de trabalho de nível superior no Azure. O ACSS é uma solução de ponta a ponta que permite criar e executar sistemas SAP como uma carga de trabalho unificada no Azure e fornece uma base mais perfeita para a inovação. Você pode aproveitar os recursos de gerenciamento para sistemas SAP novos e existentes baseados no Azure.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "waf": "Operações"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"severity": "Média",
- "text": "Examine as diretrizes fornecidas sobre como configurar a pesquisa de IA para confiabilidade",
- "waf": "Excelência Operacional"
+ "text": "O Azure dá suporte à automação de implantações SAP no Linux e no Windows. O SAP Deployment Automation Framework é uma ferramenta de orquestração de código aberto que pode implantar, instalar e manter ambientes SAP.",
+ "training": "https://github.com/Azure/sap-automation",
+ "waf": "Operações"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
"severity": "Média",
- "text": "Planejar e gerenciar o armazenamento de vetores do AI Search",
- "waf": "Excelência Operacional"
+ "text": "Executar uma recuperação point-in-time para seus bancos de dados de produção em qualquer ponto e em um período de tempo que atenda ao seu RTO; A recuperação point-in-time normalmente inclui erros do operador excluindo dados na camada DBMS ou por meio do SAP, incidentalmente",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"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"
+ "text": "Teste os tempos de backup e recuperação para verificar se eles atendem aos requisitos de RTO para restaurar todos os sistemas simultaneamente após um desastre.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
"severity": "Alto",
- "text": "Avalie o uso de modelos de faturamento - PAYG vs PTU",
- "waf": "Otimização de custos"
+ "text": "Você pode replicar o armazenamento padrão entre regiões emparelhadas, mas não pode usar o armazenamento padrão para armazenar seus bancos de dados ou discos rígidos virtuais. Você pode replicar backups somente entre regiões emparelhadas que você usa. Para todos os outros dados, execute sua replicação usando recursos nativos de DBMS, como SQL Server Always On ou SAP HANA System Replication. Use uma combinação de Site Recovery, rsync ou robocopy e outros softwares de terceiros para a camada de aplicativos SAP.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "Média",
- "text": "Avaliar a qualidade de prompts e aplicativos ao alternar entre versões de modelo",
- "waf": "Excelência Operacional"
+ "text": "Ao usar as Zonas de Disponibilidade do Azure para obter alta disponibilidade, você deve considerar a latência entre servidores de aplicativos SAP e servidores de banco de dados. Para zonas com altas latências, os procedimentos operacionais precisam estar em vigor para garantir que os servidores de aplicativos SAP e os servidores de banco de dados estejam sendo executados na mesma zona o tempo todo.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Configure conexões de Rota Expressa do local para as regiões primária e secundária de recuperação de desastres do Azure. Além disso, como alternativa ao uso da Rota Expressa, considere configurar conexões VPN locais para as regiões primária e secundária de recuperação de desastres do Azure.",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Replique o conteúdo do cofre de chaves, como certificados, segredos ou chaves entre regiões, para que você possa descriptografar dados na região de recuperação de desastres.",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"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"
+ "text": "Emparelhar as redes virtuais primária e de recuperação de desastres. Por exemplo, para a replicação do sistema HANA, uma rede virtual SAP HANA DB precisa ser emparelhada para a rede virtual SAP HANA DB do site de recuperação de desastres.",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Se você usar o armazenamento do Azure NetApp Files para suas implantações SAP, no mínimo, crie duas contas do Azure NetApp Files na camada Premium, em duas regiões.",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "A tecnologia de replicação de banco de dados nativo deve ser usada para sincronizar o banco de dados em um par de HA.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "O CIDR da rede virtual primária (VNet) não deve entrar em conflito ou se sobrepor ao CIDR da VNet do site de recuperação de desastres",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere as práticas de gerenciamento de cotas",
- "waf": "Otimização de custos"
+ "text": "Use a Recuperação de Site para replicar um servidor de aplicativos para um site de recuperação de desastres. A Recuperação de Site também pode ajudar na replicação de VMs de cluster de serviços centrais para o site de recuperação de desastres. Ao invocar o DR, você precisará reconfigurar o cluster do Linux Pacemaker no site de DR (por exemplo, substitua o VIP ou o SBD, execute o corosync.conf e muito mais).",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "Fiabilidade"
},
{
- "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"
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Considere a disponibilidade do software SAP em relação a pontos únicos de falha. Isso inclui pontos únicos de falha em aplicativos como SGBDs utilizados nas arquiteturas SAP NetWeaver e SAP S/4HANA, SAP ABAP e ASCS + SCS. Além disso, outras ferramentas, como o SAP Web Dispatcher.",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aplicar as orientações do benchmark de segurança na nuvem da Microsoft relacionadas ao armazenamento",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Considere a 'linha de base de segurança do Azure para armazenamento'",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Para bancos de dados SAP e SAP, considere a implementação de clusters de failover automático. No Windows, o Clustering de Failover do Windows Server oferece suporte a failover. No Linux, Linux Pacemaker ou ferramentas de terceiros como SIOS Protection Suite e Veritas InfoScale suportam failover.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "O Armazenamento do Azure, por padrão, tem um endereço IP público e pode ser acessado pela Internet. Os pontos de extremidade privados permitem expor com segurança o Armazenamento do Azure apenas aos recursos de Computação do Azure que precisam de acesso, eliminando assim a exposição à Internet pública",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere o uso de pontos de extremidade privados para o Armazenamento do Azure",
- "waf": "Segurança"
+ "text": "O Azure não oferece suporte a arquiteturas nas quais as VMs primária e secundária compartilham armazenamento para dados DBMS. Para a camada DBMS, o padrão de arquitetura comum é replicar bancos de dados ao mesmo tempo e com pilhas de armazenamento diferentes daquelas que as VMs primária e secundária usam.",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "As contas de armazenamento recém-criadas são criadas usando o modelo de implantação ARM, para que o RBAC, a auditoria, etc., estejam todos habilitados. Verifique se não há contas de armazenamento antigas com modelo de implantação clássico em uma assinatura",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Verifique se as contas de armazenamento mais antigas não estão usando o 'modelo de implantação clássico'",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Os dados do DBMS e os arquivos de log de transação/refazer são armazenados no armazenamento em bloco com suporte do Azure ou nos Arquivos do Azure NetApp. Os Arquivos do Azure ou os Arquivos Premium do Azure não têm suporte como armazenamento para dados DBMS e/ou arquivos de log de refazer com a carga de trabalho SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aproveite o Microsoft Defender para saber mais sobre atividades suspeitas e configurações incorretas.",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitar o Microsoft Defender para todas as suas contas de armazenamento",
- "waf": "Segurança"
+ "text": "Você pode usar discos compartilhados do Azure no Windows para componentes ASCS + SCS e cenários específicos de alta disponibilidade. Configure seus clusters de failover separadamente para componentes da camada de aplicativo SAP e a camada DBMS. No momento, o Azure não oferece suporte a arquiteturas de alta disponibilidade que combinam componentes da camada de aplicativo SAP e a camada DBMS em um cluster de failover.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "O mecanismo soft-delete permite recuperar blobs excluídos acidentalmente.",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Ativar 'exclusão suave' para blobs",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "A maioria dos clusters de failover para ASCS (Application Layer Components, componentes da camada de aplicativo) SAP e a camada DBMS exigem um endereço IP virtual para um cluster de failover. O Balanceador de Carga do Azure deve manipular o endereço IP virtual para todos os outros casos. Um princípio de design é usar um balanceador de carga por configuração de cluster. Recomendamos que você use a versão padrão do balanceador de carga (SKU do Standard Load Balancer).",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere desativar seletivamente a \"exclusão suave\" para determinados contêineres de blob, por exemplo, se o aplicativo tiver que garantir que as informações excluídas sejam imediatamente excluídas, por exemplo, por motivos de confidencialidade, privacidade ou conformidade. ",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Desativar 'exclusão suave' para blobs",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Verifique se o IP flutuante está habilitado no balanceador de carga",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "A exclusão suave para contêineres permite que você recupere um contêiner depois que ele tenha sido excluído, por exemplo, recuperar de uma operação de exclusão acidental.",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
"severity": "Alto",
- "text": "Ativar 'exclusão suave' para contêineres",
- "waf": "Segurança"
+ "text": "Antes de implantar sua infraestrutura de alta disponibilidade, e dependendo da região escolhida, determine se deseja implantar com um conjunto de disponibilidade do Azure ou uma zona de disponibilidade.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere desativar seletivamente a \"exclusão suave\" para determinados contêineres de blob, por exemplo, se o aplicativo tiver que garantir que as informações excluídas sejam imediatamente excluídas, por exemplo, por motivos de confidencialidade, privacidade ou conformidade. ",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Desativar 'exclusão suave' para contêineres",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Se desejar atender aos SLAs de infraestrutura de seus aplicativos para componentes SAP (serviços centrais, servidores de aplicativos e bancos de dados), você deverá escolher as mesmas opções de alta disponibilidade (VMs, conjuntos de disponibilidade, zonas de disponibilidade) para todos os componentes.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Evita a exclusão acidental de uma conta de armazenamento, forçando o usuário a remover primeiro o bloqueio de exclusão, antes da exclusão",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitar bloqueios de recursos em contas de armazenamento",
- "waf": "Segurança"
+ "text": "Não misture servidores de funções diferentes no mesmo conjunto de disponibilidade. Mantenha VMs de serviços centrais, VMs de banco de dados, VMs de aplicativos em seus próprios conjuntos de disponibilidade",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere políticas de \"retenção legal\" ou \"retenção baseada em tempo\" para blobs, de modo que seja impossível excluir o blob, o contêiner ou a conta de armazenamento. Por favor, note que \"impossível\" significa na verdade \"impossível\"; uma vez que uma conta de armazenamento contém um blob imutável, a única maneira de 'se livrar' dessa conta de armazenamento é cancelando a assinatura do Azure.",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Você não pode implantar conjuntos de disponibilidade do Azure em uma zona de disponibilidade do Azure, a menos que use grupos de posicionamento de proximidade.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "Fiabilidade"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere blobs imutáveis",
- "waf": "Segurança"
+ "text": "Ao criar conjuntos de disponibilidade, use o número máximo de domínios de falha e atualize domínios disponíveis. Por exemplo, se você implantar mais de duas VMs em um conjunto de disponibilidade, use o número máximo de domínios de falha (três) e domínios de atualização suficientes para limitar o efeito de possíveis falhas de hardware físico, interrupções de rede ou interrupções de energia, além da manutenção planejada do Azure. O número padrão de domínios de falha é dois e você não pode alterá-lo online mais tarde.",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Considere desabilitar o acesso HTTP/80 desprotegido à conta de armazenamento, para que todas as transferências de dados sejam criptografadas, protegidas por integridade e o servidor seja autenticado. ",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "Alto",
- "text": "Exigir HTTPS, ou seja, desativar a porta 80 na conta de armazenamento",
- "waf": "Segurança"
+ "text": "Quando você usa grupos de posicionamento de proximidade do Azure em uma implantação de conjunto de disponibilidade, todos os três componentes SAP (serviços centrais, servidor de aplicativos e banco de dados) devem estar no mesmo grupo de posicionamento de proximidade.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Ao configurar um domínio personalizado (nome do host) em uma conta de armazenamento, verifique se você precisa de TLS/HTTPS; em caso afirmativo, talvez seja necessário colocar a CDN do Azure na frente da sua conta de armazenamento.",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "Alto",
- "text": "Ao impor HTTPS (desabilitando HTTP), verifique se você não usa domínios personalizados (CNAME) para a conta de armazenamento.",
- "waf": "Segurança"
+ "text": "Use um grupo de posicionamento de proximidade por SAP SID. Os grupos não se estendem por zonas de disponibilidade ou regiões do Azure",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Exigir HTTPS quando um cliente usa um token SAS para acessar dados de blob ajuda a minimizar o risco de perda de credenciais.",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Use um dos seguintes serviços para executar clusters de serviços centrais SAP, dependendo do sistema operacional.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidade"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "Média",
- "text": "Limitar tokens de assinatura de acesso compartilhado (SAS) somente a conexões HTTPS",
- "waf": "Segurança"
+ "text": "No momento, o Azure não oferece suporte à combinação de ASCS e HA de banco de dados no mesmo cluster do Linux Pacemaker; Separe-os em agrupamentos individuais. No entanto, você pode combinar até cinco clusters de serviços centrais em um par de VMs.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Os tokens AAD devem ser favorecidos em relação às assinaturas de acesso compartilhado, sempre que possível",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Usar tokens do Azure Active Directory (Azure AD) para acesso de blob",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Implante ambas as VMs no par de alta disponibilidade em um conjunto de disponibilidade ou em zonas de disponibilidade. Essas VMs devem ter o mesmo tamanho e a mesma configuração de armazenamento.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Ao atribuir uma função a um usuário, grupo ou aplicativo, conceda a essa entidade de segurança apenas as permissões necessárias para que eles executem suas tarefas. Limitar o acesso aos recursos ajuda a evitar o uso indevido não intencional e mal-intencionado de seus dados.",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"severity": "Média",
- "text": "Privilégio mínimo nas permissões do IaM",
- "waf": "Segurança"
+ "text": "O Azure oferece suporte à instalação e configuração de instâncias SAP HANA e ASCS/SCS e ERS no mesmo cluster de alta disponibilidade em execução no Red Hat Enterprise Linux (RHEL).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Uma SAS de delegação de usuário é protegida com credenciais do Azure Active Directory (Azure AD) e também pelas permissões especificadas para a SAS. Uma SAS de delegação de usuário é análoga a uma SAS de serviço em termos de escopo e função, mas oferece benefícios de segurança em relação à SAS de serviço. ",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Ao usar o SAS, prefira o SAS de delegação de usuário ao SAS baseado em chave de conta de armazenamento.",
- "waf": "Segurança"
+ "text": "Execute todos os sistemas de produção em SSDs gerenciados Premium e use o Azure NetApp Files ou o Ultra Disk Storage. Pelo menos o disco do sistema operacional deve estar na camada Premium para que você possa obter melhor desempenho e o melhor SLA.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "As chaves de conta de armazenamento ('chaves compartilhadas') têm pouquíssimos recursos de auditoria. Embora possa ser monitorado em quem/quando foi obtida uma cópia das chaves, uma vez que as chaves estão nas mãos de várias pessoas, é impossível atribuir o uso a um usuário específico. Depender exclusivamente da autenticação do AAD facilita a vinculação do acesso ao armazenamento a um usuário. ",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere desabilitar as chaves de conta de armazenamento, para que somente o acesso ao AAD (e a delegação de usuários SAS) seja suportado.",
- "waf": "Segurança"
+ "text": "Você deve executar o SAP HANA no Azure somente nos tipos de armazenamento certificados pela SAP. Observe que determinados volumes devem ser executados em determinadas configurações de disco, quando aplicável. Essas configurações incluem a habilitação do Acelerador de Gravação e o uso do armazenamento Premium. Você também precisa garantir que o sistema de arquivos executado no armazenamento seja compatível com o DBMS executado na máquina.",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Use os dados do Registro de atividades para identificar \"quando\", \"quem\", \"o que\" e \"como\" a segurança da sua conta de armazenamento está sendo visualizada ou alterada (ou seja, chaves de conta de armazenamento, políticas de acesso, etc.).",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere usar o Azure Monitor para auditar as operações do plano de controle na conta de armazenamento",
- "waf": "Segurança"
+ "text": "Considere configurar a alta disponibilidade dependendo do tipo de armazenamento usado para suas cargas de trabalho SAP. Alguns serviços de armazenamento disponíveis no Azure não têm suporte no Azure Site Recovery, portanto, sua configuração de alta disponibilidade pode ser diferente.",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Uma política de expiração de chave permite que você defina um lembrete para a rotação das chaves de acesso da conta. O lembrete será exibido se o intervalo especificado tiver decorrido e as teclas ainda não tiverem sido giradas.",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Ao usar chaves de conta de armazenamento, considere habilitar uma 'política de expiração de chave'",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Diferentes serviços de armazenamento nativos do Azure (como Arquivos do Azure, Arquivos do Azure NetApp, Disco Compartilhado do Azure) podem não estar disponíveis em todas as regiões. Portanto, para ter uma configuração SAP semelhante na região de DR após o failover, certifique-se de que o respectivo serviço de armazenamento seja oferecido no local de DR.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Uma diretiva de expiração SAS especifica um intervalo recomendado sobre o qual a SAS é válida. As políticas de expiração do SAS se aplicam a um SAS de serviço ou a um SAS de conta. Quando um usuário gera SAS de serviço ou SAS de conta com um intervalo de validade maior do que o intervalo recomendado, ele verá um aviso.",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
"severity": "Média",
- "text": "Considere configurar uma política de expiração SAS",
- "waf": "Segurança"
+ "text": "Automatize o Start-Stop do sistema SAP para gerenciar custos.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "As políticas de acesso armazenado oferecem a opção de revogar permissões para uma SAS de serviço sem precisar gerar novamente as chaves da conta de armazenamento. ",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Considere vincular o SAS a uma política de acesso armazenado",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "No caso de usar o Armazenamento Premium do Azure com o SAP HANA, o armazenamento SSD padrão do Azure pode ser usado para selecionar uma solução de armazenamento econômica. No entanto, observe que escolher o armazenamento padrão SSD ou HDD padrão do Azure afetará o SLA das VMs individuais. Além disso, para sistemas com menor taxa de transferência de E/S e baixa latência, como ambientes que não são de produção, VMs de série mais baixa podem ser usadas.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
- "severity": "Média",
- "text": "Considere configurar o repositório de código-fonte do aplicativo para detectar cadeias de conexão com check-in e chaves de conta de armazenamento.",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Como uma configuração alternativa de baixo custo (multiuso), você pode escolher uma SKU de baixo desempenho para suas VMs de servidor de banco de dados HANA que não são de produção. No entanto, é importante observar que alguns tipos de VM, como a série E, não são certificados pelo HANA (SAP HANA Hardware Directory) ou não podem atingir latência de armazenamento inferior a 1ms.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Idealmente, seu aplicativo deve estar usando uma identidade gerenciada para autenticar no Armazenamento do Azure. Se isso não for possível, considere ter a credencial de armazenamento (cadeia de conexão, chave de conta de armazenamento, SAS, credencial da entidade de serviço) no Azure KeyVault ou em um serviço equivalente.",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere armazenar cadeias de conexão no Cofre de Chaves do Azure (em cenários em que identidades gerenciadas não são possíveis)",
+ "text": "Impor um modelo RBAC para grupos de gerenciamento, assinaturas, grupos de recursos e recursos",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Use tempos de expiração de curto prazo em um SAS de serviço SAS ad hoc ou SAS de conta. Dessa forma, mesmo que um SAS seja comprometido, ele é válido apenas por um curto período de tempo. Essa prática é especialmente importante se você não puder fazer referência a uma política de acesso armazenado. Os tempos de expiração de curto prazo também limitam a quantidade de dados que podem ser gravados em um blob, limitando o tempo disponível para carregar nele.",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Esforce-se por curtos períodos de validade para SAS ad-hoc",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Impor a propagação principal para encaminhar a identidade do aplicativo de nuvem SAP para o SAP local (incluindo IaaS) por meio do conector de nuvem",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Ao criar um SAS, seja o mais específico e restritivo possível. Prefira um SAS para um único recurso e operação em vez de um SAS que dá acesso muito mais amplo.",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "Média",
- "text": "Aplicar um escopo restrito a uma SAS",
+ "text": "Implemente SSO em aplicativos SAP SaaS como SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics e SAP C4C com o Azure AD usando SAML.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Uma SAS pode incluir parâmetros nos quais endereços IP de cliente ou intervalos de endereços estão autorizados a solicitar um recurso usando a SAS. ",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"severity": "Média",
- "text": "Considere a definição do escopo do SAS para um endereço IP de cliente específico, sempre que possível",
+ "text": "Implemente SSO em aplicativos Web baseados no SAP NetWeaver, como SAP Fiori e SAP Web GUI, usando SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Um SAS não pode restringir a quantidade de dados que um cliente carrega; Dado o modelo de precificação da quantidade de armazenamento ao longo do tempo, pode fazer sentido validar se os clientes carregaram conteúdo maliciosamente grande.",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
- "severity": "Baixo",
- "text": "Considere verificar os dados carregados, depois que os clientes usaram um SAS para carregar um arquivo. ",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Implemente SSO em aplicativos Web baseados no SAP NetWeaver, como SAP Fiori e SAP Web GUI, usando SAML.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Ao acessar o armazenamento de blob via SFTP usando uma 'conta de usuário local', os controles RBAC 'normais' não se aplicam. O acesso a blobs via NFS ou REST pode ser mais restritivo do que o acesso a SFTP. Infelizmente, no início de 2023, os usuários locais são a única forma de gerenciamento de identidade que atualmente é suportada para o ponto de extremidade SFTP",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "SFTP: Limite a quantidade de 'usuários locais' para acesso SFTP e audite se o acesso é necessário ao longo do tempo.",
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Você pode implementar o SSO no SAP GUI usando o SAP NetWeaver SSO ou uma solução de parceiro.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
"severity": "Média",
- "text": "SFTP: O ponto de extremidade SFTP não oferece suporte a ACLs do tipo POSIX.",
+ "text": "Para SSO para SAP GUI e acesso ao navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociação GSSAPI simples e protegido) devido a sua facilidade de configuração e manutenção. Para SSO com certificados de cliente X.509, considere o SAP Secure Login Server, que é um componente da solução SAP SSO.",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "O armazenamento oferece suporte a CORS (Cross-Origin Resource Sharing), ou seja, um recurso HTTP que permite que aplicativos Web de um domínio diferente afrouxem a política de mesma origem. Ao habilitar o CORS, mantenha o CorsRules com o menor privilégio.",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Evite políticas CORS excessivamente amplas",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Para SSO para SAP GUI e acesso ao navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociação GSSAPI simples e protegido) devido a sua facilidade de configuração e manutenção. Para SSO com certificados de cliente X.509, considere o SAP Secure Login Server, que é um componente da solução SAP SSO.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Os dados em repouso são sempre criptografados no lado do servidor e, além disso, também podem ser criptografados no lado do cliente. A criptografia do lado do servidor pode acontecer usando uma chave gerenciada por plataforma (padrão) ou uma chave gerenciada pelo cliente. A criptografia do lado do cliente pode acontecer fazendo com que o cliente forneça uma chave de criptografia/descriptografia por blob para o armazenamento do Azure ou manipulando completamente a criptografia no lado do cliente. portanto, não depende do Armazenamento do Azure para garantias de confidencialidade.",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
- "severity": "Alto",
- "text": "Determine como os dados em repouso devem ser criptografados. Entenda o modelo de thread para dados.",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Implemente o SSO usando o OAuth for SAP NetWeaver para permitir que aplicativos de terceiros ou personalizados acessem os serviços OData do SAP NetWeaver.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
"severity": "Média",
- "text": "Determine qual/se a criptografia de plataforma deve ser usada.",
+ "text": "Implementar SSO no SAP HANA",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
"severity": "Média",
- "text": "Determine qual/se a criptografia do lado do cliente deve ser usada.",
+ "text": "Considere o Azure AD um provedor de identidade para sistemas SAP hospedados no RISE. Para obter mais informações, consulte Integrando o serviço ao Azure AD.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "Aproveite o Resource Graph Explorer (resources | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true) para localizar contas de armazenamento que permitem acesso anônimo a blobs.",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
- "severity": "Alto",
- "text": "Considere se o acesso de blob público é necessário ou se pode ser desabilitado para determinadas contas de armazenamento. ",
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Para aplicativos que acessam o SAP, convém usar a propagação principal para estabelecer o SSO.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
- "severity": "Alto",
- "text": "Permitir que 2 réplicas tenham 99,9% de disponibilidade para operações de leitura",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
"severity": "Média",
- "text": "Permitir que 3 réplicas tenham 99,9% de disponibilidade para operações de leitura/gravação",
- "waf": "Fiabilidade"
+ "text": "Se você estiver usando serviços SAP BTP ou soluções SaaS que exigem o SAP Identity Authentication Service (IAS), considere implementar SSO entre o SAP Cloud Identity Authentication Services e o Azure AD para acessar esses serviços SAP. Essa integração permite que o SAP IAS atue como um provedor de identidade de proxy e encaminhe solicitações de autenticação para o Azure AD como o repositório central do usuário e o provedor de identidade.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
- "service": "Cognitive Search",
- "severity": "Alto",
- "text": "Aproveite as zonas de disponibilidade habilitando réplicas de leitura e/ou gravação",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Implementar SSO no SAP BTP",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
"severity": "Média",
- "text": "Para redução regional, crie manualmente serviços em 2 ou mais regiões para a Pesquisa, pois não fornece um método automatizado de replicação de índices de pesquisa entre regiões geográficas",
- "waf": "Fiabilidade"
+ "text": "Se você estiver usando o SAP SuccessFactors, considere usar o provisionamento automatizado de usuários do Azure AD. Com essa integração, à medida que você adiciona novos funcionários ao SAP SuccessFactors, pode criar automaticamente suas contas de usuário no Azure AD. Opcionalmente, você pode criar contas de usuário no Microsoft 365 ou em outros aplicativos SaaS com suporte no Azure AD. Use write-back do endereço de e-mail para SAP SuccessFactors.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
"severity": "Média",
- "text": "Para sincronizar dados em vários serviços: Use indexadores para atualizar conteúdo em vários serviços ou Use APIs REST para enviar atualizações de conteúdo em vários serviços",
- "waf": "Fiabilidade"
+ "text": "impor políticas existentes do Grupo de Gerenciamento às assinaturas SAP",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
- "service": "Cognitive Search",
- "severity": "Média",
- "text": "Usar o Gerenciador de Tráfego do Azure para coordenar solicitações",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Integre aplicativos fortemente acoplados na mesma assinatura SAP para evitar complexidade adicional de roteamento e gerenciamento",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Search/searchServices",
- "checklist": "Cognitive Search Review Checklist",
- "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
- "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
- "service": "Cognitive Search",
+ "checklist": "SAP Checklist",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"severity": "Alto",
- "text": "Backup e restauração de um índice de pesquisa cognitiva do Azure. Use este código de exemplo para fazer backup da definição de índice e instantâneo em uma série de arquivos Json",
- "waf": "Fiabilidade"
+ "text": "Aproveite a assinatura como unidade de escala e dimensione nossos recursos, considere implantar a assinatura por ambiente, por exemplo. Sandbox, não-prod, prod ",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
+ "checklist": "SAP Checklist",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
"severity": "Alto",
- "text": "Aproveitar zonas de disponibilidade, se aplicável regionalmente (isso é habilitado automaticamente)",
- "waf": "Fiabilidade"
+ "text": "Garantir o aumento da cota como parte do provisionamento de assinatura (por exemplo, total de núcleos de VM disponíveis em uma assinatura)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
- "severity": "Média",
- "text": "Esteja ciente dos failovers iniciados pela Microsoft. Eles são exercidos pela Microsoft em raras situações para fazer failover de todos os hubs IoT de uma região afetada para a região geo-emparelhada correspondente.",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "A API de Cota é uma API REST que você pode usar para exibir e gerenciar cotas para serviços do Azure. Considere usá-lo, se necessário.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
+ "checklist": "SAP Checklist",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
"severity": "Alto",
- "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
- "waf": "Fiabilidade"
+ "text": "Se estiver implantando em uma zona de disponibilidade, verifique se a implantação da zona da VM estará disponível depois que a cota for aprovada. Envie uma solicitação de suporte com a assinatura, a série VM, o número de CPUs e a zona de disponibilidade necessárias.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "checklist": "SAP Checklist",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"severity": "Alto",
- "text": "Saiba como acionar um failover manual.",
- "waf": "Fiabilidade"
+ "text": "Certifique-se de que os serviços e recursos necessários estejam disponíveis nas regiões de implantação escolhidas, por exemplo. ANF, Zona etc.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
- "severity": "Alto",
- "text": "Saiba como fazer failback após um failover.",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Aproveite a marca de recurso do Azure para categorização de custos e agrupamento de recursos (: BillTo, Departamento (ou Unidade de Negócios), Ambiente (Produção, Estágio, Desenvolvimento), Camada (Camada da Web, Camada de Aplicativo), Proprietário do Aplicativo, ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"severity": "Alto",
- "text": "Selecione o plano de hospedagem de função certo com base em seus requisitos de negócios e SLO",
+ "text": "Ajude a proteger seu banco de dados HANA usando o serviço de Backup do Azure.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "Alto",
- "text": "Aproveitar zonas de disponibilidade quando aplicável regionalmente (não disponível para a camada de consumo)",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
"severity": "Média",
- "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
- "severity": "Alto",
- "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
+ "text": "Se você implantar os Arquivos NetApp do Azure para seu banco de dados HANA, Oracle ou DB2, use a ferramenta Azure Application Consistent Snapshot (AzAcSnap) para tirar instantâneos consistentes com o aplicativo. O AzAcSnap também suporta bancos de dados Oracle. Considere usar o AzAcSnap em uma VM central em vez de em VMs individuais.",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"severity": "Alto",
- "text": "Verifique se 'Sempre Ativado' está habilitado para todos os Aplicativos de Função em execução no Plano do Serviço de Aplicativo",
- "waf": "Fiabilidade"
+ "text": "Garanta as correspondências de fuso horário entre o sistema operacional e o sistema SAP.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
"severity": "Média",
- "text": "Emparelhe um aplicativo de função com sua própria conta de armazenamento. Tente não reutilizar contas de armazenamento para aplicativos de função, a menos que eles estejam firmemente acoplados",
+ "text": "Não agrupe serviços de aplicativos diferentes no mesmo cluster. Por exemplo, não combine clusters DRBD e de serviços centrais no mesmo cluster. No entanto, você pode usar o mesmo cluster do Pacemaker para gerenciar aproximadamente cinco serviços centrais diferentes (cluster multi-SID).",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
- "severity": "Média",
- "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código do Aplicativo de Função",
- "waf": "Operações"
+ "checklist": "SAP Checklist",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Considere executar sistemas de desenvolvimento/teste em um modelo de soneca para economizar e otimizar os custos de execução do Azure.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Implementar uma política de tratamento de erros em nível global",
+ "text": "Se você faz parceria com clientes gerenciando suas propriedades SAP, considere o Farol do Azure. O Azure Lighthouse permite que os provedores de serviços gerenciados usem os serviços de identidade nativos do Azure para se autenticar no ambiente dos clientes. Ele coloca o controle nas mãos dos clientes, porque eles podem revogar o acesso a qualquer momento e auditar as ações dos prestadores de serviços.",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Certifique-se de que todas as políticas de APIs incluam um elemento .",
+ "text": "Use o Azure Update Manager para verificar o status das atualizações disponíveis para uma única VM ou várias VMs e considere agendar patches regulares.",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
- "severity": "Média",
- "text": "Usar fragmentos de política para evitar a repetição das mesmas definições de políticas em várias APIs",
+ "checklist": "SAP Checklist",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Otimize e gerencie as operações do SAP Basis usando o SAP Landscape Management (LaMa). Use o conector SAP LaMa para Azure para realocar, copiar, clonar e atualizar sistemas SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
"severity": "Média",
- "text": "Se você estiver planejando monetizar suas APIs, consulte o artigo 'suporte à monetização' para obter as práticas recomendadas",
+ "text": "Use as soluções do Azure Monitor for SAP para monitorar suas cargas de trabalho SAP (SAP HANA, clusters SUSE de alta disponibilidade e sistemas SQL) no Azure. Considere complementar o Azure Monitor para soluções SAP com o SAP Solution Manager.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilitar Configurações de Diagnóstico para exportar logs para o Azure Monitor",
+ "text": "Execute uma verificação de extensão de VM para SAP. A Extensão de VM para SAP usa a identidade gerenciada atribuída de uma máquina virtual (VM) para acessar dados de monitoramento e configuração de VM. A verificação garante que todas as métricas de desempenho em seu aplicativo SAP venham da Extensão do Azure para SAP subjacente.",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
"severity": "Média",
- "text": "Habilite o Application Insights para telemetria mais detalhada",
+ "text": "Use a Política do Azure para controle de acesso e relatórios de conformidade. A Política do Azure fornece a capacidade de impor configurações em toda a organização para garantir a adesão consistente à política e a detecção rápida de violações. ",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "severity": "Alto",
- "text": "Configurar alertas sobre as métricas mais críticas",
+ "checklist": "SAP Checklist",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Use o Monitor de Conexão no Inspetor de Rede do Azure para monitorar métricas de latência para bancos de dados SAP e servidores de aplicativos. Ou colete e exiba medições de latência de rede usando o Azure Monitor.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
- "severity": "Alto",
- "text": "Certifique-se de que os certificados SSL personalizados sejam armazenados em um Cofre de Chaves do Azure para que possam ser acessados e atualizados com segurança",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Execute uma verificação de qualidade para o SAP HANA na infraestrutura provisionada do Azure para verificar se as VMs provisionadas estão em conformidade com as práticas recomendadas do SAP HANA no Azure.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "Alto",
- "text": "Proteger solicitações de entrada para APIs (plano de dados) com o Azure AD",
- "waf": "Segurança"
+ "text": "Para cada assinatura do Azure, execute um teste de latência nas zonas de disponibilidade do Azure antes da implantação zonal para escolher zonas de baixa latência para implantação do SAP no Azure.",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
"severity": "Média",
- "text": "Usar o Microsoft Entra ID para autenticar usuários no Portal do Desenvolvedor",
- "waf": "Segurança"
+ "text": "Execute o Relatório de Resiliência para garantir que a configuração de toda a infraestrutura provisionada do Azure (Computação, Banco de Dados, Rede, Armazenamento, Recuperação de Site) esteja em conformidade com a configuração definida pelo Cloud Adaption Framework para Azure.",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Criar grupos apropriados para controlar a visibilidade dos produtos",
+ "text": "Implemente a proteção contra ameaças usando a solução Microsoft Sentinel para SAP. Use esta solução para monitorar seus sistemas SAP e detectar ameaças sofisticadas em toda a lógica de negócios e camadas de aplicativos.",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
"severity": "Média",
- "text": "Use o recurso Back-ends para eliminar configurações redundantes de back-end de API",
+ "text": "A marcação do Azure pode ser aproveitada para agrupar e controlar recursos logicamente, automatizar suas implantações e, o mais importante, fornecer visibilidade sobre os custos incorridos.",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "severity": "Média",
- "text": "Usar Valores Nomeados para armazenar valores comuns que podem ser usados em políticas",
- "waf": "Operações"
+ "checklist": "SAP Checklist",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Use o monitoramento de latência entre VMs para aplicativos sensíveis à latência.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
"severity": "Média",
- "text": "Para DR, aproveite o nível premium com implantações dimensionadas em duas ou mais regiões para um SLA de 99,99%",
+ "text": "Use o monitoramento do Azure Site Recovery para manter a integridade do serviço de recuperação de desastres para servidores de aplicativos SAP.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "Média",
- "text": "Implante pelo menos uma unidade em duas ou mais zonas de disponibilidade para um SLA aumentado de 99,99%",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
- "severity": "Alto",
- "text": "Verifique se há uma rotina de backup automatizada",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
"severity": "Média",
- "text": "Use Políticas para adicionar uma URL de back-end de failover e cache para reduzir chamadas com falha.",
- "waf": "Fiabilidade"
+ "text": "Exclua todos os sistemas de arquivos de banco de dados e programas executáveis das verificações antivírus. Incluí-los pode levar a problemas de desempenho. Verifique com os fornecedores do banco de dados para obter detalhes prescritivos na lista de exclusão. Por exemplo, a Oracle recomenda excluir /oracle//sapdata das verificações antivírus.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
"severity": "Baixo",
- "text": "Se você precisar registrar em níveis de alto desempenho, considere a política de Hubs de Eventos",
- "waf": "Operações"
+ "text": "Considere a coleta de estatísticas completas de banco de dados para bancos de dados não-HANA após a migração. Por exemplo, implemente a nota SAP 1020260 - Entrega de estatísticas Oracle.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "service": "SAP",
"severity": "Média",
- "text": "Aplicar políticas de limitação para controlar o número de solicitações por segundo",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "text": "Considere o uso do Oracle Automatic Storage Management (ASM) para todas as implantações Oracle que usam SAP no Azure.",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
+ "service": "SAP",
"severity": "Média",
- "text": "Configurar o dimensionamento automático para dimensionar o número de instâncias quando a carga aumenta",
+ "text": "Para SAP no Azure executando Oracle, uma coleção de scripts SQL pode ajudá-lo a diagnosticar problemas de desempenho. Os relatórios do Automatic Workload Repository (AWR) contêm informações valiosas para diagnosticar problemas no sistema Oracle. Recomendamos que você execute um relatório AWR durante várias sessões e escolha horários de pico para ele, para garantir uma ampla cobertura para a análise.",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
- "severity": "Média",
- "text": "Implante gateways auto-hospedados onde o Azure não tem uma região próxima às APIs de back-end.",
- "waf": "Desempenho"
+ "checklist": "SAP Checklist",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Use o monitoramento do Azure Site Recovery para manter a integridade do serviço de recuperação de desastres para servidores de aplicativos SAP.",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Use a camada premium para cargas de trabalho de produção.",
- "waf": "Fiabilidade"
+ "text": "Para a entrega segura de aplicativos HTTP/S, use o Application Gateway v2 e verifique se a proteção e as políticas do WAF estão habilitadas.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
"severity": "Média",
- "text": "No modelo de várias regiões, use Políticas para rotear as solicitações para back-ends regionais com base na disponibilidade ou latência.",
- "waf": "Fiabilidade"
+ "text": "Se o DNS ou o nome virtual da máquina virtual não for alterado durante a migração para o Azure, o DNS em segundo plano e os nomes virtuais conectam muitas interfaces do sistema no cenário SAP, e os clientes só às vezes estão cientes das interfaces que os desenvolvedores definem ao longo do tempo. Surgem desafios de conexão entre vários sistemas quando os nomes virtuais ou DNS mudam após as migrações, e é recomendável manter os aliases DNS para evitar esses tipos de dificuldades.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
- "severity": "Alto",
- "text": "Esteja atento aos limites da APIM",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Use zonas DNS diferentes para distinguir cada ambiente (sandbox, desenvolvimento, pré-produção e produção) um do outro. A exceção é para implantações SAP com sua própria VNet; aqui, zonas DNS privadas podem não ser necessárias.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
- "severity": "Alto",
- "text": "Certifique-se de que as implantações de gateway auto-hospedado sejam resilientes.",
+ "checklist": "SAP Checklist",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Emparelhamento de rede virtual local e global fornecem conectividade e são as abordagens preferidas para garantir a conectividade entre zonas de aterrissagem para implantações SAP em várias regiões do Azure",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
- "severity": "Média",
- "text": "Usar o Azure Front Door na frente do APIM para implantação em várias regiões",
+ "checklist": "SAP Checklist",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Não há suporte para implantar qualquer NVA entre o aplicativo SAP e o servidor de banco de dados SAP",
+ "training": "https://me.sap.com/notes/2731110",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "service": "SAP",
"severity": "Média",
- "text": "Implantar o serviço em uma rede virtual (VNet)",
- "waf": "Segurança"
+ "text": "Use a WAN Virtual para implantações do Azure em redes novas, grandes ou globais onde você precisa de conectividade de trânsito global entre regiões do Azure e locais locais. Com essa abordagem, você não precisará configurar manualmente o roteamento transitivo para a rede do Azure e poderá seguir um padrão para implantações do SAP no Azure.",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "service": "SAP",
"severity": "Média",
- "text": "Implante NSG (grupos de segurança de rede) em suas sub-redes para restringir ou monitorar o tráfego de/para APIM.",
- "waf": "Segurança"
+ "text": "Considere a implantação de dispositivos virtuais de rede (NVAs) entre regiões somente se NVAs de parceiros forem usados. NVAs entre regiões ou VNets não são necessários se NVAs nativos estiverem presentes. Ao implantar tecnologias de rede de parceiros e NVAs, siga as orientações do fornecedor para verificar configurações conflitantes com a rede do Azure.",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "service": "SAP",
"severity": "Média",
- "text": "Implante pontos de extremidade privados para filtrar o tráfego de entrada quando o APIM não for implantado em uma rede virtual.",
- "waf": "Segurança"
+ "text": "A WAN virtual gerencia a conectividade entre VNets spoke para topologias baseadas em WAN virtual (não há necessidade de configurar o roteamento definido pelo usuário [UDR] ou NVAs), e a taxa de transferência máxima de rede para o tráfego de VNet-to-VNet no mesmo hub virtual é de 50 gigabits por segundo. Se necessário, as zonas de aterrissagem SAP podem usar o emparelhamento de VNet para se conectar a outras zonas de aterrissagem e superar essa limitação de largura de banda.",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
"severity": "Alto",
- "text": "Desabilitar o acesso à rede pública",
+ "text": "A atribuição de IP público à VM que executa o SAP Workload não é recomendada.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
- "severity": "Média",
- "text": "Simplifique o gerenciamento com scripts de automação do PowerShell",
+ "checklist": "SAP Checklist",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Considere reservar o endereço IP no lado do DR ao configurar o ASR",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "Média",
- "text": "Configure APIM via Infrastructure-as-code. Analise as práticas recomendadas de DevOps do Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "checklist": "SAP Checklist",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Evite usar intervalos de endereços IP sobrepostos para sites de produção e DR.",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
+ "service": "SAP",
"severity": "Média",
- "text": "Promover o uso da extensão API do Visual Studio Code para um desenvolvimento de API mais rápido",
+ "text": "Embora o Azure ajude você a criar várias sub-redes delegadas em uma rede virtual, apenas uma sub-rede delegada pode existir em uma rede virtual para arquivos do Azure NetApp. As tentativas de criar um novo volume falharão se você usar mais de uma sub-rede delegada para Arquivos do Azure NetApp.",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
"severity": "Média",
- "text": "Implemente DevOps e CI/CD em seu fluxo de trabalho",
- "waf": "Operações"
- },
- {
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
- "severity": "Média",
- "text": "APIs seguras usando autenticação de certificado de cliente",
+ "text": "Usar o Firewall do Azure para controlar o tráfego de saída do Azure para a Internet, conexões de entrada não HTTP/S e filtragem de tráfego Leste/Oeste (se a organização exigir)",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
+ "service": "SAP",
"severity": "Média",
- "text": "Serviços de back-end seguros usando autenticação de certificado de cliente",
+ "text": "O Application Gateway e o Web Application Firewall têm limitações quando o Application Gateway serve como um proxy reverso para aplicativos Web SAP, conforme mostrado na comparação entre o Application Gateway, o SAP Web Dispatcher e outros serviços de terceiros.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Consulte o artigo \"Recomendações para mitigar as 10 principais ameaças da segurança da API OWASP\" e verifique o que é aplicável às suas APIs",
+ "text": "Use as políticas do Azure Front Door e do WAF para fornecer proteção global entre as regiões do Azure para conexões HTTP/S de entrada para uma zona de aterrissagem.",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Usar o recurso Autorizações para simplificar o gerenciamento do token OAuth 2.0 para suas APIs de back-end",
+ "text": "Aproveite as políticas do Web Application Firewall no Azure Front Door quando estiver usando o Azure Front Door e o Application Gateway para proteger aplicativos HTTP/S. Bloqueie o Gateway de Aplicativo para receber tráfego somente do Azure Front Door.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "severity": "Alto",
- "text": "Use a versão mais recente do TLS ao criptografar informações em trânsito. Desative protocolos e cifras desatualizados e desnecessários quando possível.",
+ "checklist": "SAP Checklist",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Use um firewall de aplicativo Web para verificar seu tráfego quando ele estiver exposto à Internet. Outra opção é usá-lo com seu balanceador de carga ou com recursos que tenham recursos internos de firewall, como o Application Gateway ou soluções de terceiros.",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
- "severity": "Alto",
- "text": "Certifique-se de que os segredos (valores nomeados) sejam armazenados em um Cofre de Chaves do Azure para que possam ser acessados e atualizados com segurança",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Use a WAN Virtual para implantações do Azure em redes novas, grandes ou globais onde você precisa de conectividade de trânsito global entre regiões do Azure e locais locais. Com essa abordagem, você não precisará configurar manualmente o roteamento transitivo para a rede do Azure e poderá seguir um padrão para implantações do SAP no Azure.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "SAP",
"severity": "Média",
- "text": "Use identidades gerenciadas para autenticar em outros recursos do Azure sempre que possível",
+ "text": "Para evitar o vazamento de dados, use o Link Privado do Azure para acessar com segurança recursos de plataforma como serviço, como Armazenamento de Blobs do Azure, Arquivos do Azure, Azure Data Lake Storage Gen2, Azure Data Factory e muito mais. O Ponto de Extremidade Privado do Azure também pode ajudar a proteger o tráfego entre VNets e serviços como o Armazenamento do Azure, o Backup do Azure e muito mais. O tráfego entre sua rede virtual e o serviço habilitado para ponto de extremidade privado viaja pela rede global da Microsoft, o que impede sua exposição à Internet pública.",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
+ "service": "SAP",
"severity": "Alto",
- "text": "Usar o WAF (Web Application Firewall) implantando o Application Gateway na frente do APIM",
- "waf": "Segurança"
+ "text": "Verifique se a rede acelerada do Azure está habilitada nas VMs usadas nas camadas de aplicativo SAP e DBMS.",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "checklist": "SAP Checklist",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Aproveite o servidor flexível",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
- "severity": "Alto",
- "text": "Aproveite as zonas de disponibilidade quando aplicável regionalmente",
- "waf": "Fiabilidade"
+ "text": "Verifique se as implantações internas do Azure Load Balancer estão configuradas para usar DSR (Direct Server Return). Essa configuração (Habilitando IP flutuante) reduzirá a latência quando as configurações internas do balanceador de carga forem usadas para configurações de alta disponibilidade na camada DBMS.",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
+ "checklist": "SAP Checklist",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "SAP",
"severity": "Média",
- "text": "Aproveite a replicação de dados para cenários de DR entre regiões",
- "waf": "Fiabilidade"
+ "text": "Você pode usar as regras ASG (grupo de segurança de aplicativo) e NSG para definir listas de controle de acesso de segurança de rede entre o aplicativo SAP e as camadas DBMS. Os ASGs agrupam máquinas virtuais para ajudar a gerenciar sua segurança.",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "waf": "Segurança"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
- "severity": "Média",
- "text": "Use um locatário do Entra para gerenciar seus recursos do Azure, a menos que você tenha um requisito regulatório ou comercial claro para multilocatários.",
- "waf": "Operações"
+ "checklist": "SAP Checklist",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Não há suporte para a colocação da camada de aplicativo SAP e do SGBD SAP em diferentes VNets do Azure que não são emparelhadas.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "Baixo",
- "text": "Use a abordagem de Automação Multilocatário para gerenciar seus locatários de ID do Microsoft Entra.",
- "waf": "Operações"
+ "checklist": "SAP Checklist",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Para obter a latência de rede ideal com aplicativos SAP, considere o uso de grupos de posicionamento de proximidade do Azure.",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"severity": "Alto",
- "text": "Use o Azure Lighthouse para gerenciamento de vários locatários com as mesmas IDs.",
- "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
- "waf": "Operações"
+ "text": "NÃO há suporte para executar uma camada do SAP Application Server e uma camada de DBMS dividida entre o local e o Azure. Ambas as camadas precisam residir completamente no local ou no Azure.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"severity": "Alto",
- "text": "Se você conceder a um parceiro acesso para administrar seu locatário, use o Azure Lighthouse.",
+ "text": "Não é recomendado hospedar o sistema de gerenciamento de banco de dados (DBMS) e as camadas de aplicativos dos sistemas SAP em diferentes VNets e conectá-los ao emparelhamento de VNet devido aos custos substanciais que o tráfego de rede excessivo entre as camadas pode produzir. Recomende o uso de sub-redes na rede virtual do Azure para separar a camada de aplicativo SAP e a camada DBMS.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
"waf": "Custar"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
+ "service": "SAP",
"severity": "Alto",
- "text": "Aplique um modelo RBAC que se alinhe ao seu modelo operacional de nuvem. Escopo e Atribuição entre Grupos de Gerenciamento e Assinaturas.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "text": "Se estiver usando o Load Balancer com sistemas operacionais convidados Linux, verifique se o parâmetro de rede Linux net.ipv4.tcp_timestamps está definido como 0.",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "Desempenho"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Para implantações SAP RISE/ECS, o emparelhamento virtual é a maneira preferida de estabelecer conectividade com o ambiente existente do Azure do cliente. Tanto a vnet do SAP quanto a(s) vnet(s) do cliente são protegidas com grupos de segurança de rede (NSG), permitindo a comunicação nas portas SAP e de banco de dados por meio do emparelhamento vnet",
"waf": "Segurança"
},
{
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"severity": "Alto",
- "text": "Use apenas o tipo de autenticação Conta corporativa ou de estudante para todos os tipos de conta. Evite usar a conta da Microsoft",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
- "waf": "Segurança"
+ "text": "Revise os backups de banco de dados do SAP HANA para VMs do Azure.",
+ "waf": "Custar"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
"severity": "Média",
- "text": "Use apenas grupos para atribuir permissões. Adicione grupos locais ao grupo Somente ID do Entra se um sistema de gerenciamento de grupo já estiver em vigor.",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
- "waf": "Segurança"
+ "text": "Revise o monitoramento interno do Site Recovery, quando usado para SAP.",
+ "waf": "Custar"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
+ "service": "SAP",
"severity": "Alto",
- "text": "Imponha políticas de Acesso Condicional da ID do Microsoft Entra para qualquer usuário com direitos a ambientes do Azure.",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
- "waf": "Segurança"
+ "text": "Revise as diretrizes de monitoramento do cenário do sistema SAP HANA.",
+ "waf": "Operações"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Revise o Banco de Dados Oracle nas estratégias de backup de VM do Linux do Azure.",
+ "waf": "Operações"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Analise o uso do Armazenamento de Blobs do Azure com o SQL Server 2016.",
+ "waf": "Operações"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Analise o uso do Backup Automatizado v2 para VMs do Azure.",
+ "waf": "Operações"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
+ "service": "SAP",
"severity": "Alto",
- "text": "Imponha a autenticação multifator para qualquer usuário com direitos aos ambientes do Azure.",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
- "waf": "Segurança"
+ "text": "Ativando o acelerador de gravação para a série M ao usar discos premium (V1)",
+ "waf": "Operações"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "service": "SAP",
"severity": "Média",
- "text": "Imponha o Microsoft Entra ID Privileged Identity Management (PIM) para estabelecer acesso permanente zero e privilégios mínimos.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Segurança"
+ "text": "Testar a latência da zona de disponibilidade.",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
+ "service": "SAP",
"severity": "Média",
- "text": "Se estiver planejando alternar dos Serviços de Domínio Active Directory para os serviços de domínio Entra, avalie a compatibilidade de todas as cargas de trabalho.",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
- "waf": "Segurança"
+ "text": "Ative o SAP EarlyWatch Alert para todos os componentes SAP.",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
+ "service": "SAP",
"severity": "Média",
- "text": "Integre os logs de ID do Microsoft Entra com o Azure Monitor central da plataforma. O Azure Monitor permite uma única fonte de verdade sobre dados de log e monitoramento no Azure, oferecendo às organizações opções nativas de nuvem para atender aos requisitos de coleta e retenção de logs.",
- "waf": "Segurança"
+ "text": "Revise a latência do servidor de aplicativos SAP para o servidor de banco de dados usando o relatório SAP ABAPMeter /SSA/CAT.",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "Desempenho"
},
{
- "ammp": true,
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
- "severity": "Alto",
- "text": "Implemente um acesso de emergência ou contas de emergência para evitar o bloqueio de conta em todo o locatário.",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
- "waf": "Segurança"
+ "checklist": "SAP Checklist",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Revise o monitoramento de desempenho do SQL Server usando o CCMS.",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
+ "service": "SAP",
"severity": "Média",
- "text": "Não use contas sincronizadas locais para atribuições de função de ID do Microsoft Entra, a menos que você tenha um cenário que exija isso especificamente.",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
- "waf": "Segurança"
+ "text": "Teste a latência de rede entre VMs de camada de aplicativo SAP e VMs DBMS (NIPING).",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "Desempenho"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
+ "checklist": "SAP Checklist",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
+ "service": "SAP",
"severity": "Média",
- "text": "Ao usar o Proxy de Aplicativo de ID do Microsoft Entra para fornecer acesso de usuários remotos a aplicativos, gerencie-o como um recurso da plataforma, pois você só pode ter uma instância por locatário.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "Revise os alertas do SAP HANA Studio.",
+ "waf": "Desempenho"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Execute verificações de integridade do SAP HANA usando HANA_Configuration_Minichecks.",
+ "waf": "Desempenho"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "Se você executar VMs do Windows e Linux no Azure, no local ou em outros ambientes de nuvem, poderá usar o Centro de gerenciamento de atualizações na Automação do Azure para gerenciar atualizações do sistema operacional, incluindo patches de segurança.",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "checklist": "SAP Checklist",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
"severity": "Média",
- "text": "Use uma topologia de rede hub-and-spoke para cenários de rede que exigem flexibilidade máxima.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Analise rotineiramente as notas de OSS de segurança do SAP porque o SAP lança patches de segurança altamente críticos, ou hot fixes, que exigem ação imediata para proteger seus sistemas SAP.",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
- "severity": "Alto",
- "text": "Implante serviços de rede compartilhados, incluindo gateways do ExpressRoute, gateways de VPN e Firewall do Azure ou NVAs de parceiros na rede virtual do hub central. Se necessário, implante também serviços DNS.",
- "waf": "Custar"
+ "checklist": "SAP Checklist",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Para SAP no SQL Server, você pode desabilitar a conta de administrador do sistema do SQL Server porque os sistemas SAP no SQL Server não usam a conta. Certifique-se de que outro usuário com direitos de administrador do sistema possa acessar o servidor antes de desabilitar a conta de administrador do sistema original.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "checklist": "SAP Checklist",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
"severity": "Alto",
- "text": "Use um plano de proteção de IP ou rede DDoS para todos os endereços IP públicos nas zonas de destino do aplicativo.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Desative xp_cmdshell. O recurso do SQL Server xp_cmdshell habilita um shell de comando do sistema operacional interno do SQL Server. É um risco potencial em auditorias de segurança.",
+ "training": "https://me.sap.com/notes/3019299/E",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
- "severity": "Média",
- "text": "Ao implantar tecnologias de rede de parceiros ou NVAs, siga as diretrizes do fornecedor do parceiro.",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "A criptografia de servidores de banco de dados SAP HANA no Azure usa a tecnologia de criptografia nativa do SAP HANA. Além disso, se você estiver usando o SQL Server no Azure, use a TDE (Criptografia de Dados Transparente) para proteger seus dados e arquivos de log e garantir que seus backups também sejam criptografados.",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
- "severity": "Baixo",
- "text": "Se você precisar de trânsito entre o ExpressRoute e os gateways de VPN em cenários hub e spoke, use o Servidor de Rota do Azure.",
+ "checklist": "SAP Checklist",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "SAP",
+ "severity": "Média",
+ "text": "A criptografia de Armazenamento do Azure está habilitada para todas as contas clássicas e do Gerenciador de Recursos do Azure e não pode ser desabilitada. Como seus dados são criptografados por padrão, você não precisa modificar seu código ou aplicativos para usar a criptografia do Armazenamento do Azure.",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
- "severity": "Baixo",
- "text": "Se estiver usando o Servidor de Roteamento, use um prefixo /27 para a sub-rede do Servidor de Roteamento.",
+ "checklist": "SAP Checklist",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Usar o Cofre de Chaves do Azure para armazenar seus segredos e credenciais",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "SAP",
"severity": "Média",
- "text": "Para arquiteturas de rede com várias topologias hub-and-spoke em regiões do Azure, use emparelhamentos de rede virtual global entre as VNets do hub para conectar as regiões entre si.",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
- "waf": "Desempenho"
+ "text": "É recomendável BLOQUEAR os Recursos do Azure após a implantação bem-sucedida para proteger contra alterações não autorizadas. Você também pode impor restrições e regras LOCK em sua base por assinatura usando políticas personalizadas do Azure (função Personalizada).",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "checklist": "SAP Checklist",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "SAP",
"severity": "Média",
- "text": "Use o Azure Monitor para Redes para monitorar o estado de ponta a ponta das redes no Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Operações"
+ "text": "Provisione o Cofre de Chaves do Azure com as políticas de exclusão e limpeza suaves habilitadas para permitir a proteção de retenção para objetos excluídos.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
- "severity": "Média",
- "text": "Se você tiver mais de 400 redes spoke em uma região, implante um hub adicional para ignorar os limites de emparelhamento VNet (500) e o número máximo de prefixos que podem ser anunciados por meio do ExpressRoute (1000).",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Com base nos requisitos existentes, controles normativos e de conformidade (internos/externos) - Determine quais Políticas do Azure e a função RBAC do Azure são necessárias",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
- "severity": "Média",
- "text": "Limite o número de rotas por tabela de rotas a 400.",
- "waf": "Fiabilidade"
+ "checklist": "SAP Checklist",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Ao habilitar o Microsoft Defender for Endpoint no ambiente SAP, recomende excluir arquivos de dados e de log em servidores DBMS em vez de direcionar todos os servidores. Siga as recomendações do fornecedor do DBMS ao excluir arquivos de destino.",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "checklist": "SAP Checklist",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
+ "service": "SAP",
"severity": "Alto",
- "text": "Use a configuração 'Permitir tráfego para rede virtual remota' ao configurar emparelhamentos VNet.",
- "waf": "Fiabilidade"
+ "text": "Delegue uma função personalizada de administrador SAP com acesso just-in-time do Microsoft Defender for Cloud.",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
- "severity": "Média",
- "text": "Quando você estiver usando o ExpressRoute Direct, configure o MACsec para criptografar o tráfego no nível da camada dois entre os roteadores da organização e o MSEE. O diagrama mostra essa criptografia no fluxo.",
+ "checklist": "SAP Checklist",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "criptografar dados em trânsito integrando o produto de segurança de terceiros com comunicações de rede seguras (SNC) para DIAG (SAP GUI), RFC e SPNEGO para HTTPS",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "checklist": "SAP Checklist",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
+ "service": "SAP",
"severity": "Média",
- "text": "Para cenários em que o MACsec não é uma opção (por exemplo, não usando o ExpressRoute Direct), use um gateway de VPN para estabelecer túneis IPsec no emparelhamento privado do ExpressRoute.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "O padrão é chaves gerenciadas pela Microsoft para a funcionalidade de criptografia principal e use chaves gerenciadas pelo cliente quando necessário.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
+ "service": "SAP",
"severity": "Alto",
- "text": "Verifique se nenhum espaço de endereço IP sobreposto entre regiões do Azure e locais é usado.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "Use um Cofre de Chaves do Azure por aplicativo, por ambiente, por região.",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
- "severity": "Média",
- "text": "Use endereços IP dos intervalos de alocação de endereços para Internets privadas (RFC 1918).",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "checklist": "SAP Checklist",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
+ "service": "SAP",
+ "severity": "Alto",
+ "text": "Para controlar e gerenciar chaves de criptografia de disco e segredos para sistemas operacionais Windows e não Windows HANA, use o Cofre de Chaves do Azure. O SAP HANA não tem suporte com o Cofre de Chaves do Azure, portanto, você deve usar métodos alternativos, como chaves SAP ABAP ou SSH.",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "checklist": "SAP Checklist",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
+ "service": "SAP",
"severity": "Alto",
- "text": "Certifique-se de que o espaço de endereço IP não seja desperdiçado, não crie redes virtuais desnecessariamente grandes (por exemplo, /16).",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Desempenho"
+ "text": "Personalizar funções RBAC (controle de acesso baseado em função) para SAP em assinaturas spoke do Azure para evitar alterações acidentais relacionadas à rede",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
+ "service": "SAP",
"severity": "Alto",
- "text": "Não use intervalos de endereços IP sobrepostos para sites de produção e recuperação de desastres.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
- "severity": "Média",
- "text": "Para ambientes em que a resolução de nomes no Azure é tudo o que é necessário, use o DNS Privado do Azure para resolução com uma zona delegada para resolução de nomes (como 'azure.contoso.com').",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operações"
+ "text": "Isole DMZs e NVAs do restante do estado SAP, configure o Azure Private Link e gerencie e controle com segurança os recursos do SAP no Azure",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
- "severity": "Média",
- "text": "Para ambientes em que a resolução de nomes no Azure e no local é necessária e não há nenhum serviço DNS corporativo existente, como o Active Directory, use o Resolvedor Privado de DNS do Azure para rotear solicitações de DNS para o Azure ou para servidores DNS locais.",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "checklist": "SAP Checklist",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Considere usar o software antimalware da Microsoft no Azure para proteger suas máquinas virtuais contra arquivos mal-intencionados, adware e outras ameaças.",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
+ "checklist": "SAP Checklist",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
+ "service": "SAP",
"severity": "Baixo",
- "text": "Cargas de trabalho especiais que exigem e implantam seu próprio DNS (como o Red Hat OpenShift) devem usar sua solução de DNS preferida.",
- "waf": "Operações"
+ "text": "Para obter uma proteção ainda mais poderosa, considere usar o Microsoft Defender for Endpoint.",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
+ "checklist": "SAP Checklist",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
"severity": "Alto",
- "text": "Habilite o registro automático para o DNS do Azure para gerenciar automaticamente o ciclo de vida dos registros DNS para as máquinas virtuais implantadas em uma rede virtual.",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "Operações"
+ "text": "Isole os servidores de aplicativo e banco de dados SAP da Internet ou da rede local passando todo o tráfego pela rede virtual de hub, que está conectada à rede spoke por emparelhamento de rede virtual. As redes virtuais emparelhadas garantem que a solução SAP no Azure seja isolada da Internet pública.",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
- "severity": "Média",
- "text": "Use o Azure Bastion para se conectar com segurança à sua rede.",
+ "checklist": "SAP Checklist",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "Baixo",
+ "text": "Para aplicativos voltados para a Internet, como o SAP Fiori, certifique-se de distribuir a carga por requisitos de aplicativo, mantendo os níveis de segurança. Para segurança de Camada 7, você pode usar um WAF (Web Application Firewall) de terceiros disponível no Azure Marketplace.",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
+ "checklist": "SAP Checklist",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
+ "service": "SAP",
"severity": "Média",
- "text": "Use o Azure Bastion em uma sub-rede /26 ou maior.",
+ "text": "Para habilitar a comunicação segura no Azure Monitor para soluções SAP, você pode optar por usar um certificado raiz ou um certificado de servidor. É altamente recomendável que você use certificados raiz.",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
+ "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
+ "service": "Entra",
"severity": "Média",
- "text": "Use as políticas do Azure Front Door e do WAF para fornecer proteção global entre regiões do Azure para conexões HTTP/S de entrada para uma zona de destino.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Segurança"
+ "text": "Use um locatário do Entra para gerenciar seus recursos do Azure, a menos que você tenha um requisito regulatório ou comercial claro para multilocatários.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Entra",
"severity": "Baixo",
- "text": "Ao usar o Azure Front Door e o Gateway de Aplicativo do Azure para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Azure Front Door. Bloqueie o Gateway de Aplicativo do Azure para receber tráfego somente do Azure Front Door.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Segurança"
+ "text": "Use a abordagem de Automação Multilocatário para gerenciar seus locatários de ID do Microsoft Entra.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
+ "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "Entra",
"severity": "Alto",
- "text": "Quando WAFs e outros proxies reversos forem necessários para conexões HTTP/S de entrada, implante-os em uma rede virtual de zona de destino e junto com os aplicativos que eles estão protegendo e expondo à Internet.",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Segurança"
+ "text": "Use o Azure Lighthouse para gerenciamento de vários locatários com as mesmas IDs.",
+ "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Entra",
"severity": "Alto",
- "text": "Use os planos de Rede ou Proteção de IP do Azure contra DDoS para ajudar a proteger os pontos de extremidade de endereços IP públicos nas redes virtuais.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Se você conceder a um parceiro acesso para administrar seu locatário, use o Azure Lighthouse.",
+ "waf": "Custar"
+ },
+ {
+ "checklist": "Azure Landing Zone Review",
+ "guid": "348ef254-c27d-442e-abba-c7571559ab91",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "service": "Entra",
+ "severity": "Alto",
+ "text": "Aplique um modelo RBAC que se alinhe ao seu modelo operacional de nuvem. Escopo e Atribuição entre Grupos de Gerenciamento e Assinaturas.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
+ "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",
+ "service": "Entra",
"severity": "Alto",
- "text": "Planeje como gerenciar a configuração e a estratégia de tráfego de saída da rede antes da próxima alteração significativa. Em 30 de setembro de 2025, o acesso de saída padrão para novas implantações será desativado e somente configurações de acesso explícito serão permitidas.",
- "waf": "Fiabilidade"
+ "text": "Use apenas o tipo de autenticação Conta corporativa ou de estudante para todos os tipos de conta. Evite usar a conta da Microsoft",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "Entra",
+ "severity": "Média",
+ "text": "Use apenas grupos para atribuir permissões. Adicione grupos locais ao grupo Somente ID do Entra se um sistema de gerenciamento de grupo já estiver em vigor.",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "waf": "Segurança"
+ },
+ {
+ "checklist": "Azure Landing Zone Review",
+ "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
+ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
+ "service": "Entra",
"severity": "Alto",
- "text": "Adicione configurações de diagnóstico para salvar logs relacionados a DDoS para todos os endereços IP públicos protegidos (IP DDoS ou Proteção de Rede).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Imponha políticas de Acesso Condicional da ID do Microsoft Entra para qualquer usuário com direitos a ambientes do Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
+ "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
+ "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
+ "service": "Entra",
"severity": "Alto",
- "text": "Verifique se há uma atribuição de política para negar endereços IP públicos diretamente vinculados a máquinas virtuais. Use exclusões se IPs públicos forem necessários em VMs específicas.",
+ "text": "Imponha a autenticação multifator para qualquer usuário com direitos aos ambientes do Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "Entra",
"severity": "Média",
- "text": "Use o ExpressRoute como a conexão principal com o Azure. Use VPNs como fonte de conectividade de backup.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Desempenho"
+ "text": "Imponha o Microsoft Entra ID Privileged Identity Management (PIM) para estabelecer acesso permanente zero e privilégios mínimos.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "description": "Você pode usar o prefixo AS-path e pesos de conexão para influenciar o tráfego do Azure para o local e toda a gama de atributos BGP em seus próprios roteadores para influenciar o tráfego do local para o Azure.",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
+ "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
+ "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
+ "service": "Entra",
"severity": "Média",
- "text": "Ao usar vários circuitos do ExpressRoute ou vários locais locais, use atributos BGP para otimizar o roteamento.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidade"
+ "text": "Se estiver planejando alternar dos Serviços de Domínio Active Directory para os serviços de domínio Entra, avalie a compatibilidade de todas as cargas de trabalho.",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
+ "service": "Entra",
"severity": "Média",
- "text": "Selecione o SKU correto para os gateways ExpressRoute/VPN com base nos requisitos de largura de banda e desempenho.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Desempenho"
+ "text": "Integre os logs de ID do Microsoft Entra com o Azure Monitor central da plataforma. O Azure Monitor permite uma única fonte de verdade sobre dados de log e monitoramento no Azure, oferecendo às organizações opções nativas de nuvem para atender aos requisitos de coleta e retenção de logs.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "ammp": true,
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
+ "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
+ "service": "Entra",
"severity": "Alto",
- "text": "Verifique se você está usando circuitos do ExpressRoute de dados ilimitados somente se atingir a largura de banda que justifica seu custo.",
- "waf": "Custar"
+ "text": "Implemente um acesso de emergência ou contas de emergência para evitar o bloqueio de conta em todo o locatário.",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
- "severity": "Alto",
- "text": "Aproveite o SKU local do ExpressRoute para reduzir o custo de seus circuitos, se o local de emparelhamento de circuito der suporte às regiões do Azure para o SKU Local.",
- "waf": "Custar"
+ "guid": "35037e68-9349-4c15-b371-228514f4cdff",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "Entra",
+ "severity": "Média",
+ "text": "Não use contas sincronizadas locais para atribuições de função de ID do Microsoft Entra, a menos que você tenha um cenário que exija isso especificamente.",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
+ "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Entra",
"severity": "Média",
- "text": "Implante um gateway do ExpressRoute com redundância de zona nas regiões do Azure com suporte.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidade"
+ "text": "Ao usar o Proxy de Aplicativo de ID do Microsoft Entra para fornecer acesso de usuários remotos a aplicativos, gerencie-o como um recurso da plataforma, pois você só pode ter uma instância por locatário.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
+ "service": "VNet",
"severity": "Média",
- "text": "Para cenários que exigem largura de banda superior a 10 Gbps ou portas dedicadas de 10/100 Gbps, use o ExpressRoute Direct.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Desempenho"
+ "text": "Use uma topologia de rede hub-and-spoke para cenários de rede que exigem flexibilidade máxima.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
- "severity": "Média",
- "text": "Quando a baixa latência for necessária ou a taxa de transferência do local para o Azure precisar ser maior que 10 Gbps, habilite o FastPath para ignorar o gateway do ExpressRoute do caminho de dados.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Desempenho"
+ "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Implante serviços de rede compartilhados, incluindo gateways do ExpressRoute, gateways de VPN e Firewall do Azure ou NVAs de parceiros na rede virtual do hub central. Se necessário, implante também serviços DNS.",
+ "waf": "Custar"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
- "severity": "Média",
- "text": "Use gateways de VPN com redundância de zona para conectar branches ou locais remotos ao Azure (quando disponível).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
- "waf": "Fiabilidade"
+ "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Use um plano de proteção de IP ou rede DDoS para todos os endereços IP públicos nas zonas de destino do aplicativo.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
+ "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
"severity": "Média",
- "text": "Use dispositivos VPN redundantes locais (ativo/ativo ou ativo/passivo).",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "Ao implantar tecnologias de rede de parceiros ou NVAs, siga as diretrizes do fornecedor do parceiro.",
"waf": "Fiabilidade"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
+ "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
"service": "ExpressRoute",
- "severity": "Alto",
- "text": "Se estiver usando o ExpressRoute Direct, considere usar circuitos locais do ExpressRoute para as regiões locais do Azure para economizar custos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Custar"
+ "severity": "Baixo",
+ "text": "Se você precisar de trânsito entre o ExpressRoute e os gateways de VPN em cenários hub e spoke, use o Servidor de Rota do Azure.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualHubs",
"checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
- "severity": "Média",
- "text": "Quando o isolamento de tráfego ou a largura de banda dedicada for necessária, como para separar ambientes de produção e não produção, use circuitos diferentes do ExpressRoute. Ele ajudará você a garantir domínios de roteamento isolados e aliviar os riscos de vizinhos barulhentos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
+ "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
+ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
+ "service": "ARS",
+ "severity": "Baixo",
+ "text": "Se estiver usando o Servidor de Roteamento, use um prefixo /27 para a sub-rede do Servidor de Roteamento.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
+ "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
+ "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",
"severity": "Média",
- "text": "Monitore a disponibilidade e a utilização do ExpressRoute usando o Express Route Insights interno.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Operações"
+ "text": "Para arquiteturas de rede com várias topologias hub-and-spoke em regiões do Azure, use emparelhamentos de rede virtual global entre as VNets do hub para conectar as regiões entre si.",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
+ "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
+ "service": "VNet",
"severity": "Média",
- "text": "Use o Monitor da Conexão para monitoramento de conectividade em toda a rede, especialmente entre o local e o Azure.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Use o Azure Monitor para Redes para monitorar o estado de ponta a ponta das redes no Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
"waf": "Operações"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
+ "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
+ "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",
"severity": "Média",
- "text": "Use circuitos do ExpressRoute de diferentes locais de emparelhamento para redundância.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Se você tiver mais de 400 redes spoke em uma região, implante um hub adicional para ignorar os limites de emparelhamento VNet (500) e o número máximo de prefixos que podem ser anunciados por meio do ExpressRoute (1000).",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
+ "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
+ "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
+ "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",
"severity": "Média",
- "text": "Use a VPN site a site como failover do ExpressRoute, se estiver usando apenas um único circuito do ExpressRoute.",
+ "text": "Limite o número de rotas por tabela de rotas a 400.",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
+ "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
+ "service": "VNet",
"severity": "Alto",
- "text": "Se você estiver usando uma tabela de rotas no GatewaySubnet, certifique-se de que as rotas de gateway sejam propagadas.",
+ "text": "Use a configuração 'Permitir tráfego para rede virtual remota' ao configurar emparelhamentos VNet.",
"waf": "Fiabilidade"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
"service": "ExpressRoute",
- "severity": "Alto",
- "text": "Se estiver usando o ExpressRoute, o roteamento local deverá ser dinâmico: no caso de uma falha de conexão, ele deverá convergir para a conexão restante do circuito. A carga deve ser compartilhada entre ambas as conexões, idealmente como ativa/ativa, embora ativa/passiva também seja suportada.",
- "waf": "Fiabilidade"
+ "severity": "Média",
+ "text": "Quando você estiver usando o ExpressRoute Direct, configure o MACsec para criptografar o tráfego no nível da camada dois entre os roteadores da organização e o MSEE. O diagrama mostra essa criptografia no fluxo.",
+ "waf": "Segurança"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
"service": "ExpressRoute",
"severity": "Média",
- "text": "Verifique se os dois links físicos do circuito do ExpressRoute estão conectados a dois dispositivos de borda distintos em sua rede.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidade"
+ "text": "Para cenários em que o MACsec não é uma opção (por exemplo, não usando o ExpressRoute Direct), use um gateway de VPN para estabelecer túneis IPsec no emparelhamento privado do ExpressRoute.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "Segurança"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
+ "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",
+ "severity": "Alto",
+ "text": "Verifique se nenhum espaço de endereço IP sobreposto entre regiões do Azure e locais é usado.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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",
+ "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
"severity": "Média",
- "text": "Certifique-se de que a Detecção de Encaminhamento Bidirecional (BFD) esteja habilitada e configurada em dispositivos de roteamento de borda do cliente ou provedor.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Fiabilidade"
+ "text": "Use endereços IP dos intervalos de alocação de endereços para Internets privadas (RFC 1918).",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "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",
+ "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
"severity": "Alto",
- "text": "Conecte o Gateway do ExpressRoute a dois ou mais circuitos de diferentes locais de emparelhamento para maior resiliência.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Certifique-se de que o espaço de endereço IP não seja desperdiçado, não crie redes virtuais desnecessariamente grandes (por exemplo, /16).",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "Alto",
+ "text": "Não use intervalos de endereços IP sobrepostos para sites de produção e recuperação de desastres.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/dnsZones",
"checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
+ "service": "DNS",
"severity": "Média",
- "text": "Configure logs de diagnóstico e alertas para o gateway de rede virtual do ExpressRoute.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "text": "Para ambientes em que a resolução de nomes no Azure é tudo o que é necessário, use o DNS Privado do Azure para resolução com uma zona delegada para resolução de nomes (como 'azure.contoso.com').",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
"waf": "Operações"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
+ "arm-service": "Microsoft.Network/dnsZones",
"checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
+ "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
+ "service": "DNS",
"severity": "Média",
- "text": "Não use circuitos do ExpressRoute para comunicação VNet para VNet.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "Desempenho"
+ "text": "Para ambientes em que a resolução de nomes no Azure e no local é necessária e não há nenhum serviço DNS corporativo existente, como o Active Directory, use o Resolvedor Privado de DNS do Azure para rotear solicitações de DNS para o Azure ou para servidores DNS locais.",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "waf": "Segurança"
},
{
+ "arm-service": "Microsoft.Network/dnsZones",
"checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
+ "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
+ "service": "DNS",
"severity": "Baixo",
- "text": "Não envie o tráfego do Azure para locais híbridos para inspeção. Em vez disso, siga o princípio \"o tráfego no Azure permanece no Azure\" para que a comunicação entre os recursos no Azure ocorra por meio da rede de backbone da Microsoft.",
- "waf": "Desempenho"
+ "text": "Cargas de trabalho especiais que exigem e implantam seu próprio DNS (como o Red Hat OpenShift) devem usar sua solução de DNS preferida.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/dnsZones",
"checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
+ "guid": "614658d3-558f-4d77-849b-821112df27ee",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
+ "service": "DNS",
"severity": "Alto",
- "text": "Use o Firewall do Azure para controlar o tráfego de saída do Azure para a Internet, conexões de entrada não HTTP/S e filtragem de tráfego Leste/Oeste (se a organização exigir).",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Segurança"
+ "text": "Habilite o registro automático para o DNS do Azure para gerenciar automaticamente o ciclo de vida dos registros DNS para as máquinas virtuais implantadas em uma rede virtual.",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/bastionHosts",
"checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
+ "service": "Bastion",
"severity": "Média",
- "text": "Crie uma política global de Firewall do Azure para controlar a postura de segurança em todo o ambiente de rede global e atribua-a a todas as instâncias do Firewall do Azure. Permita que políticas granulares atendam aos requisitos de regiões específicas delegando políticas de firewall incrementais às equipes de segurança locais por meio do controle de acesso baseado em função do Azure.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "Use o Azure Bastion para se conectar com segurança à sua rede.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/bastionHosts",
"checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
- "severity": "Baixo",
- "text": "Configure provedores de segurança SaaS de parceiros compatíveis no Firewall Manager se a organização quiser usar essas soluções para ajudar a proteger as conexões de saída.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
+ "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
+ "service": "Bastion",
+ "severity": "Média",
+ "text": "Use o Azure Bastion em uma sub-rede /26 ou maior.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Use regras de aplicativo para filtrar o tráfego de saída no nome do host de destino para protocolos com suporte. Use regras de rede baseadas em FQDN e Firewall do Azure com proxy DNS para filtrar o tráfego de saída para a Internet em outros protocolos.",
+ "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "WAF",
+ "severity": "Média",
+ "text": "Use as políticas do Azure Front Door e do WAF para fornecer proteção global entre regiões do Azure para conexões HTTP/S de entrada para uma zona de destino.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Use o Firewall do Azure Premium para habilitar recursos de segurança adicionais.",
+ "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
+ "severity": "Baixo",
+ "text": "Ao usar o Azure Front Door e o Gateway de Aplicativo do Azure para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Azure Front Door. Bloqueie o Gateway de Aplicativo do Azure para receber tráfego somente do Azure Front Door.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
"checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
+ "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
"severity": "Alto",
- "text": "Configure o modo de Inteligência contra Ameaças do Firewall do Azure como Alerta e Negação para proteção adicional.",
+ "text": "Quando WAFs e outros proxies reversos forem necessários para conexões HTTP/S de entrada, implante-os em uma rede virtual de zona de destino e junto com os aplicativos que eles estão protegendo e expondo à Internet.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
+ "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
"severity": "Alto",
- "text": "Configure o modo IDPS do Firewall do Azure como Negar para proteção adicional.",
+ "text": "Use os planos de Rede ou Proteção de IP do Azure contra DDoS para ajudar a proteger os pontos de extremidade de endereços IP públicos nas redes virtuais.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
+ "service": "VNet",
"severity": "Alto",
- "text": "Para sub-redes em VNets não conectadas à WAN Virtual, anexe uma tabela de rotas para que o tráfego da Internet seja redirecionado para o Firewall do Azure ou uma Solução de Virtualização de Rede.",
- "waf": "Segurança"
+ "text": "Planeje como gerenciar a configuração e a estratégia de tráfego de saída da rede antes da próxima alteração significativa. Em 30 de setembro de 2025, o acesso de saída padrão para novas implantações será desativado e somente configurações de acesso explícito serão permitidas.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
- "severity": "Média",
- "text": "Adicione configurações de diagnóstico para salvar logs, usando a tabela de destino Específico do Recurso, para todas as implantações do Firewall do Azure.",
+ "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Adicione configurações de diagnóstico para salvar logs relacionados a DDoS para todos os endereços IP públicos protegidos (IP DDoS ou Proteção de Rede).",
"training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operações"
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "Importante",
- "text": "Migre das regras clássicas do Firewall do Azure (se houver) para a Política de Firewall.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Operações"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
+ "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
+ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
+ "service": "Policy",
"severity": "Alto",
- "text": "Use um prefixo /26 para suas sub-redes do Firewall do Azure.",
+ "text": "Verifique se há uma atribuição de política para negar endereços IP públicos diretamente vinculados a máquinas virtuais. Use exclusões se IPs públicos forem necessários em VMs específicas.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Organize as regras dentro da política de firewall em Grupos de Coleção de Regras e Coleções de Regras e com base em sua frequência de uso.",
+ "text": "Use o ExpressRoute como a conexão principal com o Azure. Use VPNs como fonte de conectividade de backup.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "description": "Você pode usar o prefixo AS-path e pesos de conexão para influenciar o tráfego do Azure para o local e toda a gama de atributos BGP em seus próprios roteadores para influenciar o tráfego do local para o Azure.",
+ "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Use grupos de IP ou prefixos de IP para reduzir o número de regras de tabela de IP.",
- "waf": "Desempenho"
+ "text": "Ao usar vários circuitos do ExpressRoute ou vários locais locais, use atributos BGP para otimizar o roteamento.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "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-about-virtual-network-gateways?source=recommendations#gwsku",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Não use curingas como um IP de origem para DNATS, como * ou any, você deve especificar IPs de origem para DNATs de entrada.",
+ "text": "Selecione o SKU correto para os gateways ExpressRoute/VPN com base nos requisitos de largura de banda e desempenho.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
- "severity": "Média",
- "text": "Evite o esgotamento da porta SNAT monitorando o uso da porta SNAT, avaliando as configurações do NAT Gateway e garantindo um failover contínuo. Se a contagem de portas se aproximar do limite, é um sinal de que o esgotamento do SNAT pode ser iminente.",
- "waf": "Desempenho"
+ "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
+ "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
+ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Verifique se você está usando circuitos do ExpressRoute de dados ilimitados somente se atingir a largura de banda que justifica seu custo.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "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",
+ "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Se você estiver usando o Firewall do Azure Premium, habilite a Inspeção TLS.",
- "waf": "Desempenho"
+ "text": "Aproveite o SKU local do ExpressRoute para reduzir o custo de seus circuitos, se o local de emparelhamento de circuito der suporte às regiões do Azure para o SKU Local.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "severity": "Baixo",
- "text": "Use categorias da Web para permitir ou negar o acesso de saída a tópicos específicos.",
- "waf": "Desempenho"
+ "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
+ "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
+ "service": "ExpressRoute",
+ "severity": "Média",
+ "text": "Implante um gateway do ExpressRoute com redundância de zona nas regiões do Azure com suporte.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
+ "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Como parte da inspeção TLS, planeje o recebimento de tráfego dos Gateways de Aplicativo do Azure para inspeção.",
+ "text": "Para cenários que exigem largura de banda superior a 10 Gbps ou portas dedicadas de 10/100 Gbps, use o ExpressRoute Direct.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
+ "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
+ "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Habilite a configuração de proxy DNS do Firewall do Azure.",
- "waf": "Segurança"
+ "text": "Quando a baixa latência for necessária ou a taxa de transferência do local para o Azure precisar ser maior que 10 Gbps, habilite o FastPath para ignorar o gateway do ExpressRoute do caminho de dados.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualNetworkGateways",
"checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
- "severity": "Alto",
- "text": "Integre o Firewall do Azure ao Azure Monitor e habilite o log de diagnóstico para armazenar e analisar logs de firewall.",
- "waf": "Operações"
+ "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
+ "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
+ "service": "VPN",
+ "severity": "Média",
+ "text": "Use gateways de VPN com redundância de zona para conectar branches ou locais remotos ao Azure (quando disponível).",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/virtualNetworkGateways",
"checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
- "severity": "Baixo",
- "text": "Implementar backups para suas regras de firewall",
- "waf": "Operações"
+ "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
+ "service": "VPN",
+ "severity": "Média",
+ "text": "Use dispositivos VPN redundantes locais (ativo/ativo ou ativo/passivo).",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
+ "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
+ "service": "ExpressRoute",
"severity": "Alto",
- "text": "Não interrompa a comunicação do painel de controle para serviços de PaaS do Azure injetados em redes virtuais, como com uma rota 0.0.0.0/0 ou uma regra NSG que bloqueia o tráfego do painel de controle.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Segurança"
+ "text": "Se estiver usando o ExpressRoute Direct, considere usar circuitos locais do ExpressRoute para as regiões locais do Azure para economizar custos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Custar"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
"service": "ExpressRoute",
"severity": "Média",
- "text": "Acesse os serviços de PaaS do Azure localmente por meio de pontos de extremidade privados e emparelhamento privado do ExpressRoute. Esse método evita o trânsito pela Internet pública.",
+ "text": "Quando o isolamento de tráfego ou a largura de banda dedicada for necessária, como para separar ambientes de produção e não produção, use circuitos diferentes do ExpressRoute. Ele ajudará você a garantir domínios de roteamento isolados e aliviar os riscos de vizinhos barulhentos.",
"training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
- "severity": "Alto",
- "text": "Não habilite pontos de extremidade de serviço de rede virtual por padrão em todas as sub-redes.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Segurança"
+ "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
+ "service": "ExpressRoute",
+ "severity": "Média",
+ "text": "Monitore a disponibilidade e a utilização do ExpressRoute usando o Express Route Insights interno.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
+ "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
+ "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Filtre o tráfego de saída para os serviços de PaaS do Azure usando FQDNs em vez de endereços IP no Firewall do Azure ou em uma NVA para evitar a exfiltração de dados. Se estiver usando o Link Privado, você poderá bloquear todos os FQDNs, caso contrário, permita apenas os serviços de PaaS necessários.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "Segurança"
+ "text": "Use o Monitor da Conexão para monitoramento de conectividade em toda a rede, especialmente entre o local e o Azure.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Operações"
},
{
"arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "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#need-for-redundant-connectivity-solution",
"service": "ExpressRoute",
- "severity": "Alto",
- "text": "Utilize pelo menos um prefixo /27 para as sub-redes do Gateway.",
- "waf": "Segurança"
+ "severity": "Média",
+ "text": "Use circuitos do ExpressRoute de diferentes locais de emparelhamento para redundância.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
- "severity": "Alto",
- "text": "Não confie nas regras padrão de entrada do NSG usando a marca de serviço VirtualNetwork para limitar a conectividade.",
- "waf": "Segurança"
+ "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
+ "service": "ExpressRoute",
+ "severity": "Média",
+ "text": "Use a VPN site a site como failover do ExpressRoute, se estiver usando apenas um único circuito do ExpressRoute.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
- "severity": "Média",
- "text": "Use NSGs para ajudar a proteger o tráfego entre sub-redes, bem como o tráfego leste/oeste na plataforma (tráfego entre zonas de destino).",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Segurança"
+ "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))",
+ "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Se você estiver usando uma tabela de rotas no GatewaySubnet, certifique-se de que as rotas de gateway sejam propagadas.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
- "severity": "Média",
- "text": "Use NSGs e grupos de segurança de aplicativos para microssegmentar o tráfego dentro da zona de destino e evite usar uma NVA central para filtrar fluxos de tráfego.",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "waf": "Segurança"
+ "guid": "d581a947-69a2-4783-942e-9df3664324c8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Se estiver usando o ExpressRoute, o roteamento local deverá ser dinâmico: no caso de uma falha de conexão, ele deverá convergir para a conexão restante do circuito. A carga deve ser compartilhada entre ambas as conexões, idealmente como ativa/ativa, embora ativa/passiva também seja suportada.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
+ "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Habilite os Logs de Fluxo de VNet e alimente-os na Análise de Tráfego para obter insights sobre fluxos de tráfego internos e externos.",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "Segurança"
+ "text": "Verifique se os dois links físicos do circuito do ExpressRoute estão conectados a dois dispositivos de borda distintos em sua rede.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
+ "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Não implemente mais de 900 regras de NSG por NSG, devido ao limite de 1000 regras.",
- "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "text": "Certifique-se de que a Detecção de Encaminhamento Bidirecional (BFD) esteja habilitada e configurada em dispositivos de roteamento de borda do cliente ou provedor.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
- "severity": "Média",
- "text": "Use a WAN Virtual se o cenário estiver explicitamente descrito na lista de designs de roteamento da WAN Virtual.",
- "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
- "waf": "Operações"
+ "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Conecte o Gateway do ExpressRoute a dois ou mais circuitos de diferentes locais de emparelhamento para maior resiliência.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
+ "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Use um hub de WAN Virtual por região do Azure para conectar várias zonas de destino entre regiões do Azure por meio de uma WAN Virtual do Azure global comum.",
- "waf": "Desempenho"
+ "text": "Configure logs de diagnóstico e alertas para o gateway de rede virtual do ExpressRoute.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
+ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Para proteção e filtragem de tráfego de saída da Internet, implante o Firewall do Azure em hubs seguros.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Segurança"
+ "text": "Não use circuitos do ExpressRoute para comunicação VNet para VNet.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
- "severity": "Média",
- "text": "Verifique se a arquitetura de rede da WAN virtual está alinhada a um cenário de arquitetura identificado.",
- "waf": "Fiabilidade"
+ "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "service": "N/A",
+ "severity": "Baixo",
+ "text": "Não envie o tráfego do Azure para locais híbridos para inspeção. Em vez disso, siga o princípio \"o tráfego no Azure permanece no Azure\" para que a comunicação entre os recursos no Azure ocorra por meio da rede de backbone da Microsoft.",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
- "severity": "Média",
- "text": "Use o Azure Monitor Insights para WAN Virtual para monitorar a topologia de ponta a ponta da WAN Virtual, o status e as principais métricas.",
- "waf": "Operações"
+ "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
+ "link": "https://learn.microsoft.com/azure/firewall/overview",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Use o Firewall do Azure para controlar o tráfego de saída do Azure para a Internet, conexões de entrada não HTTP/S e filtragem de tráfego Leste/Oeste (se a organização exigir).",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
+ "service": "Firewall",
"severity": "Média",
- "text": "Não desabilite o tráfego branch a branch na WAN Virtual, a menos que esses fluxos devam ser bloqueados explicitamente.",
- "waf": "Fiabilidade"
+ "text": "Crie uma política global de Firewall do Azure para controlar a postura de segurança em todo o ambiente de rede global e atribua-a a todas as instâncias do Firewall do Azure. Permita que políticas granulares atendam aos requisitos de regiões específicas delegando políticas de firewall incrementais às equipes de segurança locais por meio do controle de acesso baseado em função do Azure.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
- "severity": "Média",
- "text": "Use AS-Path como preferência de roteamento de hub, pois é mais flexível que ExpressRoute ou VPN.",
- "waf": "Fiabilidade"
+ "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
+ "service": "Firewall",
+ "severity": "Baixo",
+ "text": "Configure provedores de segurança SaaS de parceiros compatíveis no Firewall Manager se a organização quiser usar essas soluções para ajudar a proteger as conexões de saída.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
- "severity": "Média",
- "text": "Configure a propagação baseada em rótulos na WAN Virtual, caso contrário, a conectividade entre hubs virtuais será prejudicada.",
- "waf": "Fiabilidade"
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
+ "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
+ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Use regras de aplicativo para filtrar o tráfego de saída no nome do host de destino para protocolos com suporte. Use regras de rede baseadas em FQDN e Firewall do Azure com proxy DNS para filtrar o tráfego de saída para a Internet em outros protocolos.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/virtualWans",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
+ "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Atribua pelo menos um prefixo /23 a hubs virtuais para garantir que haja espaço IP suficiente disponível.",
- "waf": "Fiabilidade"
+ "text": "Use o Firewall do Azure Premium para habilitar recursos de segurança adicionais.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "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#idps-signature-rules",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Aproveite o Azure Policy estrategicamente, defina controles para seu ambiente, usando Iniciativas de Política para agrupar políticas relacionadas.",
+ "text": "Configure o modo de Inteligência contra Ameaças do Firewall do Azure como Alerta e Negação para proteção adicional.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Média",
- "text": "Mapeie os requisitos regulatórios e de conformidade para definições do Azure Policy e atribuições de função do Azure.",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
+ "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Configure o modo IDPS do Firewall do Azure como Negar para proteção adicional.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Média",
- "text": "Estabeleça definições do Azure Policy no grupo de gerenciamento raiz intermediário para que elas possam ser atribuídas em escopos herdados.",
+ "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",
+ "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Para sub-redes em VNets não conectadas à WAN Virtual, anexe uma tabela de rotas para que o tráfego da Internet seja redirecionado para o Firewall do Azure ou uma Solução de Virtualização de Rede.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "Alto",
- "text": "Gerencie atribuições de política no nível apropriado mais alto com exclusões nos níveis inferiores, se necessário.",
- "waf": "Segurança"
+ "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
+ "service": "Firewall",
+ "severity": "Média",
+ "text": "Adicione configurações de diagnóstico para salvar logs, usando a tabela de destino Específico do Recurso, para todas as implantações do Firewall do Azure.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "Baixo",
- "text": "Use o Azure Policy para controlar quais serviços os usuários podem provisionar no nível da assinatura/grupo de gerenciamento.",
- "waf": "Segurança"
+ "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
+ "service": "Firewall",
+ "severity": "Importante",
+ "text": "Migre das regras clássicas do Firewall do Azure (se houver) para a Política de Firewall.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "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",
+ "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Use políticas internas sempre que possível para minimizar a sobrecarga operacional.",
+ "text": "Use um prefixo /26 para suas sub-redes do Firewall do Azure.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "description": "Atribuir a função Colaborador de Política de Recursos a escopos específicos permite delegar o gerenciamento de políticas a equipes relevantes. Por exemplo, uma equipe central de TI pode supervisionar as políticas no nível do grupo de gerenciamento, enquanto as equipes de aplicativos lidam com as políticas de suas assinaturas, permitindo a governança distribuída com adesão aos padrões organizacionais.",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "service": "Firewall",
"severity": "Média",
- "text": "Atribua a função interna de Colaborador de Política de Recursos em um escopo específico para habilitar a governança no nível do aplicativo.",
- "waf": "Segurança"
+ "text": "Organize as regras dentro da política de firewall em Grupos de Coleção de Regras e Coleções de Regras e com base em sua frequência de uso.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
+ "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
+ "service": "Firewall",
"severity": "Média",
- "text": "Limite o número de atribuições do Azure Policy feitas no escopo do grupo de gerenciamento raiz para evitar o gerenciamento por meio de exclusões em escopos herdados.",
- "waf": "Segurança"
+ "text": "Use grupos de IP ou prefixos de IP para reduzir o número de regras de tabela de IP.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
+ "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "service": "Firewall",
"severity": "Média",
- "text": "Se houver requisitos de soberania de dados, as Políticas do Azure deverão ser implantadas para aplicá-los.",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
- "waf": "Segurança"
+ "text": "Não use curingas como um IP de origem para DNATS, como * ou any, você deve especificar IPs de origem para DNATs de entrada.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "service": "Firewall",
"severity": "Média",
- "text": "Para a Zona de Destino Soberana, implante a linha de base da política de soberania e atribua no nível correto do grupo de gerenciamento.",
- "waf": "Segurança"
+ "text": "Evite o esgotamento da porta SNAT monitorando o uso da porta SNAT, avaliando as configurações do NAT Gateway e garantindo um failover contínuo. Se a contagem de portas se aproximar do limite, é um sinal de que o esgotamento do SNAT pode ser iminente.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
- "severity": "Média",
- "text": "Para Zona de Aterrissagem Soberana, documente os objetivos de Controle Soberano para mapeamento de políticas.",
- "waf": "Segurança"
+ "guid": "346840b8-1064-496e-8396-4b1340172d52",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
+ "service": "Firewall",
+ "severity": "Alto",
+ "text": "Se você estiver usando o Firewall do Azure Premium, habilite a Inspeção TLS.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
+ "service": "Firewall",
+ "severity": "Baixo",
+ "text": "Use categorias da Web para permitir ou negar o acesso de saída a tópicos específicos.",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "service": "Firewall",
"severity": "Média",
- "text": "Para a Zona de Aterrissagem Soberana, certifique-se de que o processo esteja em vigor para o gerenciamento de 'Objetivos de Controle Soberano para mapeamento de políticas'.",
- "waf": "Segurança"
+ "text": "Como parte da inspeção TLS, planeje o recebimento de tráfego dos Gateways de Aplicativo do Azure para inspeção.",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "service": "Firewall",
"severity": "Média",
- "text": "Use um workspace de logs de monitor único para gerenciar plataformas centralmente, exceto quando o RBAC (controle de acesso baseado em função) do Azure, os requisitos de soberania de dados ou as políticas de retenção de dados exigirem workspaces separados.",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "Operações"
+ "text": "Habilite a configuração de proxy DNS do Firewall do Azure.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
+ "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "service": "Firewall",
"severity": "Alto",
- "text": "Exporte logs para o Armazenamento do Azure se os requisitos de retenção de log excederem doze anos. Use o armazenamento imutável com uma política de gravação única e leitura múltipla para tornar os dados não apagáveis e não modificáveis por um intervalo especificado pelo usuário.",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "text": "Integre o Firewall do Azure ao Azure Monitor e habilite o log de diagnóstico para armazenar e analisar logs de firewall.",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
- "severity": "Média",
- "text": "Monitore o descompasso de configuração da VM (máquina virtual) no nível do sistema operacional usando o Azure Policy. Habilitar os recursos de auditoria da Configuração de Computador do Gerenciamento Automatizado do Azure por meio da política ajuda as cargas de trabalho da equipe de aplicativos a consumir imediatamente os recursos de recursos com pouco esforço.",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "service": "Firewall",
+ "severity": "Baixo",
+ "text": "Implementar backups para suas regras de firewall",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
- "severity": "Média",
- "text": "Use o Azure Update Manager como um mecanismo de aplicação de patch para VMs Windows e Linux no Azure.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operações"
+ "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Não interrompa a comunicação do painel de controle para serviços de PaaS do Azure injetados em redes virtuais, como com uma rota 0.0.0.0/0 ou uma regra NSG que bloqueia o tráfego do painel de controle.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
+ "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "service": "ExpressRoute",
"severity": "Média",
- "text": "Use o Gerenciador de Atualizações do Azure como um mecanismo de aplicação de patch para VMs do Windows e do Linux fora do Azure usando o Azure Arc.",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "waf": "Operações"
+ "text": "Acesse os serviços de PaaS do Azure localmente por meio de pontos de extremidade privados e emparelhamento privado do ExpressRoute. Esse método evita o trânsito pela Internet pública.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/networkWatchers",
+ "arm-service": "Microsoft.Network/virtualNetworks",
"checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
- "severity": "Média",
- "text": "Use o Observador de Rede para monitorar proativamente os fluxos de tráfego.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Operações"
+ "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/virtual-network/virtual-network-service-endpoints-overview",
+ "service": "VNet",
+ "severity": "Alto",
+ "text": "Não habilite pontos de extremidade de serviço de rede virtual por padrão em todas as sub-redes.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Network/azureFirewalls",
"checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
+ "link": "azure/private-link/inspect-traffic-with-azure-firewall",
+ "service": "Firewall",
"severity": "Média",
- "text": "Use os Logs do Azure Monitor para obter insights e relatórios.",
- "waf": "Operações"
+ "text": "Filtre o tráfego de saída para os serviços de PaaS do Azure usando FQDNs em vez de endereços IP no Firewall do Azure ou em uma NVA para evitar a exfiltração de dados. Se estiver usando o Link Privado, você poderá bloquear todos os FQDNs, caso contrário, permita apenas os serviços de PaaS necessários.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "microsoft.network/expressRouteCircuits",
"checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "Média",
- "text": "Use alertas do Azure Monitor para a geração de alertas operacionais.",
- "waf": "Operações"
+ "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",
+ "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "service": "ExpressRoute",
+ "severity": "Alto",
+ "text": "Utilize pelo menos um prefixo /27 para as sub-redes do Gateway.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
- "severity": "Média",
- "text": "Ao usar o Acompanhamento de Alterações e Inventário por meio de Contas de Automação do Azure, verifique se você selecionou regiões com suporte para vincular seu workspace do Log Analytics e contas de automação.",
- "waf": "Operações"
+ "graph": "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)",
+ "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
+ "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
+ "service": "NSG",
+ "severity": "Alto",
+ "text": "Não confie nas regras padrão de entrada do NSG usando a marca de serviço VirtualNetwork para limitar a conectividade.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "Baixo",
- "text": "Ao usar o Backup do Azure, use os tipos de backup corretos (GRS, ZRS E LRS) para o backup, pois a configuração padrão é GRS.",
- "waf": "Fiabilidade"
+ "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "service": "NSG",
+ "severity": "Média",
+ "text": "Use NSGs para ajudar a proteger o tráfego entre sub-redes, bem como o tráfego leste/oeste na plataforma (tráfego entre zonas de destino).",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
+ "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "NSG",
"severity": "Média",
- "text": "Use as políticas de convidado do Azure para implantar automaticamente as configurações de software por meio de extensões de VM e impor uma configuração de VM de linha de base compatível.",
+ "text": "Use NSGs e grupos de segurança de aplicativos para microssegmentar o tráfego dentro da zona de destino e evite usar uma NVA central para filtrar fluxos de tráfego.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "description": "Use os recursos de configuração de convidado do Azure Policy para auditar e corrigir as configurações do computador (por exemplo, sistema operacional, aplicativo, ambiente) para garantir que os recursos estejam alinhados com as configurações esperadas e que o Gerenciamento de Atualizações possa impor o gerenciamento de patches para 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",
+ "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
+ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
+ "service": "NSG",
"severity": "Média",
- "text": "Monitore o descompasso de configuração de segurança da VM por meio do Azure Policy.",
+ "text": "Habilite os Logs de Fluxo de VNet e alimente-os na Análise de Tráfego para obter insights sobre fluxos de tráfego internos e externos.",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
"checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
+ "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
+ "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "NSG",
"severity": "Média",
- "text": "Use o Azure Site Recovery para cenários de recuperação de desastre de Máquinas Virtuais do Azure para o Azure. Isso permite replicar cargas de trabalho entre regiões.",
- "waf": "Operações"
+ "text": "Não implemente mais de 900 regras de NSG por NSG, devido ao limite de 1000 regras.",
+ "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
+ "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
+ "service": "VWAN",
"severity": "Média",
- "text": "Use recursos de backup nativos do Azure ou uma solução de backup de terceiros compatível com o Azure.",
+ "text": "Use a WAN Virtual se o cenário estiver explicitamente descrito na lista de designs de roteamento da WAN Virtual.",
+ "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
"waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "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",
- "severity": "Alto",
- "text": "Adicione configurações de diagnóstico para salvar logs do WAF de serviços de entrega de aplicativos, como o Azure Front Door e o Gateway de Aplicativo do Azure. Revise regularmente os logs para verificar se há ataques e detecções de falsos positivos.",
- "waf": "Operações"
+ "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "service": "VWAN",
+ "severity": "Média",
+ "text": "Use um hub de WAN Virtual por região do Azure para conectar várias zonas de destino entre regiões do Azure por meio de uma WAN Virtual do Azure global comum.",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
+ "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/howto-firewall",
+ "service": "VWAN",
"severity": "Média",
- "text": "Envie logs do WAF de seus serviços de entrega de aplicativos, como o Azure Front Door e o Gateway de Aplicativo do Azure, para o Microsoft Sentinel. Detecte ataques e integre a telemetria do WAF ao seu ambiente geral do Azure.",
- "waf": "Operações"
+ "text": "Para proteção e filtragem de tráfego de saída da Internet, implante o Firewall do Azure em hubs seguros.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
- "severity": "Alto",
- "text": "Use o Azure Key Vault para armazenar seus segredos e credenciais.",
- "waf": "Segurança"
+ "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "service": "VWAN",
+ "severity": "Média",
+ "text": "Verifique se a arquitetura de rede da WAN virtual está alinhada a um cenário de arquitetura identificado.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
+ "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "service": "VWAN",
"severity": "Média",
- "text": "Use diferentes Azure Key Vaults para diferentes aplicativos e regiões para evitar limites de escala de transação e restringir o acesso a segredos.",
- "waf": "Segurança"
+ "text": "Use o Azure Monitor Insights para WAN Virtual para monitorar a topologia de ponta a ponta da WAN Virtual, o status e as principais métricas.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "service": "VWAN",
"severity": "Média",
- "text": "Provisione o Azure Key Vault com as políticas de exclusão reversível e limpeza habilitadas para permitir a proteção de retenção para objetos excluídos.",
- "waf": "Segurança"
+ "text": "Não desabilite o tráfego branch a branch na WAN Virtual, a menos que esses fluxos devam ser bloqueados explicitamente.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "service": "VWAN",
"severity": "Média",
- "text": "Siga um modelo de privilégios mínimos limitando a autorização para excluir permanentemente chaves, segredos e certificados a funções personalizadas especializadas de ID do Microsoft Entra.",
- "waf": "Segurança"
+ "text": "Use AS-Path como preferência de roteamento de hub, pois é mais flexível que ExpressRoute ou VPN.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "service": "VWAN",
"severity": "Média",
- "text": "Automatize o processo de gerenciamento e renovação de certificados com autoridades de certificação públicas para facilitar a administração.",
- "waf": "Segurança"
+ "text": "Configure a propagação baseada em rótulos na WAN Virtual, caso contrário, a conectividade entre hubs virtuais será prejudicada.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/virtualWans",
"checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Média",
- "text": "Estabeleça um processo automatizado para rotação de chaves e certificados.",
- "waf": "Segurança"
+ "guid": "9c75dfef-573c-461c-a698-68598595581a",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "service": "VWAN",
+ "severity": "Alto",
+ "text": "Atribua pelo menos um prefixo /23 a hubs virtuais para garantir que haja espaço IP suficiente disponível.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Média",
- "text": "Habilite o firewall e o ponto de extremidade de serviço de rede virtual ou o ponto de extremidade privado no cofre para controlar o acesso ao cofre de chaves.",
+ "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Alto",
+ "text": "Aproveite o Azure Policy estrategicamente, defina controles para seu ambiente, usando Iniciativas de Política para agrupar políticas relacionadas.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
+ "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Média",
- "text": "Use o workspace do Log Analytics do Azure Monitor central da plataforma para auditar o uso de chave, certificado e segredo em cada instância do Key Vault.",
+ "text": "Mapeie os requisitos regulatórios e de conformidade para definições do Azure Policy e atribuições de função do Azure.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "Média",
- "text": "Delegue a instanciação e o acesso privilegiado do Key Vault e use o Azure Policy para impor uma configuração consistente e compatível.",
+ "text": "Estabeleça definições do Azure Policy no grupo de gerenciamento raiz intermediário para que elas possam ser atribuídas em escopos herdados.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Média",
- "text": "Use um Azure Key Vault por aplicativo por ambiente por região.",
+ "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Alto",
+ "text": "Gerencie atribuições de política no nível apropriado mais alto com exclusões nos níveis inferiores, se necessário.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "Média",
- "text": "Se você quiser trazer suas próprias chaves, isso pode não ser compatível com todos os serviços considerados. Implemente mitigação relevante para que as inconsistências não prejudiquem os resultados desejados. Escolha pares de regiões apropriados e regiões de recuperação de desastre que minimizem a latência.",
+ "guid": "43334f24-9116-4341-a2ba-527526944008",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "service": "Policy",
+ "severity": "Baixo",
+ "text": "Use o Azure Policy para controlar quais serviços os usuários podem provisionar no nível da assinatura/grupo de gerenciamento.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
- "severity": "Média",
- "text": "Para a Zona de Destino Soberana, use o HSM gerenciado do Azure Key Vault para armazenar seus segredos e credenciais.",
+ "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Alto",
+ "text": "Use políticas internas sempre que possível para minimizar a sobrecarga operacional.",
"waf": "Segurança"
},
{
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "description": "Atribuir a função Colaborador de Política de Recursos a escopos específicos permite delegar o gerenciamento de políticas a equipes relevantes. Por exemplo, uma equipe central de TI pode supervisionar as políticas no nível do grupo de gerenciamento, enquanto as equipes de aplicativos lidam com as políticas de suas assinaturas, permitindo a governança distribuída com adesão aos padrões organizacionais.",
+ "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "service": "Policy",
"severity": "Média",
- "text": "Use os recursos de relatório de ID do Microsoft Entra para gerar relatórios de auditoria de controle de acesso.",
+ "text": "Atribua a função interna de Colaborador de Política de Recursos em um escopo específico para habilitar a governança no nível do aplicativo.",
"waf": "Segurança"
},
{
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
- "severity": "Alto",
- "text": "Habilite o Gerenciamento de Postura de Segurança de Nuvem do Defender para todas as assinaturas.",
+ "guid": "19048384-5c98-46cb-8913-156a12476e49",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "Média",
+ "text": "Limite o número de atribuições do Azure Policy feitas no escopo do grupo de gerenciamento raiz para evitar o gerenciamento por meio de exclusões em escopos herdados.",
"waf": "Segurança"
},
{
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
- "severity": "Alto",
- "text": "Habilite um Plano de Proteção de Carga de Trabalho de Nuvem do Defender para Servidores em todas as assinaturas.",
+ "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
+ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
+ "service": "Policy",
+ "severity": "Média",
+ "text": "Se houver requisitos de soberania de dados, as Políticas do Azure deverão ser implantadas para aplicá-los.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
"waf": "Segurança"
},
{
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
- "severity": "Alto",
- "text": "Habilite os Planos de Proteção de Carga de Trabalho de Nuvem do Defender para Recursos do Azure em todas as assinaturas.",
+ "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
+ "service": "Policy",
+ "severity": "Média",
+ "text": "Para a Zona de Destino Soberana, implante a linha de base da política de soberania e atribua no nível correto do grupo de gerenciamento.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "severity": "Alto",
- "text": "Habilite o Endpoint Protection em servidores IaaS.",
+ "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
+ "service": "Policy",
+ "severity": "Média",
+ "text": "Para Zona de Aterrissagem Soberana, documente os objetivos de Controle Soberano para mapeamento de políticas.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
"checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
+ "service": "Policy",
"severity": "Média",
- "text": "Monitore o descompasso de aplicação de patch do sistema operacional base por meio dos Logs do Azure Monitor e do Defender para Nuvem.",
+ "text": "Para a Zona de Aterrissagem Soberana, certifique-se de que o processo esteja em vigor para o gerenciamento de 'Objetivos de Controle Soberano para mapeamento de políticas'.",
"waf": "Segurança"
},
{
"arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
"link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
"service": "Monitor",
"severity": "Média",
- "text": "Conecte as configurações de recursos padrão a um workspace centralizado do Log Analytics do Azure Monitor.",
- "waf": "Segurança"
+ "text": "Use um workspace de logs de monitor único para gerenciar plataformas centralmente, exceto quando o RBAC (controle de acesso baseado em função) do Azure, os requisitos de soberania de dados ou as políticas de retenção de dados exigirem workspaces separados.",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "waf": "Operações"
},
{
+ "arm-service": "Microsoft.Insights/components",
"checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
- "severity": "Média",
- "text": "Para Zona de Destino Soberana, habilite os logs de transparência no locatário da ID do Entra.",
- "waf": "Segurança"
+ "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Monitor",
+ "severity": "Alto",
+ "text": "Exporte logs para o Armazenamento do Azure se os requisitos de retenção de log excederem doze anos. Use o armazenamento imutável com uma política de gravação única e leitura múltipla para tornar os dados não apagáveis e não modificáveis por um intervalo especificado pelo usuário.",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "Operações"
},
{
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "service": "VM",
"severity": "Média",
- "text": "Para Zona de Destino Soberana, habilite o Sistema de Proteção de Dados do cliente no locatário da ID do Entra.",
- "waf": "Segurança"
+ "text": "Monitore o descompasso de configuração da VM (máquina virtual) no nível do sistema operacional usando o Azure Policy. Habilitar os recursos de auditoria da Configuração de Computador do Gerenciamento Automatizado do Azure por meio da política ajuda as cargas de trabalho da equipe de aplicativos a consumir imediatamente os recursos de recursos com pouco esforço.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
- "severity": "Alto",
- "text": "Habilite a transferência segura para contas de armazenamento.",
- "waf": "Segurança"
+ "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",
+ "service": "VM",
+ "severity": "Média",
+ "text": "Use o Azure Update Manager como um mecanismo de aplicação de patch para VMs Windows e Linux no Azure.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
+ "arm-service": "Microsoft.Compute/virtualMachines",
"checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
- "severity": "Alto",
- "text": "Habilite a exclusão reversível do contêiner para a conta de armazenamento para recuperar um contêiner excluído e seu conteúdo.",
- "waf": "Segurança"
+ "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
+ "service": "VM",
+ "severity": "Média",
+ "text": "Use o Gerenciador de Atualizações do Azure como um mecanismo de aplicação de patch para VMs do Windows e do Linux fora do Azure usando o Azure Arc.",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
+ "arm-service": "microsoft.network/networkWatchers",
"checklist": "Azure Landing Zone Review",
- "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",
- "severity": "Alto",
- "text": "Use segredos do Key Vault para evitar codificar informações confidenciais, como credenciais (máquinas virtuais, senhas de usuário), certificados ou chaves.",
+ "guid": "90483845-c986-4cb2-a131-56a12476e49f",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Network Watcher",
+ "severity": "Média",
+ "text": "Use o Observador de Rede para monitorar proativamente os fluxos de tráfego.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário para cargas de trabalho do AKS Windows, os contêineres HostProcess podem ser usados",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Usar o KEDA se estiver executando cargas de trabalho orientadas a eventos",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Monitor",
+ "severity": "Média",
+ "text": "Use os Logs do Azure Monitor para obter insights e relatórios.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Use o Dapr para facilitar o desenvolvimento de microsserviços",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
+ "service": "Monitor",
+ "severity": "Média",
+ "text": "Use alertas do Azure Monitor para a geração de alertas operacionais.",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
- "service": "AKS",
- "severity": "Alto",
- "text": "Use a oferta AKS apoiada por SLA",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "Monitor",
+ "severity": "Média",
+ "text": "Ao usar o Acompanhamento de Alterações e Inventário por meio de Contas de Automação do Azure, verifique se você selecionou regiões com suporte para vincular seu workspace do Log Analytics e contas de automação.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Backup",
"severity": "Baixo",
- "text": "Usar orçamentos de interrupção em seu pod e definições de implantação",
+ "text": "Ao usar o Backup do Azure, use os tipos de backup corretos (GRS, ZRS E LRS) para o backup, pois a configuração padrão é GRS.",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
- "severity": "Alto",
- "text": "Se estiver usando um registro privado, configure a replicação de região para armazenar imagens em várias regiões",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "VM",
+ "severity": "Média",
+ "text": "Use as políticas de convidado do Azure para implantar automaticamente as configurações de software por meio de extensões de VM e impor uma configuração de VM de linha de base compatível.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Use um aplicativo externo, como kubecost, para alocar custos para diferentes usuários",
- "waf": "Custar"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "description": "Use os recursos de configuração de convidado do Azure Policy para auditar e corrigir as configurações do computador (por exemplo, sistema operacional, aplicativo, ambiente) para garantir que os recursos estejam alinhados com as configurações esperadas e que o Gerenciamento de Atualizações possa impor o gerenciamento de patches para 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",
+ "severity": "Média",
+ "text": "Monitore o descompasso de configuração de segurança da VM por meio do Azure Policy.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Usar o modo de redução para excluir/desalocar nós",
- "waf": "Custar"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
+ "severity": "Média",
+ "text": "Use o Azure Site Recovery para cenários de recuperação de desastre de Máquinas Virtuais do Azure para o Azure. Isso permite replicar cargas de trabalho entre regiões.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
- "service": "AKS",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "Backup",
"severity": "Média",
- "text": "Quando necessário, use a GPU de partioning de várias instâncias em clusters AKS",
- "waf": "Custar"
+ "text": "Use recursos de backup nativos do Azure ou uma solução de backup de terceiros compatível com o Azure.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se estiver executando um cluster de desenvolvimento/teste, use NodePool Start/Stop",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "Alto",
+ "text": "Adicione configurações de diagnóstico para salvar logs do WAF de serviços de entrega de aplicativos, como o Azure Front Door e o Gateway de Aplicativo do Azure. Revise regularmente os logs para verificar se há ataques e detecções de falsos positivos.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
- "service": "AKS",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "WAF",
"severity": "Média",
- "text": "Usar a Política do Azure para Kubernetes para garantir a conformidade do cluster",
+ "text": "Envie logs do WAF de seus serviços de entrega de aplicativos, como o Azure Front Door e o Gateway de Aplicativo do Azure, para o Microsoft Sentinel. Detecte ataques e integre a telemetria do WAF ao seu ambiente geral do Azure.",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5017f154-e3ab-4369-9829-e7e316183687",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "Key Vault",
+ "severity": "Alto",
+ "text": "Use o Azure Key Vault para armazenar seus segredos e credenciais.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
+ "guid": "a0477a20-9945-4bda-9333-4f2491163418",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Separe os aplicativos do plano de controle com pools de nós de usuário/sistema",
+ "text": "Use diferentes Azure Key Vaults para diferentes aplicativos e regiões para evitar limites de escala de transação e restringir o acesso a segredos.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Adicione mancha ao seu nodepool do sistema para torná-lo dedicado",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Média",
+ "text": "Provisione o Azure Key Vault com as políticas de exclusão reversível e limpeza habilitadas para permitir a proteção de retenção para objetos excluídos.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Usar um registro privado para suas imagens, como o ACR",
+ "text": "Siga um modelo de privilégios mínimos limitando a autorização para excluir permanentemente chaves, segredos e certificados a funções personalizadas especializadas de ID do Microsoft Entra.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Analise suas imagens em busca de vulnerabilidades",
+ "text": "Automatize o processo de gerenciamento e renovação de certificados com autoridades de certificação públicas para facilitar a administração.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
- "severity": "Alto",
- "text": "Definir requisitos de separação de aplicativos (namespace/nodepool/cluster)",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "913156a1-2476-4e49-b541-acdce979377b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Média",
+ "text": "Estabeleça um processo automatizado para rotação de chaves e certificados.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Armazene seus segredos no Cofre de Chaves do Azure com o driver do CSI Secrets Store",
+ "text": "Habilite o firewall e o ponto de extremidade de serviço de rede virtual ou o ponto de extremidade privado no cofre para controlar o acesso ao cofre de chaves.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
- "severity": "Alto",
- "text": "Se estiver usando entidades de serviço para o cluster, atualize as credenciais periodicamente (como trimestralmente)",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
+ "service": "Key Vault",
+ "severity": "Média",
+ "text": "Use o workspace do Log Analytics do Azure Monitor central da plataforma para auditar o uso de chave, certificado e segredo em cada instância do Key Vault.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Se necessário, adicione criptografia etcd do Serviço de Gerenciamento de Chaves",
+ "text": "Delegue a instanciação e o acesso privilegiado do Key Vault e use o Azure Policy para impor uma configuração consistente e compatível.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, considere o uso de computação confidencial para AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "Média",
+ "text": "Use um Azure Key Vault por aplicativo por ambiente por região.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "Média",
- "text": "Considere o uso do Defender for Containers",
+ "text": "Se você quiser trazer suas próprias chaves, isso pode não ser compatível com todos os serviços considerados. Implemente mitigação relevante para que as inconsistências não prejudiquem os resultados desejados. Escolha pares de regiões apropriados e regiões de recuperação de desastre que minimizem a latência.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
- "severity": "Alto",
- "text": "Usar identidades gerenciadas em vez de entidades de serviço",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
+ "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
+ "service": "Key Vault",
+ "severity": "Média",
+ "text": "Para a Zona de Destino Soberana, use o HSM gerenciado do Azure Key Vault para armazenar seus segredos e credenciais.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
+ "service": "Entra",
"severity": "Média",
- "text": "Integrar autenticação com AAD (usando a integração gerenciada)",
+ "text": "Use os recursos de relatório de ID do Microsoft Entra para gerar relatórios de auditoria de controle de acesso.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
- "severity": "Média",
- "text": "Limitar o acesso ao admin kubeconfig (get-credentials --admin)",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "09945bda-4333-44f2-9911-634182ba5275",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
+ "service": "Defender",
+ "severity": "Alto",
+ "text": "Habilite o Gerenciamento de Postura de Segurança de Nuvem do Defender para todas as assinaturas.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
- "severity": "Média",
- "text": "Integrar autorização com AAD RBAC",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
+ "service": "Defender",
+ "severity": "Alto",
+ "text": "Habilite um Plano de Proteção de Carga de Trabalho de Nuvem do Defender para Servidores em todas as assinaturas.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
+ "service": "Defender",
"severity": "Alto",
- "text": "Usar namespaces para restringir o privilégio RBAC no Kubernetes",
+ "text": "Habilite os Planos de Proteção de Carga de Trabalho de Nuvem do Defender para Recursos do Azure em todas as assinaturas.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
- "severity": "Média",
- "text": "Para o Gerenciamento de Acesso à Identidade de Pod, use a Identidade de Carga de Trabalho do Azure AD (visualização)",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
+ "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
+ "service": "VM",
+ "severity": "Alto",
+ "text": "Habilite o Endpoint Protection em servidores IaaS.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
+ "link": "https://learn.microsoft.com/azure/security-center/",
+ "service": "VM",
"severity": "Média",
- "text": "Para logins não interativos do AKS, use kubelogin (visualização)",
+ "text": "Monitore o descompasso de aplicação de patch do sistema operacional base por meio dos Logs do Azure Monitor e do Defender para Nuvem.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "Média",
- "text": "Desativar contas locais do AKS",
+ "text": "Conecte as configurações de recursos padrão a um workspace centralizado do Log Analytics do Azure Monitor.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Configurar, se necessário, o acesso ao cluster just-in-time",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
+ "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
+ "service": "Entra",
+ "severity": "Média",
+ "text": "Para Zona de Destino Soberana, habilite os logs de transparência no locatário da ID do Entra.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Configurar, se necessário, o acesso condicional do AAD para AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "service": "Entra",
+ "severity": "Média",
+ "text": "Para Zona de Destino Soberana, habilite o Sistema de Proteção de Dados do cliente no locatário da ID do Entra.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário para cargas de trabalho do Windows AKS, configure o gMSA ",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
+ "severity": "Alto",
+ "text": "Habilite a transferência segura para contas de armazenamento.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
- "severity": "Média",
- "text": "Para um controle mais fino, considere usar uma Identidade Kubelet gerenciada",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
+ "service": "Storage",
+ "severity": "Alto",
+ "text": "Habilite a exclusão reversível do contêiner para a conta de armazenamento para recuperar um contêiner excluído e seu conteúdo.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
- "severity": "Média",
- "text": "Se estiver usando AGIC, não compartilhe um AppGW entre clusters",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "severity": "Alto",
+ "text": "Use segredos do Key Vault para evitar codificar informações confidenciais, como credenciais (máquinas virtuais, senhas de usuário), certificados ou chaves.",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"severity": "Alto",
- "text": "Não use AKS HTTP Routing Add-On, use em vez disso a entrada NGINX gerenciada com o complemento de roteamento de aplicativo.",
+ "text": "Selecione o plano de hospedagem de aplicativo lógico certo com base em seus requisitos de negócios e SLO",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
- "severity": "Média",
- "text": "Para cargas de trabalho do Windows, use a Rede Acelerada",
- "waf": "Desempenho"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
"severity": "Alto",
- "text": "Use o ALB padrão (em oposição ao básico)",
+ "text": "Proteja aplicativos lógicos contra falhas de região com redundância de zona e zonas de disponibilidade",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
- "severity": "Média",
- "text": "Se estiver usando o CNI do Azure, considere usar sub-redes diferentes para NodePools",
- "waf": "Segurança"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
- "severity": "Média",
- "text": "Usar Pontos de Extremidade Privados (preferencial) ou Pontos de Extremidade de Serviço de Rede Virtual para acessar serviços de PaaS do cluster",
- "waf": "Segurança"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
+ "severity": "Alto",
+ "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
"severity": "Alto",
- "text": "Escolha o melhor plug-in de rede CNI para seus requisitos (Azure CNI recomendado)",
+ "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "Alto",
- "text": "Se estiver usando o Azure CNI, dimensione sua sub-rede de acordo considerando o número máximo de pods por nó",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
+ "severity": "Média",
+ "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código de Aplicativo Lógico",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
"severity": "Alto",
- "text": "Se estiver usando o Azure CNI, verifique o máximo de pods/nó (padrão 30)",
- "waf": "Desempenho"
+ "text": "Verifique se os controladores de domínio ADDS estão implantados na assinatura de identidade no Azure nativo",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Para aplicativos internos, as organizações geralmente abrem toda a sub-rede AKS em seus firewalls. Isso abre o acesso de rede para os nós também e, potencialmente, para os pods também (se estiver usando o Azure CNI). Se os IPs do LoadBalancer estiverem em uma sub-rede diferente, somente este precisará estar disponível para os clientes do aplicativo. Outra razão é que, se os endereços IP na sub-rede AKS são um recurso escasso, consumir seus endereços IP para serviços reduzirá a escalabilidade máxima do cluster.",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se estiver usando serviços LoadBalancer de IP privado, use uma sub-rede dedicada (não a sub-rede AKS)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Verifique se os sites e serviços do ADDS estão configurados para manter as solicitações de autenticação de recursos baseados no Azure (incluindo a Solução VMware do Azure) locais para o Azure",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
"severity": "Alto",
- "text": "Dimensione o intervalo de endereços IP do serviço de acordo (isso limitará a escalabilidade do cluster)",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, adicione seu próprio plugin CNI",
+ "text": "Verifique se o vCenter está conectado ao ADDS para habilitar a autenticação com base em 'contas de usuário nomeadas'",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, configure o IP público por nó no AKS",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Verifique se a conexão do vCenter com o ADDS está usando um protocolo seguro (LDAPS)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "Média",
- "text": "Usar um controlador de entrada para expor aplicativos baseados na Web em vez de expô-los com serviços do tipo LoadBalancer",
- "waf": "Fiabilidade"
+ "text": "A conta do CloudAdmin no vCenter IdP é usada apenas como uma conta de emergência (break-glass)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Usar o Gateway NAT do Azure como outboundType para dimensionar o tráfego de saída",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Certifique-se de que o NSX-Manager esteja integrado a um provedor de identidade externo (LDAPS)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"severity": "Média",
- "text": "Usar alocações dinâmicas de IPs para evitar o esgotamento de IP do CNI do Azure",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
- "severity": "Alto",
- "text": "Filtre o tráfego de saída com AzFW/NVA se seus requisitos de segurança exigirem",
+ "text": "Foi criado um modelo RBAC para uso no VMware vSphere",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "Média",
- "text": "Se estiver usando um ponto de extremidade de API público, restrinja os endereços IP que podem acessá-lo",
+ "text": "As permissões RBAC devem ser concedidas em grupos ADDS e não em usuários específicos",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
"severity": "Alto",
- "text": "Use clusters privados se seus requisitos exigirem",
+ "text": "As permissões RBAC no recurso Solução VMware do Azure no Azure são 'bloqueadas' apenas para um conjunto limitado de proprietários",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "Média",
- "text": "Para os nós AKS do Windows 2019 e 2022, as Diretivas de Rede Calico podem ser usadas ",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Certifique-se de que todas as funções personalizadas tenham escopo com autorizações permitidas do CloudAdmin",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
"severity": "Alto",
- "text": "Habilitar uma opção de Política de Rede do Kubernetes (Calico/Azure)",
- "waf": "Segurança"
+ "text": "O modelo de conectividade correto da Solução VMware do Azure está selecionado para o caso de uso do cliente em mãos?",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
"severity": "Alto",
- "text": "Usar diretivas de rede do Kubernetes para aumentar a segurança intra-cluster",
- "waf": "Segurança"
+ "text": "Garantir que as conexões de Rota Expressa ou VPN do local para o Azure sejam monitoradas usando o 'monitor de conexão'",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
- "severity": "Alto",
- "text": "Usar um WAF para cargas de trabalho da Web (UIs ou APIs)",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Verifique se um monitor de conexão foi criado a partir de um recurso nativo do Azure para uma máquina virtual da Solução VMware do Azure para monitorar a conexão de Rota Expressa de back-end da Solução VMware do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "Média",
- "text": "Usar DDoS Standard na Rede Virtual AKS",
+ "text": "Verifique se um monitor de conexão é criado a partir de um recurso local para uma máquina virtual da Solução VMware do Azure para monitorar a conectividade de ponta 2",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Quando o servidor de rotas for usado, certifique-se de que não mais de 1000 rotas sejam propagadas do servidor de rotas para o gateway ExR para o local (limite ARS).",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "O Gerenciamento de Identidades Privilegiadas é implementado para funções que gerenciam o recurso da Solução VMware do Azure no Portal do Azure (não são permitidas permissões permanentes)",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, adicione o proxy HTTP da empresa",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Os relatórios de auditoria do Gerenciamento de Identidades Privilegiadas devem ser implementados para as funções PIM da Solução VMware do Azure",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
"severity": "Média",
- "text": "Considere o uso de uma malha de serviço para gerenciamento avançado de comunicação de microsserviços",
+ "text": "Se o uso do Gerenciamento de Identidades Privilegiadas estiver sendo usado, certifique-se de que uma conta válida habilitada para ID do Entra seja criada com um registro SMTP válido para notificações de substituição automática do Host da Solução VMware do Azure. (permissões permanentes necessárias)",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
"severity": "Alto",
- "text": "Configurar alertas nas métricas mais críticas (consulte Insights de contêiner para obter recomendações)",
- "waf": "Operações"
+ "text": "Limitar o uso da conta do CloudAdmin apenas ao acesso de emergência",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Verifique regularmente o Azure Advisor para obter recomendações sobre o seu cluster",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Criar funções RBAC personalizadas no vCenter para implementar um modelo de privilégios mínimos dentro do vCenter",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Habilitar a rotação automática do certificado AKS",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "É um processo definido para alternar regularmente as credenciais cloudadmin (vCenter) e admin (NSX)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"severity": "Alto",
- "text": "Tenha um processo regular para atualizar sua versão do kubernetes periodicamente (trimestralmente, por exemplo), ou use o recurso de atualização automática do AKS",
- "waf": "Operações"
+ "text": "Usar um provedor de identidade centralizado a ser usado para cargas de trabalho (VMs) em execução na Solução VMware do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "Alto",
- "text": "Use kured para atualizações de nó do Linux caso você não esteja usando a atualização de imagem de nó",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "A filtragem de tráfego Leste-Oeste é implementada no NSX-T",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"severity": "Alto",
- "text": "Tenha um processo regular para atualizar as imagens do nó do cluster periodicamente (semanalmente, por exemplo)",
- "waf": "Operações"
+ "text": "As cargas de trabalho na Solução VMware do Azure não são diretamente expostas à Internet. O tráfego é filtrado e inspecionado pelo Gateway de Aplicativo do Azure, pelo Firewall do Azure ou por soluções de terceiros",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Considere gitops para implantar aplicativos ou configuração de cluster em vários clusters",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "A auditoria e o registro em log são implementados para solicitações de entrada da Internet para cargas de trabalho baseadas na Solução VMware do Azure e na Solução VMware do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Considere o uso do comando AKS invoke em clusters privados",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "O monitoramento de sessão é implementado para conexões de saída da Internet a partir da Solução VMware do Azure ou cargas de trabalho baseadas na Solução VMware do Azure para identificar atividades suspeitas/mal-intencionadas",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Para eventos planejados, considere o uso do Dreno Automático de Nó",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "A proteção padrão contra DDoS está habilitada na sub-rede do Gateway ExR/VPN no Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
- "severity": "Alto",
- "text": "Desenvolver práticas próprias de governança para garantir que nenhuma alteração seja realizada pelos operadores no nó RG (também conhecido como 'infra RG')",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Usar uma estação de trabalho de acesso privilegiado (PAW) dedicada para gerenciar a Solução VMware do Azure, o vCenter, o gerenciador NSX e o gerenciador HCX",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Use o nome personalizado do Node RG (também conhecido como 'Infra RG')",
- "waf": "Operações"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
"severity": "Média",
- "text": "Não use APIs do Kubernetes preteridas em seus manifestos do YAML",
- "waf": "Operações"
+ "text": "Habilitar a Detecção Avançada de Ameaças (Microsoft Defender for Cloud, também conhecido como ASC) para cargas de trabalho em execução na Solução VMware do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Manchar os nós do Windows",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Usar o Azure ARC for Servers para controlar corretamente as cargas de trabalho em execução na Solução VMware do Azure usando tecnologias nativas do Azure (o Azure ARC for Azure VMware Solution ainda não está disponível)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
"severity": "Baixo",
- "text": "Mantenha o nível de patch dos contêineres do Windows sincronizado com o nível do patch do host",
- "waf": "Operações"
+ "text": "Garanta que as cargas de trabalho na Solução VMware do Azure usem criptografia de dados suficiente durante o tempo de execução (como criptografia de disco convidado e SQL TDE). (a criptografia vSAN em repouso é padrão)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Por meio de Configurações de Diagnóstico no nível do cluster",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
"severity": "Baixo",
- "text": "Envie logs mestre (também conhecidos como logs de API) para o Azure Monitor ou sua solução de gerenciamento de logs preferida",
- "waf": "Operações"
+ "text": "Quando a criptografia no convidado é usada, armazene chaves de criptografia no cofre de chaves do Azure quando possível",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, use instantâneos do nodePool",
- "waf": "Custar"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Considere usar o suporte estendido de atualização de segurança para cargas de trabalho em execução na Solução VMware do Azure (a Solução VMware do Azure é qualificada para ESU)",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Considere pools de nós spot para cargas de trabalho não sensíveis ao tempo",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Certifique-se de que o método de redundância de dados vSAN apropriado seja usado (especificação RAID)",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Considere o nó virtual AKS para intermitência rápida",
- "waf": "Operações"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Certifique-se de que a política de falha na tolerância esteja em vigor para atender às suas necessidades de armazenamento vSAN",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "Alto",
- "text": "Monitore suas métricas de cluster com o Container Insights (ou outras ferramentas como o Prometheus)",
- "waf": "Operações"
+ "text": "Certifique-se de ter solicitado cota suficiente, garantindo que você tenha considerado o crescimento e o requisito de recuperação de desastres",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "Alto",
- "text": "Armazene e analise seus logs de cluster com o Container Insights (ou outras ferramentas como Telegraf/ElasticSearch)",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Certifique-se de que as restrições de acesso ao ESXi sejam compreendidas, há limites de acesso que podem afetar as soluções de terceiros 3rd.",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"severity": "Média",
- "text": "Monitorar a utilização da CPU e da memória dos nós",
+ "text": "Certifique-se de ter uma política em torno da densidade e eficiência do host ESXi, tendo em mente o prazo de espera para solicitar novos nós",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "Média",
- "text": "Se estiver usando o Azure CNI, monitore a % de IPs de pod consumidos por nó",
- "waf": "Operações"
+ "text": "Garantir que um bom processo de gerenciamento de custos esteja em vigor para a Solução VMware do Azure - o Gerenciamento de Custos do Azure pode ser usado",
+ "waf": "Custar"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "A E/S no disco do sistema operacional é um recurso crítico. Se o sistema operacional nos nós for limitado na E/S, isso pode levar a um comportamento imprevisível, geralmente terminando no nó sendo declarado NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "As instâncias reservadas do Azure são usadas para otimizar o custo de uso da Solução VMware do Azure",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
"severity": "Média",
- "text": "Monitorar a profundidade da fila de disco do sistema operacional nos nós",
- "waf": "Operações"
+ "text": "Considere o uso do Azure Private-Link ao usar outros Serviços Nativos do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Verifique se todos os recursos necessários residem na(s) mesma(s) zona(s) de disponibilidade do Azure",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "Média",
- "text": "Se não estiver usando filtragem de saída com AzFW/NVA, monitore as portas SNAT ALB alocadas padrão",
- "waf": "Operações"
+ "text": "Habilitar cargas de trabalho de VM convidada do Microsoft Defender for Cloud for Azure VMware Solution",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "Média",
- "text": "Assine as notificações de integridade de recursos para seu cluster AKS",
- "waf": "Operações"
+ "text": "Usar servidores habilitados para Arc do Azure para gerenciar suas cargas de trabalho de VM convidada da Solução VMware do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
"severity": "Alto",
- "text": "Configurar solicitações e limites nas especificações do pod",
+ "text": "Habilitar o log de diagnóstico e de métrica na solução VMware do Azure",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"severity": "Média",
- "text": "Impor cotas de recursos para namespaces",
+ "text": "Implantar os agentes do Log Analytics nas cargas de trabalho da VM convidada da Solução VMware do Azure",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
- "severity": "Alto",
- "text": "Verifique se sua assinatura tem cota suficiente para expandir seus nodepools",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Verifique se você tem uma política e uma solução de backup documentadas e implementadas para cargas de trabalho de VM da Solução VMware do Azure",
"waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "Média",
- "text": "Usar o Autoscaler de Cluster",
- "waf": "Desempenho"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Personalizar a configuração do nó para pools de nós AKS",
- "waf": "Desempenho"
+ "text": "Usar o Microsoft Defender for Cloud para monitoramento de conformidade de cargas de trabalho em execução no Azure VMware Solution",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"severity": "Média",
- "text": "Use o Autoscaler do Pod Horizontal quando necessário",
- "waf": "Desempenho"
+ "text": "São as linhas de base de conformidade aplicáveis adicionadas ao Microsoft Defender for Cloud",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "Nós maiores trarão maior desempenho e recursos, como discos efêmeros e rede acelerada, mas aumentarão o raio de explosão e diminuirão a granularidade de dimensionamento",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
"severity": "Alto",
- "text": "Considere um tamanho de nó apropriado, não muito grande ou muito pequeno",
- "waf": "Desempenho"
+ "text": "A residência de dados foi avaliada ao selecionar regiões do Azure a serem usadas para a implantação da Solução VMware do Azure",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se mais de 5000 nós forem necessários para escalabilidade, considere o uso de um cluster AKS adicional",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "As implicações do processamento de dados (modelo de prestador de serviços / consumidor de serviços) são claras e documentadas",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Considere assinar o EventGrid Events para automação AKS",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Considere o uso de CMK (Customer Managed Key) para vSAN somente se necessário por motivo(s) de conformidade.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Para operações de longa duração em um cluster AKS, considere o encerramento do evento",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Criar painéis para habilitar os principais insights de monitoramento da Solução VMware do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "Baixo",
- "text": "Se necessário, considere usar hosts dedicados do Azure para nós AKS",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Criar alertas de aviso para limites críticos para alertas automáticos sobre o desempenho da solução VMware do Azure (CPU >80%, memória média >80%, vSAN >70%)",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
"severity": "Alto",
- "text": "Usar discos efêmeros do sistema operacional",
- "waf": "Desempenho"
+ "text": "Certifique-se de que o alerta crítico seja criado para monitorar se o consumo de vSAN está abaixo de 75%, pois esse é um limite de suporte do VMware",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
"severity": "Alto",
- "text": "Para discos não efêmeros, use IOPS altos e discos maiores do sistema operacional para os nós ao executar muitos pods/nó, pois requer alto desempenho para executar vários pods e gerará logs enormes com limites de rotação de log AKS padrão",
- "waf": "Desempenho"
+ "text": "Verifique se os alertas estão configurados para alertas e notificações de Integridade do Serviço do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Configurar o log da Solução VMware do Azure para ser enviado a uma conta de Armazenamento do Azure ou ao Azure EventHub para processamento",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
"severity": "Baixo",
- "text": "Para a opção de armazenamento de hiperdesempenho, use Ultra Disks no AKS",
- "waf": "Desempenho"
+ "text": "Se for necessário um insight profundo no VMware vSphere: o vRealize Operations e/ou o vRealize Network Insights são usados na solução?",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Verifique se a política de armazenamento vSAN para VMs NÃO é a política de armazenamento padrão, pois essa política aplica provisionamento espesso",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
"severity": "Média",
- "text": "Evite manter o estado no cluster e armazene dados fora (AzStorage, AzSQL, Cosmos, etc)",
- "waf": "Desempenho"
+ "text": "Verifique se as bibliotecas de conteúdo do vSphere não são colocadas no vSAN, pois o vSAN é um recurso finito",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
"severity": "Média",
- "text": "Se estiver usando o AzFiles Standard, considere o AzFiles Premium e/ou ANF por motivos de desempenho",
- "waf": "Desempenho"
+ "text": "Certifique-se de que os repositórios de dados da solução de backup sejam armazenados fora do armazenamento vSAN. No nativo do Azure ou em um armazenamento de dados com backup de pool de discos",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
"severity": "Média",
- "text": "Se estiver usando Discos e AZs do Azure, considere ter nodepools dentro de uma zona para disco LRS com VolumeBindingMode:WaitForFirstConsumer para provisionar armazenamento na zona direita ou use o disco ZRS para nodepools abrangendo várias zonas",
- "waf": "Desempenho"
+ "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam gerenciadas de forma híbrida usando o Azure Arc for Servers (a Solução VMware do Arc for Azure está em visualização)",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
"severity": "Média",
- "text": "Se você usar certificados TLS gerenciados pelo cliente com o Azure Front Door, use a versão de certificado 'Mais recente'. Reduzir o risco de paralisações causadas pela renovação manual de certificados",
+ "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam monitoradas usando o Azure Log Analytics e o Azure Monitor",
"waf": "Operações"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"severity": "Média",
- "text": "Verifique se você está usando o SKU do Application Gateway v2",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Segurança"
+ "text": "Incluir cargas de trabalho em execução na Solução VMware do Azure nas ferramentas de gerenciamento de atualizações existentes ou no Gerenciamento de Atualizações do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"severity": "Média",
- "text": "Verifique se você está usando a SKU padrão para seus Balanceadores de Carga do Azure",
- "waf": "Segurança"
+ "text": "Usar a Política do Azure para integrar cargas de trabalho da Solução VMware do Azure nas soluções de Gerenciamento, Monitoramento e Segurança do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"severity": "Média",
- "text": "Verifique se os endereços IP de front-end dos Load Balancers são redundantes por zona (a menos que você precise de frontends zonais).",
+ "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam integradas ao Microsoft Defender for Cloud",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
"severity": "Média",
- "text": "Seus Application Gateways v2 devem ser implantados em sub-redes com prefixos IP iguais ou maiores que /24",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Segurança"
+ "text": "Certifique-se de que os backups não sejam armazenados no vSAN, pois o vSAN é um recurso finito",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "description": "A administração de proxies reversos em geral e do WAF em particular está mais próxima do aplicativo do que da rede, portanto, eles pertencem à mesma assinatura que o aplicativo. Centralizar o Application Gateway e o WAF na assinatura de conectividade pode ser OK se for gerenciado por uma única equipe.",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"severity": "Média",
- "text": "Implante o Gateway de Aplicativo do Azure v2 ou NVAs de parceiros usados para fazer proxy de conexões HTTP(S) de entrada na rede virtual da zona de aterrissagem e com os aplicativos que eles estão protegendo.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Segurança"
+ "text": "Todas as soluções de DR foram consideradas e uma solução que é melhor para o seu negócio foi decidida? [SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"severity": "Média",
- "text": "Use uma rede DDoS ou planos de proteção IP para todos os endereços IP públicos nas zonas de aterrissagem do aplicativo.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Segurança"
+ "text": "Usar o Azure Site Recovery quando a tecnologia de Recuperação de Desastres for IaaS nativa do Azure",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
- "severity": "Média",
- "text": "Configure o dimensionamento automático com uma quantidade mínima de duas instâncias.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Use planos de recuperação automatizados com qualquer uma das soluções de desastre, evite ao máximo tarefas manuais",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"severity": "Média",
- "text": "Implantar o Application Gateway em zonas de disponibilidade",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "Usar o par de regiões geopolíticas como o ambiente secundário de recuperação de desastres",
"waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
- "severity": "Média",
- "text": "Use o Azure Front Door com políticas WAF para fornecer e ajudar a proteger aplicativos HTTP/S globais que abrangem várias regiões do Azure.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Use 2 espaços de endereço diferentes entre as regiões, por exemplo: 10.0.0.0/16 e 192.168.0.0/16 para as diferentes regiões",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"severity": "Média",
- "text": "Ao usar o Front Door e o Application Gateway para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Front Door. Bloqueie o Application Gateway para receber tráfego somente do Front Door.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Segurança"
+ "text": "O ExpressRoute Global Reach será usado para conectividade entre as Nuvens Privadas da Solução VMware do Azure primária e secundária ou o roteamento é feito por meio de dispositivos virtuais de rede?",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "Alto",
- "text": "Use o Gerenciador de Tráfego para fornecer aplicativos globais que abrangem protocolos diferentes de HTTP/S.",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Todas as soluções de backup foram consideradas e uma solução que é melhor para o seu negócio foi decidida? [ MABS/CommVault/Metallic.io/Veeam/ . ]",
"waf": "Fiabilidade"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "Baixo",
- "text": "Se os usuários precisarem apenas de acesso a aplicativos internos, o Proxy de Aplicativo de ID do Microsoft Entra foi considerado uma alternativa à Área de Trabalho Virtual (AVD) do Azure?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Implante sua solução de backup na mesma região que sua nuvem privada da Solução VMware do Azure",
+ "waf": "Fiabilidade"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
"severity": "Média",
- "text": "Para reduzir o número de portas de firewall abertas para conexões de entrada em sua rede, considere o uso do Microsoft Entra ID Application Proxy para dar aos usuários remotos acesso seguro e autenticado a aplicativos internos.",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "Segurança"
+ "text": "Implante sua solução de backup fora do vSan, em componentes nativos do Azure",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Implante sua política de WAF para Front Door no modo 'Prevenção'.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Existe um processo para solicitar uma restauração dos componentes VMware gerenciados pela Plataforma Azure?",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Evite combinar o Gerenciador de Tráfego do Azure e o Azure Front Door.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Para implantações manuais, todas as configurações e implantações devem ser documentadas",
+ "waf": "Operações"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use o mesmo nome de domínio no Azure Front Door e sua origem. Nomes de host incompatíveis podem causar bugs sutis.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Para implantações manuais, considere implementar bloqueios de recursos para evitar ações acidentais em sua nuvem privada de solução VMware do Azure",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
"severity": "Baixo",
- "text": "Desabilite os testes de integridade quando houver apenas uma origem em um grupo de origem do Azure Front Door.",
- "waf": "Desempenho"
+ "text": "Para implantações automatizadas, implante uma nuvem privada mínima e dimensione conforme necessário",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
- "severity": "Média",
- "text": "Selecione bons pontos de extremidade de teste de integridade para o Azure Front Door. Considere a criação de pontos de extremidade de integridade que verifiquem todas as dependências do seu aplicativo.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Para implantações automatizadas, solicite ou reserve cota antes de iniciar a implantação",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
"severity": "Baixo",
- "text": "Use testes de integridade do HEAD com o Azure Front Door para reduzir o tráfego que o Front Door envia para seu aplicativo.",
- "waf": "Desempenho"
+ "text": "Para implantação automatizada, verifique se os bloqueios de recursos relevantes são criados por meio da automação ou da Política do Azure para uma governança adequada",
+ "waf": "Operações"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "Alto",
- "text": "Usar o Gateway NAT do Azure em vez das regras de saída do Load Balancer para melhor escalabilidade do SNAT",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Implemente nomes humanos compreensíveis para chaves de autorização ExR para permitir a fácil identificação da finalidade/uso das chaves",
+ "waf": "Operações"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use certificados TLS gerenciados com o Azure Front Door. Reduza o custo operacional e o risco de paralisações devido a renovações de certificados.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Usar o Cofre de chaves para armazenar segredos e chaves de autorização quando Princípios de Serviço separados são usados para implantar a Solução VMware do Azure e a Rota Expressa",
"waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
- "severity": "Média",
- "text": "Defina sua configuração do WAF do Azure Front Door como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Defina dependências de recursos para serializar ações no IaC quando muitos recursos precisarem ser implantados no/na Solução VMware do Azure, pois a Solução VMware do Azure oferece suporte apenas a um número limitado de operações paralelas.",
"waf": "Operações"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Use o TLS de ponta a ponta com o Azure Front Door. Use o TLS para conexões de seus clientes com o Front Door e do Front Door com sua origem.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "severity": "Baixo",
+ "text": "Ao executar a configuração automatizada de segmentos NSX-T com um único gateway de Camada 1, use as APIs do Portal do Azure em vez das APIs do NSX-Manager",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"severity": "Média",
- "text": "Use o redirecionamento HTTP para HTTPS com o Azure Front Door. Ofereça suporte a clientes mais antigos redirecionando-os para uma solicitação HTTPS automaticamente.",
- "waf": "Segurança"
+ "text": "Ao pretender usar a expansão automatizada, certifique-se de aplicar cota suficiente da Solução VMware do Azure para as assinaturas que executam a Solução VMware do Azure",
+ "waf": "Desempenho"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Habilite o WAF do Azure Front Door. Proteja seu aplicativo contra uma série de ataques.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Ao pretender usar o scale-in automatizado, certifique-se de levar em consideração os requisitos da política de armazenamento antes de executar essa ação",
+ "waf": "Desempenho"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Ajuste o WAF do Azure Front Door para sua carga de trabalho. Reduza as detecções de falsos positivos.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "As operações de dimensionamento sempre precisam ser serializadas em um único SDDC, pois apenas uma operação de escala pode ser executada por vez (mesmo quando vários clusters são usados)",
+ "waf": "Desempenho"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
- "severity": "Alto",
- "text": "Habilite o recurso de inspeção do corpo de solicitação habilitado na política WAF do Azure Front Door.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Considerar e validar operações de dimensionamento em soluções de terceiros 3rd usadas na arquitetura (suportadas ou não)",
+ "waf": "Desempenho"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Definir e impor limites máximos de entrada/saída de escala para seu ambiente nas automações",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Implementar regras de monitoramento para monitorar operações de dimensionamento automatizadas e monitorar o sucesso e a falha para habilitar respostas apropriadas (automatizadas)",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "Alto",
- "text": "Habilite os conjuntos de regras padrão do WAF do Azure Front Door. Os conjuntos de regras padrão detectam e bloqueiam ataques comuns.",
- "waf": "Segurança"
+ "text": "Ao usar o MON, esteja ciente dos limites de VMs configuradas simulataneamente (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "Alto",
- "text": "Habilite o conjunto de regras de proteção de bot do WAF do Azure Front Door. As regras de bot detectam bots bons e ruins.",
- "waf": "Segurança"
+ "text": "Ao usar o MON, você não pode habilitar o MON em mais de 100 extensões de rede",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
"severity": "Média",
- "text": "Use a versão mais recente do conjunto de regras do WAF do Azure Front Door. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário atual de ameaças.",
- "waf": "Segurança"
+ "text": "Se estiver usando uma conexão VPN para migrações, ajuste o tamanho da MTU de acordo.",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"severity": "Média",
- "text": "Adicione o limite de taxa ao WAF do Azure Front Door. A limitação de taxa bloqueia clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
- "waf": "Segurança"
+ "text": "Para regiões de baixa conectividade conectadas ao Azure (500Mbps ou menos), considere implantar o dispositivo de otimização de WAN HCX",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"severity": "Média",
- "text": "Use um limite alto para os limites de taxa do WAF do Azure Front Door. Limites de limite de taxa alta evitam o bloqueio de tráfego legítimo, ao mesmo tempo em que fornecem proteção contra um número extremamente alto de solicitações que podem sobrecarregar sua infraestrutura. ",
- "waf": "Segurança"
+ "text": "Certifique-se de que as migrações sejam iniciadas a partir do dispositivo local e NÃO do dispositivo em nuvem (NÃO execute uma migração reversa)",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "Baixo",
- "text": "Se você não está esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Quando o Azure Netapp Files for usado para estender o armazenamento para a Solução VMware do Azure, considere usá-lo como um armazenamento de dados VMware em vez de anexá-lo diretamente a uma VM.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"severity": "Média",
- "text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Azure Front Door. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
- "waf": "Segurança"
+ "text": "Verifique se um ExpressRoute Gateway dedicado está sendo usado para soluções de armazenamento de dados externos",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Habilitar o conjunto de regras de proteção de bot WAF do Gateway de Aplicativo do Azure As regras de bot detectam bots bons e ruins.",
- "waf": "Segurança"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
+ "severity": "Média",
+ "text": "Verifique se o FastPath está habilitado no ExpressRoute Gateway que está sendo usado para soluções de armazenamento de dados externos",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
"severity": "Alto",
- "text": "Habilite o recurso de inspeção do corpo de solicitação habilitado na política WAF do Gateway de Aplicativo do Azure.",
- "waf": "Segurança"
+ "text": "Se estiver usando cluster estendido, verifique se a solução de recuperação de desastres selecionada é suportada pelo fornecedor",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
"severity": "Alto",
- "text": "Ajuste o WAF do Gateway de Aplicativo do Azure para sua carga de trabalho. Reduza as detecções de falsos positivos.",
- "waf": "Segurança"
+ "text": "Se estiver usando cluster estendido, verifique se o SLA fornecido atenderá aos seus requisitos",
+ "waf": "Fiabilidade"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
"severity": "Alto",
- "text": "Implante sua política de WAF para o Application Gateway no modo 'Prevenção'.",
- "waf": "Segurança"
+ "text": "Se estiver usando cluster estendido, verifique se ambos os circuitos da Rota Expressa estão conectados ao hub de conectividade.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Se estiver usando cluster estendido, verifique se ambos os circuitos da Rota Expressa têm o GlobalReach habilitado.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
+ "severity": "Alto",
+ "text": "Faça com que as configurações de tolerância a desastres do site tenham sido devidamente consideradas e alteradas para sua empresa, se necessário.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
+ "severity": "Alto",
+ "text": "Habilite a redundância de zona para o Cache do Azure para Redis. O Cache do Azure para Redis dá suporte a configurações redundantes de zona nas camadas Premium e Enterprise. Um cache redundante de zona pode colocar seus nós em diferentes zonas de disponibilidade do Azure na mesma região. Ele elimina a interrupção do data center ou AZ como um único ponto de falha e aumenta a disponibilidade geral do cache.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
"severity": "Média",
- "text": "Adicione o limite de taxa ao WAF do Gateway de Aplicativo do Azure. A limitação de taxa bloqueia clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
- "waf": "Segurança"
+ "text": "Configure a persistência de dados para uma instância do Cache do Azure para Redis. Como os dados do cache são armazenados na memória, uma falha rara e não planejada de vários nós pode fazer com que todos os dados sejam descartados. Para evitar a perda completa de dados, a persistência do Redis permite que você tire instantâneos periódicos de dados na memória e os armazene em sua conta de armazenamento.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
"severity": "Média",
- "text": "Use um limite alto para os limites de taxa do WAF do Gateway de Aplicativo do Azure. Limites de limite de taxa alta evitam o bloqueio de tráfego legítimo, ao mesmo tempo em que fornecem proteção contra um número extremamente alto de solicitações que podem sobrecarregar sua infraestrutura. ",
- "waf": "Segurança"
+ "text": "Use a conta de armazenamento com redundância geográfica para persistir o Cache do Azure para dados Redis ou zonalmente redundante onde a redundância geográfica não está disponível",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
- "severity": "Baixo",
- "text": "Se você não está esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
- "waf": "Segurança"
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
+ "severity": "Média",
+ "text": "Configure a replicação geográfica passiva para instâncias do Cache Premium do Azure para Redis. A replicação geográfica é um mecanismo para vincular duas ou mais instâncias do Cache do Azure para Redis, normalmente abrangendo duas regiões do Azure. A replicação geográfica foi projetada principalmente para recuperação de desastres entre regiões. Duas instâncias de cache de camada Premium são conectadas por meio de replicação geográfica de uma forma que fornece leituras e gravações no cache primário e que os dados são replicados para o cache secundário.",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "Média",
- "text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Gateway de Aplicativo do Azure. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
- "waf": "Segurança"
+ "text": "Se você usar certificados TLS gerenciados pelo cliente com o Azure Front Door, use a versão do certificado 'Mais recente'. Reduza o risco de interrupções causadas pela renovação manual de certificados",
+ "waf": "Operações"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
"service": "App Gateway",
"severity": "Média",
- "text": "Use a versão mais recente do conjunto de regras do WAF do Gateway de Aplicativo do Azure. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário atual de ameaças.",
+ "text": "Verifique se você está usando o SKU do Gateway de Aplicativo v2",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
"severity": "Média",
- "text": "Adicione configurações de diagnóstico para salvar seus logs WAF do Gateway de Aplicativo do Azure.",
- "waf": "Operações"
+ "text": "Verifique se você está usando o SKU Standard para seus Azure Load Balancers",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
"severity": "Média",
- "text": "Adicione configurações de diagnóstico para salvar seus logs do WAF do Azure Front Door.",
- "waf": "Operações"
+ "text": "Verifique se os endereços IP de front-end dos Load Balancers têm redundância de zona (a menos que você precise de front-ends zonais).",
+ "waf": "Segurança"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
"service": "App Gateway",
"severity": "Média",
- "text": "Envie logs do WAF do Gateway de Aplicativo do Azure para o Microsoft Sentinel.",
- "waf": "Operações"
+ "text": "Seus Gateways de Aplicativo v2 devem ser implantados em sub-redes com prefixos IP iguais ou maiores que /24",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/frontdoors",
+ "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
+ "description": "A administração de proxies reversos em geral e WAF em particular está mais próxima do aplicativo do que da rede, portanto, eles pertencem à mesma assinatura que o aplicativo. Centralizar o Gateway de Aplicativo e o WAF na assinatura de conectividade pode ser OK se ele for gerenciado por uma única equipe.",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "Média",
- "text": "Envie logs do WAF do Azure Front Door para o Microsoft Sentinel.",
- "waf": "Operações"
+ "text": "Implante o Gateway de Aplicativo do Azure v2 ou NVAs de parceiros usados para proxy de conexões HTTP(S) de entrada na rede virtual da zona de destino e com os aplicativos que eles estão protegendo.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Segurança"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "App Gateway",
"severity": "Média",
- "text": "Defina sua configuração do WAF do Gateway de Aplicativo do Azure como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
- "waf": "Operações"
+ "text": "Use uma rede DDoS ou planos de proteção de IP para todos os endereços IP públicos em zonas de destino do aplicativo.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Segurança"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
"service": "App Gateway",
"severity": "Média",
- "text": "Use políticas de WAF em vez da configuração de WAF herdada.",
- "waf": "Operações"
+ "text": "Configure o dimensionamento automático com uma quantidade mínima de instâncias de duas.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Fiabilidade"
},
{
"arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
"service": "App Gateway",
"severity": "Média",
- "text": "Filtre o tráfego de entrada nos back-ends para que eles só aceitem conexões da sub-rede do Application Gateway, por exemplo, com NSGs.",
- "waf": "Segurança"
+ "text": "Implantar o Gateway de Aplicativo em Zonas de Disponibilidade",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Fiabilidade"
},
{
"arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
"service": "Front Door",
"severity": "Média",
- "text": "Certifique-se de que suas origens recebam apenas o tráfego de sua instância do Azure Front Door.",
+ "text": "Use o Azure Front Door com políticas do WAF para fornecer e ajudar a proteger aplicativos HTTP/S globais que abrangem várias regiões do Azure.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
- "severity": "Alto",
- "text": "Você deve criptografar o tráfego para os servidores de back-end.",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Ao usar o Front Door e o Gateway de Aplicativo para ajudar a proteger aplicativos HTTP/S, use políticas WAF no Front Door. Bloqueie o Gateway de Aplicativo para receber tráfego somente do Front Door.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
"checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
"severity": "Alto",
- "text": "Você deve usar um Web Application Firewall.",
- "waf": "Segurança"
+ "text": "Use o Gerenciador de Tráfego para fornecer aplicativos globais que abrangem protocolos diferentes de HTTP/S.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
- "severity": "Média",
- "text": "Redirecionar HTTP para HTTPS",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "Baixo",
+ "text": "Se os usuários precisarem apenas de acesso a aplicativos internos, o Proxy de Aplicativo de ID do Microsoft Entra foi considerado como uma alternativa à AVD (Área de Trabalho Virtual) do Azure?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
"checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"severity": "Média",
- "text": "Usar cookies gerenciados por gateway para direcionar o tráfego de uma sessão de usuário para o mesmo servidor para processamento",
- "waf": "Operações"
+ "text": "Para reduzir o número de portas de firewall abertas para conexões de entrada em sua rede, considere usar o Proxy de Aplicativo de ID do Microsoft Entra para fornecer aos usuários remotos acesso seguro e autenticado a aplicativos internos.",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"severity": "Alto",
- "text": "Habilite a drenagem de conexão durante as atualizações de serviço planejadas para evitar a perda de conexão com membrs existentes do pool de back-end",
+ "text": "Implante sua política de WAF para o Front Door no modo 'Prevenção' para que o Firewall de Aplicativo Web tome as medidas apropriadas para permitir ou negar o tráfego.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
- "severity": "Baixo",
- "text": "Criar páginas de erro personalizadas para exibir uma experiência de usuário personalizada",
- "waf": "Operações"
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Evite combinar o Gerenciador de Tráfego do Azure e o Azure Front Door.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
- "severity": "Média",
- "text": "Edite solicitações HTTP e cabeçalhos de resposta para facilitar o roteamento e a troca de informações entre o cliente e o servidor",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use o mesmo nome de domínio no Azure Front Door e sua origem. Nomes de host incompatíveis podem causar bugs sutis.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
- "severity": "Média",
- "text": "Configure o Front Door para otimizar o roteamento de tráfego global da Web e o desempenho do usuário final de nível superior e a confiabilidade por meio de failover global rápido",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "Baixo",
+ "text": "Desabilite as investigações de integridade quando houver apenas uma origem em um grupo de origens do Azure Front Door.",
"waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
"severity": "Média",
- "text": "Usar balanceamento de carga da camada de transporte",
+ "text": "Selecione pontos de extremidade de investigação de integridade boa para o Azure Front Door. Considere a criação de pontos de extremidade de integridade que verifiquem todas as dependências do aplicativo.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "Baixo",
+ "text": "Use investigações de integridade HEAD com o Azure Front Door para reduzir o tráfego que o Front Door envia para seu aplicativo.",
"waf": "Desempenho"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
"checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
- "severity": "Média",
- "text": "Configurar o roteamento com base no host ou nome de domínio para vários aplicativos Web em um único gateway",
- "waf": "Segurança"
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
+ "severity": "Alto",
+ "text": "Usar o Gateway NAT do Azure em vez das regras de saída do Load Balancer para melhorar a escalabilidade SNAT",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use certificados TLS gerenciados com o Azure Front Door. Reduza o custo operacional e o risco de interrupções devido a renovações de certificados.",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"severity": "Média",
- "text": "Centralize o gerenciamento de certificados SSL para reduzir a sobrecarga de criptografia e descriptografia de um farm de servidores back-end",
+ "text": "Defina a configuração do WAF do Azure Front Door como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
+ "waf": "Operações"
+ },
+ {
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Use o TLS de ponta a ponta com o Azure Front Door. Use o TLS para conexões de seus clientes com o Front Door e do Front Door com sua origem.",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.network/applicationGateways",
+ "arm-service": "microsoft.network/frontdoors",
"checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "Baixo",
- "text": "Usar o Application Gateway para suporte nativo para protocolos WebSocket e HTTP/2",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Use o redirecionamento de HTTP para HTTPS com o Azure Front Door. Ofereça suporte a clientes mais antigos redirecionando-os para uma solicitação HTTPS automaticamente.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "text": "Regras de coleta de dados no Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite o WAF do Azure Front Door. Proteja seu aplicativo contra uma variedade de ataques.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "text": "Verificar instâncias de backup com a fonte de dados subjacente não encontrada",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Ajuste o WAF do Azure Front Door para sua carga de trabalho configurando o WAF no modo de detecção para reduzir e corrigir detecções de falsos positivos.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "text": "Excluir ou arquivar serviços não associados (discos, nics, endereços IP etc.)",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite o recurso de inspeção do corpo da solicitação habilitado na política do WAF do Azure Front Door.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "text": "Considere um bom equilíbrio entre recuperação de local, armazenamento e backup para aplicativos não essenciais",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite os conjuntos de regras padrão do WAF do Azure Front Door. Os conjuntos de regras padrão detectam e bloqueiam ataques comuns.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "text": "Verifique os gastos e as oportunidades de economia entre os 40 diferentes espaços de trabalho de análise de log - use retenção e coleta de dados diferentes para espaços de trabalho não prod - crie limite diário para reconhecimento e dimensionamento de camadas - Se você definir um limite diário, além de criar um alerta quando o limite for atingido, certifique-se de também criar uma regra de alerta para ser notificado quando alguma porcentagem for atingida (90%, por exemplo). - considerar a transformação do espaço de trabalho, se possível - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
+ "severity": "Alto",
+ "text": "Habilite o conjunto de regras de proteção contra bot do WAF do Azure Front Door. As regras de bot detectam bots bons e ruins.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "text": "Impor uma política de log de limpeza e automação (se necessário, os logs podem ser movidos para armazenamento frio)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Use a versão mais recente do conjunto de regras do WAF do Azure Front Door. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário de ameaças atual.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "text": "Verifique se os discos são realmente necessários, se não: excluir. Se forem necessários, encontre níveis de armazenamento mais baixos ou use backup -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Adicione a limitação de taxa ao WAF do Azure Front Door. A limitação de taxa bloqueia os clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "text": "Considere mover o armazenamento não utilizado para o nível inferior, com regra personalizada - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Use um limite alto para os limites de taxa do WAF do Azure Front Door. Os limites de limite de taxa altos evitam o bloqueio do tráfego legítimo, ao mesmo tempo em que fornecem proteção contra números extremamente altos de solicitações que podem sobrecarregar sua infraestrutura. ",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "text": "Verifique se o Advisor está configurado para o dimensionamento correto da VM ",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "Baixo",
+ "text": "Se você não estiver esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "verifique pesquisando as Licenças de Categoria de Medidor na Análise de Custos",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "text": "executar o script em todas as VMs do Windows https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- considere implementar uma diretiva se as VMs do Windows forem criadas com frequência",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Azure Front Door. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "text": " isso também pode ser colocado no AHUB se você já tiver licenças https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Habilite o conjunto de regras de proteção contra bot do WAF do Gateway de Aplicativo do Azure. As regras de bot detectam bots bons e ruins.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "text": "Consolidar famílias de VM reservadas com opção de flexibilidade (não mais do que 4-5 famílias)",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Habilite o recurso de inspeção do corpo da solicitação habilitado na política do WAF do Gateway de Aplicativo do Azure.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "text": "Utilize instâncias reservadas do Azure: esse recurso permite reservar VMs por um período de 1 ou 3 anos, proporcionando uma economia significativa em comparação com os preços do PAYG.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "text": "Somente discos maiores podem ser reservados => 1 TiB -",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "text": "Após a otimização do dimensionamento correto",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "text": "Verifique se aplicável e aplique a política/alteração 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",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "text": "O desconto da peça de licença VM + (ahub + 3YRI) é de cerca de 70% de desconto",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "text": "Considere o uso de um VMSS para corresponder à demanda em vez de dimensionamento simples",
- "waf": "Custar"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "text": "Use o autoscaler AKS para corresponder ao uso de clusters (verifique se os requisitos dos pods correspondem ao dimensionador)",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "text": "Mover pontos de recuperação para o vault-archive, quando aplicável (Validar)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "text": "Considere o uso de VMs spot com fallback sempre que possível. Considere o autotermination de clusters.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "text": "Funções - Reutilizar conexões",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Ajuste o WAF do Gateway de Aplicativo do Azure no modo de detecção para sua carga de trabalho. Reduza as detecções de falsos positivos.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "text": "Funções - Armazenar dados em cache localmente",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "Custar"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Implante sua política de WAF para Gateway de Aplicativo no modo 'Prevenção'.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "text": "Funções - Partidas a frio - Use a funcionalidade 'Executar do pacote'. Dessa forma, o código é baixado como um único arquivo zip. Isso pode, por exemplo, resultar em melhorias significativas com as funções Javascript, que possuem muitos módulos de nó. Use ferramentas específicas de linguagem para reduzir o tamanho do pacote, por exemplo, aplicativos Javascript que agitam árvores.",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Adicione a limitação de taxa ao WAF do Gateway de Aplicativo do Azure. A limitação de taxa bloqueia os clientes que enviam acidentalmente ou intencionalmente grandes quantidades de tráfego em um curto período de tempo.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "text": "Funções - Mantenha suas funções aquecidas",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Use um limite alto para os limites de taxa do WAF do Gateway de Aplicativo do Azure. Os limites de limite de taxa altos evitam o bloqueio do tráfego legítimo, ao mesmo tempo em que fornecem proteção contra números extremamente altos de solicitações que podem sobrecarregar sua infraestrutura. ",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "text": "Ao usar o dimensionamento automático com funções diferentes, pode haver um que conduza todo o dimensionamento automático para todos os recursos - considere movê-lo para um plano de consumo separado (e considere um plano mais alto para a CPU)",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "severity": "Baixo",
+ "text": "Se você não estiver esperando tráfego de todas as regiões geográficas, use filtros geográficos para bloquear o tráfego de países não esperados.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "text": "Os aplicativos de função em um determinado plano são todos dimensionados juntos, portanto, quaisquer problemas com o dimensionamento podem afetar todos os aplicativos no plano.",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Especifique o local desconhecido (ZZ) ao filtrar geograficamente o tráfego com o WAF do Gateway de Aplicativo do Azure. Evite bloquear acidentalmente solicitações legítimas quando os endereços IP não puderem ser correspondidos geograficamente.",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "text": "Sou cobrado por 'tempo de espera'? Essa pergunta geralmente é feita no contexto de uma função C# que faz uma operação assíncrona e aguarda o resultado, por exemplo, aguardar Task.Delay(1000) ou aguardar cliente. GetAsync('http://google.com'). A resposta é sim - o segundo cálculo de GB é baseado na hora de início e término da função e no uso de memória durante esse período. O que realmente acontece ao longo desse tempo em termos de atividade da CPU não é levado em consideração no cálculo. Uma exceção a essa regra é se você estiver usando funções duráveis. Você não é cobrado pelo tempo gasto em espera em funções de orquestrador.aplique técnicas de modelagem de demanda sempre que possível (ambientes de desenvolvimento?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Use a versão mais recente do conjunto de regras do WAF do Gateway de Aplicativo do Azure. As atualizações do conjunto de regras são atualizadas regularmente para levar em conta o cenário de ameaças atual.",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "text": "Frontdoor - Desativar a página inicial padrãoNas configurações do aplicativo do seu aplicativo, defina AzureWebJobsDisableHomepage como true. Isso retornará um 204 (Sem Conteúdo) para o PoP para que apenas os dados de cabeçalho sejam retornados.",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Adicione configurações de diagnóstico para salvar os logs do WAF do Gateway de Aplicativo do Azure.",
+ "waf": "Operações"
},
{
"arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
"service": "Front Door",
- "text": "Frontdoor - Rota para algo que não retorna nada. Configure uma Função, Proxy de Função ou adicione uma rota em seu WebApp que retorne 200 (OK) e envie conteúdo nulo ou mínimo. A vantagem disso é que você poderá fazer logout quando for chamado.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "text": "Considere níveis de arquivamento para dados menos usados",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "text": "Verifique os tamanhos de disco em que o tamanho não corresponde à camada (ou seja, um disco de 513 GiB pagará um P30 (1TiB) e considere o redimensionamento",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "text": "Considere usar SSD padrão em vez de Premium ou Ultra sempre que possível",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "text": "Para contas de armazenamento, verifique se a camada escolhida não está somando encargos de transação (pode ser mais barato passar para a próxima camada)",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "text": "Para ASR, considere o uso de discos SSD padrão se o RPO/RTO e a taxa de transferência de replicação permitirem",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "text": "Contas de armazenamento: verifique o hot tier e/ou o GRS necessário",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "text": "Discos - valide o uso de discos SSD Premium em todos os lugares: por exemplo, não-prod pode trocar para SSD padrão ou SSD Premium sob demanda ",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "text": "Crie orçamentos para gerenciar custos e crie alertas que notifiquem automaticamente as partes interessadas sobre anomalias de gastos e riscos de gastos excessivos.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "text": "Exporte dados de custo para uma conta de armazenamento para análise de dados adicionais.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "text": "Controle os custos de um pool SQL dedicado pausando o recurso quando ele não estiver em uso.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "text": "Habilite o recurso de pausa automática do Apache Spark sem servidor e defina seu valor de tempo limite de acordo.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "text": "Crie várias definições de pool do Apache Spark de vários tamanhos.",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "text": "Adquira unidades de confirmação (SCU) do Azure Synapse por um ano com um plano de pré-compra para economizar nos custos do Azure Synapse Analytics.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Custar"
- },
- {
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "text": "Usar VMs spot para trabalhos interruptíveis: são VMs que podem ser licitadas e compradas a um preço com desconto, fornecendo uma solução econômica para cargas de trabalho não críticas.",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Custar"
+ "severity": "Média",
+ "text": "Adicione configurações de diagnóstico para salvar os logs do WAF do Azure Front Door.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "text": "Dimensionamento correto de todas as VMs",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Envie logs do WAF do Gateway de Aplicativo do Azure para o Microsoft Sentinel.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "text": "Trocar VM dimensionada com tamanhos normalizados e mais recentes",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Custar"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
+ "severity": "Média",
+ "text": "Envie logs do WAF do Azure Front Door para o Microsoft Sentinel.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "VMs de dimensionamento correto - comece com o monitoramento do uso abaixo de 5% e, em seguida, trabalhe até 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Defina a configuração do WAF do Gateway de Aplicativo do Azure como código. Usando o código, você pode adotar mais facilmente a nova versão do conjunto de regras e obter proteção adicional.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "A conteinerização de um aplicativo pode melhorar a densidade da VM e economizar dinheiro no dimensionamento",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "Custar"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Use as Políticas do WAF em vez da configuração herdada do WAF.",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
- "severity": "Alto",
- "text": "Verifique se os controladores de domínio ADDS estão implantados na assinatura de identidade no Azure nativo",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Filtre o tráfego de entrada nos back-ends para que eles aceitem apenas conexões da sub-rede do Gateway de Aplicativo, por exemplo, com NSGs.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"severity": "Média",
- "text": "Verifique se os sites e serviços do ADDS estão configurados para manter as solicitações de autenticação de recursos baseados no Azure (incluindo a Solução VMware do Azure) locais para o Azure",
+ "text": "Verifique se suas origens recebem apenas o tráfego da instância do Azure Front Door.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "Alto",
- "text": "Verifique se o vCenter está conectado ao ADDS para habilitar a autenticação com base em 'contas de usuário nomeadas'",
+ "text": "Você deve criptografar o tráfego para os servidores de back-end.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
- "severity": "Média",
- "text": "Verifique se a conexão do vCenter com o ADDS está usando um protocolo seguro (LDAPS)",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Você deve usar um Web Application Firewall.",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"severity": "Média",
- "text": "A conta do CloudAdmin no vCenter IdP é usada apenas como uma conta de emergência (break-glass)",
- "waf": "Segurança"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
- "severity": "Alto",
- "text": "Certifique-se de que o NSX-Manager esteja integrado a um provedor de identidade externo (LDAPS)",
+ "text": "Redirecionar HTTP para HTTPS",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
"severity": "Média",
- "text": "Foi criado um modelo RBAC para uso no VMware vSphere",
- "waf": "Segurança"
+ "text": "Use cookies gerenciados por gateway para direcionar o tráfego de uma sessão de usuário para o mesmo servidor para processamento",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
- "severity": "Média",
- "text": "As permissões RBAC devem ser concedidas em grupos ADDS e não em usuários específicos",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
+ "severity": "Alto",
+ "text": "Habilitar a drenagem de conexão durante atualizações de serviço planejadas para evitar a perda de conexão para membros existentes do pool de back-end",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
- "severity": "Alto",
- "text": "As permissões RBAC no recurso Solução VMware do Azure no Azure são 'bloqueadas' apenas para um conjunto limitado de proprietários",
- "waf": "Segurança"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "severity": "Baixo",
+ "text": "Crie páginas de erro personalizadas para exibir uma experiência de usuário personalizada",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
- "severity": "Alto",
- "text": "Certifique-se de que todas as funções personalizadas tenham escopo com autorizações permitidas do CloudAdmin",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Edite solicitações HTTP e cabeçalhos de resposta para facilitar o roteamento e a troca de informações entre o cliente e o servidor",
"waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "severity": "Alto",
- "text": "O modelo de conectividade correto da Solução VMware do Azure está selecionado para o caso de uso do cliente em mãos?",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Configure o Front Door para otimizar o roteamento de tráfego da Web global e o desempenho e a confiabilidade do usuário final de nível superior por meio de failover global rápido",
"waf": "Desempenho"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
- "severity": "Alto",
- "text": "Garantir que as conexões de Rota Expressa ou VPN do local para o Azure sejam monitoradas usando o 'monitor de conexão'",
- "waf": "Operações"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
+ "severity": "Média",
+ "text": "Usar o balanceamento de carga da camada de transporte",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"severity": "Média",
- "text": "Verifique se um monitor de conexão foi criado a partir de um recurso nativo do Azure para uma máquina virtual da Solução VMware do Azure para monitorar a conexão de Rota Expressa de back-end da Solução VMware do Azure",
- "waf": "Operações"
+ "text": "Configurar o roteamento com base no host ou no nome de domínio para vários aplicativos Web em um único gateway",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
"severity": "Média",
- "text": "Verifique se um monitor de conexão é criado a partir de um recurso local para uma máquina virtual da Solução VMware do Azure para monitorar a conectividade de ponta 2",
- "waf": "Operações"
+ "text": "Centralize o gerenciamento de certificados SSL para reduzir a sobrecarga de criptografia e descriptografia de um farm de servidores de back-end",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
+ "severity": "Baixo",
+ "text": "Usar o Gateway de Aplicativo para obter suporte nativo para protocolos WebSocket e HTTP/2",
+ "waf": "Segurança"
+ },
+ {
+ "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": "Quando o servidor de rotas for usado, certifique-se de que não mais de 1000 rotas sejam propagadas do servidor de rotas para o gateway ExR para o local (limite ARS).",
- "waf": "Operações"
+ "text": "Siga as proteções do Metaprompting para uma IA razoável",
+ "waf": "Excelência Operacional"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
+ "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": "O Gerenciamento de Identidades Privilegiadas é implementado para funções que gerenciam o recurso da Solução VMware do Azure no Portal do Azure (não são permitidas permissões permanentes)",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
+ "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": "Os relatórios de auditoria do Gerenciamento de Identidades Privilegiadas devem ser implementados para as funções PIM da Solução VMware do Azure",
- "waf": "Segurança"
+ "text": "Habilitar o monitoramento para suas instâncias AOAI",
+ "waf": "Excelência Operacional"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
- "severity": "Média",
- "text": "Se o uso do Gerenciamento de Identidades Privilegiadas estiver sendo usado, certifique-se de que uma conta válida habilitada para ID do Entra seja criada com um registro SMTP válido para notificações de substituição automática do Host da Solução VMware do Azure. (permissões permanentes necessárias)",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
+ "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": "Limitar o uso da conta do CloudAdmin apenas ao acesso de emergência",
- "waf": "Segurança"
+ "text": "Monitore o uso do token para evitar interrupções de serviço devido à capacidade",
+ "waf": "Excelência Operacional"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "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": "Criar funções RBAC personalizadas no vCenter para implementar um modelo de privilégios mínimos dentro do vCenter",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
- "severity": "Média",
- "text": "É um processo definido para alternar regularmente as credenciais cloudadmin (vCenter) e admin (NSX)",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
+ "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 um provedor de identidade centralizado a ser usado para cargas de trabalho (VMs) em execução na Solução VMware do Azure",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
- "severity": "Média",
- "text": "A filtragem de tráfego Leste-Oeste é implementada no NSX-T",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "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": "As cargas de trabalho na Solução VMware do Azure não são diretamente expostas à Internet. O tráfego é filtrado e inspecionado pelo Gateway de Aplicativo do Azure, pelo Firewall do Azure ou por soluções de terceiros",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
+ "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": "A auditoria e o registro em log são implementados para solicitações de entrada da Internet para cargas de trabalho baseadas na Solução VMware do Azure e na Solução VMware do Azure",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
- "severity": "Média",
- "text": "O monitoramento de sessão é implementado para conexões de saída da Internet a partir da Solução VMware do Azure ou cargas de trabalho baseadas na Solução VMware do Azure para identificar atividades suspeitas/mal-intencionadas",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "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": "A proteção padrão contra DDoS está habilitada na sub-rede do Gateway ExR/VPN no Azure",
- "waf": "Segurança"
+ "text": "Melhore a latência do sistema limitando os tamanhos dos tokens, as opções de streaming",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
+ "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": "Usar uma estação de trabalho de acesso privilegiado (PAW) dedicada para gerenciar a Solução VMware do Azure, o vCenter, o gerenciador NSX e o gerenciador HCX",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
- "severity": "Média",
- "text": "Habilitar a Detecção Avançada de Ameaças (Microsoft Defender for Cloud, também conhecido como ASC) para cargas de trabalho em execução na Solução VMware do Azure",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "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": "Usar o Azure ARC for Servers para controlar corretamente as cargas de trabalho em execução na Solução VMware do Azure usando tecnologias nativas do Azure (o Azure ARC for Azure VMware Solution ainda não está disponível)",
- "waf": "Segurança"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Garanta que as cargas de trabalho na Solução VMware do Azure usem criptografia de dados suficiente durante o tempo de execução (como criptografia de disco convidado e SQL TDE). (a criptografia vSAN em repouso é padrão)",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Quando a criptografia no convidado é usada, armazene chaves de criptografia no cofre de chaves do Azure quando possível",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
+ "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": "Considere usar o suporte estendido de atualização de segurança para cargas de trabalho em execução na Solução VMware do Azure (a Solução VMware do Azure é qualificada para ESU)",
- "waf": "Segurança"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
- "severity": "Alto",
- "text": "Certifique-se de que o método de redundância de dados vSAN apropriado seja usado (especificação RAID)",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
+ "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": "Certifique-se de que a política de falha na tolerância esteja em vigor para atender às suas necessidades de armazenamento vSAN",
+ "text": "Implemente novas tentativas e verificações de integridade com o padrão de Gateway como APIM",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
- "severity": "Alto",
- "text": "Certifique-se de ter solicitado cota suficiente, garantindo que você tenha considerado o crescimento e o requisito de recuperação de desastres",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
+ "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": "Certifique-se de que as restrições de acesso ao ESXi sejam compreendidas, há limites de acesso que podem afetar as soluções de terceiros 3rd.",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "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": "Certifique-se de ter uma política em torno da densidade e eficiência do host ESXi, tendo em mente o prazo de espera para solicitar novos nós",
- "waf": "Operações"
+ "text": "Implantar modelos ajustados separados entre regiões se o ajuste fino for empregado",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "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": "Garantir que um bom processo de gerenciamento de custos esteja em vigor para a Solução VMware do Azure - o Gerenciamento de Custos do Azure pode ser usado",
- "waf": "Custar"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
+ "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": "As instâncias reservadas do Azure são usadas para otimizar o custo de uso da Solução VMware do Azure",
- "waf": "Custar"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
- "severity": "Média",
- "text": "Considere o uso do Azure Private-Link ao usar outros Serviços Nativos do Azure",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "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": "Verifique se todos os recursos necessários residem na(s) mesma(s) zona(s) de disponibilidade do Azure",
- "waf": "Desempenho"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
- "severity": "Média",
- "text": "Habilitar cargas de trabalho de VM convidada do Microsoft Defender for Cloud for Azure VMware Solution",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "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": "Usar servidores habilitados para Arc do Azure para gerenciar suas cargas de trabalho de VM convidada da Solução VMware do Azure",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "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": "Habilitar o log de diagnóstico e de métrica na solução VMware do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
+ "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": "Implantar os agentes do Log Analytics nas cargas de trabalho da VM convidada da Solução VMware do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
- "severity": "Média",
- "text": "Verifique se você tem uma política e uma solução de backup documentadas e implementadas para cargas de trabalho de VM da Solução VMware do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
- "severity": "Média",
- "text": "Usar o Microsoft Defender for Cloud para monitoramento de conformidade de cargas de trabalho em execução no Azure VMware Solution",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"severity": "Média",
- "text": "São as linhas de base de conformidade aplicáveis adicionadas ao Microsoft Defender for Cloud",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
+ "service": "Azure OpenAI",
"severity": "Alto",
- "text": "A residência de dados foi avaliada ao selecionar regiões do Azure a serem usadas para a implantação da Solução VMware do Azure",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
- "severity": "Alto",
- "text": "As implicações do processamento de dados (modelo de prestador de serviços / consumidor de serviços) são claras e documentadas",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"severity": "Média",
- "text": "Considere o uso de CMK (Customer Managed Key) para vSAN somente se necessário por motivo(s) de conformidade.",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
+ "service": "Azure OpenAI",
"severity": "Alto",
- "text": "Criar painéis para habilitar os principais insights de monitoramento da Solução VMware do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
+ "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": "Criar alertas de aviso para limites críticos para alertas automáticos sobre o desempenho da solução VMware do Azure (CPU >80%, memória média >80%, vSAN >70%)",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "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": "Certifique-se de que o alerta crítico seja criado para monitorar se o consumo de vSAN está abaixo de 75%, pois esse é um limite de suporte do VMware",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
+ "service": "Azure OpenAI",
"severity": "Alto",
- "text": "Verifique se os alertas estão configurados para alertas e notificações de Integridade do Serviço do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
- "severity": "Média",
- "text": "Configurar o log da Solução VMware do Azure para ser enviado a uma conta de Armazenamento do Azure ou ao Azure EventHub para processamento",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Se for necessário um insight profundo no VMware vSphere: o vRealize Operations e/ou o vRealize Network Insights são usados na solução?",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "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": "Verifique se a política de armazenamento vSAN para VMs NÃO é a política de armazenamento padrão, pois essa política aplica provisionamento espesso",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
+ "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": "Verifique se as bibliotecas de conteúdo do vSphere não são colocadas no vSAN, pois o vSAN é um recurso finito",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "Azure OpenAI",
"severity": "Média",
- "text": "Certifique-se de que os repositórios de dados da solução de backup sejam armazenados fora do armazenamento vSAN. No nativo do Azure ou em um armazenamento de dados com backup de pool de discos",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
+ "service": "Azure OpenAI",
"severity": "Média",
- "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam gerenciadas de forma híbrida usando o Azure Arc for Servers (a Solução VMware do Arc for Azure está em visualização)",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
- "severity": "Média",
- "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam monitoradas usando o Azure Log Analytics e o Azure Monitor",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
- "severity": "Média",
- "text": "Incluir cargas de trabalho em execução na Solução VMware do Azure nas ferramentas de gerenciamento de atualizações existentes ou no Gerenciamento de Atualizações do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
- "severity": "Média",
- "text": "Usar a Política do Azure para integrar cargas de trabalho da Solução VMware do Azure nas soluções de Gerenciamento, Monitoramento e Segurança do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
- "severity": "Média",
- "text": "Garantir que as cargas de trabalho em execução na Solução VMware do Azure sejam integradas ao Microsoft Defender for Cloud",
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
- "severity": "Média",
- "text": "Certifique-se de que os backups não sejam armazenados no vSAN, pois o vSAN é um recurso finito",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
- "severity": "Média",
- "text": "Todas as soluções de DR foram consideradas e uma solução que é melhor para o seu negócio foi decidida? [SRM/JetStream/Zerto/Veeam/...]",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
- "severity": "Média",
- "text": "Usar o Azure Site Recovery quando a tecnologia de Recuperação de Desastres for IaaS nativa do Azure",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
+ "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": "Use planos de recuperação automatizados com qualquer uma das soluções de desastre, evite ao máximo tarefas manuais",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "Média",
- "text": "Usar o par de regiões geopolíticas como o ambiente secundário de recuperação de desastres",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
+ "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": "Use 2 espaços de endereço diferentes entre as regiões, por exemplo: 10.0.0.0/16 e 192.168.0.0/16 para as diferentes regiões",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
+ "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": "O ExpressRoute Global Reach será usado para conectividade entre as Nuvens Privadas da Solução VMware do Azure primária e secundária ou o roteamento é feito por meio de dispositivos virtuais de rede?",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
- "severity": "Média",
- "text": "Todas as soluções de backup foram consideradas e uma solução que é melhor para o seu negócio foi decidida? [ MABS/CommVault/Metallic.io/Veeam/ . ]",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
+ "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": "Implante sua solução de backup na mesma região que sua nuvem privada da Solução VMware do Azure",
- "waf": "Fiabilidade"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "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": "Implante sua solução de backup fora do vSan, em componentes nativos do Azure",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Existe um processo para solicitar uma restauração dos componentes VMware gerenciados pela Plataforma Azure?",
- "waf": "Fiabilidade"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Para implantações manuais, todas as configurações e implantações devem ser documentadas",
- "waf": "Operações"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Para implantações manuais, considere implementar bloqueios de recursos para evitar ações acidentais em sua nuvem privada de solução VMware do Azure",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Para implantações automatizadas, implante uma nuvem privada mínima e dimensione conforme necessário",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Para implantações automatizadas, solicite ou reserve cota antes de iniciar a implantação",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Para implantação automatizada, verifique se os bloqueios de recursos relevantes são criados por meio da automação ou da Política do Azure para uma governança adequada",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Implemente nomes humanos compreensíveis para chaves de autorização ExR para permitir a fácil identificação da finalidade/uso das chaves",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Usar o Cofre de chaves para armazenar segredos e chaves de autorização quando Princípios de Serviço separados são usados para implantar a Solução VMware do Azure e a Rota Expressa",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Defina dependências de recursos para serializar ações no IaC quando muitos recursos precisarem ser implantados no/na Solução VMware do Azure, pois a Solução VMware do Azure oferece suporte apenas a um número limitado de operações paralelas.",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "Baixo",
- "text": "Ao executar a configuração automatizada de segmentos NSX-T com um único gateway de Camada 1, use as APIs do Portal do Azure em vez das APIs do NSX-Manager",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
+ "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": "Ao pretender usar a expansão automatizada, certifique-se de aplicar cota suficiente da Solução VMware do Azure para as assinaturas que executam a Solução VMware do Azure",
- "waf": "Desempenho"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
+ "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": "Ao pretender usar o scale-in automatizado, certifique-se de levar em consideração os requisitos da política de armazenamento antes de executar essa ação",
- "waf": "Desempenho"
+ "text": "Use técnicas de engenharia rápida para melhorar a precisão das respostas do LLM",
+ "waf": "Excelência Operacional"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "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": "As operações de dimensionamento sempre precisam ser serializadas em um único SDDC, pois apenas uma operação de escala pode ser executada por vez (mesmo quando vários clusters são usados)",
- "waf": "Desempenho"
+ "text": "Equipe vermelha de seus aplicativos GenAI",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "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": "Considerar e validar operações de dimensionamento em soluções de terceiros 3rd usadas na arquitetura (suportadas ou não)",
- "waf": "Desempenho"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
- "severity": "Média",
- "text": "Definir e impor limites máximos de entrada/saída de escala para seu ambiente nas automações",
- "waf": "Desempenho"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
+ "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": "Implementar regras de monitoramento para monitorar operações de dimensionamento automatizadas e monitorar o sucesso e a falha para habilitar respostas apropriadas (automatizadas)",
- "waf": "Operações"
+ "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.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
- "severity": "Alto",
- "text": "Ao usar o MON, esteja ciente dos limites de VMs configuradas simulataneamente (MON Limit for HCX [400 - standard, 1000 - Larger appliance])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
+ "severity": "Média",
+ "text": "Aproveite o servidor flexível",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
"severity": "Alto",
- "text": "Ao usar o MON, você não pode habilitar o MON em mais de 100 extensões de rede",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "Aproveite as zonas de disponibilidade quando aplicável regionalmente",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"severity": "Média",
- "text": "Se estiver usando uma conexão VPN para migrações, ajuste o tamanho da MTU de acordo.",
- "waf": "Desempenho"
+ "text": "Aproveite a replicação de dados para cenários de DR entre regiões",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
- "severity": "Média",
- "text": "Para regiões de baixa conectividade conectadas ao Azure (500Mbps ou menos), considere implantar o dispositivo de otimização de WAN HCX",
- "waf": "Desempenho"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
+ "text": "Regras de coleta de dados no Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
- "severity": "Média",
- "text": "Certifique-se de que as migrações sejam iniciadas a partir do dispositivo local e NÃO do dispositivo em nuvem (NÃO execute uma migração reversa)",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "text": "Verificar instâncias de backup com a fonte de dados subjacente não encontrada",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "severity": "Média",
- "text": "Quando o Azure Netapp Files for usado para estender o armazenamento para a Solução VMware do Azure, considere usá-lo como um armazenamento de dados VMware em vez de anexá-lo diretamente a uma VM.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "text": "Excluir ou arquivar serviços não associados (discos, nics, endereços IP etc.)",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
- "severity": "Média",
- "text": "Verifique se um ExpressRoute Gateway dedicado está sendo usado para soluções de armazenamento de dados externos",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
+ "text": "Considere um bom equilíbrio entre recuperação de local, armazenamento e backup para aplicativos não essenciais",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "text": "Verifique os gastos e as oportunidades de economia entre os 40 diferentes espaços de trabalho de análise de log - use retenção e coleta de dados diferentes para espaços de trabalho não prod - crie limite diário para reconhecimento e dimensionamento de camadas - Se você definir um limite diário, além de criar um alerta quando o limite for atingido, certifique-se de também criar uma regra de alerta para ser notificado quando alguma porcentagem for atingida (90%, por exemplo). - considerar a transformação do espaço de trabalho, se possível - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
+ "text": "Impor uma política de log de limpeza e automação (se necessário, os logs podem ser movidos para armazenamento frio)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "text": "Verifique se os discos são realmente necessários, se não: excluir. Se forem necessários, encontre níveis de armazenamento mais baixos ou use backup -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "text": "Considere mover o armazenamento não utilizado para o nível inferior, com regra personalizada - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure ",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
- "severity": "Média",
- "text": "Verifique se o FastPath está habilitado no ExpressRoute Gateway que está sendo usado para soluções de armazenamento de dados externos",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "text": "Verifique se o Advisor está configurado para o dimensionamento correto da VM ",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "severity": "Alto",
- "text": "Se estiver usando cluster estendido, verifique se a solução de recuperação de desastres selecionada é suportada pelo fornecedor",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "verifique pesquisando as Licenças de Categoria de Medidor na Análise de Custos",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "text": "executar o script em todas as VMs do Windows https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server- considere implementar uma diretiva se as VMs do Windows forem criadas com frequência",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "severity": "Alto",
- "text": "Se estiver usando cluster estendido, verifique se o SLA fornecido atenderá aos seus requisitos",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
+ "text": " isso também pode ser colocado no AHUB se você já tiver licenças https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
- "severity": "Alto",
- "text": "Se estiver usando cluster estendido, verifique se ambos os circuitos da Rota Expressa estão conectados ao hub de conectividade.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "text": "Consolidar famílias de VM reservadas com opção de flexibilidade (não mais do que 4-5 famílias)",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "Alto",
- "text": "Se estiver usando cluster estendido, verifique se ambos os circuitos da Rota Expressa têm o GlobalReach habilitado.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "text": "Utilize instâncias reservadas do Azure: esse recurso permite reservar VMs por um período de 1 ou 3 anos, proporcionando uma economia significativa em comparação com os preços do PAYG.",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
- "severity": "Alto",
- "text": "Faça com que as configurações de tolerância a desastres do site tenham sido devidamente consideradas e alteradas para sua empresa, se necessário.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "text": "Somente discos maiores podem ser reservados => 1 TiB -",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
- "service": "SAP",
- "severity": "Média",
- "text": "O Azure Center for SAP solutions (ACSS) é uma oferta do Azure que torna o SAP uma carga de trabalho de nível superior no Azure. O ACSS é uma solução de ponta a ponta que permite criar e executar sistemas SAP como uma carga de trabalho unificada no Azure e fornece uma base mais perfeita para a inovação. Você pode aproveitar os recursos de gerenciamento para sistemas SAP novos e existentes baseados no Azure.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
- "waf": "Operações"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "text": "Após a otimização do dimensionamento correto",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
- "service": "SAP",
- "severity": "Média",
- "text": "O Azure dá suporte à automação de implantações SAP no Linux e no Windows. O SAP Deployment Automation Framework é uma ferramenta de orquestração de código aberto que pode implantar, instalar e manter ambientes SAP.",
- "training": "https://github.com/Azure/sap-automation",
- "waf": "Operações"
+ "arm-service": "Microsoft.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "text": "Verifique se aplicável e aplique a política/alteração 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",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
- "service": "SAP",
- "severity": "Média",
- "text": "Executar uma recuperação point-in-time para seus bancos de dados de produção em qualquer ponto e em um período de tempo que atenda ao seu RTO; A recuperação point-in-time normalmente inclui erros do operador excluindo dados na camada DBMS ou por meio do SAP, incidentalmente",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "text": "O desconto da peça de licença VM + (ahub + 3YRI) é de cerca de 70% de desconto",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
- "service": "SAP",
- "severity": "Média",
- "text": "Teste os tempos de backup e recuperação para verificar se eles atendem aos requisitos de RTO para restaurar todos os sistemas simultaneamente após um desastre.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
+ "text": "Considere o uso de um VMSS para corresponder à demanda em vez de dimensionamento simples",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
"link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "SAP",
- "severity": "Alto",
- "text": "Você pode replicar o armazenamento padrão entre regiões emparelhadas, mas não pode usar o armazenamento padrão para armazenar seus bancos de dados ou discos rígidos virtuais. Você pode replicar backups somente entre regiões emparelhadas que você usa. Para todos os outros dados, execute sua replicação usando recursos nativos de DBMS, como SQL Server Always On ou SAP HANA System Replication. Use uma combinação de Site Recovery, rsync ou robocopy e outros softwares de terceiros para a camada de aplicativos SAP.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Fiabilidade"
+ "service": "AKS",
+ "text": "Use o autoscaler AKS para corresponder ao uso de clusters (verifique se os requisitos dos pods correspondem ao dimensionador)",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
- "severity": "Média",
- "text": "Ao usar as Zonas de Disponibilidade do Azure para obter alta disponibilidade, você deve considerar a latência entre servidores de aplicativos SAP e servidores de banco de dados. Para zonas com altas latências, os procedimentos operacionais precisam estar em vigor para garantir que os servidores de aplicativos SAP e os servidores de banco de dados estejam sendo executados na mesma zona o tempo todo.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "text": "Mover pontos de recuperação para o vault-archive, quando aplicável (Validar)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "SAP",
- "severity": "Alto",
- "text": "Configure conexões de Rota Expressa do local para as regiões primária e secundária de recuperação de desastres do Azure. Além disso, como alternativa ao uso da Rota Expressa, considere configurar conexões VPN locais para as regiões primária e secundária de recuperação de desastres do Azure.",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "text": "Considere o uso de VMs spot com fallback sempre que possível. Considere o autotermination de clusters.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Replique o conteúdo do cofre de chaves, como certificados, segredos ou chaves entre regiões, para que você possa descriptografar dados na região de recuperação de desastres.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "text": "Funções - Reutilizar conexões",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
- "service": "SAP",
- "severity": "Média",
- "text": "Emparelhar as redes virtuais primária e de recuperação de desastres. Por exemplo, para a replicação do sistema HANA, uma rede virtual SAP HANA DB precisa ser emparelhada para a rede virtual SAP HANA DB do site de recuperação de desastres.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "text": "Funções - Armazenar dados em cache localmente",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Se você usar o armazenamento do Azure NetApp Files para suas implantações SAP, no mínimo, crie duas contas do Azure NetApp Files na camada Premium, em duas regiões.",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
+ "text": "Funções - Partidas a frio - Use a funcionalidade 'Executar do pacote'. Dessa forma, o código é baixado como um único arquivo zip. Isso pode, por exemplo, resultar em melhorias significativas com as funções Javascript, que possuem muitos módulos de nó. Use ferramentas específicas de linguagem para reduzir o tamanho do pacote, por exemplo, aplicativos Javascript que agitam árvores.",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "Custar"
},
- {
- "checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
- "severity": "Alto",
- "text": "A tecnologia de replicação de banco de dados nativo deve ser usada para sincronizar o banco de dados em um par de HA.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "Fiabilidade"
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
+ "text": "Funções - Mantenha suas funções aquecidas",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
- "service": "SAP",
- "severity": "Alto",
- "text": "O CIDR da rede virtual primária (VNet) não deve entrar em conflito ou se sobrepor ao CIDR da VNet do site de recuperação de desastres",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "text": "Ao usar o dimensionamento automático com funções diferentes, pode haver um que conduza todo o dimensionamento automático para todos os recursos - considere movê-lo para um plano de consumo separado (e considere um plano mais alto para a CPU)",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use a Recuperação de Site para replicar um servidor de aplicativos para um site de recuperação de desastres. A Recuperação de Site também pode ajudar na replicação de VMs de cluster de serviços centrais para o site de recuperação de desastres. Ao invocar o DR, você precisará reconfigurar o cluster do Linux Pacemaker no site de DR (por exemplo, substitua o VIP ou o SBD, execute o corosync.conf e muito mais).",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "text": "Os aplicativos de função em um determinado plano são todos dimensionados juntos, portanto, quaisquer problemas com o dimensionamento podem afetar todos os aplicativos no plano.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Alto",
- "text": "Considere a disponibilidade do software SAP em relação a pontos únicos de falha. Isso inclui pontos únicos de falha em aplicativos como SGBDs utilizados nas arquiteturas SAP NetWeaver e SAP S/4HANA, SAP ABAP e ASCS + SCS. Além disso, outras ferramentas, como o SAP Web Dispatcher.",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "text": "Sou cobrado por 'tempo de espera'? Essa pergunta geralmente é feita no contexto de uma função C# que faz uma operação assíncrona e aguarda o resultado, por exemplo, aguardar Task.Delay(1000) ou aguardar cliente. GetAsync('http://google.com'). A resposta é sim - o segundo cálculo de GB é baseado na hora de início e término da função e no uso de memória durante esse período. O que realmente acontece ao longo desse tempo em termos de atividade da CPU não é levado em consideração no cálculo. Uma exceção a essa regra é se você estiver usando funções duráveis. Você não é cobrado pelo tempo gasto em espera em funções de orquestrador.aplique técnicas de modelagem de demanda sempre que possível (ambientes de desenvolvimento?) https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
- "service": "SAP",
- "severity": "Alto",
- "text": "Para bancos de dados SAP e SAP, considere a implementação de clusters de failover automático. No Windows, o Clustering de Failover do Windows Server oferece suporte a failover. No Linux, Linux Pacemaker ou ferramentas de terceiros como SIOS Protection Suite e Veritas InfoScale suportam failover.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
+ "text": "Frontdoor - Desativar a página inicial padrãoNas configurações do aplicativo do seu aplicativo, defina AzureWebJobsDisableHomepage como true. Isso retornará um 204 (Sem Conteúdo) para o PoP para que apenas os dados de cabeçalho sejam retornados.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
- "severity": "Alto",
- "text": "O Azure não oferece suporte a arquiteturas nas quais as VMs primária e secundária compartilham armazenamento para dados DBMS. Para a camada DBMS, o padrão de arquitetura comum é replicar bancos de dados ao mesmo tempo e com pilhas de armazenamento diferentes daquelas que as VMs primária e secundária usam.",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
+ "text": "Frontdoor - Rota para algo que não retorna nada. Configure uma Função, Proxy de Função ou adicione uma rota em seu WebApp que retorne 200 (OK) e envie conteúdo nulo ou mínimo. A vantagem disso é que você poderá fazer logout quando for chamado.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
- "service": "SAP",
- "severity": "Alto",
- "text": "Os dados do DBMS e os arquivos de log de transação/refazer são armazenados no armazenamento em bloco com suporte do Azure ou nos Arquivos do Azure NetApp. Os Arquivos do Azure ou os Arquivos Premium do Azure não têm suporte como armazenamento para dados DBMS e/ou arquivos de log de refazer com a carga de trabalho SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
+ "text": "Considere níveis de arquivamento para dados menos usados",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
- "service": "SAP",
- "severity": "Alto",
- "text": "Você pode usar discos compartilhados do Azure no Windows para componentes ASCS + SCS e cenários específicos de alta disponibilidade. Configure seus clusters de failover separadamente para componentes da camada de aplicativo SAP e a camada DBMS. No momento, o Azure não oferece suporte a arquiteturas de alta disponibilidade que combinam componentes da camada de aplicativo SAP e a camada DBMS em um cluster de failover.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "text": "Verifique os tamanhos de disco em que o tamanho não corresponde à camada (ou seja, um disco de 513 GiB pagará um P30 (1TiB) e considere o redimensionamento",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
- "service": "SAP",
- "severity": "Alto",
- "text": "A maioria dos clusters de failover para ASCS (Application Layer Components, componentes da camada de aplicativo) SAP e a camada DBMS exigem um endereço IP virtual para um cluster de failover. O Balanceador de Carga do Azure deve manipular o endereço IP virtual para todos os outros casos. Um princípio de design é usar um balanceador de carga por configuração de cluster. Recomendamos que você use a versão padrão do balanceador de carga (SKU do Standard Load Balancer).",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "text": "Considere usar SSD padrão em vez de Premium ou Ultra sempre que possível",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
- "service": "SAP",
- "severity": "Alto",
- "text": "Verifique se o IP flutuante está habilitado no balanceador de carga",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "text": "Para contas de armazenamento, verifique se a camada escolhida não está somando encargos de transação (pode ser mais barato passar para a próxima camada)",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "SAP",
- "severity": "Alto",
- "text": "Antes de implantar sua infraestrutura de alta disponibilidade, e dependendo da região escolhida, determine se deseja implantar com um conjunto de disponibilidade do Azure ou uma zona de disponibilidade.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "text": "Para ASR, considere o uso de discos SSD padrão se o RPO/RTO e a taxa de transferência de replicação permitirem",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
- "service": "SAP",
- "severity": "Alto",
- "text": "Se desejar atender aos SLAs de infraestrutura de seus aplicativos para componentes SAP (serviços centrais, servidores de aplicativos e bancos de dados), você deverá escolher as mesmas opções de alta disponibilidade (VMs, conjuntos de disponibilidade, zonas de disponibilidade) para todos os componentes.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
+ "text": "Contas de armazenamento: verifique o hot tier e/ou o GRS necessário",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
- "severity": "Alto",
- "text": "Não misture servidores de funções diferentes no mesmo conjunto de disponibilidade. Mantenha VMs de serviços centrais, VMs de banco de dados, VMs de aplicativos em seus próprios conjuntos de disponibilidade",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
+ "text": "Discos - valide o uso de discos SSD Premium em todos os lugares: por exemplo, não-prod pode trocar para SSD padrão ou SSD Premium sob demanda ",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
- "service": "SAP",
- "severity": "Média",
- "text": "Você não pode implantar conjuntos de disponibilidade do Azure em uma zona de disponibilidade do Azure, a menos que use grupos de posicionamento de proximidade.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "text": "Crie orçamentos para gerenciar custos e crie alertas que notifiquem automaticamente as partes interessadas sobre anomalias de gastos e riscos de gastos excessivos.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
- "severity": "Alto",
- "text": "Ao criar conjuntos de disponibilidade, use o número máximo de domínios de falha e atualize domínios disponíveis. Por exemplo, se você implantar mais de duas VMs em um conjunto de disponibilidade, use o número máximo de domínios de falha (três) e domínios de atualização suficientes para limitar o efeito de possíveis falhas de hardware físico, interrupções de rede ou interrupções de energia, além da manutenção planejada do Azure. O número padrão de domínios de falha é dois e você não pode alterá-lo online mais tarde.",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
+ "text": "Exporte dados de custo para uma conta de armazenamento para análise de dados adicionais.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Alto",
- "text": "Quando você usa grupos de posicionamento de proximidade do Azure em uma implantação de conjunto de disponibilidade, todos os três componentes SAP (serviços centrais, servidor de aplicativos e banco de dados) devem estar no mesmo grupo de posicionamento de proximidade.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "text": "Controle os custos de um pool SQL dedicado pausando o recurso quando ele não estiver em uso.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use um grupo de posicionamento de proximidade por SAP SID. Os grupos não se estendem por zonas de disponibilidade ou regiões do Azure",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "text": "Habilite o recurso de pausa automática do Apache Spark sem servidor e defina seu valor de tempo limite de acordo.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Alto",
- "text": "Use um dos seguintes serviços para executar clusters de serviços centrais SAP, dependendo do sistema operacional.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "text": "Crie várias definições de pool do Apache Spark de vários tamanhos.",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
- "service": "SAP",
- "severity": "Média",
- "text": "No momento, o Azure não oferece suporte à combinação de ASCS e HA de banco de dados no mesmo cluster do Linux Pacemaker; Separe-os em agrupamentos individuais. No entanto, você pode combinar até cinco clusters de serviços centrais em um par de VMs.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "text": "Adquira unidades de confirmação (SCU) do Azure Synapse por um ano com um plano de pré-compra para economizar nos custos do Azure Synapse Analytics.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "Média",
- "text": "Implante ambas as VMs no par de alta disponibilidade em um conjunto de disponibilidade ou em zonas de disponibilidade. Essas VMs devem ter o mesmo tamanho e a mesma configuração de armazenamento.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "text": "Usar VMs spot para trabalhos interruptíveis: são VMs que podem ser licitadas e compradas a um preço com desconto, fornecendo uma solução econômica para cargas de trabalho não críticas.",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
- "service": "SAP",
- "severity": "Média",
- "text": "O Azure oferece suporte à instalação e configuração de instâncias SAP HANA e ASCS/SCS e ERS no mesmo cluster de alta disponibilidade em execução no Red Hat Enterprise Linux (RHEL).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "text": "Dimensionamento correto de todas as VMs",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
- "severity": "Alto",
- "text": "Execute todos os sistemas de produção em SSDs gerenciados Premium e use o Azure NetApp Files ou o Ultra Disk Storage. Pelo menos o disco do sistema operacional deve estar na camada Premium para que você possa obter melhor desempenho e o melhor SLA.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "text": "Trocar VM dimensionada com tamanhos normalizados e mais recentes",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
- "service": "SAP",
- "severity": "Alto",
- "text": "Você deve executar o SAP HANA no Azure somente nos tipos de armazenamento certificados pela SAP. Observe que determinados volumes devem ser executados em determinadas configurações de disco, quando aplicável. Essas configurações incluem a habilitação do Acelerador de Gravação e o uso do armazenamento Premium. Você também precisa garantir que o sistema de arquivos executado no armazenamento seja compatível com o DBMS executado na máquina.",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "VMs de dimensionamento correto - comece com o monitoramento do uso abaixo de 5% e, em seguida, trabalhe até 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
- "service": "SAP",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "A conteinerização de um aplicativo pode melhorar a densidade da VM e economizar dinheiro no dimensionamento",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "Custar"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Considere configurar a alta disponibilidade dependendo do tipo de armazenamento usado para suas cargas de trabalho SAP. Alguns serviços de armazenamento disponíveis no Azure não têm suporte no Azure Site Recovery, portanto, sua configuração de alta disponibilidade pode ser diferente.",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "text": "Selecione o plano de hospedagem de função certo com base em seus requisitos de negócios e SLO",
"waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Diferentes serviços de armazenamento nativos do Azure (como Arquivos do Azure, Arquivos do Azure NetApp, Disco Compartilhado do Azure) podem não estar disponíveis em todas as regiões. Portanto, para ter uma configuração SAP semelhante na região de DR após o failover, certifique-se de que o respectivo serviço de armazenamento seja oferecido no local de DR.",
+ "text": "Aproveitar zonas de disponibilidade quando aplicável regionalmente (não disponível para a camada de consumo)",
"waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "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",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
"severity": "Média",
- "text": "Automatize o Start-Stop do sistema SAP para gerenciar custos.",
- "waf": "Custar"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
- "severity": "Baixo",
- "text": "No caso de usar o Armazenamento Premium do Azure com o SAP HANA, o armazenamento SSD padrão do Azure pode ser usado para selecionar uma solução de armazenamento econômica. No entanto, observe que escolher o armazenamento padrão SSD ou HDD padrão do Azure afetará o SLA das VMs individuais. Além disso, para sistemas com menor taxa de transferência de E/S e baixa latência, como ambientes que não são de produção, VMs de série mais baixa podem ser usadas.",
- "waf": "Custar"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Como uma configuração alternativa de baixo custo (multiuso), você pode escolher uma SKU de baixo desempenho para suas VMs de servidor de banco de dados HANA que não são de produção. No entanto, é importante observar que alguns tipos de VM, como a série E, não são certificados pelo HANA (SAP HANA Hardware Directory) ou não podem atingir latência de armazenamento inferior a 1ms.",
- "waf": "Custar"
+ "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
- "service": "SAP",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "Alto",
- "text": "Impor um modelo RBAC para grupos de gerenciamento, assinaturas, grupos de recursos e recursos",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Segurança"
+ "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
- "severity": "Média",
- "text": "Impor a propagação principal para encaminhar a identidade do aplicativo de nuvem SAP para o SAP local (incluindo IaaS) por meio do conector de nuvem",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
- "waf": "Segurança"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
+ "severity": "Alto",
+ "text": "Verifique se 'Sempre Ativado' está habilitado para todos os Aplicativos de Função em execução no Plano do Serviço de Aplicativo",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "Média",
- "text": "Implemente SSO em aplicativos SAP SaaS como SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics e SAP C4C com o Azure AD usando SAML.",
- "waf": "Segurança"
+ "text": "Emparelhe um aplicativo de função com sua própria conta de armazenamento. Tente não reutilizar contas de armazenamento para aplicativos de função, a menos que eles estejam firmemente acoplados",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
"severity": "Média",
- "text": "Implemente SSO em aplicativos Web baseados no SAP NetWeaver, como SAP Fiori e SAP Web GUI, usando SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Segurança"
+ "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código do Aplicativo de Função",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
- "service": "SAP",
- "severity": "Média",
- "text": "Implemente SSO em aplicativos Web baseados no SAP NetWeaver, como SAP Fiori e SAP Web GUI, usando SAML.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "Baixo",
+ "text": "Consulte a arquitetura de aplicativo Web com redundância de zona altamente disponível da linha de base para obter as práticas recomendadas",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "Média",
- "text": "Você pode implementar o SSO no SAP GUI usando o SAP NetWeaver SSO ou uma solução de parceiro.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "Segurança"
+ "text": "Use as camadas Premium e Standard. Esses níveis oferecem suporte a slots de preparo e backups automatizados.",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
- "service": "SAP",
- "severity": "Média",
- "text": "Para SSO para SAP GUI e acesso ao navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociação GSSAPI simples e protegido) devido a sua facilidade de configuração e manutenção. Para SSO com certificados de cliente X.509, considere o SAP Secure Login Server, que é um componente da solução SAP SSO.",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Aproveite as zonas de disponibilidade quando aplicável regionalmente (requer a camada Premium v2 ou v3)",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "Média",
- "text": "Para SSO para SAP GUI e acesso ao navegador web, implemente SNC / Kerberos / SPNEGO (mecanismo de negociação GSSAPI simples e protegido) devido a sua facilidade de configuração e manutenção. Para SSO com certificados de cliente X.509, considere o SAP Secure Login Server, que é um componente da solução SAP SSO.",
- "waf": "Segurança"
+ "text": "Implementar verificações de integridade",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
- "service": "SAP",
- "severity": "Média",
- "text": "Implemente o SSO usando o OAuth for SAP NetWeaver para permitir que aplicativos de terceiros ou personalizados acessem os serviços OData do SAP NetWeaver.",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Consulte as práticas recomendadas de backup e restauração para o Serviço de Aplicativo do Azure",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
- "service": "SAP",
- "severity": "Média",
- "text": "Implementar SSO no SAP HANA",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Implementar práticas recomendadas de confiabilidade do Serviço de Aplicativo do Azure",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
- "service": "SAP",
- "severity": "Média",
- "text": "Considere o Azure AD um provedor de identidade para sistemas SAP hospedados no RISE. Para obter mais informações, consulte Integrando o serviço ao Azure AD.",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
+ "severity": "Baixo",
+ "text": "Familiarizar-se com como mover um aplicativo do Serviço de Aplicativo para outra região durante um desastre",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
- "service": "SAP",
- "severity": "Média",
- "text": "Para aplicativos que acessam o SAP, convém usar a propagação principal para estabelecer o SSO.",
- "waf": "Segurança"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Familiarizar-se com o suporte de confiabilidade no Serviço de Aplicativo do Azure",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"severity": "Média",
- "text": "Se você estiver usando serviços SAP BTP ou soluções SaaS que exigem o SAP Identity Authentication Service (IAS), considere implementar SSO entre o SAP Cloud Identity Authentication Services e o Azure AD para acessar esses serviços SAP. Essa integração permite que o SAP IAS atue como um provedor de identidade de proxy e encaminhe solicitações de autenticação para o Azure AD como o repositório central do usuário e o provedor de identidade.",
- "waf": "Segurança"
+ "text": "Verifique se \"Sempre Ativo\" está habilitado para Aplicativos de Função em execução em um plano de serviço de aplicativo",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "Média",
- "text": "Implementar SSO no SAP BTP",
- "waf": "Segurança"
+ "text": "Monitorar instâncias do Serviço de Aplicativo usando verificações de integridade",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"severity": "Média",
- "text": "Se você estiver usando o SAP SuccessFactors, considere usar o provisionamento automatizado de usuários do Azure AD. Com essa integração, à medida que você adiciona novos funcionários ao SAP SuccessFactors, pode criar automaticamente suas contas de usuário no Azure AD. Opcionalmente, você pode criar contas de usuário no Microsoft 365 ou em outros aplicativos SaaS com suporte no Azure AD. Use write-back do endereço de e-mail para SAP SuccessFactors.",
- "waf": "Segurança"
+ "text": "Monitorar a disponibilidade e a capacidade de resposta do aplicativo Web ou site usando testes de disponibilidade do Application Insights",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
- "service": "SAP",
- "severity": "Média",
- "text": "impor políticas existentes do Grupo de Gerenciamento às assinaturas SAP",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
+ "severity": "Baixo",
+ "text": "Usar o teste Application Insights Standard para monitorar a disponibilidade e a capacidade de resposta do aplicativo Web ou site",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use o Cofre de Chaves do Azure para armazenar quaisquer segredos de que o aplicativo precisa. O Cofre de Chaves fornece um ambiente seguro e auditado para armazenar segredos e está bem integrado ao Serviço de Aplicativo por meio do SDK do Cofre de Chaves ou das Referências do Cofre de Chaves do Serviço de Aplicativo.",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"severity": "Alto",
- "text": "Integre aplicativos fortemente acoplados na mesma assinatura SAP para evitar complexidade adicional de roteamento e gerenciamento",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
- "waf": "Operações"
+ "text": "Usar o Cofre de Chaves para armazenar segredos",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use uma Identidade Gerenciada para se conectar ao Cofre de Chaves usando o SDK do Cofre de Chaves ou por meio das Referências do Cofre de Chaves do Serviço de Aplicativo.",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
"severity": "Alto",
- "text": "Aproveite a assinatura como unidade de escala e dimensione nossos recursos, considere implantar a assinatura por ambiente, por exemplo. Sandbox, não-prod, prod ",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
- "waf": "Operações"
+ "text": "Usar a Identidade Gerenciada para se conectar ao Cofre de Chaves",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Armazene o certificado TLS do Serviço de Aplicativo no Cofre de Chaves.",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
"severity": "Alto",
- "text": "Garantir o aumento da cota como parte do provisionamento de assinatura (por exemplo, total de núcleos de VM disponíveis em uma assinatura)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "waf": "Operações"
+ "text": "Use o Cofre de Chaves para armazenar o certificado TLS.",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
- "severity": "Baixo",
- "text": "A API de Cota é uma API REST que você pode usar para exibir e gerenciar cotas para serviços do Azure. Considere usá-lo, se necessário.",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Os sistemas que processam informações confidenciais devem ser isolados. Para fazer isso, use Planos do Serviço de Aplicativo ou Ambientes do Serviço de Aplicativo separados e considere o uso de assinaturas ou grupos de gerenciamento diferentes.",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
+ "severity": "Média",
+ "text": "Isolar sistemas que processam informações confidenciais",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
- "service": "SAP",
- "severity": "Alto",
- "text": "Se estiver implantando em uma zona de disponibilidade, verifique se a implantação da zona da VM estará disponível depois que a cota for aprovada. Envie uma solicitação de suporte com a assinatura, a série VM, o número de CPUs e a zona de disponibilidade necessárias.",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Os discos locais no Serviço de Aplicativo não são criptografados e os dados confidenciais não devem ser armazenados neles. (Por exemplo: D:\\\\Local e %TMP%).",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
+ "severity": "Média",
+ "text": "Não armazene dados confidenciais no disco local",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
- "severity": "Alto",
- "text": "Certifique-se de que os serviços e recursos necessários estejam disponíveis nas regiões de implantação escolhidas, por exemplo. ANF, Zona etc.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Para aplicativos Web autenticados, use um Provedor de Identidade bem estabelecido, como o Azure AD ou o Azure AD B2C. Aproveite a estrutura de aplicativo de sua escolha para se integrar a esse provedor ou use o recurso de Autenticação/Autorização do Serviço de Aplicativo.",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
+ "severity": "Média",
+ "text": "Usar um provedor de identidade estabelecido para autenticação",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
- "service": "SAP",
- "severity": "Média",
- "text": "Aproveite a marca de recurso do Azure para categorização de custos e agrupamento de recursos (: BillTo, Departamento (ou Unidade de Negócios), Ambiente (Produção, Estágio, Desenvolvimento), Camada (Camada da Web, Camada de Aplicativo), Proprietário do Aplicativo, ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Implante código no Serviço de Aplicativo a partir de um ambiente controlado e confiável, como um pipeline de implantação de DevOps bem gerenciado e seguro. Isso evita que o código que não foi controlado por versão e verificado para ser implantado a partir de um host mal-intencionado.",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Implantar a partir de um ambiente confiável",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Desative a autenticação básica para FTP/FTPS e WebDeploy/SCM. Isso desabilita o acesso a esses serviços e impõe o uso de pontos de extremidade protegidos do Azure AD para implantação. Observe que o site do SCM também pode ser aberto usando credenciais do Azure AD.",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
"severity": "Alto",
- "text": "Ajude a proteger seu banco de dados HANA usando o serviço de Backup do Azure.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Fiabilidade"
+ "text": "Desabilitar a autenticação básica",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
- "service": "SAP",
- "severity": "Média",
- "text": "Se você implantar os Arquivos NetApp do Azure para seu banco de dados HANA, Oracle ou DB2, use a ferramenta Azure Application Consistent Snapshot (AzAcSnap) para tirar instantâneos consistentes com o aplicativo. O AzAcSnap também suporta bancos de dados Oracle. Considere usar o AzAcSnap em uma VM central em vez de em VMs individuais.",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Sempre que possível, use a Identidade Gerenciada para se conectar aos recursos protegidos do Azure AD. Se isso não for possível, armazene segredos no Cofre de Chaves e conecte-se ao Cofre de Chaves usando uma Identidade Gerenciada.",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Usar a Identidade Gerenciada para se conectar a recursos",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Onde estiver usando imagens armazenadas no Registro de Contêiner do Azure, extraia-as usando uma Identidade Gerenciada.",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
"severity": "Alto",
- "text": "Garanta as correspondências de fuso horário entre o sistema operacional e o sistema SAP.",
- "waf": "Operações"
+ "text": "Extrair contêineres usando uma identidade gerenciada",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Ao definir as configurações de diagnóstico do Serviço de Aplicativo, você pode enviar toda a telemetria para o Log Analytics como o destino central para registro em log e monitoramento. Isso permite que você monitore a atividade de tempo de execução do Serviço de Aplicativo, como logs HTTP, logs de aplicativos, logs de plataforma, ...",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "Média",
- "text": "Não agrupe serviços de aplicativos diferentes no mesmo cluster. Por exemplo, não combine clusters DRBD e de serviços centrais no mesmo cluster. No entanto, você pode usar o mesmo cluster do Pacemaker para gerenciar aproximadamente cinco serviços centrais diferentes (cluster multi-SID).",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Fiabilidade"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Considere executar sistemas de desenvolvimento/teste em um modelo de soneca para economizar e otimizar os custos de execução do Azure.",
- "waf": "Custar"
+ "text": "Enviar logs de tempo de execução do Serviço de Aplicativo para o Log Analytics",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure uma configuração de diagnóstico para enviar o log de atividades para o Log Analytics como o destino central para registro e monitoramento. Isso permite que você monitore a atividade do plano de controle no próprio recurso do Serviço de Aplicativo.",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"severity": "Média",
- "text": "Se você faz parceria com clientes gerenciando suas propriedades SAP, considere o Farol do Azure. O Azure Lighthouse permite que os provedores de serviços gerenciados usem os serviços de identidade nativos do Azure para se autenticar no ambiente dos clientes. Ele coloca o controle nas mãos dos clientes, porque eles podem revogar o acesso a qualquer momento e auditar as ações dos prestadores de serviços.",
- "waf": "Operações"
+ "text": "Enviar logs de atividade do Serviço de Aplicativo para o Log Analytics",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Controle o acesso à rede de saída usando uma combinação de integração regional de VNet, grupos de segurança de rede e UDR's. O tráfego deve ser roteado para um NVA, como o Firewall do Azure. Certifique-se de monitorar os logs do Firewall.",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "Média",
- "text": "Use o Azure Update Manager para verificar o status das atualizações disponíveis para uma única VM ou várias VMs e considere agendar patches regulares.",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "Operações"
+ "text": "O acesso à rede de saída deve ser controlado",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Você pode fornecer um IP de saída estável usando a integração de rede virtual e um gateway NAT de rede virtual ou um NVA como o Firewall do Azure. Isso permite que a parte receptora permita uma lista com base no IP, caso seja necessário. Observe que, para comunicações com os Serviços do Azure, geralmente não há necessidade de depender do endereço IP e mecânicas como Pontos de Extremidade de Serviço devem ser usadas. (Além disso, o uso de pontos de extremidade privados na extremidade de recebimento evita que o SNAT aconteça e fornece um intervalo de IP de saída estável.)",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
"severity": "Baixo",
- "text": "Otimize e gerencie as operações do SAP Basis usando o SAP Landscape Management (LaMa). Use o conector SAP LaMa para Azure para realocar, copiar, clonar e atualizar sistemas SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "Operações"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
- "service": "SAP",
- "severity": "Média",
- "text": "Use as soluções do Azure Monitor for SAP para monitorar suas cargas de trabalho SAP (SAP HANA, clusters SUSE de alta disponibilidade e sistemas SQL) no Azure. Considere complementar o Azure Monitor para soluções SAP com o SAP Solution Manager.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Operações"
+ "text": "Garantir um IP estável para comunicações de saída para endereços de Internet",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Controle o acesso à rede de entrada usando uma combinação de Restrições de Acesso do Serviço de Aplicativo, Pontos de Extremidade de Serviço ou Pontos de Extremidade Privados. Diferentes restrições de acesso podem ser necessárias e configuradas para o próprio aplicativo Web e o site do SCM.",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"severity": "Alto",
- "text": "Execute uma verificação de extensão de VM para SAP. A Extensão de VM para SAP usa a identidade gerenciada atribuída de uma máquina virtual (VM) para acessar dados de monitoramento e configuração de VM. A verificação garante que todas as métricas de desempenho em seu aplicativo SAP venham da Extensão do Azure para SAP subjacente.",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "Operações"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
- "severity": "Média",
- "text": "Use a Política do Azure para controle de acesso e relatórios de conformidade. A Política do Azure fornece a capacidade de impor configurações em toda a organização para garantir a adesão consistente à política e a detecção rápida de violações. ",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "Operações"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Use o Monitor de Conexão no Inspetor de Rede do Azure para monitorar métricas de latência para bancos de dados SAP e servidores de aplicativos. Ou colete e exiba medições de latência de rede usando o Azure Monitor.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "Operações"
+ "text": "O acesso à rede de entrada deve ser controlado",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
- "severity": "Média",
- "text": "Execute uma verificação de qualidade para o SAP HANA na infraestrutura provisionada do Azure para verificar se as VMs provisionadas estão em conformidade com as práticas recomendadas do SAP HANA no Azure.",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Proteja-se contra tráfego de entrada mal-intencionado usando um Firewall de Aplicativo Web, como o Gateway de Aplicativo ou o Azure Front Door. Certifique-se de monitorar os logs do WAF.",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Usar um WAF na frente do Serviço de Aplicativo",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Certifique-se de que o WAF não pode ser ignorado bloqueando o acesso apenas ao WAF. Use uma combinação de Restrições de Acesso, Pontos de Extremidade de Serviço e Pontos de Extremidade Privados.",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"severity": "Alto",
- "text": "Para cada assinatura do Azure, execute um teste de latência nas zonas de disponibilidade do Azure antes da implantação zonal para escolher zonas de baixa latência para implantação do SAP no Azure.",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "Desempenho"
+ "text": "Evite que o WAF seja ignorado",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Defina a política TLS mínima como 1.2 na configuração do Serviço de Aplicativo.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
"severity": "Média",
- "text": "Execute o Relatório de Resiliência para garantir que a configuração de toda a infraestrutura provisionada do Azure (Computação, Banco de Dados, Rede, Armazenamento, Recuperação de Site) esteja em conformidade com a configuração definida pelo Cloud Adaption Framework para Azure.",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
- "waf": "Fiabilidade"
+ "text": "Definir a política TLS mínima como 1.2",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Implemente a proteção contra ameaças usando a solução Microsoft Sentinel para SAP. Use esta solução para monitorar seus sistemas SAP e detectar ameaças sofisticadas em toda a lógica de negócios e camadas de aplicativos.",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Configure o Serviço de Aplicativo para usar somente HTTPS. Isso faz com que o Serviço de Aplicativo redirecione de HTTP para HTTPS. Considere fortemente o uso de HTTP Strict Transport Security (HSTS) em seu código ou a partir de seu WAF, que informa aos navegadores que o site só deve ser acessado usando HTTPS.",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Usar somente HTTPS",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
- "severity": "Média",
- "text": "A marcação do Azure pode ser aproveitada para agrupar e controlar recursos logicamente, automatizar suas implantações e, o mais importante, fornecer visibilidade sobre os custos incorridos.",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
- "waf": "Operações"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Não use curingas em sua configuração do CORS, pois isso permite que todas as origens acessem o serviço (derrotando assim o propósito do CORS). Especificamente, permita apenas as origens que você espera poder acessar o serviço.",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Curingas não devem ser usados para CORS",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Use o monitoramento de latência entre VMs para aplicativos sensíveis à latência.",
- "waf": "Desempenho"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "A depuração remota não deve ser ativada na produção, pois isso abre portas adicionais no serviço, o que aumenta a superfície de ataque. Observe que o serviço ativa a depuração remota automaticamente após 48 horas.",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
+ "severity": "Alto",
+ "text": "Desativar a depuração remota",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Habilite o Defender para o Serviço de Aplicativo. Isso (entre outras ameaças) detecta comunicações com endereços IP mal-intencionados conhecidos. Analise as recomendações do Defender for App Service como parte de suas operações.",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
"severity": "Média",
- "text": "Use o monitoramento do Azure Site Recovery para manter a integridade do serviço de recuperação de desastres para servidores de aplicativos SAP.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "Fiabilidade"
+ "text": "Habilitar o Defender for Cloud - Defender for App Service",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "O Azure fornece proteção contra DDoS Basic em sua rede, que pode ser aprimorada com recursos inteligentes de DDoS Standard que aprendem sobre padrões normais de tráfego e podem detectar comportamentos incomuns. O DDoS Standard se aplica a uma Rede Virtual, portanto, ele deve ser configurado para o recurso de rede na frente do aplicativo, como o Application Gateway ou um NVA.",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"severity": "Média",
- "text": "Exclua todos os sistemas de arquivos de banco de dados e programas executáveis das verificações antivírus. Incluí-los pode levar a problemas de desempenho. Verifique com os fornecedores do banco de dados para obter detalhes prescritivos na lista de exclusão. Por exemplo, a Oracle recomenda excluir /oracle//sapdata das verificações antivírus.",
- "waf": "Desempenho"
+ "text": "Habilitar o padrão de proteção DDOS na rede virtual WAF",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
- "severity": "Baixo",
- "text": "Considere a coleta de estatísticas completas de banco de dados para bancos de dados não-HANA após a migração. Por exemplo, implemente a nota SAP 1020260 - Entrega de estatísticas Oracle.",
- "waf": "Desempenho"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Ao usar imagens armazenadas no Registro de Contêiner do Azure, extraia-as por uma rede virtual do Registro de Contêiner do Azure usando seu ponto de extremidade privado e a configuração do aplicativo 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
+ "severity": "Média",
+ "text": "Extrair contêineres por uma rede virtual",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Realizar um teste de penetração na aplicação web seguindo as regras de teste de penetração de engajamento.",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
"severity": "Média",
- "text": "Considere o uso do Oracle Automatic Storage Management (ASM) para todas as implantações Oracle que usam SAP no Azure.",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "Desempenho"
+ "text": "Realizar um teste de penetração",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Implante código confiável que foi validado e verificado em busca de vulnerabilidades de acordo com as práticas de DevSecOps.",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"severity": "Média",
- "text": "Para SAP no Azure executando Oracle, uma coleção de scripts SQL pode ajudá-lo a diagnosticar problemas de desempenho. Os relatórios do Automatic Workload Repository (AWR) contêm informações valiosas para diagnosticar problemas no sistema Oracle. Recomendamos que você execute um relatório AWR durante várias sessões e escolha horários de pico para ele, para garantir uma ampla cobertura para a análise.",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "Desempenho"
+ "text": "Implantar código validado",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Use as versões mais recentes de plataformas, linguagens de programação, protocolos e estruturas suportadas.",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
"severity": "Alto",
- "text": "Use o monitoramento do Azure Site Recovery para manter a integridade do serviço de recuperação de desastres para servidores de aplicativos SAP.",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "waf": "Operações"
+ "text": "Use plataformas, linguagens, protocolos e frameworks atualizados",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Para a entrega segura de aplicativos HTTP/S, use o Application Gateway v2 e verifique se a proteção e as políticas do WAF estão habilitadas.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário para cargas de trabalho do AKS Windows, os contêineres HostProcess podem ser usados",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
- "severity": "Média",
- "text": "Se o DNS ou o nome virtual da máquina virtual não for alterado durante a migração para o Azure, o DNS em segundo plano e os nomes virtuais conectam muitas interfaces do sistema no cenário SAP, e os clientes só às vezes estão cientes das interfaces que os desenvolvedores definem ao longo do tempo. Surgem desafios de conexão entre vários sistemas quando os nomes virtuais ou DNS mudam após as migrações, e é recomendável manter os aliases DNS para evitar esses tipos de dificuldades.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Usar o KEDA se estiver executando cargas de trabalho orientadas a eventos",
+ "waf": "Desempenho"
},
{
- "checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
- "severity": "Média",
- "text": "Use zonas DNS diferentes para distinguir cada ambiente (sandbox, desenvolvimento, pré-produção e produção) um do outro. A exceção é para implantações SAP com sua própria VNet; aqui, zonas DNS privadas podem não ser necessárias.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Use o Dapr para facilitar o desenvolvimento de microsserviços",
"waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Emparelhamento de rede virtual local e global fornecem conectividade e são as abordagens preferidas para garantir a conectividade entre zonas de aterrissagem para implantações SAP em várias regiões do Azure",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Use a oferta AKS apoiada por SLA",
"waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Usar orçamentos de interrupção em seu pod e definições de implantação",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "Alto",
- "text": "Não há suporte para implantar qualquer NVA entre o aplicativo SAP e o servidor de banco de dados SAP",
- "training": "https://me.sap.com/notes/2731110",
- "waf": "Desempenho"
+ "text": "Se estiver usando um registro privado, configure a replicação de região para armazenar imagens em várias regiões",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
- "severity": "Média",
- "text": "Use a WAN Virtual para implantações do Azure em redes novas, grandes ou globais onde você precisa de conectividade de trânsito global entre regiões do Azure e locais locais. Com essa abordagem, você não precisará configurar manualmente o roteamento transitivo para a rede do Azure e poderá seguir um padrão para implantações do SAP no Azure.",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Use um aplicativo externo, como kubecost, para alocar custos para diferentes usuários",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
- "severity": "Média",
- "text": "Considere a implantação de dispositivos virtuais de rede (NVAs) entre regiões somente se NVAs de parceiros forem usados. NVAs entre regiões ou VNets não são necessários se NVAs nativos estiverem presentes. Ao implantar tecnologias de rede de parceiros e NVAs, siga as orientações do fornecedor para verificar configurações conflitantes com a rede do Azure.",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Usar o modo de redução para excluir/desalocar nós",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
"severity": "Média",
- "text": "A WAN virtual gerencia a conectividade entre VNets spoke para topologias baseadas em WAN virtual (não há necessidade de configurar o roteamento definido pelo usuário [UDR] ou NVAs), e a taxa de transferência máxima de rede para o tráfego de VNet-to-VNet no mesmo hub virtual é de 50 gigabits por segundo. Se necessário, as zonas de aterrissagem SAP podem usar o emparelhamento de VNet para se conectar a outras zonas de aterrissagem e superar essa limitação de largura de banda.",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "Operações"
+ "text": "Quando necessário, use a GPU de partioning de várias instâncias em clusters AKS",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
- "severity": "Alto",
- "text": "A atribuição de IP público à VM que executa o SAP Workload não é recomendada.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se estiver executando um cluster de desenvolvimento/teste, use NodePool Start/Stop",
+ "waf": "Custar"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
- "severity": "Alto",
- "text": "Considere reservar o endereço IP no lado do DR ao configurar o ASR",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Usar a Política do Azure para Kubernetes para garantir a conformidade do cluster",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
- "severity": "Alto",
- "text": "Evite usar intervalos de endereços IP sobrepostos para sites de produção e DR.",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Separe os aplicativos do plano de controle com pools de nós de usuário/sistema",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
- "severity": "Média",
- "text": "Embora o Azure ajude você a criar várias sub-redes delegadas em uma rede virtual, apenas uma sub-rede delegada pode existir em uma rede virtual para arquivos do Azure NetApp. As tentativas de criar um novo volume falharão se você usar mais de uma sub-rede delegada para Arquivos do Azure NetApp.",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Adicione mancha ao seu nodepool do sistema para torná-lo dedicado",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"severity": "Média",
- "text": "Usar o Firewall do Azure para controlar o tráfego de saída do Azure para a Internet, conexões de entrada não HTTP/S e filtragem de tráfego Leste/Oeste (se a organização exigir)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
+ "text": "Usar um registro privado para suas imagens, como o ACR",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "Média",
- "text": "O Application Gateway e o Web Application Firewall têm limitações quando o Application Gateway serve como um proxy reverso para aplicativos Web SAP, conforme mostrado na comparação entre o Application Gateway, o SAP Web Dispatcher e outros serviços de terceiros.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "text": "Analise suas imagens em busca de vulnerabilidades",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Use as políticas do Azure Front Door e do WAF para fornecer proteção global entre as regiões do Azure para conexões HTTP/S de entrada para uma zona de aterrissagem.",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Definir requisitos de separação de aplicativos (namespace/nodepool/cluster)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"severity": "Média",
- "text": "Aproveite as políticas do Web Application Firewall no Azure Front Door quando estiver usando o Azure Front Door e o Application Gateway para proteger aplicativos HTTP/S. Bloqueie o Gateway de Aplicativo para receber tráfego somente do Azure Front Door.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "text": "Armazene seus segredos no Cofre de Chaves do Azure com o driver do CSI Secrets Store",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Use um firewall de aplicativo Web para verificar seu tráfego quando ele estiver exposto à Internet. Outra opção é usá-lo com seu balanceador de carga ou com recursos que tenham recursos internos de firewall, como o Application Gateway ou soluções de terceiros.",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Se estiver usando entidades de serviço para o cluster, atualize as credenciais periodicamente (como trimestralmente)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
"severity": "Média",
- "text": "Use a WAN Virtual para implantações do Azure em redes novas, grandes ou globais onde você precisa de conectividade de trânsito global entre regiões do Azure e locais locais. Com essa abordagem, você não precisará configurar manualmente o roteamento transitivo para a rede do Azure e poderá seguir um padrão para implantações do SAP no Azure.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "Desempenho"
+ "text": "Se necessário, adicione criptografia etcd do Serviço de Gerenciamento de Chaves",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário, considere o uso de computação confidencial para AKS",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"severity": "Média",
- "text": "Para evitar o vazamento de dados, use o Link Privado do Azure para acessar com segurança recursos de plataforma como serviço, como Armazenamento de Blobs do Azure, Arquivos do Azure, Azure Data Lake Storage Gen2, Azure Data Factory e muito mais. O Ponto de Extremidade Privado do Azure também pode ajudar a proteger o tráfego entre VNets e serviços como o Armazenamento do Azure, o Backup do Azure e muito mais. O tráfego entre sua rede virtual e o serviço habilitado para ponto de extremidade privado viaja pela rede global da Microsoft, o que impede sua exposição à Internet pública.",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "text": "Considere o uso do Defender for Containers",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
"severity": "Alto",
- "text": "Verifique se a rede acelerada do Azure está habilitada nas VMs usadas nas camadas de aplicativo SAP e DBMS.",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "Desempenho"
+ "text": "Usar identidades gerenciadas em vez de entidades de serviço",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "Média",
- "text": "Verifique se as implantações internas do Azure Load Balancer estão configuradas para usar DSR (Direct Server Return). Essa configuração (Habilitando IP flutuante) reduzirá a latência quando as configurações internas do balanceador de carga forem usadas para configurações de alta disponibilidade na camada DBMS.",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "text": "Integrar autenticação com AAD (usando a integração gerenciada)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "Média",
- "text": "Você pode usar as regras ASG (grupo de segurança de aplicativo) e NSG para definir listas de controle de acesso de segurança de rede entre o aplicativo SAP e as camadas DBMS. Os ASGs agrupam máquinas virtuais para ajudar a gerenciar sua segurança.",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "text": "Limitar o acesso ao admin kubeconfig (get-credentials --admin)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "Alto",
- "text": "Não há suporte para a colocação da camada de aplicativo SAP e do SGBD SAP em diferentes VNets do Azure que não são emparelhadas.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Desempenho"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
"severity": "Média",
- "text": "Para obter a latência de rede ideal com aplicativos SAP, considere o uso de grupos de posicionamento de proximidade do Azure.",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "Desempenho"
+ "text": "Integrar autorização com AAD RBAC",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
"severity": "Alto",
- "text": "NÃO há suporte para executar uma camada do SAP Application Server e uma camada de DBMS dividida entre o local e o Azure. Ambas as camadas precisam residir completamente no local ou no Azure.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Desempenho"
+ "text": "Usar namespaces para restringir o privilégio RBAC no Kubernetes",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "Alto",
- "text": "Não é recomendado hospedar o sistema de gerenciamento de banco de dados (DBMS) e as camadas de aplicativos dos sistemas SAP em diferentes VNets e conectá-los ao emparelhamento de VNet devido aos custos substanciais que o tráfego de rede excessivo entre as camadas pode produzir. Recomende o uso de sub-redes na rede virtual do Azure para separar a camada de aplicativo SAP e a camada DBMS.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "Custar"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Para o Gerenciamento de Acesso à Identidade de Pod, use a Identidade de Carga de Trabalho do Azure AD (visualização)",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
- "severity": "Alto",
- "text": "Se estiver usando o Load Balancer com sistemas operacionais convidados Linux, verifique se o parâmetro de rede Linux net.ipv4.tcp_timestamps está definido como 0.",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "Desempenho"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Para logins não interativos do AKS, use kubelogin (visualização)",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
"severity": "Média",
- "text": "Para implantações SAP RISE/ECS, o emparelhamento virtual é a maneira preferida de estabelecer conectividade com o ambiente existente do Azure do cliente. Tanto a vnet do SAP quanto a(s) vnet(s) do cliente são protegidas com grupos de segurança de rede (NSG), permitindo a comunicação nas portas SAP e de banco de dados por meio do emparelhamento vnet",
+ "text": "Desativar contas locais do AKS",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
- "severity": "Alto",
- "text": "Revise os backups de banco de dados do SAP HANA para VMs do Azure.",
- "waf": "Custar"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Configurar, se necessário, o acesso ao cluster just-in-time",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
- "severity": "Média",
- "text": "Revise o monitoramento interno do Site Recovery, quando usado para SAP.",
- "waf": "Custar"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Configurar, se necessário, o acesso condicional do AAD para AKS",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
- "severity": "Alto",
- "text": "Revise as diretrizes de monitoramento do cenário do sistema SAP HANA.",
- "waf": "Operações"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário para cargas de trabalho do Windows AKS, configure o gMSA ",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"severity": "Média",
- "text": "Revise o Banco de Dados Oracle nas estratégias de backup de VM do Linux do Azure.",
- "waf": "Operações"
+ "text": "Para um controle mais fino, considere usar uma Identidade Kubelet gerenciada",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"severity": "Média",
- "text": "Analise o uso do Armazenamento de Blobs do Azure com o SQL Server 2016.",
- "waf": "Operações"
+ "text": "Se estiver usando AGIC, não compartilhe um AppGW entre clusters",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Não use AKS HTTP Routing Add-On, use em vez disso a entrada NGINX gerenciada com o complemento de roteamento de aplicativo.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"severity": "Média",
- "text": "Analise o uso do Backup Automatizado v2 para VMs do Azure.",
- "waf": "Operações"
+ "text": "Para cargas de trabalho do Windows, use a Rede Acelerada",
+ "waf": "Desempenho"
},
{
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "Alto",
- "text": "Ativando o acelerador de gravação para a série M ao usar discos premium (V1)",
- "waf": "Operações"
+ "text": "Use o ALB padrão (em oposição ao básico)",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"severity": "Média",
- "text": "Testar a latência da zona de disponibilidade.",
- "waf": "Desempenho"
+ "text": "Se estiver usando o CNI do Azure, considere usar sub-redes diferentes para NodePools",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"severity": "Média",
- "text": "Ative o SAP EarlyWatch Alert para todos os componentes SAP.",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "Desempenho"
+ "text": "Usar Pontos de Extremidade Privados (preferencial) ou Pontos de Extremidade de Serviço de Rede Virtual para acessar serviços de PaaS do cluster",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
- "severity": "Média",
- "text": "Revise a latência do servidor de aplicativos SAP para o servidor de banco de dados usando o relatório SAP ABAPMeter /SSA/CAT.",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "Desempenho"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Escolha o melhor plug-in de rede CNI para seus requisitos (Azure CNI recomendado)",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
- "severity": "Média",
- "text": "Revise o monitoramento de desempenho do SQL Server usando o CCMS.",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Se estiver usando o Azure CNI, dimensione sua sub-rede de acordo considerando o número máximo de pods por nó",
"waf": "Desempenho"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
- "severity": "Média",
- "text": "Teste a latência de rede entre VMs de camada de aplicativo SAP e VMs DBMS (NIPING).",
- "training": "https://me.sap.com/notes/1100926/E",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Se estiver usando o Azure CNI, verifique o máximo de pods/nó (padrão 30)",
"waf": "Desempenho"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
- "severity": "Média",
- "text": "Revise os alertas do SAP HANA Studio.",
- "waf": "Desempenho"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Para aplicativos internos, as organizações geralmente abrem toda a sub-rede AKS em seus firewalls. Isso abre o acesso de rede para os nós também e, potencialmente, para os pods também (se estiver usando o Azure CNI). Se os IPs do LoadBalancer estiverem em uma sub-rede diferente, somente este precisará estar disponível para os clientes do aplicativo. Outra razão é que, se os endereços IP na sub-rede AKS são um recurso escasso, consumir seus endereços IP para serviços reduzirá a escalabilidade máxima do cluster.",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se estiver usando serviços LoadBalancer de IP privado, use uma sub-rede dedicada (não a sub-rede AKS)",
+ "waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
- "severity": "Média",
- "text": "Execute verificações de integridade do SAP HANA usando HANA_Configuration_Minichecks.",
- "waf": "Desempenho"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Dimensione o intervalo de endereços IP do serviço de acordo (isso limitará a escalabilidade do cluster)",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
- "severity": "Média",
- "text": "Se você executar VMs do Windows e Linux no Azure, no local ou em outros ambientes de nuvem, poderá usar o Centro de gerenciamento de atualizações na Automação do Azure para gerenciar atualizações do sistema operacional, incluindo patches de segurança.",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário, adicione seu próprio plugin CNI",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário, configure o IP público por nó no AKS",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"severity": "Média",
- "text": "Analise rotineiramente as notas de OSS de segurança do SAP porque o SAP lança patches de segurança altamente críticos, ou hot fixes, que exigem ação imediata para proteger seus sistemas SAP.",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "Segurança"
+ "text": "Usar um controlador de entrada para expor aplicativos baseados na Web em vez de expô-los com serviços do tipo LoadBalancer",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Para SAP no SQL Server, você pode desabilitar a conta de administrador do sistema do SQL Server porque os sistemas SAP no SQL Server não usam a conta. Certifique-se de que outro usuário com direitos de administrador do sistema possa acessar o servidor antes de desabilitar a conta de administrador do sistema original.",
- "waf": "Segurança"
+ "text": "Usar o Gateway NAT do Azure como outboundType para dimensionar o tráfego de saída",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "severity": "Alto",
- "text": "Desative xp_cmdshell. O recurso do SQL Server xp_cmdshell habilita um shell de comando do sistema operacional interno do SQL Server. É um risco potencial em auditorias de segurança.",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Usar alocações dinâmicas de IPs para evitar o esgotamento de IP do CNI do Azure",
+ "waf": "Fiabilidade"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "Alto",
- "text": "A criptografia de servidores de banco de dados SAP HANA no Azure usa a tecnologia de criptografia nativa do SAP HANA. Além disso, se você estiver usando o SQL Server no Azure, use a TDE (Criptografia de Dados Transparente) para proteger seus dados e arquivos de log e garantir que seus backups também sejam criptografados.",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "text": "Filtre o tráfego de saída com AzFW/NVA se seus requisitos de segurança exigirem",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
"severity": "Média",
- "text": "A criptografia de Armazenamento do Azure está habilitada para todas as contas clássicas e do Gerenciador de Recursos do Azure e não pode ser desabilitada. Como seus dados são criptografados por padrão, você não precisa modificar seu código ou aplicativos para usar a criptografia do Armazenamento do Azure.",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
+ "text": "Se estiver usando um ponto de extremidade de API público, restrinja os endereços IP que podem acessá-lo",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"severity": "Alto",
- "text": "Usar o Cofre de Chaves do Azure para armazenar seus segredos e credenciais",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Use clusters privados se seus requisitos exigirem",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "Média",
- "text": "É recomendável BLOQUEAR os Recursos do Azure após a implantação bem-sucedida para proteger contra alterações não autorizadas. Você também pode impor restrições e regras LOCK em sua base por assinatura usando políticas personalizadas do Azure (função Personalizada).",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
+ "text": "Para os nós AKS do Windows 2019 e 2022, as Diretivas de Rede Calico podem ser usadas ",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
- "severity": "Média",
- "text": "Provisione o Cofre de Chaves do Azure com as políticas de exclusão e limpeza suaves habilitadas para permitir a proteção de retenção para objetos excluídos.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Habilitar uma opção de Política de Rede do Kubernetes (Calico/Azure)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "Alto",
- "text": "Com base nos requisitos existentes, controles normativos e de conformidade (internos/externos) - Determine quais Políticas do Azure e a função RBAC do Azure são necessárias",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
+ "text": "Usar diretivas de rede do Kubernetes para aumentar a segurança intra-cluster",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "Alto",
- "text": "Ao habilitar o Microsoft Defender for Endpoint no ambiente SAP, recomende excluir arquivos de dados e de log em servidores DBMS em vez de direcionar todos os servidores. Siga as recomendações do fornecedor do DBMS ao excluir arquivos de destino.",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
+ "text": "Usar um WAF para cargas de trabalho da Web (UIs ou APIs)",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
- "severity": "Alto",
- "text": "Delegue uma função personalizada de administrador SAP com acesso just-in-time do Microsoft Defender for Cloud.",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Usar DDoS Standard na Rede Virtual AKS",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
"severity": "Baixo",
- "text": "criptografar dados em trânsito integrando o produto de segurança de terceiros com comunicações de rede seguras (SNC) para DIAG (SAP GUI), RFC e SPNEGO para HTTPS",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "text": "Se necessário, adicione o proxy HTTP da empresa",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "Média",
- "text": "O padrão é chaves gerenciadas pela Microsoft para a funcionalidade de criptografia principal e use chaves gerenciadas pelo cliente quando necessário.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "Considere o uso de uma malha de serviço para gerenciamento avançado de comunicação de microsserviços",
"waf": "Segurança"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
"severity": "Alto",
- "text": "Use um Cofre de Chaves do Azure por aplicativo, por ambiente, por região.",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "Segurança"
+ "text": "Configurar alertas nas métricas mais críticas (consulte Insights de contêiner para obter recomendações)",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Verifique regularmente o Azure Advisor para obter recomendações sobre o seu cluster",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Habilitar a rotação automática do certificado AKS",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
"severity": "Alto",
- "text": "Para controlar e gerenciar chaves de criptografia de disco e segredos para sistemas operacionais Windows e não Windows HANA, use o Cofre de Chaves do Azure. O SAP HANA não tem suporte com o Cofre de Chaves do Azure, portanto, você deve usar métodos alternativos, como chaves SAP ABAP ou SSH.",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
- "waf": "Segurança"
+ "text": "Tenha um processo regular para atualizar sua versão do kubernetes periodicamente (trimestralmente, por exemplo), ou use o recurso de atualização automática do AKS",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
"severity": "Alto",
- "text": "Personalizar funções RBAC (controle de acesso baseado em função) para SAP em assinaturas spoke do Azure para evitar alterações acidentais relacionadas à rede",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
- "waf": "Segurança"
+ "text": "Use kured para atualizações de nó do Linux caso você não esteja usando a atualização de imagem de nó",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
"severity": "Alto",
- "text": "Isole DMZs e NVAs do restante do estado SAP, configure o Azure Private Link e gerencie e controle com segurança os recursos do SAP no Azure",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
- "waf": "Segurança"
+ "text": "Tenha um processo regular para atualizar as imagens do nó do cluster periodicamente (semanalmente, por exemplo)",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Considere usar o software antimalware da Microsoft no Azure para proteger suas máquinas virtuais contra arquivos mal-intencionados, adware e outras ameaças.",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
- "waf": "Segurança"
+ "text": "Considere gitops para implantar aplicativos ou configuração de cluster em vários clusters",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Para obter uma proteção ainda mais poderosa, considere usar o Microsoft Defender for Endpoint.",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
- "waf": "Segurança"
+ "text": "Considere o uso do comando AKS invoke em clusters privados",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Para eventos planejados, considere o uso do Dreno Automático de Nó",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
"severity": "Alto",
- "text": "Isole os servidores de aplicativo e banco de dados SAP da Internet ou da rede local passando todo o tráfego pela rede virtual de hub, que está conectada à rede spoke por emparelhamento de rede virtual. As redes virtuais emparelhadas garantem que a solução SAP no Azure seja isolada da Internet pública.",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "Segurança"
+ "text": "Desenvolver práticas próprias de governança para garantir que nenhuma alteração seja realizada pelos operadores no nó RG (também conhecido como 'infra RG')",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Para aplicativos voltados para a Internet, como o SAP Fiori, certifique-se de distribuir a carga por requisitos de aplicativo, mantendo os níveis de segurança. Para segurança de Camada 7, você pode usar um WAF (Web Application Firewall) de terceiros disponível no Azure Marketplace.",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
- "waf": "Segurança"
+ "text": "Use o nome personalizado do Node RG (também conhecido como 'Infra RG')",
+ "waf": "Operações"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "Média",
- "text": "Para habilitar a comunicação segura no Azure Monitor para soluções SAP, você pode optar por usar um certificado raiz ou um certificado de servidor. É altamente recomendável que você use certificados raiz.",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "Segurança"
+ "text": "Não use APIs do Kubernetes preteridas em seus manifestos do YAML",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
- "severity": "Média",
- "text": "Aproveite o Manual de Resiliência de FTA para o Azure Data Factory",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Manchar os nós do Windows",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "Alto",
- "text": "Usar pipelines redundantes de zona em regiões que oferecem suporte a zonas de disponibilidade",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Mantenha o nível de patch dos contêineres do Windows sincronizado com o nível do patch do host",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
- "severity": "Média",
- "text": "Usar DevOps para fazer backup dos modelos ARM com a integração Github/Azure DevOps ",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Por meio de Configurações de Diagnóstico no nível do cluster",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Envie logs mestre (também conhecidos como logs de API) para o Azure Monitor ou sua solução de gerenciamento de logs preferida",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "Média",
- "text": "Certifique-se de replicar as VMs do Self-Hosted Integration Runtime em outra região ",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário, use instantâneos do nodePool",
+ "waf": "Custar"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "Média",
- "text": "Certifique-se de replicar ou duplicar sua rede na região irmã. Você tem que fazer uma cópia do seu Vnet em outra região",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Considere pools de nós spot para cargas de trabalho não sensíveis ao tempo",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "Se seus pipelines do ADF usarem o Cofre de Chaves, você não precisará fazer nada para replicar o Cofre de Chaves. O Cofre de Chaves é um serviço gerenciado e a Microsoft cuida dele para você",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Se estiver usando a integração do Keyvault, use o SLA do Keyvault para entender sua disponibilidade",
- "waf": "Fiabilidade"
+ "text": "Considere o nó virtual AKS para intermitência rápida",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "Média",
- "text": "Os Aplicativos Spring do Azure permitem duas implantações para cada aplicativo, apenas um dos quais recebe tráfego de produção. Você pode obter tempo de inatividade zero com estratégias de implantação em verde azul. A implantação verde azul só está disponível nas camadas Standard e Enterprise. Você pode automatizar a implantação usando CI/CD com ações do ADO/GitHub",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Monitore suas métricas de cluster com o Container Insights (ou outras ferramentas como o Prometheus)",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Armazene e analise seus logs de cluster com o Container Insights (ou outras ferramentas como Telegraf/ElasticSearch)",
+ "waf": "Operações"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
"severity": "Média",
- "text": "As instâncias do Azure Spring Apps podem ser criadas em várias regiões para seus aplicativos e o tráfego pode ser roteado pelo Gerenciador de Tráfego/Front Door.",
- "waf": "Fiabilidade"
+ "text": "Monitorar a utilização da CPU e da memória dos nós",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "Média",
- "text": "Na região com suporte, os Aplicativos Spring do Azure podem ser implantados como zona redundante, o que significa que as instâncias são distribuídas automaticamente entre zonas de disponibilidade. Esse recurso só está disponível nas camadas Standard e Enterprise.",
- "waf": "Fiabilidade"
+ "text": "Se estiver usando o Azure CNI, monitore a % de IPs de pod consumidos por nó",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "A E/S no disco do sistema operacional é um recurso crítico. Se o sistema operacional nos nós for limitado na E/S, isso pode levar a um comportamento imprevisível, geralmente terminando no nó sendo declarado NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
"severity": "Média",
- "text": "Usar mais de 1 instância de aplicativo para seus aplicativos",
- "waf": "Fiabilidade"
+ "text": "Monitorar a profundidade da fila de disco do sistema operacional nos nós",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "Média",
- "text": "Monitore os Aplicativos Spring do Azure com logs, métricas e rastreamento. Integre o ASA com insights de aplicativos e rastreie falhas e crie pastas de trabalho.",
- "waf": "Fiabilidade"
+ "text": "Se não estiver usando filtragem de saída com AzFW/NVA, monitore as portas SNAT ALB alocadas padrão",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "Média",
- "text": "Configurar o dimensionamento automático no Spring Cloud Gateway",
- "waf": "Fiabilidade"
+ "text": "Assine as notificações de integridade de recursos para seu cluster AKS",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
- "severity": "Baixo",
- "text": "Habilite o dimensionamento automático para os aplicativos com o plano de consumo padrão e dedicado.",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Configurar solicitações e limites nas especificações do pod",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "Média",
- "text": "Use o plano Enterprise para suporte comercial de inicialização spring para aplicativos de missão crítica. Com outras camadas, você obtém suporte a OSS.",
- "waf": "Fiabilidade"
+ "text": "Impor cotas de recursos para namespaces",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "Baixo",
- "text": "Consulte a arquitetura de aplicativo Web com redundância de zona altamente disponível da linha de base para obter as práticas recomendadas",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Verifique se sua assinatura tem cota suficiente para expandir seus nodepools",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Média",
- "text": "Use as camadas Premium e Standard. Esses níveis oferecem suporte a slots de preparo e backups automatizados.",
- "waf": "Fiabilidade"
+ "text": "Usar o Autoscaler de Cluster",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
- "severity": "Alto",
- "text": "Aproveite as zonas de disponibilidade quando aplicável regionalmente (requer a camada Premium v2 ou v3)",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Personalizar a configuração do nó para pools de nós AKS",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "Média",
- "text": "Implementar verificações de integridade",
- "waf": "Fiabilidade"
+ "text": "Use o Autoscaler do Pod Horizontal quando necessário",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "Nós maiores trarão maior desempenho e recursos, como discos efêmeros e rede acelerada, mas aumentarão o raio de explosão e diminuirão a granularidade de dimensionamento",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
"severity": "Alto",
- "text": "Consulte as práticas recomendadas de backup e restauração para o Serviço de Aplicativo do Azure",
- "waf": "Fiabilidade"
+ "text": "Considere um tamanho de nó apropriado, não muito grande ou muito pequeno",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
- "severity": "Alto",
- "text": "Implementar práticas recomendadas de confiabilidade do Serviço de Aplicativo do Azure",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se mais de 5000 nós forem necessários para escalabilidade, considere o uso de um cluster AKS adicional",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Familiarizar-se com como mover um aplicativo do Serviço de Aplicativo para outra região durante um desastre",
- "waf": "Fiabilidade"
+ "text": "Considere assinar o EventGrid Events para automação AKS",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
- "severity": "Alto",
- "text": "Familiarizar-se com o suporte de confiabilidade no Serviço de Aplicativo do Azure",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Para operações de longa duração em um cluster AKS, considere o encerramento do evento",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
- "severity": "Média",
- "text": "Verifique se \"Sempre Ativo\" está habilitado para Aplicativos de Função em execução em um plano de serviço de aplicativo",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
+ "service": "AKS",
+ "severity": "Baixo",
+ "text": "Se necessário, considere usar hosts dedicados do Azure para nós AKS",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
- "severity": "Média",
- "text": "Monitorar instâncias do Serviço de Aplicativo usando verificações de integridade",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Usar discos efêmeros do sistema operacional",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
- "severity": "Média",
- "text": "Monitorar a disponibilidade e a capacidade de resposta do aplicativo Web ou site usando testes de disponibilidade do Application Insights",
- "waf": "Fiabilidade"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
+ "severity": "Alto",
+ "text": "Para discos não efêmeros, use IOPS altos e discos maiores do sistema operacional para os nós ao executar muitos pods/nó, pois requer alto desempenho para executar vários pods e gerará logs enormes com limites de rotação de log AKS padrão",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
+ "service": "AKS",
"severity": "Baixo",
- "text": "Usar o teste Application Insights Standard para monitorar a disponibilidade e a capacidade de resposta do aplicativo Web ou site",
- "waf": "Fiabilidade"
+ "text": "Para a opção de armazenamento de hiperdesempenho, use Ultra Disks no AKS",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use o Cofre de Chaves do Azure para armazenar quaisquer segredos de que o aplicativo precisa. O Cofre de Chaves fornece um ambiente seguro e auditado para armazenar segredos e está bem integrado ao Serviço de Aplicativo por meio do SDK do Cofre de Chaves ou das Referências do Cofre de Chaves do Serviço de Aplicativo.",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "Alto",
- "text": "Usar o Cofre de Chaves para armazenar segredos",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Evite manter o estado no cluster e armazene dados fora (AzStorage, AzSQL, Cosmos, etc)",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use uma Identidade Gerenciada para se conectar ao Cofre de Chaves usando o SDK do Cofre de Chaves ou por meio das Referências do Cofre de Chaves do Serviço de Aplicativo.",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "Alto",
- "text": "Usar a Identidade Gerenciada para se conectar ao Cofre de Chaves",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Se estiver usando o AzFiles Standard, considere o AzFiles Premium e/ou ANF por motivos de desempenho",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Armazene o certificado TLS do Serviço de Aplicativo no Cofre de Chaves.",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
- "severity": "Alto",
- "text": "Use o Cofre de Chaves para armazenar o certificado TLS.",
- "waf": "Segurança"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
+ "service": "AKS",
+ "severity": "Média",
+ "text": "Se estiver usando Discos e AZs do Azure, considere ter nodepools dentro de uma zona para disco LRS com VolumeBindingMode:WaitForFirstConsumer para provisionar armazenamento na zona direita ou use o disco ZRS para nodepools abrangendo várias zonas",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Os sistemas que processam informações confidenciais devem ser isolados. Para fazer isso, use Planos do Serviço de Aplicativo ou Ambientes do Serviço de Aplicativo separados e considere o uso de assinaturas ou grupos de gerenciamento diferentes.",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
"severity": "Média",
- "text": "Isolar sistemas que processam informações confidenciais",
- "waf": "Segurança"
+ "text": "Use o token revogável de longa duração, armazene seu token em cache e adquira o token silenciosamente usando a Microsoft Identity Library",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Os discos locais no Serviço de Aplicativo não são criptografados e os dados confidenciais não devem ser armazenados neles. (Por exemplo: D:\\\\Local e %TMP%).",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
"severity": "Média",
- "text": "Não armazene dados confidenciais no disco local",
- "waf": "Segurança"
+ "text": "Certifique-se de que os fluxos de usuário de entrada sejam armazenados em backup e resilientes. Certifique-se de que o código que você usa para entrar em seus usuários é de backup e recuperável. Interfaces resilientes com processos externos",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Para aplicativos Web autenticados, use um Provedor de Identidade bem estabelecido, como o Azure AD ou o Azure AD B2C. Aproveite a estrutura de aplicativo de sua escolha para se integrar a esse provedor ou use o recurso de Autenticação/Autorização do Serviço de Aplicativo.",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
"severity": "Média",
- "text": "Usar um provedor de identidade estabelecido para autenticação",
- "waf": "Segurança"
+ "text": "Os ativos de marca personalizados devem ser hospedados em uma CDN",
+ "waf": "Desempenho"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Implante código no Serviço de Aplicativo a partir de um ambiente controlado e confiável, como um pipeline de implantação de DevOps bem gerenciado e seguro. Isso evita que o código que não foi controlado por versão e verificado para ser implantado a partir de um host mal-intencionado.",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
- "severity": "Alto",
- "text": "Implantar a partir de um ambiente confiável",
- "waf": "Segurança"
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
+ "severity": "Baixo",
+ "text": "Ter vários provedores de identidade (ou seja, fazer login com suas contas da Microsoft, Google, Facebook)",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Desative a autenticação básica para FTP/FTPS e WebDeploy/SCM. Isso desabilita o acesso a esses serviços e impõe o uso de pontos de extremidade protegidos do Azure AD para implantação. Observe que o site do SCM também pode ser aberto usando credenciais do Azure AD.",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
- "severity": "Alto",
- "text": "Desabilitar a autenticação básica",
- "waf": "Segurança"
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "Média",
+ "text": "Siga as regras de VM para alta disponibilidade no nível da VM (discos premium, dois ou mais em uma região, em zonas de disponibilidade diferentes)",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Sempre que possível, use a Identidade Gerenciada para se conectar aos recursos protegidos do Azure AD. Se isso não for possível, armazene segredos no Cofre de Chaves e conecte-se ao Cofre de Chaves usando uma Identidade Gerenciada.",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
- "severity": "Alto",
- "text": "Usar a Identidade Gerenciada para se conectar a recursos",
- "waf": "Segurança"
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "Média",
+ "text": "Não replique! A replicação pode criar problemas com a sincronização de diretórios",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Onde estiver usando imagens armazenadas no Registro de Contêiner do Azure, extraia-as usando uma Identidade Gerenciada.",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
- "severity": "Alto",
- "text": "Extrair contêineres usando uma identidade gerenciada",
- "waf": "Segurança"
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "Média",
+ "text": "Ter ativo-ativo para várias regiões",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Ao definir as configurações de diagnóstico do Serviço de Aplicativo, você pode enviar toda a telemetria para o Log Analytics como o destino central para registro em log e monitoramento. Isso permite que você monitore a atividade de tempo de execução do Serviço de Aplicativo, como logs HTTP, logs de aplicativos, logs de plataforma, ...",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "Média",
- "text": "Enviar logs de tempo de execução do Serviço de Aplicativo para o Log Analytics",
- "waf": "Segurança"
+ "text": "Adicionar carimbos de serviço de Domínio do Azure AD a regiões e locais adicionais",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure uma configuração de diagnóstico para enviar o log de atividades para o Log Analytics como o destino central para registro e monitoramento. Isso permite que você monitore a atividade do plano de controle no próprio recurso do Serviço de Aplicativo.",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
"severity": "Média",
- "text": "Enviar logs de atividade do Serviço de Aplicativo para o Log Analytics",
- "waf": "Segurança"
+ "text": "Usar conjuntos de réplicas para DR",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Controle o acesso à rede de saída usando uma combinação de integração regional de VNet, grupos de segurança de rede e UDR's. O tráfego deve ser roteado para um NVA, como o Firewall do Azure. Certifique-se de monitorar os logs do Firewall.",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
"severity": "Média",
- "text": "O acesso à rede de saída deve ser controlado",
- "waf": "Segurança"
+ "text": "Implementar uma política de tratamento de erros em nível global",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Você pode fornecer um IP de saída estável usando a integração de rede virtual e um gateway NAT de rede virtual ou um NVA como o Firewall do Azure. Isso permite que a parte receptora permita uma lista com base no IP, caso seja necessário. Observe que, para comunicações com os Serviços do Azure, geralmente não há necessidade de depender do endereço IP e mecânicas como Pontos de Extremidade de Serviço devem ser usadas. (Além disso, o uso de pontos de extremidade privados na extremidade de recebimento evita que o SNAT aconteça e fornece um intervalo de IP de saída estável.)",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
- "severity": "Baixo",
- "text": "Garantir um IP estável para comunicações de saída para endereços de Internet",
- "waf": "Segurança"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Certifique-se de que todas as políticas de APIs incluam um elemento .",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Controle o acesso à rede de entrada usando uma combinação de Restrições de Acesso do Serviço de Aplicativo, Pontos de Extremidade de Serviço ou Pontos de Extremidade Privados. Diferentes restrições de acesso podem ser necessárias e configuradas para o próprio aplicativo Web e o site do SCM.",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
- "severity": "Alto",
- "text": "O acesso à rede de entrada deve ser controlado",
- "waf": "Segurança"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Usar fragmentos de política para evitar a repetição das mesmas definições de políticas em várias APIs",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Proteja-se contra tráfego de entrada mal-intencionado usando um Firewall de Aplicativo Web, como o Gateway de Aplicativo ou o Azure Front Door. Certifique-se de monitorar os logs do WAF.",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
- "severity": "Alto",
- "text": "Usar um WAF na frente do Serviço de Aplicativo",
- "waf": "Segurança"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Se você estiver planejando monetizar suas APIs, consulte o artigo 'suporte à monetização' para obter as práticas recomendadas",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Certifique-se de que o WAF não pode ser ignorado bloqueando o acesso apenas ao WAF. Use uma combinação de Restrições de Acesso, Pontos de Extremidade de Serviço e Pontos de Extremidade Privados.",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"severity": "Alto",
- "text": "Evite que o WAF seja ignorado",
- "waf": "Segurança"
+ "text": "Habilitar Configurações de Diagnóstico para exportar logs para o Azure Monitor",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Defina a política TLS mínima como 1.2 na configuração do Serviço de Aplicativo.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"severity": "Média",
- "text": "Definir a política TLS mínima como 1.2",
- "waf": "Segurança"
+ "text": "Habilite o Application Insights para telemetria mais detalhada",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Configure o Serviço de Aplicativo para usar somente HTTPS. Isso faz com que o Serviço de Aplicativo redirecione de HTTP para HTTPS. Considere fortemente o uso de HTTP Strict Transport Security (HSTS) em seu código ou a partir de seu WAF, que informa aos navegadores que o site só deve ser acessado usando HTTPS.",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
"severity": "Alto",
- "text": "Usar somente HTTPS",
- "waf": "Segurança"
+ "text": "Configurar alertas sobre as métricas mais críticas",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Não use curingas em sua configuração do CORS, pois isso permite que todas as origens acessem o serviço (derrotando assim o propósito do CORS). Especificamente, permita apenas as origens que você espera poder acessar o serviço.",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
"severity": "Alto",
- "text": "Curingas não devem ser usados para CORS",
+ "text": "Certifique-se de que os certificados SSL personalizados sejam armazenados em um Cofre de Chaves do Azure para que possam ser acessados e atualizados com segurança",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "A depuração remota não deve ser ativada na produção, pois isso abre portas adicionais no serviço, o que aumenta a superfície de ataque. Observe que o serviço ativa a depuração remota automaticamente após 48 horas.",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
"severity": "Alto",
- "text": "Desativar a depuração remota",
- "waf": "Segurança"
- },
- {
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Habilite o Defender para o Serviço de Aplicativo. Isso (entre outras ameaças) detecta comunicações com endereços IP mal-intencionados conhecidos. Analise as recomendações do Defender for App Service como parte de suas operações.",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
- "severity": "Média",
- "text": "Habilitar o Defender for Cloud - Defender for App Service",
+ "text": "Proteger solicitações de entrada para APIs (plano de dados) com o Azure AD",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "O Azure fornece proteção contra DDoS Basic em sua rede, que pode ser aprimorada com recursos inteligentes de DDoS Standard que aprendem sobre padrões normais de tráfego e podem detectar comportamentos incomuns. O DDoS Standard se aplica a uma Rede Virtual, portanto, ele deve ser configurado para o recurso de rede na frente do aplicativo, como o Application Gateway ou um NVA.",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"severity": "Média",
- "text": "Habilitar o padrão de proteção DDOS na rede virtual WAF",
+ "text": "Usar o Microsoft Entra ID para autenticar usuários no Portal do Desenvolvedor",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Ao usar imagens armazenadas no Registro de Contêiner do Azure, extraia-as por uma rede virtual do Registro de Contêiner do Azure usando seu ponto de extremidade privado e a configuração do aplicativo 'WEBSITE_PULL_IMAGE_OVER_VNET'.",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"severity": "Média",
- "text": "Extrair contêineres por uma rede virtual",
+ "text": "Criar grupos apropriados para controlar a visibilidade dos produtos",
"waf": "Segurança"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Realizar um teste de penetração na aplicação web seguindo as regras de teste de penetração de engajamento.",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"severity": "Média",
- "text": "Realizar um teste de penetração",
- "waf": "Segurança"
+ "text": "Use o recurso Back-ends para eliminar configurações redundantes de back-end de API",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Implante código confiável que foi validado e verificado em busca de vulnerabilidades de acordo com as práticas de DevSecOps.",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "Média",
- "text": "Implantar código validado",
- "waf": "Segurança"
+ "text": "Usar Valores Nomeados para armazenar valores comuns que podem ser usados em políticas",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Use as versões mais recentes de plataformas, linguagens de programação, protocolos e estruturas suportadas.",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
- "severity": "Alto",
- "text": "Use plataformas, linguagens, protocolos e frameworks atualizados",
- "waf": "Segurança"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Para DR, aproveite o nível premium com implantações dimensionadas em duas ou mais regiões para um SLA de 99,99%",
+ "waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
- "severity": "Alto",
- "text": "Selecione o plano de hospedagem de aplicativo lógico certo com base em seus requisitos de negócios e SLO",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Implante pelo menos uma unidade em duas ou mais zonas de disponibilidade para um SLA aumentado de 99,99%",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
"severity": "Alto",
- "text": "Proteja aplicativos lógicos contra falhas de região com redundância de zona e zonas de disponibilidade",
+ "text": "Verifique se há uma rotina de backup automatizada",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "severity": "Alto",
- "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Use Políticas para adicionar uma URL de back-end de failover e cache para reduzir chamadas com falha.",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
- "severity": "Alto",
- "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
+ "severity": "Baixo",
+ "text": "Se você precisar registrar em níveis de alto desempenho, considere a política de Hubs de Eventos",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"severity": "Média",
- "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código de Aplicativo Lógico",
- "waf": "Operações"
+ "text": "Aplicar políticas de limitação para controlar o número de solicitações por segundo",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "Desempenho"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
- "severity": "Alto",
- "text": "Selecione o plano de hospedagem de aplicativo lógico certo com base em seus requisitos de negócios e SLO",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Configurar o dimensionamento automático para dimensionar o número de instâncias quando a carga aumenta",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Implante gateways auto-hospedados onde o Azure não tem uma região próxima às APIs de back-end.",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Use a camada premium para cargas de trabalho de produção.",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "No modelo de várias regiões, use Políticas para rotear as solicitações para back-ends regionais com base na disponibilidade ou latência.",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "Alto",
- "text": "Proteja aplicativos lógicos contra falhas de região com redundância de zona e zonas de disponibilidade",
+ "text": "Esteja atento aos limites da APIM",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"severity": "Alto",
- "text": "Considere uma estratégia de DR entre regiões para cargas de trabalho críticas",
+ "text": "Certifique-se de que as implantações de gateway auto-hospedado sejam resilientes.",
"waf": "Fiabilidade"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Usar o Azure Front Door na frente do APIM para implantação em várias regiões",
+ "waf": "Desempenho"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "Implantar o serviço em uma rede virtual (VNet)",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
+ "severity": "Média",
+ "text": "Implante NSG (grupos de segurança de rede) em suas sub-redes para restringir ou monitorar o tráfego de/para APIM.",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "Média",
+ "text": "Implante pontos de extremidade privados para filtrar o tráfego de entrada quando o APIM não for implantado em uma rede virtual.",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "Alto",
- "text": "Se estiver implantando em um ambiente isolado, use ou migre para o ASE (Ambiente do Serviço de Aplicativo) v3",
- "waf": "Fiabilidade"
+ "text": "Desabilitar o acesso à rede pública",
+ "waf": "Segurança"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
"severity": "Média",
- "text": "Aproveite o Azure DevOps ou o GitHub para simplificar o CI/CD e proteger seu código de Aplicativo Lógico",
+ "text": "Simplifique o gerenciamento com scripts de automação do PowerShell",
"waf": "Operações"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
"severity": "Média",
- "text": "Siga as recomendações de suporte de confiabilidade no Serviço de Bot do Azure",
- "waf": "Fiabilidade"
+ "text": "Configure APIM via Infrastructure-as-code. Analise as práticas recomendadas de DevOps do Cloud Adaption Framework APIM Landing Zone Accelerator",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
"severity": "Média",
- "text": "Implantando bots com residência de dados local e conformidade regional",
- "waf": "Fiabilidade"
+ "text": "Promover o uso da extensão API do Visual Studio Code para um desenvolvimento de API mais rápido",
+ "waf": "Operações"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
"severity": "Média",
- "text": "O Serviço de Bot do Azure é executado no modo ativo-ativo para serviços globais e regionais. Quando ocorre uma paralisação, você não precisa detectar erros ou gerenciar o serviço. O Serviço de Bot do Azure executa automaticamente o failover automático e a recuperação automática em uma arquitetura geográfica de várias regiões. Para o serviço regional de bot da UE, o Serviço de Bot do Azure fornece duas regiões completas dentro da Europa com replicação ativa/ativa para garantir redundância. Para o serviço de bot global, todas as regiões/geografias disponíveis podem ser servidas como a presença global.",
- "waf": "Fiabilidade"
+ "text": "Implemente DevOps e CI/CD em seu fluxo de trabalho",
+ "waf": "Operações"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
- "severity": "Alto",
- "text": "Habilite a redundância de zona para o Cache do Azure para Redis. O Cache do Azure para Redis dá suporte a configurações redundantes de zona nas camadas Premium e Enterprise. Um cache redundante de zona pode colocar seus nós em diferentes zonas de disponibilidade do Azure na mesma região. Ele elimina a interrupção do data center ou AZ como um único ponto de falha e aumenta a disponibilidade geral do cache.",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
+ "severity": "Média",
+ "text": "APIs seguras usando autenticação de certificado de cliente",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"severity": "Média",
- "text": "Configure a persistência de dados para uma instância do Cache do Azure para Redis. Como os dados do cache são armazenados na memória, uma falha rara e não planejada de vários nós pode fazer com que todos os dados sejam descartados. Para evitar a perda completa de dados, a persistência do Redis permite que você tire instantâneos periódicos de dados na memória e os armazene em sua conta de armazenamento.",
- "waf": "Fiabilidade"
+ "text": "Serviços de back-end seguros usando autenticação de certificado de cliente",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
"severity": "Média",
- "text": "Use a conta de armazenamento com redundância geográfica para persistir o Cache do Azure para dados Redis ou zonalmente redundante onde a redundância geográfica não está disponível",
- "waf": "Fiabilidade"
+ "text": "Consulte o artigo \"Recomendações para mitigar as 10 principais ameaças da segurança da API OWASP\" e verifique o que é aplicável às suas APIs",
+ "waf": "Segurança"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"severity": "Média",
- "text": "Configure a replicação geográfica passiva para instâncias do Cache Premium do Azure para Redis. A replicação geográfica é um mecanismo para vincular duas ou mais instâncias do Cache do Azure para Redis, normalmente abrangendo duas regiões do Azure. A replicação geográfica foi projetada principalmente para recuperação de desastres entre regiões. Duas instâncias de cache de camada Premium são conectadas por meio de replicação geográfica de uma forma que fornece leituras e gravações no cache primário e que os dados são replicados para o cache secundário.",
- "waf": "Fiabilidade"
+ "text": "Usar o recurso Autorizações para simplificar o gerenciamento do token OAuth 2.0 para suas APIs de back-end",
+ "waf": "Segurança"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
- "severity": "Média",
- "text": "Use o token revogável de longa duração, armazene seu token em cache e adquira o token silenciosamente usando a Microsoft Identity Library",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Use a versão mais recente do TLS ao criptografar informações em trânsito. Desative protocolos e cifras desatualizados e desnecessários quando possível.",
+ "waf": "Segurança"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
- "severity": "Média",
- "text": "Certifique-se de que os fluxos de usuário de entrada sejam armazenados em backup e resilientes. Certifique-se de que o código que você usa para entrar em seus usuários é de backup e recuperável. Interfaces resilientes com processos externos",
- "waf": "Fiabilidade"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
+ "severity": "Alto",
+ "text": "Certifique-se de que os segredos (valores nomeados) sejam armazenados em um Cofre de Chaves do Azure para que possam ser acessados e atualizados com segurança",
+ "waf": "Segurança"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"severity": "Média",
- "text": "Os ativos de marca personalizados devem ser hospedados em uma CDN",
- "waf": "Desempenho"
+ "text": "Use identidades gerenciadas para autenticar em outros recursos do Azure sempre que possível",
+ "waf": "Segurança"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
- "severity": "Baixo",
- "text": "Ter vários provedores de identidade (ou seja, fazer login com suas contas da Microsoft, Google, Facebook)",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
+ "severity": "Alto",
+ "text": "Usar o WAF (Web Application Firewall) implantando o Application Gateway na frente do APIM",
+ "waf": "Segurança"
+ },
+ {
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "41faa1ed-b7f0-447d-8cba-4a4905e5bb83",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
+ "severity": "Alto",
+ "text": "Permitir que 2 réplicas tenham 99,9% de disponibilidade para operações de leitura",
"waf": "Fiabilidade"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7d956fd9-788a-4845-9b9f-c0340972d810",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#high-availability",
+ "service": "Cognitive Search",
"severity": "Média",
- "text": "Siga as regras de VM para alta disponibilidade no nível da VM (discos premium, dois ou mais em uma região, em zonas de disponibilidade diferentes)",
+ "text": "Permitir que 3 réplicas tenham 99,9% de disponibilidade para operações de leitura/gravação",
"waf": "Fiabilidade"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "Média",
- "text": "Não replique! A replicação pode criar problemas com a sincronização de diretórios",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "44dc5f2b-a032-4d03-aae8-90c3f2c0a4c3",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#availability-zone-support",
+ "service": "Cognitive Search",
+ "severity": "Alto",
+ "text": "Aproveite as zonas de disponibilidade habilitando réplicas de leitura e/ou gravação",
"waf": "Fiabilidade"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "cd0730f0-0ff1-4b77-9a2b-2a1f7dd5e291",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions",
+ "service": "Cognitive Search",
"severity": "Média",
- "text": "Ter ativo-ativo para várias regiões",
+ "text": "Para redução regional, crie manualmente serviços em 2 ou mais regiões para a Pesquisa, pois não fornece um método automatizado de replicação de índices de pesquisa entre regiões geográficas",
"waf": "Fiabilidade"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "3c964882-aec9-4d44-9f68-4b5f2efbbdb6",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services",
+ "service": "Cognitive Search",
"severity": "Média",
- "text": "Adicionar carimbos de serviço de Domínio do Azure AD a regiões e locais adicionais",
+ "text": "Para sincronizar dados em vários serviços: Use indexadores para atualizar conteúdo em vários serviços ou Use APIs REST para enviar atualizações de conteúdo em vários serviços",
"waf": "Fiabilidade"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "85ee93c9-f53c-4803-be51-e6e4aa37ff4e",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests",
+ "service": "Cognitive Search",
"severity": "Média",
- "text": "Usar conjuntos de réplicas para DR",
+ "text": "Usar o Gerenciador de Tráfego do Azure para coordenar solicitações",
+ "waf": "Fiabilidade"
+ },
+ {
+ "arm-service": "Microsoft.Search/searchServices",
+ "checklist": "Cognitive Search Review Checklist",
+ "guid": "7be10278-57c1-4a61-8ee3-895aebfec5aa",
+ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives",
+ "service": "Cognitive Search",
+ "severity": "Alto",
+ "text": "Backup e restauração de um índice de pesquisa cognitiva do Azure. Use este código de exemplo para fazer backup da definição de índice e instantâneo em uma série de arquivos Json",
"waf": "Fiabilidade"
},
{
@@ -8990,7 +8990,7 @@
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/checklists/waf_checklist.zh-Hant.json b/checklists/waf_checklist.zh-Hant.json
index c944ad65c..692a96cf1 100644
--- a/checklists/waf_checklist.zh-Hant.json
+++ b/checklists/waf_checklist.zh-Hant.json
@@ -1,4368 +1,4167 @@
{
"items": [
{
- "checklist": "Identity Review Checklist",
- "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
- "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
- "service": "Entra",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保在本機 Azure 的標識訂閱中部署了 ADDS 域控制器",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "75089c20-990d-4927-b105-885576f76fc2",
+ "service": "AVS",
"severity": "中等",
- "text": "使用長期可撤銷令牌,緩存令牌並使用 Microsoft 標識庫以靜默方式獲取令牌",
- "waf": "可靠性"
+ "text": "確保將 ADDS 網站和服務配置為將來自基於 Azure 的資源(包括 Azure VMware 解決方案)的身份驗證請求保留到 Azure 本地",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
- "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
- "service": "AAD B2C",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保 vCenter 已連接到 ADDS,以啟用基於「指定用戶帳戶」的身份驗證",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
+ "service": "AVS",
"severity": "中等",
- "text": "請確保登錄使用者流已備份並具有復原能力。請確保用於登錄使用者的代碼已備份且可恢復。與外部進程的彈性介面",
- "waf": "可靠性"
+ "text": "確保從 vCenter 到 ADDS 的連接使用安全協定 (LDAPS)",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
- "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
- "service": "AAD B2C",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
+ "service": "AVS",
"severity": "中等",
- "text": "自訂品牌資產應託管在CDN上",
- "waf": "性能"
+ "text": "vCenter IdP 中的 CloudAdmin 帳戶僅用作緊急帳戶 (break-glass)",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
- "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
- "service": "AAD B2C",
- "severity": "低",
- "text": "擁有多個標識提供者(即使用您的 Microsoft、Google、Facebook 帳戶登錄)",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保 NSX-Manager 與外部身份提供程式 (LDAPS) 集成",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
+ "service": "AVS",
"severity": "中等",
- "text": "遵循 VM 規則,實現 VM 級別的高可用性(高級磁碟,一個區域中的兩個或更多磁碟,位於不同的可用性區域)",
- "waf": "可靠性"
+ "text": "是否已創建 RBAC 模型以在 VMware vSphere 中使用",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
+ "service": "AVS",
"severity": "中等",
- "text": "不要複製!複製可能會產生目錄同步問題",
- "waf": "可靠性"
+ "text": "RBAC 許可權應授予 ADDS 組,而不是特定使用者",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
- "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
- "service": "Windows AD",
- "severity": "中等",
- "text": "對多區域具有主動-主動",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
+ "service": "AVS",
+ "severity": "高",
+ "text": "Azure 中 Azure VMware 解決方案資源的 RBAC 許可權僅「鎖定」為一組有限的擁有者",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
- "severity": "中等",
- "text": "將 Azure AD 域服務標記添加到其他區域和位置",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保所有自定義角色的範圍都具有 CloudAdmin 允許的授權",
+ "waf": "安全"
},
{
- "checklist": "Identity Review Checklist",
- "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
- "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
- "service": "Entra",
- "severity": "中等",
- "text": "將副本集用於DR",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
+ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
+ "service": "AVS",
+ "severity": "高",
+ "text": "是否為手頭的客戶用例選擇了正確的 Azure VMware 解決方案連接模型",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
- "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
- "service": "SAP",
- "severity": "中等",
- "text": "Azure SAP 解決方案中心 (ACSS) 是一項 Azure 產品/服務,可使 SAP 成為 Azure 上的頂級工作負載。ACSS 是一種端到端解決方案,使你能夠在 Azure 上創建和運行 SAP 系統作為統一的工作負載,並為創新提供更無縫的基礎。可以利用新的和現有的基於 Azure 的 SAP 系統的管理功能。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保使用「連接監視器」監視從本地到 Azure 的 ExpressRoute 或 VPN 連接",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
+ "service": "AVS",
"severity": "中等",
- "text": "Azure 支援在Linux和 Windows 中自動執行 SAP 部署。SAP 部署自動化框架是一種開源編排工具,可以部署、安裝和維護 SAP 環境。",
- "training": "https://github.com/Azure/sap-automation",
+ "text": "確保創建從 Azure 本機資源到 Azure VMware 解決方案虛擬機的連接監視器,以監視 Azure VMware 解決方案後端 ExpressRoute 連接",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
+ "service": "AVS",
"severity": "中等",
- "text": "在符合 RTO 要求的任何時間點和時間範圍內對生產資料庫執行時間點恢復;時間點恢復通常包括操作員在DBMS層上或通過SAP刪除數據時出現的錯誤",
- "waf": "可靠性"
+ "text": "確保創建從本地資源到 Azure VMware 解決方案虛擬機的連接監視器,以監視端到端連接",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
- "service": "SAP",
- "severity": "中等",
- "text": "測試備份和恢復時間,以驗證它們是否滿足在災難發生后同時還原所有系統的 RTO 要求。",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
+ "service": "AVS",
+ "severity": "高",
+ "text": "使用路由伺服器時,請確保從路由伺服器到 ExR 閘道再到本地的路由不超過 1000 個(ARS 限制)。",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "b651423c-8552-42db-a545-5cb50c05527a",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
+ "service": "AVS",
"severity": "高",
- "text": "可以在配對區域之間複製標準存儲,但不能使用標準存儲來存儲資料庫或虛擬硬碟。您只能在使用的配對區域之間複製備份。對於所有其他數據,請使用本機 DBMS 功能(如 SQL Server Always On 或 SAP HANA 系統複製)運行複製。將 Site Recovery、rsync 或 robocopy 以及其他第三方軟體組合用於 SAP 應用程式層。",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "可靠性"
+ "text": "是否為在 Azure 門戶中管理 Azure VMware 解決方案資源的角色實現了 Privileged Identity Management(不允許長期許可權)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 Azure 可用性區域實現高可用性時,必須考慮 SAP 應用程式伺服器和資料庫伺服器之間的延遲。對於具有高延遲的區域,需要制定操作過程,以確保 SAP 應用程式伺服器和資料庫伺服器始終在同一區域中運行。",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
+ "service": "AVS",
+ "severity": "高",
+ "text": "應為 Azure VMware 解決方案 PIM 角色實現 Privileged Identity Management 審核報告",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "SAP",
- "severity": "高",
- "text": "設置從本地到主要和次要 Azure 災難恢復區域的 ExpressRoute 連接。此外,作為使用 ExpressRoute 的替代方法,請考慮設置從本地到主要和輔助 Azure 災難恢復區域的 VPN 連接。",
- "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "如果使用 Privileged Identity Management,請確保使用有效的 SMTP 記錄創建啟用了 Entra ID 的有效帳戶,以便 Azure VMware 解決方案自動主機更換通知。(需要長期許可)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "SAP",
- "severity": "低",
- "text": "跨區域複製證書、機密或密鑰等金鑰保管庫內容,以便解密DR區域中的數據。",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
+ "service": "AVS",
+ "severity": "高",
+ "text": "將 CloudAdmin 帳戶的使用限制為僅緊急訪問",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
+ "service": "AVS",
"severity": "中等",
- "text": "對等連接主虛擬網路和災難恢復虛擬網路。例如,對於 HANA 系統複製,需要將 SAP HANA DB 虛擬網路對等互連到災難恢復網站的 SAP HANA DB 虛擬網路。",
- "waf": "可靠性"
+ "text": "在 vCenter 中創建自定義 RBAC 角色,以在 vCenter 中實施最小特權模型",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
- "service": "SAP",
- "severity": "低",
- "text": "如果將 Azure NetApp 檔案儲存用於 SAP 部署,則至少要在兩個區域的高級層中創建兩個 Azure NetApp 檔帳戶。",
- "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
- "severity": "高",
- "text": "應使用本機資料庫複製技術來同步HA對中的資料庫。",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
- "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
- "service": "SAP",
- "severity": "高",
- "text": "主虛擬網路 (VNet) 的 CIDR 不應與DR網站的 VNet 的 CIDR 衝突或重疊",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "是定義為定期輪換 cloudadmin (vCenter) 和管理員 (NSX) 憑據的過程",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
+ "service": "AVS",
"severity": "高",
- "text": "使用 Site Recovery 將應用程式伺服器複製到 DR 網站。Site Recovery 還可以説明將中心服務群集 VM 複製到DR網站。調用DR時,需要在DR網站上重新配置Linux Pacemaker群集(例如,替換VIP或SBD、運行 corosync.conf 等)。",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
- "waf": "可靠性"
+ "text": "使用集中式識別提供者用於在 Azure VMware 解決方案上運行的工作負載 (VM)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "高",
- "text": "考慮 SAP 軟體針對單點故障的可用性。這包括應用程式中的單點故障,例如 SAP NetWeaver 和 SAP S/4HANA 架構中使用的 DBMS、SAP ABAP 和 ASCS + SCS。此外,還有其他工具,例如 SAP Web Dispatcher。",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "是否在 NSX-T 中實施了東西向流量篩選",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
+ "service": "AVS",
"severity": "高",
- "text": "對於 SAP 和 SAP 資料庫,請考慮實現自動故障轉移群集。在 Windows 中,Windows Server 故障轉移群集支援故障轉移。在 Linux 中,Linux Pacemaker 或第三方工具(如 SIOS Protection Suite 和 Veritas InfoScale)支援故障轉移。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "可靠性"
+ "text": "Azure VMware 解決方案上的工作負載不會直接向 Internet 公開。流量由 Azure 應用程式閘道、Azure 防火牆或第三方解決方案進行篩選和檢查",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
+ "service": "AVS",
"severity": "高",
- "text": "Azure 不支援主 VM 和輔助 VM 共用 DBMS 數據存儲的體系結構。對於 DBMS 層,常見的體系結構模式是同時複製資料庫,並使用與主虛擬機和輔助虛擬機使用的存儲堆疊不同的存儲堆疊。",
- "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
- "waf": "可靠性"
+ "text": "對 Azure VMware 解決方案和基於 Azure VMware 解決方案的工作負載的入站 Internet 請求實施審核和日誌記錄",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
- "service": "SAP",
- "severity": "高",
- "text": "DBMS 數據和事務/重做日誌檔存儲在 Azure 支援的塊存儲或 Azure NetApp 檔中。不支援將 Azure 檔案儲存或 Azure 高級檔儲存作為 DBMS 資料和/或使用 SAP 工作負載重做日誌檔的存儲。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "對來自 Azure VMware 解決方案或基於 Azure VMware 解決方案的工作負載的出站 Internet 連接實施會話監視,以識別可疑/惡意活動",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
- "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
- "service": "SAP",
- "severity": "高",
- "text": "可以在 Windows 中將 Azure 共用磁碟用於 ASCS + SCS 元件和特定的高可用性方案。為 SAP 應用程式層元件和 DBMS 層單獨設置故障轉移群集。Azure 目前不支援將 SAP 應用程式層元件和 DBMS 層合併到一個故障轉移群集中的高可用性體系結構。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "334fdf91-c234-4182-a652-75269440b4be",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "是否在 Azure 的 ExR/VPN 閘道子網上啟用了 DDoS 標準防護",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
- "service": "SAP",
- "severity": "高",
- "text": "SAP 應用程式層元件 (ASCS) 和 DBMS 層的大多數故障轉移群集都需要故障轉移群集的虛擬 IP 位址。 Azure 負載均衡器應處理所有其他情況的虛擬IP位址。一個設計原則是每個集群配置使用一個負載均衡器。建議使用標準版本的負載均衡器(標準負載均衡器 SKU)。",
- "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "使用專用特權訪問工作站 (PAW) 管理 Azure VMware 解決方案、vCenter、NSX Manager 和 HCX Manager",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
- "service": "SAP",
- "severity": "高",
- "text": "確保在負載均衡器上啟用了浮動IP",
- "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "為 Azure VMware 解決方案上運行的工作負載啟用高級威脅檢測(Microsoft Defender for Cloud,又名 ASC)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "SAP",
- "severity": "高",
- "text": "在部署高可用性基礎結構之前,請根據所選的區域確定是使用 Azure 可用性集還是可用性區域進行部署。",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "使用適用於伺服器的 Azure ARC 使用 Azure 本機技術正確管理在 Azure VMware 解決方案上運行的工作負載(適用於 Azure VMware 解決方案的 Azure ARC 尚不可用)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
- "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
- "service": "SAP",
- "severity": "高",
- "text": "如果要滿足 SAP 元件(中央服務、應用程式伺服器和資料庫)應用程式的基礎結構 SLA,則必須為所有元件選擇相同的高可用性選項(VM、可用性集、可用性區域)。",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
+ "service": "AVS",
+ "severity": "低",
+ "text": "確保 Azure VMware 解決方案上的工作負載在運行時使用足夠的數據加密(如來賓內磁碟加密和 SQL TDE)。(vSAN 靜態加密為預設加密)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
- "severity": "高",
- "text": "不要在同一可用性集中混合使用不同角色的伺服器。將中央服務 VM、資料庫 VM、應用程式 VM 保留在自己的可用性集中",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
+ "service": "AVS",
+ "severity": "低",
+ "text": "使用來賓內加密時,請盡可能將加密密鑰存儲在 Azure Key Vault 中",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
- "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5ac94222-3e13-4810-9230-81a941741583",
+ "service": "AVS",
"severity": "中等",
- "text": "除非使用鄰近放置組,否則無法在 Azure 可用性區域內部署 Azure 可用性集。",
- "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
- "service": "SAP",
- "severity": "高",
- "text": "創建可用性集時,請使用最大數量的容錯域和更新可用的域。例如,如果在一個可用性集中部署兩個以上的 VM,請使用最大數量的容錯域(三個)和足夠的更新域來限制潛在的物理硬體故障、網路中斷或電源中斷的影響,以及 Azure 計劃內維護。默認的容錯域數為 2,以後無法連線更改。",
- "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
- "waf": "可靠性"
+ "text": "請考慮對 Azure VMware 解決方案上運行的工作負載使用擴展的安全更新支援(Azure VMware 解決方案符合 ESU 條件)",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
+ "service": "AVS",
"severity": "高",
- "text": "在可用性集部署中使用 Azure 鄰近放置組時,所有三個 SAP 元件(中央服務、應用程式伺服器和資料庫)都應位於同一鄰近放置組中。",
+ "text": "確保使用適當的 vSAN 資料冗餘方法(RAID 規範)",
"waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d88408f3-7273-44c8-96ba-280214590146",
+ "service": "AVS",
"severity": "高",
- "text": "每個 SAP SID 使用一個鄰近放置組。組不跨可用性區域或 Azure 區域",
+ "text": "確保允許失敗策略已到位,以滿足您的 vSAN 儲存需求",
"waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
+ "service": "AVS",
"severity": "高",
- "text": "根據操作系統的不同,使用以下服務之一來運行 SAP 中心服務群集。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "text": "確保已請求足夠的配額,確保已考慮增長和災難恢復要求",
"waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
+ "service": "AVS",
"severity": "中等",
- "text": "Azure 目前不支援將 ASCS 和 DB HA 組合在同一 Linux Pacemaker 群集中;將它們分成單獨的集群。但是,最多可以將五個多個中心服務群集合併到一對 VM 中。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "可靠性"
+ "text": "確保瞭解對 ESXi 的訪問限制,其中存在可能影響第三方解決方案的訪問限制。",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
- "service": "SAP",
- "severity": "中等",
- "text": "在可用性集或可用性區域中的高可用性對中部署兩個 VM。這些 VM 的大小應相同,並具有相同的存儲配置。",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
+ "service": "AVS",
"severity": "中等",
- "text": "Azure 支援在 Red Hat Enterprise Linux (RHEL) 上運行的同一高可用性群集上安裝和配置 SAP HANA 和 ASCS/SCS 和 ERS 實例。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
- "severity": "高",
- "text": "在高級託管 SSD 上運行所有生產系統,並使用 Azure NetApp 檔或超級磁碟存儲。至少OS磁碟應位於高級層,以便您可以獲得更好的性能和最佳SLA。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
- "service": "SAP",
- "severity": "高",
- "text": "應僅在 SAP 認證的存儲類型上運行 Azure 上的 SAP HANA。請注意,某些卷必須在某些磁碟配置(如果適用)上運行。這些配置包括啟用寫入加速器和使用高級存儲。您還需要確保在儲存上運行的檔案系統與在電腦上運行的 DBMS 相容。",
- "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
- "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
- "service": "SAP",
- "severity": "高",
- "text": "請考慮根據用於 SAP 工作負載的儲存類型配置高可用性。Azure Site Recovery 不支援 Azure 中提供的某些存儲服務,因此高可用性配置可能會有所不同。",
- "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
- "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
- "severity": "高",
- "text": "不同的本機 Azure 儲存服務(如 Azure 檔存儲、Azure NetApp 檔、Azure 共用磁碟)可能並非在所有區域都可用。因此,若要在故障轉移后在DR區域上設置類似的SAP,請確保在DR網站中提供相應的存儲服務。",
- "waf": "可靠性"
+ "text": "確保您制定了有關ESXi主機密度和效率的策略,並牢記請求新節點的提前期",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
+ "service": "AVS",
"severity": "中等",
- "text": "自動執行 SAP System Start-Stop 以管理成本。",
+ "text": "確保 Azure VMware 解決方案的良好成本管理流程已到位 - 可以使用 Azure 成本管理",
"waf": "成本"
},
{
- "checklist": "SAP Checklist",
- "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
+ "service": "AVS",
"severity": "低",
- "text": "如果將 Azure 高級存儲與 SAP HANA 配合使用,則可以使用 Azure 標準 SSD 儲存來選擇成本敏感的儲存解決方案。但是,請注意,選擇“標準 SSD”或“標準 HDD Azure”存儲將影響各個 VM 的 SLA。此外,對於具有較低 I/O 輸送量和低延遲的系統(例如非生產環境),可以使用較低系列的 VM。",
+ "text": "Azure 預留實例是否用於優化使用 Azure VMware 解決方案的成本",
"waf": "成本"
},
{
- "checklist": "SAP Checklist",
- "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
- "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
- "service": "SAP",
- "severity": "低",
- "text": "作為成本較低的替代配置(多用途),可以為非生產 HANA 資料庫伺服器 VM 選擇低性能 SKU。但是,請務必注意,某些 VM 類型(如 E 系列)未經 HANA 認證(SAP HANA 硬體目錄),或者無法實現小於 1 毫秒的存儲延遲。",
- "waf": "成本"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "使用其他 Azure 本機服務時,請考慮使用 Azure 專用連結",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
- "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
+ "service": "AVS",
"severity": "高",
- "text": "對管理組、訂閱、資源組和資源強制實施 RBAC 模型",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
- "waf": "安全"
+ "text": "確保所有必需的資源都駐留在同一個 Azure 可用性區域中",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "45911475-e39e-4530-accc-d979366bcda2",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
+ "service": "AVS",
"severity": "中等",
- "text": "強制實施主體傳播,以便透過雲連接器將身份從 SAP 雲應用程式轉發到 SAP 本地(包括 IaaS)",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
+ "text": "為 Azure VMware 解決方案來賓 VM 工作負載啟用 Microsoft Defender for Cloud",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 SAML 通過 Azure AD 實現 SAP SaaS 應用程式(如 SAP Analytics Cloud、SAP Cloud Platform、Business by Design、SAP Qualtrics 和 SAP C4C)的 SSO。",
+ "text": "使用已啟用 Azure Arc 的伺服器管理 Azure VMware 解決方案來賓 VM 工作負載",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 SAML 對基於 SAP NetWeaver 的 Web 應用程式(如 SAP Fiori 和 SAP Web GUI)實施 SSO。",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
+ "service": "AVS",
+ "severity": "高",
+ "text": "在 Azure VMware 解決方案上啟用診斷和指標日誌記錄",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 SAML 對基於 SAP NetWeaver 的 Web 應用程式(如 SAP Fiori 和 SAP Web GUI)實施 SSO。",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
- "waf": "安全"
+ "text": "將Log Analytics代理部署到 Azure VMware 解決方案來賓 VM 工作負載",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
+ "service": "AVS",
"severity": "中等",
- "text": "可以使用SAP NetWeaver SSO 或合作夥伴解決方案將 SSO 實現到 SAP GUI。",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
- "waf": "安全"
+ "text": "確保已針對 Azure VMware 解決方案 VM 工作負載記錄並實施了備份策略和解決方案",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
+ "service": "AVS",
"severity": "中等",
- "text": "對於 SAP GUI 和 Web 瀏覽器存取的 SSO,請實施 SNC/Kerberos/SPNEGO(簡單且受保護的 GSSAPI 協商機制),因為它易於配置和維護。對於使用 X.509 用戶端證書的 SSO,請考慮 SAP 安全登錄伺服器,它是 SAP SSO 解決方案的一個元件。",
- "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
+ "text": "使用 Microsoft Defender for Cloud 對 Azure VMware 解決方案上運行的工作負載進行合規性監視",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
- "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
+ "service": "AVS",
"severity": "中等",
- "text": "對於 SAP GUI 和 Web 瀏覽器存取的 SSO,請實施 SNC/Kerberos/SPNEGO(簡單且受保護的 GSSAPI 協商機制),因為它易於配置和維護。對於使用 X.509 用戶端證書的 SSO,請考慮 SAP 安全登錄伺服器,它是 SAP SSO 解決方案的一個元件。",
+ "text": "是否將適用的合規性基線添加到 Microsoft Defender for Cloud",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "16785d6f-a96c-496a-b885-18f482734c88",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 OAuth for SAP NetWeaver 實現 SSO,以允許第三方或自定義應用程式訪問 SAP NetWeaver OData 服務。",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
+ "service": "AVS",
+ "severity": "高",
+ "text": "在選擇要用於 Azure VMware 解決方案部署的 Azure 區域時是否評估了數據駐留",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
- "service": "SAP",
- "severity": "中等",
- "text": "實現 SSO 到 SAP HANA",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
+ "service": "AVS",
+ "severity": "高",
+ "text": "數據處理影響(服務提供者/服務消費者模型)是否清晰且有據可查",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "547c1747-dc56-4068-a714-435cd19dd244",
+ "service": "AVS",
"severity": "中等",
- "text": "將 Azure AD 視為 RISE 上託管的 SAP 系統的標識提供者。有關詳細資訊,請參閱將服務與 Azure AD 集成。",
+ "text": "僅當出於合規性原因需要時,才考慮將CMK(客戶管理的密鑰)用於 vSAN。",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
- "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
- "service": "SAP",
- "severity": "中等",
- "text": "對於訪問 SAP 的應用程式,可能需要使用主體傳播來建立 SSO。",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
+ "service": "AVS",
+ "severity": "高",
+ "text": "創建儀錶板以啟用核心 Azure VMware 解決方案監視見解",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
- "service": "SAP",
- "severity": "中等",
- "text": "如果使用的是需要 SAP Identity Authentication Service (IAS) 的 SAP BTP 服務或 SaaS 解決方案,請考慮在 SAP Cloud Identity Authentication Services 和 Azure AD 之間實現 SSO 以存取這些 SAP 服務。此集成允許 SAP IAS 充當代理標識提供者,並將身份驗證請求轉發到 Azure AD,作為中央使用者存儲和標識提供者。",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
+ "service": "AVS",
+ "severity": "高",
+ "text": "針對 Azure VMware 解決方案性能(CPU >80%、平均記憶體 >80%、vSAN >70%)自動警報的關鍵閾值創建警告警報",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
- "service": "SAP",
- "severity": "中等",
- "text": "實現 SSO 到 SAP BTP",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保創建嚴重警示以監控 vSAN 消耗量是否低於 75%,因為這是 VMware 的支援閾值",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
- "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
- "service": "SAP",
- "severity": "中等",
- "text": "如果使用的是 SAP SuccessFactors,請考慮使用 Azure AD 自動使用者預配。通過此整合,當你向 SAP SuccessFactors 添加新員工時,可以在 Azure AD 中自動建立使用者帳戶。 (可選)可以在 Microsoft 365 或 Azure AD 支援的其他 SaaS 應用程式中建立使用者帳戶。 使用將電子郵件地址寫回 SAP SuccessFactors。",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
+ "service": "AVS",
+ "severity": "高",
+ "text": "確保為 Azure 服務運行狀況警報和通知配置警報",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
+ "service": "AVS",
"severity": "中等",
- "text": "對 SAP 訂閱強制實施現有管理組策略",
- "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
+ "text": "將 Azure VMware 解決方案記錄設定為發送到 Azure 儲存帳戶或 Azure EventHub 進行處理",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
- "severity": "高",
- "text": "將緊密耦合的應用程式集成到同一個 SAP 訂閱中,以避免額外的路由和管理複雜性",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
+ "service": "AVS",
+ "severity": "低",
+ "text": "如果需要深入瞭解 VMware vSphere:解決方案中是否使用了 vRealize Operations 和/或 vRealize Network Insights?",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
+ "service": "AVS",
"severity": "高",
- "text": "利用訂閱作為縮放單元並擴展我們的資源,請考慮按環境部署訂閱,例如。沙箱、非生產、生產",
- "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "text": "確保虛擬機的 vSAN 儲存策略不是預設存儲策略,因為此策略應用厚置備",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
- "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
- "service": "SAP",
- "severity": "高",
- "text": "確保在訂閱預配過程中增加配額(例如,訂閱中可用的 VM 核心總數)",
- "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "確保未將 vSphere 內容庫放置在 vSAN 上,因為 vSAN 是有限的資源",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
- "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
- "service": "SAP",
- "severity": "低",
- "text": "配額 API 是一個 REST API,可用於查看和管理 Azure 服務的配額。如有必要,請考慮使用它。",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "確保備份解決方案的數據存儲庫存儲在 vSAN 儲存之外。在 Azure 本機或磁碟池支持的數據存儲中",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
- "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
- "service": "SAP",
- "severity": "高",
- "text": "如果部署到可用性區域,請確保在配額獲得批准后,VM 的區域部署可用。提交支援請求,其中包含所需的訂閱、VM 系列、CPU 數量和可用性區域。",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "確保使用 Azure Arc for Servers 進行混合管理,確保在 Azure VMware 解決方案上運行的工作負載(Arc for Azure VMware 解決方案處於預覽狀態)",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
- "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
- "service": "SAP",
- "severity": "高",
- "text": "確保所需的服務和功能在所選部署區域內可用,例如。ANF、區域等",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "確保使用 Azure Log Analytics 和 Azure Monitor 監視在 Azure VMware 解決方案上運行的工作負載",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
+ "service": "AVS",
"severity": "中等",
- "text": "利用 Azure 資源標記進行成本分類和資源分組(:BillTo、部門(或營業單位)、環境(生產、階段、開發)、層(Web 層、應用層)、應用程式擁有者、ProjectName)",
- "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "text": "在現有更新管理工具或 Azure 更新管理中包括在 Azure VMware 解決方案上運行的工作負載",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
- "severity": "高",
- "text": "使用 Azure 備份服務幫助保護 HANA 資料庫。",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
+ "service": "AVS",
"severity": "中等",
- "text": "如果為 HANA、Oracle 或 DB2 資料庫部署 Azure NetApp 檔,請使用 Azure 應用程式一致性快照工具( AzAcSnap )來創建應用程式一致性快照。AzAcSnap 還支援 Oracle 資料庫。請考慮在中央 VM 上使用 AzAcSnap,而不是在單個 VM 上使用 AzAcSnap。",
- "waf": "可靠性"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
- "severity": "高",
- "text": "確保操作系統和 SAP 系統之間的時區匹配。",
+ "text": "使用 Azure Policy 在 Azure 管理、監視和安全解決方案中加入 Azure VMware 解決方案工作負載",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
+ "service": "AVS",
"severity": "中等",
- "text": "不要將不同的應用程式服務分組到同一個集群中。例如,不要將DRBD和中央服務集群組合在同一集群上。但是,可以使用同一個 Pacemaker 群集來管理大約五個不同的中心服務(多 SID 群集)。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "可靠性"
+ "text": "確保在 Azure VMware 解決方案上運行的工作負載已載入 Microsoft Defender for Cloud",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
- "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
- "service": "SAP",
- "severity": "低",
- "text": "請考慮在暫停模型中運行開發/測試系統,以節省和優化 Azure 運行成本。",
- "waf": "成本"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "確保備份不存儲在 vSAN 上,因為 vSAN 是有限的資源",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
- "link": "https://learn.microsoft.com/azure/lighthouse/overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
+ "service": "AVS",
"severity": "中等",
- "text": "如果通過管理客戶的 SAP 資產與客戶合作,請考慮使用 Azure Lighthouse。Azure Lighthouse 允許託管服務提供者使用 Azure 本機標識服務對客戶的環境進行身份驗證。它將控制權交到客戶手中,因為他們可以隨時撤銷訪問許可權並審核服務提供者的行為。",
- "waf": "操作"
+ "text": "是否考慮了所有災難恢復解決方案,並決定了最適合您業務的解決方案?[SRM/JetStream/Zerto/Veeam/...]",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
- "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure Update Manager 檢查單個 VM 或多個 VM 的可用更新狀態,並考慮計劃定期修補。",
- "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
- "waf": "操作"
+ "text": "當災難恢復技術是本機 Azure IaaS 時,請使用 Azure Site Recovery",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
- "service": "SAP",
- "severity": "低",
- "text": "使用 SAP Landscape Management (LaMa) 優化和管理 SAP Basis 運營。使用適用於 Azure 的 SAP LaMa 連接器重新置放、複製、克隆和刷新 SAP 系統。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
- "waf": "操作"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
+ "service": "AVS",
+ "severity": "高",
+ "text": "將自動恢復計劃與任一災難解決方案結合使用,盡可能避免手動任務",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
- "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "8255461e-2aee-4345-9aec-8339248b262d",
+ "service": "AVS",
"severity": "中等",
- "text": "使用用於 SAP 解決方案的 Azure Monitor 監視 Azure 上的 SAP 工作負載(SAP HANA、高可用性 SUSE 群集和 SQL 系統)。請考慮使用 SAP 解決方案管理器補充用於 SAP 解決方案的 Azure Monitor。",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
- "waf": "操作"
+ "text": "使用地緣政治區域對作為輔助災難恢復環境",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
+ "service": "AVS",
"severity": "高",
- "text": "運行適用於 SAP 的 VM 擴展檢查。適用於 SAP 的 VM 擴展使用虛擬機 (VM) 的分配託管標識來訪問 VM 監視和配置數據。該檢查可確保 SAP 應用程式中的所有性能指標都來自適用於 SAP 的基礎 Azure 擴展。",
- "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
- "waf": "操作"
+ "text": "在區域之間使用 2 個不同的地址空間,例如:10.0.0.0/16 和 192.168.0.0/16 用於不同的區域",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure Policy 進行訪問控制和合規性報告。Azure Policy 提供了強制實施組織範圍設置的功能,以確保一致的策略遵守和快速違規檢測。",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "waf": "操作"
+ "text": "ExpressRoute Global Reach 是用於主 Azure VMware 解決方案私有雲和輔助 Azure VMware 解決方案私有雲之間的連接,還是通過網路虛擬設備完成路由?",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
- "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure 網路觀察程式中的連接監視器監視 SAP 資料庫和應用程式伺服器的延遲指標。或者使用 Azure Monitor 收集和顯示網路延遲度量。",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
- "waf": "操作"
+ "text": "是否考慮了所有備份解決方案,並決定了最適合您業務的解決方案?[ MABS/CommVault/Metallic.io/Veeam/ .",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "73686af4-6791-4f89-95ad-a43324e13811",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
+ "service": "AVS",
"severity": "中等",
- "text": "在預配的 Azure 基礎結構上對 SAP HANA 執行質量檢查,以驗證預配的 VM 是否符合 Azure 上的 SAP HANA 最佳做法。",
- "waf": "操作"
+ "text": "將備份解決方案部署在與 Azure VMware 解決方案私有雲相同的區域中",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
- "service": "SAP",
- "severity": "高",
- "text": "對於每個 Azure 訂閱,請在區域部署之前對 Azure 可用性區域運行延遲測試,以選擇用於在 Azure 上部署 SAP 的低延遲區域。",
- "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "waf": "性能"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "在 vSan 外部的 Azure 本機組件上部署備份解決方案",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
- "service": "SAP",
- "severity": "中等",
- "text": "運行復原報告,確保整個預配的 Azure 基礎結構(計算、資料庫、網路、存儲、Site Recovery)的配置符合適用於 Azure 的 Cloud Adaption Framework 定義的配置。",
- "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
+ "service": "AVS",
+ "severity": "低",
+ "text": "是否已制定請求還原由 Azure 平臺管理的 VMware 元件的流程?",
"waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
- "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
- "service": "SAP",
- "severity": "中等",
- "text": "使用適用於 SAP 的 Microsoft Sentinel 解決方案實施威脅防護。使用此解決方案監視 SAP 系統,並檢測整個業務邏輯和應用程式層的複雜威脅。",
- "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
+ "service": "AVS",
+ "severity": "低",
+ "text": "對於手動部署,必須記錄所有配置和部署",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "service": "SAP",
- "severity": "中等",
- "text": "Azure 標記可用於對資源進行邏輯分組和跟蹤,自動執行其部署,最重要的是,提供對所發生成本的可見性。",
- "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
+ "service": "AVS",
+ "severity": "低",
+ "text": "對於手動部署,請考慮實施資源鎖,以防止對 Azure VMware 解決方案私有雲執行意外操作",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
+ "service": "AVS",
"severity": "低",
- "text": "對延遲敏感型應用程式使用虛擬機間延遲監視。",
- "waf": "性能"
+ "text": "對於自動化部署,請部署最小的私有雲並根據需要進行擴展",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 Azure Site Recovery 監視來維護 SAP 應用程式伺服器的災難恢復服務的運行狀況。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
- "waf": "可靠性"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
+ "service": "AVS",
+ "severity": "低",
+ "text": "對於自動部署,請在開始部署之前請求或預留配額",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
- "service": "SAP",
- "severity": "中等",
- "text": "從防病毒掃描中排除所有資料庫檔系統和可執行程式。包含它們可能會導致性能問題。請與資料庫供應商聯繫,瞭解排除清單中的規範性詳細資訊。例如,Oracle 建議從防病毒掃描中排除 /oracle}sapdata。",
- "waf": "性能"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
+ "service": "AVS",
+ "severity": "低",
+ "text": "對於自動部署,請確保通過自動化或 Azure Policy 創建相關資源鎖,以便進行適當的治理",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "c027f893-f404-41a9-b33d-39d625a14964",
- "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
+ "service": "AVS",
"severity": "低",
- "text": "請考慮在遷移後收集非 HANA 資料庫的完整資料庫統計資訊。例如,實施SAP 註釋1020260 - 交付 Oracle 統計資訊。",
- "waf": "性能"
+ "text": "為 ExR 授權金鑰實現人類可理解的名稱,以便輕鬆識別密鑰的目的/用途",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
- "service": "SAP",
- "severity": "中等",
- "text": "請考慮將 Oracle 自動儲存管理 (ASM) 用於使用 Azure 上的 SAP 的所有 Oracle 部署。",
- "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
- "waf": "性能"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "255461e2-aee3-4553-afc8-339248b262d6",
+ "service": "AVS",
+ "severity": "低",
+ "text": "當使用單獨的服務原則部署 Azure VMware 解決方案和 ExpressRoute 時,請使用 Key Vault 儲存機密和授權密鑰",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
- "service": "SAP",
- "severity": "中等",
- "text": "對於運行 Oracle 的 Azure 上的 SAP,SQL 腳本集合可説明你診斷性能問題。 自動工作負載存儲庫 (AWR) 報告包含用於診斷 Oracle 系統中問題的寶貴資訊。我們建議您在多個工作階段期間運行 AWR 報告,並為其選擇高峰時間,以確保分析的廣泛覆蓋範圍。",
- "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
- "waf": "性能"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
+ "service": "AVS",
+ "severity": "低",
+ "text": "當需要在 Azure VMware 解決方案中/上部署許多資源時,定義用於在 IaC 中序列化操作的資源依賴項,因為 Azure VMware 解決方案僅支援有限數量的並行操作。",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
- "severity": "高",
- "text": "使用 Azure Site Recovery 監視來維護 SAP 應用程式伺服器的災難恢復服務的運行狀況。",
- "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
+ "service": "AVS",
+ "severity": "低",
+ "text": "使用單個 Tier-1 閘道執行 NSX-T 分段的自動配置時,請使用 Azure 門戶 API 而不是 NSX-Manager API",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
+ "service": "AVS",
"severity": "中等",
- "text": "若要安全交付 HTTP/S 應用,請使用應用程式閘道 v2 並確保啟用 WAF 保護和策略。",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
- "waf": "安全"
+ "text": "打算使用自動橫向擴展時,請務必為運行 Azure VMware 解決方案的訂閱申請足夠的 Azure VMware 解決方案配額",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
+ "service": "AVS",
"severity": "中等",
- "text": "如果在遷移到 Azure 期間未更改虛擬機器的 DNS 或虛擬名稱,則後台 DNS 和虛擬名稱將連接 SAP 環境中的許多系統介面,並且客戶有時只會知道開發人員隨時間推移定義的介面。遷移后,當虛擬或 DNS 名稱更改時,各種系統之間會出現連接挑戰,建議保留 DNS 別名以防止出現此類困難。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "操作"
+ "text": "打算使用自動縮減時,請務必在執行此操作之前考慮存儲策略要求",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
+ "service": "AVS",
"severity": "中等",
- "text": "使用不同的 DNS 區域來區分每個環境(沙箱、開發、預生產和生產)。具有自己的 VNet 的 SAP 部署除外;在這裡,私有 DNS 區域可能不是必需的。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
- "waf": "操作"
+ "text": "擴展操作始終需要在單個 SDDC 中序列化,因為一次只能執行一個擴展操作(即使使用多個集群也是如此)",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "a3592829-e6e2-4061-9368-6af46791f893",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
+ "service": "AVS",
"severity": "中等",
- "text": "本地和全域 VNet 對等互連提供連接,是確保跨多個 Azure 區域的 SAP 部署的登陸區域之間的連接的首選方法",
- "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
- "waf": "可靠性"
+ "text": "考慮並驗證體系結構中使用的第三方解決方案的縮放操作(支援與否)",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
- "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
- "service": "SAP",
- "severity": "高",
- "text": "不支援在 SAP 應用程式和 SAP 資料庫伺服器之間部署任何 NVA",
- "training": "https://me.sap.com/notes/2731110",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "在自動化中為環境定義和強制實施橫向擴展/橫向擴展最大限制",
"waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
- "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
+ "service": "AVS",
"severity": "中等",
- "text": "在需要跨 Azure 區域和本地位置的全域傳輸連接的新網路、大型網路或全球網路中使用虛擬 WAN 進行 Azure 部署。使用此方法,無需手動設置 Azure 網路的可傳遞路由,並且可以遵循 Azure 部署上的 SAP 標準。",
- "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "text": "實施監控規則以監控自動擴展操作,並監控成功和失敗,以啟用適當的(自動化)回應",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
- "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
- "service": "SAP",
- "severity": "中等",
- "text": "僅當使用合作夥伴 NVA 時,才考慮在區域之間部署網路虛擬設備 (NVA)。如果存在本機 NVA,則不需要區域或 VNet 之間的 NVA。部署合作夥伴網路技術和 NVA 時,請按照供應商的指南驗證與 Azure 網路衝突的配置。",
- "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
- "waf": "操作"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
- "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
- "service": "SAP",
- "severity": "中等",
- "text": "虛擬 WAN 管理基於虛擬 WAN 的拓撲的分支 VNet 之間的連接(無需設置使用者定義的路由 [UDR] 或 NVA),同一虛擬中心中 VNet 到 VNet 流量的最大網路輸送量為每秒 50 G。如有必要,SAP 登陸區域可以使用 VNet 對等互連連接到其他登陸區域並克服此頻寬限制。",
- "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
- "waf": "操作"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "82734c88-6ba2-4802-8459-11475e39e530",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "高",
- "text": "不建議將公共IP分配給運行SAP工作負載的 VM。",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "安全"
+ "text": "使用 MON 時,請注意同時配置的 VM 的限制(HCX 的 MON 限制 [400 - 標準,1000 - 大型設備])",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
- "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "AVS",
"severity": "高",
- "text": "配置 ASR 時,請考慮在 DR 端保留 IP 位址",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "操作"
+ "text": "使用 MON 時,不能在超過 100 個網路分機上啟用 MON",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "SAP",
- "severity": "高",
- "text": "避免對生產網站和DR網站使用重疊的IP位址範圍。",
- "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
- "waf": "操作"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
+ "service": "AVS",
+ "severity": "中等",
+ "text": "如果使用 VPN 連接進行遷移,請相應地調整 MTU 大小。",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
- "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e614658d-d457-4e92-9139-b821102cad6e",
+ "service": "AVS",
"severity": "中等",
- "text": "雖然 Azure 確實可以説明您在 VNet 中創建多個委派子網,但 Azure NetApp 檔的 VNet 中只能存在一個委派子網。如果對 Azure NetApp 檔使用多個委託子網,則嘗試創建新卷將失敗。",
- "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
- "waf": "操作"
+ "text": "對於連接到 Azure(500Mbps 或更低)的低連接區域,請考慮部署 HCX WAN 優化設備",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
- "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",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure 防火牆管理發往 Internet 的 Azure 出站流量、非 HTTP/S 入站連接和東西向流量篩選(如果組織需要)",
- "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "確保從本地裝置啟動遷移,而不是從雲端裝置啟動遷移(不要執行反向遷移)",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
- "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "AVS",
"severity": "中等",
- "text": "當應用程式閘道充當 SAP Web 應用的反向代理時,應用程式閘道和 Web 應用程式防火牆存在限制,如應用程式閘道、SAP Web 調度程式和其他第三方服務之間的比較所示。",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
- "waf": "安全"
+ "text": "使用 Azure Netapp Files 擴展 Azure VMware 解決方案的儲存時,請考慮將其用作 VMware 資料儲存庫,而不是直接附加到 VM 。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure Front Door 和 WAF 策略跨 Azure 區域為與登陸區域的入站 HTTP/S 連接提供全域保護。",
- "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
- "waf": "安全"
+ "text": "確保將專用 ExpressRoute 閘道用於外部資料儲存解決方案",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "AVS",
"severity": "中等",
- "text": "使用 Azure Front Door 和應用程式閘道保護 HTTP/S 應用程式時,請利用 Azure Front Door 中的 Web 應用程式防火牆策略。鎖定應用程式閘道以僅接收來自 Azure Front Door 的流量。",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "安全"
+ "text": "確保在用於外部數據存儲解決方案的 ExpressRoute 閘道上啟用了 FastPath",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "5ada4332-4e13-4811-9231-81aa41742694",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 Web 應用程式防火牆在流量暴露於 Internet 時對其進行掃描。另一種選擇是將其與負載均衡器或具有內置防火牆功能(如應用程式閘道或第三方解決方案)的資源一起使用。",
- "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "AVS",
+ "severity": "高",
+ "text": "如果使用延伸群集,請確保供應商支援所選的災難恢復解決方案",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "SAP",
- "severity": "中等",
- "text": "在需要跨 Azure 區域和本地位置的全域傳輸連接的新網路、大型網路或全球網路中使用虛擬 WAN 進行 Azure 部署。使用此方法,無需手動設置 Azure 網路的可傳遞路由,並且可以遵循 Azure 部署上的 SAP 標準。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
- "waf": "性能"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "AVS",
+ "severity": "高",
+ "text": "如果使用延伸群集,請確保提供的 SLA 符合您的要求",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "SAP",
- "severity": "中等",
- "text": "若要防止數據洩露,請使用 Azure 專用連結安全地訪問平臺即服務資源,例如 Azure Blob 存儲、Azure 檔存儲、Azure Data Lake Storage Gen2、Azure 數據工廠等。Azure 專用終結點還有助於保護 VNet 與 Azure 存儲、Azure 備份等服務之間的流量。VNet 與啟用專用終結點的服務之間的流量通過 Microsoft 全球網路傳輸,從而防止其暴露在公共 Internet 上。",
- "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "AVS",
+ "severity": "高",
+ "text": "如果使用延伸群集,請確保兩條 ExpressRoute 線路都連接到連接中心。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
- "service": "SAP",
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "AVS",
"severity": "高",
- "text": "請確保在 SAP 應用程式和 DBMS 層中使用的 VM 上啟用了 Azure 加速網路。",
- "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
- "waf": "性能"
+ "text": "如果使用延伸群集,請確保兩條 ExpressRoute 線路都啟用了 GlobalReach。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
- "service": "SAP",
- "severity": "中等",
- "text": "請確保將 Azure 負載均衡器的內部部署設置為使用直接伺服器返回 (DSR)。此設置(啟用浮動IP)將減少內部負載均衡器配置用於 DBMS 層上的高可用性配置時的延遲。",
- "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.AVS/privateClouds",
+ "checklist": "Azure VMware Solution Design Review",
+ "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "AVS",
+ "severity": "高",
+ "text": "是否正確考慮了網站容災設置,並在需要時為您的業務進行了更改。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "6791f893-5ada-4433-84e1-3811523181aa",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
+ "service": "Azure Data Factory",
"severity": "中等",
- "text": "可以使用應用程式安全組 (ASG) 和 NSG 規則在 SAP 應用程式層和 DBMS 層之間定義網路安全存取控制清單。ASG 對虛擬機進行分組,以説明管理其安全性。",
- "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
- "waf": "安全"
+ "text": "利用 Azure 數據工廠的 FTA 復原能力手冊",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "高",
- "text": "不支援將 SAP 應用程式層和 SAP DBMS 放置在未對等互連的不同 Azure VNet 中。",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "性能"
+ "text": "在支援可用區的區域中使用區域冗餘管道",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
- "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
+ "link": "https://learn.microsoft.com/azure/data-factory/source-control",
+ "service": "Azure Data Factory",
"severity": "中等",
- "text": "若要優化 SAP 應用程式的網路延遲,請考慮使用 Azure 鄰近放置組。",
- "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
- "waf": "性能"
+ "text": "使用 DevOps 透過 Github/Azure DevOps 集成備份 ARM 範本",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "高",
- "text": "根本不支援在本地和 Azure 之間運行 SAP Application Server 層和 DBMS 層拆分。這兩個層都需要完全駐留在本地或 Azure 中。",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "性能"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
- "link": "https://me.sap.com/notes/2015553",
- "service": "SAP",
- "severity": "高",
- "text": "不建議將資料庫管理系統 (DBMS) 和 SAP 系統的應用程式層託管在不同的 VNet 中,並將它們與 VNet 對等互連連接,因為層之間的過多網路流量可能會產生大量成本。建議使用 Azure 虛擬網路中的子網來分隔 SAP 應用程式層和 DBMS 層。",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
- "waf": "成本"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "402a9846-d515-4061-aff8-cd30088693fa",
- "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
- "service": "SAP",
- "severity": "高",
- "text": "如果將負載均衡器與Linux客戶機作業系統配合使用,請檢查Linux網路參數 net.ipv4.tcp_timestamps是否設置為0。",
- "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
- "waf": "性能"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
+ "severity": "中等",
+ "text": "請確保在另一個區域中複製自承載集成運行時 VM",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
- "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
- "service": "SAP",
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
+ "service": "Azure Data Factory",
"severity": "中等",
- "text": "對於 SAP RISE/ECS 部署,虛擬對等互連是與客戶現有 Azure 環境建立連接的首選方式。SAP vnet 和客戶 vnet 都受網路安全組 (NSG) 保護,從而通過 VNet 對等互連在 SAP 和資料庫埠上進行通信",
- "waf": "安全"
+ "text": "請確保在姊妹區域中複製或複製您的網路。必須在另一個區域創建 Vnet 的副本",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
- "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
- "service": "SAP",
- "severity": "高",
- "text": "查看 Azure VM 的 SAP HANA 資料庫備份。",
- "waf": "成本"
+ "arm-service": "Microsoft.DataFactory/datafactories",
+ "checklist": "Azure Data Factory Review Checklist",
+ "description": "如果ADF管道使用Key Vault,則無需執行任何操作即可複製Key Vault。Key Vault 是一項託管服務,Microsoft 會為你處理它",
+ "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "Azure Data Factory",
+ "severity": "低",
+ "text": "如果使用 Keyvault 集成,請使用 Keyvault 的 SLA 來瞭解可用性",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
+ "service": "APIM",
"severity": "中等",
- "text": "查看用於 SAP 的 Site Recovery 內置監視。",
- "waf": "成本"
- },
- {
- "checklist": "SAP Checklist",
- "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
- "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
- "service": "SAP",
- "severity": "高",
- "text": "查看監視 SAP HANA 系統環境指南。",
+ "text": "在全域級別實施錯誤處理策略",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
- "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
+ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
+ "service": "APIM",
"severity": "中等",
- "text": "查看 Azure Linux VM 中的 Oracle 資料庫備份策略。",
+ "text": "確保所有 API 策略都包含一個元素。",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
- "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
+ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
+ "service": "APIM",
"severity": "中等",
- "text": "查看 Azure Blob 儲存與 SQL Server 2016 的配合。",
+ "text": "使用策略片段可避免在多個 API 中重複相同的策略定義",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
- "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
+ "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
+ "service": "APIM",
"severity": "中等",
- "text": "查看 Azure VM 自動備份 v2 的使用方式。",
+ "text": "如果您計劃通過 API 獲利,請查看“獲利支援”一文,瞭解最佳做法",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
+ "service": "APIM",
"severity": "高",
- "text": "使用進階磁碟時開啟M系列的寫入加速器(V1)",
+ "text": "啟用診斷設置以將日誌導出到 Azure Monitor",
"waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
- "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
+ "service": "APIM",
"severity": "中等",
- "text": "測試可用性區域延遲。",
- "waf": "性能"
+ "text": "啟用 Application Insights 以獲取更詳細的遙測數據",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
- "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
- "service": "SAP",
- "severity": "中等",
- "text": "為所有 SAP 元件啟動 SAP EarlyWatch Alert。",
- "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
- "waf": "性能"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
+ "service": "APIM",
+ "severity": "高",
+ "text": "針對最關鍵的指標配置警報",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
- "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
- "service": "SAP",
- "severity": "中等",
- "text": "使用 SAP ABAPMeter 報表 /SSA/CAT 查看 SAP 應用程式伺服器到資料庫伺服器的延遲。",
- "training": "https://me.sap.com/notes/0002879613",
- "waf": "性能"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
+ "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#certificate-management-in-azure-key-vault",
+ "service": "APIM",
+ "severity": "高",
+ "text": "確保自定義 SSL 證書儲存在 Azure Key Vault 中,以便可以安全地訪問和更新它們",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
+ "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-ad-authentication-required-for-data-plane-access",
+ "service": "APIM",
+ "severity": "高",
+ "text": "使用 Azure AD 保護對 API(數據平面)的傳入請求",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
+ "service": "APIM",
"severity": "中等",
- "text": "查看使用 CCMS 的 SQL Server 性能監視。",
- "waf": "性能"
+ "text": "使用 Microsoft Entra ID 在開發人員門戶中對用戶進行身份驗證",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
- "link": "https://me.sap.com/notes/500235",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
+ "service": "APIM",
"severity": "中等",
- "text": "測試 SAP 應用程式層 VM 和 DBMS VM (NIPING) 之間的網路延遲。",
- "training": "https://me.sap.com/notes/1100926/E",
- "waf": "性能"
+ "text": "創建適當的組來控制產品的可見性",
+ "waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
- "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "06862505-2d9a-4874-9491-2837b00a3475",
+ "link": "https://learn.microsoft.com/azure/api-management/backends",
+ "service": "APIM",
"severity": "中等",
- "text": "查看 SAP HANA Studio 警報。",
- "waf": "性能"
+ "text": "使用後端功能消除冗餘 API 後端配置",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
- "link": "https://me.sap.com/notes/1969700",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
+ "service": "APIM",
"severity": "中等",
- "text": "使用 HANA_Configuration_Minichecks 執行 SAP HANA 執行狀況檢查。",
- "waf": "性能"
+ "text": "使用命名值存儲可在策略中使用的通用值",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
+ "service": "APIM",
"severity": "中等",
- "text": "如果在 Azure、本地或其他雲環境中運行 Windows 和 Linux VM,則可以使用 Azure 自動化中的更新管理中心來管理作業系統更新,包括安全修補程式。",
- "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "waf": "安全"
+ "text": "對於DR,利用高級層,跨兩個或多個區域擴展部署,實現99.99%的SLA",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "08951710-79a2-492a-adbc-06d7a401545b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
+ "link": "https://learn.microsoft.com/azure/api-management/high-availability",
+ "service": "APIM",
"severity": "中等",
- "text": "定期查看 SAP 安全 OSS 說明,因為 SAP 會發佈高度關鍵的安全補丁或熱修復程式,需要立即採取行動來保護 SAP 系統。",
- "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
- "waf": "安全"
+ "text": "在兩個或多個可用區中部署至少一台設備,SLA 提高 99.99%",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "severity": "低",
- "text": "對於 SQL Server 上的 SAP,可以禁用 SQL Server 系統管理員帳戶,因為 SQL Server 上的 SAP 系統不使用該帳戶。在禁用原始系統管理員帳戶之前,請確保具有系統管理員許可權的其他使用者可以訪問伺服器。",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
+ "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",
+ "severity": "高",
+ "text": "確保有一個自動備份例程",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "service": "SAP",
- "severity": "高",
- "text": "禁用xp_cmdshell。SQL Server 功能xp_cmdshell啟用 SQL Server 內部作業系統命令行介面。這是安全審計中的潛在風險。",
- "training": "https://me.sap.com/notes/3019299/E",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
+ "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "使用策略添加故障轉移後端 URL 和緩存,以減少失敗的調用。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "severity": "高",
- "text": "加密 Azure 上的 SAP HANA 資料庫伺服器使用 SAP HANA 本機加密技術。此外,如果在 Azure 上使用 SQL Server,請使用透明數據加密 (TDE) 來保護數據和日誌檔,並確保備份也已加密。",
- "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
+ "service": "APIM",
+ "severity": "低",
+ "text": "如果需要以高性能級別進行日誌記錄,請考慮事件中心策略",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
+ "service": "APIM",
"severity": "中等",
- "text": "為所有 Azure 資源管理器和經典記憶體啟用了 Azure 儲存加密,並且無法禁用。由於預設情況下數據是加密的,因此無需修改代碼或應用程式即可使用 Azure 儲存加密。",
- "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
- "waf": "安全"
+ "text": "應用限制策略來控制每秒的請求數",
+ "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "SAP",
- "severity": "高",
- "text": "使用 Azure Key Vault 儲存機密和憑據",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "配置自動縮放以在負載增加時橫向擴展實例數",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
+ "service": "APIM",
"severity": "中等",
- "text": "建議在成功部署后鎖定 Azure 資源,以防止未經授權的更改。還可以使用自定義的 Azure 策略(自定義角色)在每個訂閱的基礎上強制實施 LOCK 約束和規則。",
- "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
- "waf": "安全"
+ "text": "在 Azure 沒有靠近後端 API 的區域的地方部署自承載閘道。",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
- "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
+ "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
+ "service": "APIM",
"severity": "中等",
- "text": "預配啟用軟刪除和清除策略的 Azure Key Vault,以允許對已刪除物件進行保留保護。",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
- "waf": "安全"
+ "text": "將高級層用於生產工作負載。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
- "service": "SAP",
- "severity": "高",
- "text": "根據現有要求、法規和合規性控制(內部/外部) - 確定所需的 Azure 策略和 Azure RBAC 角色",
- "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "在多區域模型中,使用策略根據可用性或延遲將請求路由到區域後端。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
+ "service": "APIM",
"severity": "高",
- "text": "在 SAP 環境中啟用 Microsoft Defender for Endpoint 時,建議排除 DBMS 伺服器上的數據和日誌檔,而不是面向所有伺服器。排除目標檔時,請遵循 DBMS 供應商的建議。",
- "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
- "waf": "安全"
+ "text": "注意APIM的局限性",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
+ "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
+ "service": "APIM",
"severity": "高",
- "text": "委派具有 Microsoft Defender for Cloud 實時訪問許可權的 SAP 管理員自定義角色。",
- "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "waf": "安全"
+ "text": "確保自承載閘道部署具有復原能力。",
+ "waf": "可靠性"
},
{
- "checklist": "SAP Checklist",
- "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "severity": "低",
- "text": "通過將第三方安全產品與 DIAG (SAP GUI)、RFC 和 SPNEGO for HTTPS 的安全網路通信 (SNC) 集成,對傳輸中的數據進行加密",
- "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "7519e385-a88b-4d34-966b-6269d686e890",
+ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "在APIM前面使用 Azure Front Door 進行多區域部署",
+ "waf": "性能"
},
{
- "checklist": "SAP Checklist",
- "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
+ "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#virtual-network-integration",
+ "service": "APIM",
"severity": "中等",
- "text": "對於主體加密功能,預設使用 Microsoft 管理的金鑰,並在需要時使用客戶管理的密鑰。",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "text": "在虛擬網络 (VNet) 中部署服務Deploy the service within a Virtual Network (VNet)",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
- "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
- "service": "SAP",
- "severity": "高",
- "text": "對每個應用程式、每個環境、每個區域使用 Azure Key Vault。",
- "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
+ "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",
+ "severity": "中等",
+ "text": "將網路安全組 (NSG) 部署到子網,以限制或監視進出APIM的流量。",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
- "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
- "service": "SAP",
- "severity": "高",
- "text": "若要控制和管理非 HANA Windows 和非 Windows 作業系統的磁碟加密密鑰和機密,請使用 Azure Key Vault。Azure Key Vault 不支援 SAP HANA,因此必須使用 SAP ABAP 或 SSH 密鑰等替代方法。",
- "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
+ "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",
+ "severity": "中等",
+ "text": "部署專用終結點以在未將APIM部署到 VNet 時篩選傳入流量。",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
+ "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#disable-public-network-access",
+ "service": "APIM",
"severity": "高",
- "text": "為 Azure 上的 SAP 分支訂閱自定義基於角色的訪問控制 (RBAC) 角色,以避免與網路相關的意外更改",
- "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
+ "text": "禁用公網訪問",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
- "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
- "service": "SAP",
- "severity": "高",
- "text": "將 DMZ 和 NVA 與 SAP 資產的其餘部分隔離,配置 Azure 專用連結,並安全地管理和控制 Azure 上的 SAP 資源",
- "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
+ "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "使用 PowerShell 自動化腳本簡化管理",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
- "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
- "service": "SAP",
- "severity": "低",
- "text": "請考慮在 Azure 上使用 Microsoft 反惡意軟體來保護虛擬機免受惡意檔、廣告軟體和其他威脅的侵害。",
- "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "通過基礎架構即代碼配置APIM。查看 Cloud Adaption Framework 中的 DevOps 最佳實踐 APIM 登陸區域加速器",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
- "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
- "service": "SAP",
- "severity": "低",
- "text": "若要獲得更強大的保護,請考慮使用 Microsoft Defender for Endpoint。",
- "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
+ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "促進 Visual Studio Code APIM 擴展的使用,以加快 API 開發速度",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
- "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
- "service": "SAP",
- "severity": "高",
- "text": "通過中心虛擬網路傳遞所有流量,將 SAP 應用程式和資料庫伺服器與 Internet 或本地網路隔離開來,該中心虛擬網路通過虛擬網路對等互連連接到分支網路。對等互連虛擬網路保證 Azure 上的 SAP 解決方案與公共 Internet 隔離。",
- "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
- "waf": "安全"
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
+ "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "在工作流中實施DevOps和 CI/CD",
+ "waf": "操作"
},
{
- "checklist": "SAP Checklist",
- "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
- "service": "SAP",
- "severity": "低",
- "text": "對於面向 Internet 的應用程式(如 SAP Fiori),請確保根據應用程式要求分配負載,同時保持安全級別。對於第 7 層安全性,可以使用 Azure 市場中提供的第三方 Web 應用程式防火牆 (WAF)。",
- "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "b6439493-426a-45f3-9697-cf65baee208d",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "使用用戶端證書身份驗證保護 API",
"waf": "安全"
},
{
- "checklist": "SAP Checklist",
- "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
- "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
- "service": "SAP",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2a67d143-1033-4c0a-8732-680896478f08",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
+ "service": "APIM",
"severity": "中等",
- "text": "若要在用於 SAP 解決方案的 Azure Monitor 中啟用安全通信,可以選擇使用根證書或伺服器證書。我們強烈建議您使用根證書。",
- "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "text": "使用用戶端證書身份驗證保護後端服務",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9",
- "service": "AVS",
- "severity": "高",
- "text": "確保在本機 Azure 的標識訂閱中部署了 ADDS 域控制器",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
+ "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
+ "service": "APIM",
+ "severity": "中等",
+ "text": "查看“緩解 OWASP API 安全前 10 大威脅的建議”一文,並查看適用於您的 API 的內容",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "75089c20-990d-4927-b105-885576f76fc2",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
+ "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
+ "service": "APIM",
"severity": "中等",
- "text": "確保將 ADDS 網站和服務配置為將來自基於 Azure 的資源(包括 Azure VMware 解決方案)的身份驗證請求保留到 Azure 本地",
+ "text": "使用授權功能簡化後端 API 的 OAuth 2.0 令牌管理",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
+ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
+ "service": "APIM",
"severity": "高",
- "text": "確保 vCenter 已連接到 ADDS,以啟用基於「指定用戶帳戶」的身份驗證",
+ "text": "加密傳輸中的資訊時,請使用最新的 TLS 版本。盡可能禁用過時和不必要的協議和密碼。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a",
- "service": "AVS",
- "severity": "中等",
- "text": "確保從 vCenter 到 ADDS 的連接使用安全協定 (LDAPS)",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "f8af3d94-1d2b-4070-846f-849197524258",
+ "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#im-8-restrict-the-exposure-of-credential-and-secrets",
+ "service": "APIM",
+ "severity": "高",
+ "text": "確保機密(命名值)存儲在 Azure Key Vault 中,以便可以安全地訪問和更新它們",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "791abd8b-7706-4e31-9569-afefde724be3",
+ "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#managed-identities",
+ "service": "APIM",
"severity": "中等",
- "text": "vCenter IdP 中的 CloudAdmin 帳戶僅用作緊急帳戶 (break-glass)",
+ "text": "盡可能使用託管標識向其他 Azure 資源進行身份驗證",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3",
- "service": "AVS",
+ "arm-service": "Microsoft.ApiManagement/service",
+ "checklist": "Azure API Management Review",
+ "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
+ "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",
"severity": "高",
- "text": "確保 NSX-Manager 與外部身份提供程式 (LDAPS) 集成",
+ "text": "使用 APIM 前面部署應用程式閘道來使用 Web 應用程式防火牆 (WAF)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae0e37ce-e297-411b-b352-caaab79b198d",
- "service": "AVS",
- "severity": "中等",
- "text": "是否已創建 RBAC 模型以在 VMware vSphere 中使用",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
+ "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果 AKS Windows 工作負載需要,可以使用 HostProcess 容器",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e",
- "service": "AVS",
- "severity": "中等",
- "text": "RBAC 許可權應授予 ADDS 組,而不是特定使用者",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
+ "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果運行事件驅動的工作負載,請使用KEDA",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d",
- "service": "AVS",
- "severity": "高",
- "text": "Azure 中 Azure VMware 解決方案資源的 RBAC 許可權僅「鎖定」為一組有限的擁有者",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
+ "link": "https://dapr.io/",
+ "service": "AKS",
+ "severity": "低",
+ "text": "使用 Dapr 簡化微服務開發",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
+ "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
+ "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "service": "AKS",
"severity": "高",
- "text": "確保所有自定義角色的範圍都具有 CloudAdmin 允許的授權",
- "waf": "安全"
+ "text": "使用 SLA 支援的 AKS 產品/服務",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ef1d5e8-32e4-42e3-911c-818b0a0bc510",
- "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking",
- "service": "AVS",
- "severity": "高",
- "text": "是否為手頭的客戶用例選擇了正確的 Azure VMware 解決方案連接模型",
- "waf": "性能"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "低",
+ "text": "在容器和部署定義中使用中斷預算",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5",
- "service": "AVS",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
+ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
+ "service": "ACR",
"severity": "高",
- "text": "確保使用「連接監視器」監視從本地到 Azure 的 ExpressRoute 或 VPN 連接",
- "waf": "操作"
+ "text": "如果使用專用註冊表,請配置區域複製以將映像存儲在多個區域中",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99",
- "service": "AVS",
- "severity": "中等",
- "text": "確保創建從 Azure 本機資源到 Azure VMware 解決方案虛擬機的連接監視器,以監視 Azure VMware 解決方案後端 ExpressRoute 連接",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "service": "AKS",
+ "severity": "低",
+ "text": "使用外部應用(如 kubecost)將成本分配給不同的使用者",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265",
- "service": "AVS",
- "severity": "中等",
- "text": "確保創建從本地資源到 Azure VMware 解決方案虛擬機的連接監視器,以監視端到端連接",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
+ "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "service": "AKS",
+ "severity": "低",
+ "text": "使用縮減模式刪除/取消分配節點",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649",
- "service": "AVS",
- "severity": "高",
- "text": "使用路由伺服器時,請確保從路由伺服器到 ExR 閘道再到本地的路由不超過 1000 個(ARS 限制)。",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
+ "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "需要時,請在 AKS 群集上使用多實例分組 GPU",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3",
- "service": "AVS",
- "severity": "高",
- "text": "是否為在 Azure 門戶中管理 Azure VMware 解決方案資源的角色實現了 Privileged Identity Management(不允許長期許可權)",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
+ "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果運行開發/測試群集,請使用 NodePool Start/Stop",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c",
- "service": "AVS",
- "severity": "高",
- "text": "應為 Azure VMware 解決方案 PIM 角色實現 Privileged Identity Management 審核報告",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
+ "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "使用適用於 Kubernetes 的 Azure Policy 確保群集符合性",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
+ "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
"severity": "中等",
- "text": "如果使用 Privileged Identity Management,請確保使用有效的 SMTP 記錄創建啟用了 Entra ID 的有效帳戶,以便 Azure VMware 解決方案自動主機更換通知。(需要長期許可)",
+ "text": "使用使用者/系統節點池將應用程式與控制平面分開",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e",
- "service": "AVS",
- "severity": "高",
- "text": "將 CloudAdmin 帳戶的使用限制為僅緊急訪問",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
+ "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
+ "service": "AKS",
+ "severity": "低",
+ "text": "向系統節點池添加污點以使其專用",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
+ "link": "https://learn.microsoft.com/azure/container-registry/",
+ "service": "AKS",
"severity": "中等",
- "text": "在 vCenter 中創建自定義 RBAC 角色,以在 vCenter 中實施最小特權模型",
+ "text": "對映像使用專用註冊表,例如 ACR",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18",
- "service": "AVS",
+ "arm-service": "microsoft.containerregistry/registries",
+ "checklist": "Azure AKS Review",
+ "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
+ "link": "https://learn.microsoft.com/azure/security-center/container-security",
+ "service": "ACR",
"severity": "中等",
- "text": "是定義為定期輪換 cloudadmin (vCenter) 和管理員 (NSX) 憑據的過程",
+ "text": "掃描映像以查找漏洞",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
+ "service": "AKS",
"severity": "高",
- "text": "使用集中式識別提供者用於在 Azure VMware 解決方案上運行的工作負載 (VM)",
+ "text": "定義應用分離要求(命名空間/節點池/集群)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "79377bcd-b375-41ab-8ab0-ead66e15d3d4",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
+ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
+ "service": "AKS",
"severity": "中等",
- "text": "是否在 NSX-T 中實施了東西向流量篩選",
+ "text": "使用 CSI 機密存儲驅動程式將機密存儲在 Azure Key Vault 中",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
+ "link": "https://learn.microsoft.com/azure/aks/update-credentials",
+ "service": "AKS",
"severity": "高",
- "text": "Azure VMware 解決方案上的工作負載不會直接向 Internet 公開。流量由 Azure 應用程式閘道、Azure 防火牆或第三方解決方案進行篩選和檢查",
+ "text": "如果將服務主體用於群集,請定期刷新憑據(如每季度)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938",
- "service": "AVS",
- "severity": "高",
- "text": "對 Azure VMware 解決方案和基於 Azure VMware 解決方案的工作負載的入站 Internet 請求實施審核和日誌記錄",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
+ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "如果需要,請添加金鑰管理服務 etcd 加密",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "29e3eec2-1836-487a-8077-a2b5945bda43",
- "service": "AVS",
- "severity": "中等",
- "text": "對來自 Azure VMware 解決方案或基於 Azure VMware 解決方案的工作負載的出站 Internet 連接實施會話監視,以識別可疑/惡意活動",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
+ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,請考慮使用適用於 AKS 的機密計算",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "334fdf91-c234-4182-a652-75269440b4be",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
+ "service": "AKS",
"severity": "中等",
- "text": "是否在 Azure 的 ExR/VPN 閘道子網上啟用了 DDoS 標準防護",
+ "text": "考慮使用 Defender for Containers",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb",
- "service": "AVS",
- "severity": "中等",
- "text": "使用專用特權訪問工作站 (PAW) 管理 Azure VMware 解決方案、vCenter、NSX Manager 和 HCX Manager",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
+ "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
+ "service": "AKS",
+ "severity": "高",
+ "text": "使用託管標識而不是服務主體",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
+ "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad",
+ "service": "AKS",
"severity": "中等",
- "text": "為 Azure VMware 解決方案上運行的工作負載啟用高級威脅檢測(Microsoft Defender for Cloud,又名 ASC)",
+ "text": "將身份驗證與 AAD(使用託管集成)集成",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
+ "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
+ "service": "AKS",
"severity": "中等",
- "text": "使用適用於伺服器的 Azure ARC 使用 Azure 本機技術正確管理在 Azure VMware 解決方案上運行的工作負載(適用於 Azure VMware 解決方案的 Azure ARC 尚不可用)",
+ "text": "限制對管理員 kubeconfig (get-credentials --admin) 的訪問",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a",
- "service": "AVS",
- "severity": "低",
- "text": "確保 Azure VMware 解決方案上的工作負載在運行時使用足夠的數據加密(如來賓內磁碟加密和 SQL TDE)。(vSAN 靜態加密為預設加密)",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
+ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "將授權與 AAD RBAC 集成",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a3592718-e6e2-4051-9267-6ae46691e883",
- "service": "AVS",
- "severity": "低",
- "text": "使用來賓內加密時,請盡可能將加密密鑰存儲在 Azure Key Vault 中",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
+ "service": "AKS",
+ "severity": "高",
+ "text": "在 Kubernetes 中使用命名空間限制 RBAC 許可權",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5ac94222-3e13-4810-9230-81a941741583",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
+ "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
+ "service": "AKS",
"severity": "中等",
- "text": "請考慮對 Azure VMware 解決方案上運行的工作負載使用擴展的安全更新支援(Azure VMware 解決方案符合 ESU 條件)",
+ "text": "對於 Pod Identity Access Management,請使用 Azure AD 工作負載標識(預覽版)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3ef7ad7c-6d37-4331-95c7-acbe44bbe609",
- "service": "AVS",
- "severity": "高",
- "text": "確保使用適當的 vSAN 資料冗餘方法(RAID 規範)",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "對於 AKS 非互動式登錄名,請使用 kubelogin(預覽版)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d88408f3-7273-44c8-96ba-280214590146",
- "service": "AVS",
- "severity": "高",
- "text": "確保允許失敗策略已到位,以滿足您的 vSAN 儲存需求",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
+ "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "禁用 AKS 本地帳戶",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a",
- "service": "AVS",
- "severity": "高",
- "text": "確保已請求足夠的配額,確保已考慮增長和災難恢復要求",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,請配置 Just-in-time 群集訪問",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5d38e53f-9ccb-4d86-a266-acca274faa19",
- "service": "AVS",
- "severity": "中等",
- "text": "確保瞭解對 ESXi 的訪問限制,其中存在可能影響第三方解決方案的訪問限制。",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
+ "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,為 AKS 配置 AAD 條件訪問",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
+ "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果 Windows AKS 工作負載需要,請配置 gMSA",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
+ "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
+ "service": "AKS",
"severity": "中等",
- "text": "確保您制定了有關ESXi主機密度和效率的策略,並牢記請求新節點的提前期",
- "waf": "操作"
+ "text": "為了獲得更精細的控制,請考慮使用託管的 Kubelet 身份",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
+ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
+ "service": "AKS",
"severity": "中等",
- "text": "確保 Azure VMware 解決方案的良好成本管理流程已到位 - 可以使用 Azure 成本管理",
- "waf": "成本"
+ "text": "如果使用 AGIC,請勿跨集群共用 AppGW",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6e043e2a-a359-4271-ae6e-205172676ae4",
- "service": "AVS",
- "severity": "低",
- "text": "Azure 預留實例是否用於優化使用 Azure VMware 解決方案的成本",
- "waf": "成本"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
+ "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
+ "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
+ "service": "AKS",
+ "severity": "高",
+ "text": "不要使用 AKS HTTP 路由載入項,而是將託管 NGINX 入口與應用程式路由載入項一起使用。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6691e883-5ac9-4422-83e1-3810523081a9",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
+ "service": "AKS",
"severity": "中等",
- "text": "使用其他 Azure 本機服務時,請考慮使用 Azure 專用連結",
- "waf": "安全"
+ "text": "對於 Windows 工作負載,請使用加速網路",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "db611712-6904-40b4-aa3d-3e0803276d4b",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
+ "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "高",
- "text": "確保所有必需的資源都駐留在同一個 Azure 可用性區域中",
- "waf": "性能"
+ "text": "使用標準 ALB(而不是基本 ALB)",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
+ "service": "AKS",
"severity": "中等",
- "text": "為 Azure VMware 解決方案來賓 VM 工作負載啟用 Microsoft Defender for Cloud",
+ "text": "如果使用 Azure CNI,請考慮對 NodePool 使用不同的子網",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
+ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
+ "service": "AKS",
"severity": "中等",
- "text": "使用已啟用 Azure Arc 的伺服器管理 Azure VMware 解決方案來賓 VM 工作負載",
+ "text": "使用專用終結點(首選)或虛擬網路服務終結點從群集訪問 PaaS 服務",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
+ "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "高",
- "text": "在 Azure VMware 解決方案上啟用診斷和指標日誌記錄",
- "waf": "操作"
+ "text": "選擇最適合你要求的 CNI 網路外掛程式(建議使用 Azure CNI)",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46",
- "service": "AVS",
- "severity": "中等",
- "text": "將Log Analytics代理部署到 Azure VMware 解決方案來賓 VM 工作負載",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "高",
+ "text": "如果使用 Azure CNI,請根據每個節點的最大 Pod 數相應地調整子網的大小",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "589d457a-927c-4397-9d11-02cad6aae11e",
- "service": "AVS",
- "severity": "中等",
- "text": "確保已針對 Azure VMware 解決方案 VM 工作負載記錄並實施了備份策略和解決方案",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "高",
+ "text": "如果使用 Azure CNI,請檢查每個節點的最大 Pod 數(預設為 30)",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ee29711b-d352-4caa-ab79-b198dab81932",
- "service": "AVS",
- "severity": "中等",
- "text": "使用 Microsoft Defender for Cloud 對 Azure VMware 解決方案上運行的工作負載進行合規性監視",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "對於內部應用,組織通常會在其防火牆中打開整個AKS子網。這也會打開對節點的網路訪問,並可能打開對 Pod 的訪問(如果使用 Azure CNI)。如果 LoadBalancer IP 位於不同的子網中,則只有此子網可供應用用戶端使用。另一個原因是,如果 AKS 子網中的 IP 位址是稀缺資源,則將其 IP 位址用於服務會降低群集的最大可伸縮性。",
+ "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
+ "link": "https://learn.microsoft.com/azure/aks/internal-lb",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果使用專用IP LoadBalancer服務,請使用專用子網(而不是 AKS 子網)",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547",
- "service": "AVS",
- "severity": "中等",
- "text": "是否將適用的合規性基線添加到 Microsoft Defender for Cloud",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
+ "severity": "高",
+ "text": "相應調整服務 IP 位址範圍的大小(這將限制群集的可伸縮性)",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e",
- "service": "AVS",
- "severity": "高",
- "text": "在選擇要用於 Azure VMware 解決方案部署的 Azure 區域時是否評估了數據駐留",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
+ "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,請添加您自己的 CNI 外掛程式",
"waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "832e42e3-611c-4818-a0a0-bc510e43a18a",
- "service": "AVS",
- "severity": "高",
- "text": "數據處理影響(服務提供者/服務消費者模型)是否清晰且有據可查",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
+ "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,請在 AKS 中配置每個節點的公共 IP",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "547c1747-dc56-4068-a714-435cd19dd244",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-network",
+ "service": "AKS",
"severity": "中等",
- "text": "僅當出於合規性原因需要時,才考慮將CMK(客戶管理的密鑰)用於 vSAN。",
- "waf": "安全"
+ "text": "使用入口控制器公開基於 Web 的應用,而不是使用 LoadBalancer 類型的服務公開它們",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2",
- "service": "AVS",
- "severity": "高",
- "text": "創建儀錶板以啟用核心 Azure VMware 解決方案監視見解",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
+ "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
+ "service": "AKS",
+ "severity": "低",
+ "text": "使用 Azure NAT 閘道作為 outboundType 來縮放出口流量",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2",
- "service": "AVS",
- "severity": "高",
- "text": "針對 Azure VMware 解決方案性能(CPU >80%、平均記憶體 >80%、vSAN >70%)自動警報的關鍵閾值創建警告警報",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "使用IP的動態分配來避免 Azure CNI IP 耗盡",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9659e396-80e7-4828-ac93-5657d02bff45",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
+ "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
+ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
+ "service": "AKS",
"severity": "高",
- "text": "確保創建嚴重警示以監控 vSAN 消耗量是否低於 75%,因為這是 VMware 的支援閾值",
- "waf": "操作"
+ "text": "如果安全要求要求,請使用 AzFW/NVA 篩選出口流量",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "64b0d934-a348-4726-be79-d6b5c3a36495",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
+ "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
+ "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "如果使用公共 API 終端節點,請限制可以存取它的 IP 位址",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
+ "link": "https://learn.microsoft.com/azure/aks/private-clusters",
+ "service": "AKS",
"severity": "高",
- "text": "確保為 Azure 服務運行狀況警報和通知配置警報",
- "waf": "操作"
+ "text": "如果要求要求,請使用私有集群",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b6abad38-aad5-43cc-99e1-d86667357c54",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
+ "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
"severity": "中等",
- "text": "將 Azure VMware 解決方案記錄設定為發送到 Azure 儲存帳戶或 Azure EventHub 進行處理",
- "waf": "操作"
+ "text": "對於 Windows 2019 和 2022 AKS 節點,可以使用 Calico 網路策略",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775",
- "service": "AVS",
- "severity": "低",
- "text": "如果需要深入瞭解 VMware vSphere:解決方案中是否使用了 vRealize Operations 和/或 vRealize Network Insights?",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
+ "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
+ "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
+ "service": "AKS",
+ "severity": "高",
+ "text": "啟用 Kubernetes 網路策略選項 (Calico/Azure)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
"severity": "高",
- "text": "確保虛擬機的 vSAN 儲存策略不是預設存儲策略,因為此策略應用厚置備",
- "waf": "操作"
+ "text": "使用 Kubernetes 網路策略提高集群內安全性",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d9ef1d5e-832d-442e-9611-c818b0afbc51",
- "service": "AVS",
- "severity": "中等",
- "text": "確保未將 vSphere 內容庫放置在 vSAN 上,因為 vSAN 是有限的資源",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
+ "service": "AKS",
+ "severity": "高",
+ "text": "將 WAF 用於 Web 工作負載(UI 或 API)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
+ "service": "AKS",
"severity": "中等",
- "text": "確保備份解決方案的數據存儲庫存儲在 vSAN 儲存之外。在 Azure 本機或磁碟池支持的數據存儲中",
- "waf": "操作"
+ "text": "在 AKS 虛擬網路中使用 DDoS 標準",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "2aee3453-aec8-4339-848b-262d6cc5f512",
- "service": "AVS",
- "severity": "中等",
- "text": "確保使用 Azure Arc for Servers 進行混合管理,確保在 Azure VMware 解決方案上運行的工作負載(Arc for Azure VMware 解決方案處於預覽狀態)",
- "waf": "操作"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
+ "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
+ "link": "https://learn.microsoft.com/azure/aks/http-proxy",
+ "service": "AKS",
+ "severity": "低",
+ "text": "如果需要,請添加公司 HTTP 代理",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
+ "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
+ "service": "AKS",
"severity": "中等",
- "text": "確保使用 Azure Log Analytics 和 Azure Monitor 監視在 Azure VMware 解決方案上運行的工作負載",
- "waf": "操作"
+ "text": "考慮使用服務網格進行高級微服務通信管理",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09",
- "service": "AVS",
- "severity": "中等",
- "text": "在現有更新管理工具或 Azure 更新管理中包括在 Azure VMware 解決方案上運行的工作負載",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
+ "service": "AKS",
+ "severity": "高",
+ "text": "設定有關最關鍵指標的警報(請參閱容器見解以獲取建議)",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa",
- "service": "AVS",
- "severity": "中等",
- "text": "使用 Azure Policy 在 Azure 管理、監視和安全解決方案中加入 Azure VMware 解決方案工作負載",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
+ "service": "AKS",
+ "severity": "低",
+ "text": "定期查看 Azure 顧問,瞭解有關群集的建議",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129",
- "service": "AVS",
- "severity": "中等",
- "text": "確保在 Azure VMware 解決方案上運行的工作負載已載入 Microsoft Defender for Cloud",
- "waf": "安全"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
+ "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
+ "service": "AKS",
+ "severity": "低",
+ "text": "啟用 AKS 自動證書輪換",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2",
- "service": "AVS",
- "severity": "中等",
- "text": "確保備份不存儲在 vSAN 上,因為 vSAN 是有限的資源",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
+ "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
+ "service": "AKS",
+ "severity": "高",
+ "text": "定期(例如,每季度)升級 kubernetes 版本,或使用 AKS 自動升級功能",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "5e6bfbb9-ed50-4354-9cc4-47e826028a71",
- "service": "AVS",
- "severity": "中等",
- "text": "是否考慮了所有災難恢復解決方案,並決定了最適合您業務的解決方案?[SRM/JetStream/Zerto/Veeam/...]",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
+ "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
+ "service": "AKS",
+ "severity": "高",
+ "text": "如果您不使用 node-image 升級,請使用 kured 進行 Linux 節點升級",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818",
- "service": "AVS",
- "severity": "中等",
- "text": "當災難恢復技術是本機 Azure IaaS 時,請使用 Azure Site Recovery",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
+ "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
+ "service": "AKS",
+ "severity": "高",
+ "text": "定期(例如,每周)升級群集節點映像的常規過程",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b0afbc51-0e43-4a18-a9cd-289bed6b17db",
- "service": "AVS",
- "severity": "高",
- "text": "將自動恢復計劃與任一災難解決方案結合使用,盡可能避免手動任務",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
+ "service": "AKS",
+ "severity": "低",
+ "text": "考慮使用 gitops 將應用程式或集群配置部署到多個集群",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "8255461e-2aee-4345-9aec-8339248b262d",
- "service": "AVS",
- "severity": "中等",
- "text": "使用地緣政治區域對作為輔助災難恢復環境",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "6cc5f512-9253-498e-9da9-d37dac43bc6c",
- "service": "AVS",
- "severity": "高",
- "text": "在區域之間使用 2 個不同的地址空間,例如:10.0.0.0/16 和 192.168.0.0/16 用於不同的區域",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
+ "link": "https://learn.microsoft.com/azure/aks/command-invoke",
+ "service": "AKS",
+ "severity": "低",
+ "text": "請考慮在專用群集上使用 AKS 命令調用",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a",
- "service": "AVS",
- "severity": "中等",
- "text": "ExpressRoute Global Reach 是用於主 Azure VMware 解決方案私有雲和輔助 Azure VMware 解決方案私有雲之間的連接,還是通過網路虛擬設備完成路由?",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
+ "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
+ "service": "AKS",
+ "severity": "低",
+ "text": "對於計劃的事件,請考慮使用 Node Auto Drain",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711",
- "service": "AVS",
- "severity": "中等",
- "text": "是否考慮了所有備份解決方案,並決定了最適合您業務的解決方案?[ MABS/CommVault/Metallic.io/Veeam/ .",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
+ "link": "https://learn.microsoft.com/azure/aks/faq",
+ "service": "AKS",
+ "severity": "高",
+ "text": "開發自己的治理實踐,以確保節點 RG(又名“基礎設施 RG”)中的操作員不會執行任何更改",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1",
- "service": "AVS",
- "severity": "中等",
- "text": "將備份解決方案部署在與 Azure VMware 解決方案私有雲相同的區域中",
- "waf": "可靠性"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
+ "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
+ "service": "AKS",
+ "severity": "低",
+ "text": "使用自定義節點 RG(又名“Infra RG”)名稱",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
+ "link": "https://kubernetes.io/docs/setup/release/notes/",
+ "service": "AKS",
"severity": "中等",
- "text": "在 vSan 外部的 Azure 本機組件上部署備份解決方案",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e",
- "service": "AVS",
- "severity": "低",
- "text": "是否已制定請求還原由 Azure 平臺管理的 VMware 元件的流程?",
- "waf": "可靠性"
+ "text": "請勿在 YAML 清單中使用已棄用的 Kubernetes API",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4604489a-8f42-4d78-b78c-b7a33bd2a0a1",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
+ "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
+ "service": "AKS",
"severity": "低",
- "text": "對於手動部署,必須記錄所有配置和部署",
+ "text": "污染 Windows 節點",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
+ "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
+ "service": "AKS",
"severity": "低",
- "text": "對於手動部署,請考慮實施資源鎖,以防止對 Azure VMware 解決方案私有雲執行意外操作",
+ "text": "使 Windows 容器修補程式級別與主機修補程式級別保持同步",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b79b198d-ab81-4932-a9fc-9d1bb78036f5",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "通過群集級別的診斷設置",
+ "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
+ "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
+ "service": "AKS",
"severity": "低",
- "text": "對於自動化部署,請部署最小的私有雲並根據需要進行擴展",
+ "text": "將主日誌(又名 API 紀錄)發送到 Azure Monitor 或首選日誌管理解決方案",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e6bfbb9e-d503-4547-ac44-7e826128a71f",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
+ "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
+ "service": "AKS",
"severity": "低",
- "text": "對於自動部署,請在開始部署之前請求或預留配額",
- "waf": "操作"
+ "text": "如果需要,請使用 nodePool 快照",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
+ "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
+ "service": "AKS",
"severity": "低",
- "text": "對於自動部署,請確保通過自動化或 Azure Policy 創建相關資源鎖,以便進行適當的治理",
+ "text": "考慮將現成節點池用於對時間敏感的工作負載",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
+ "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "低",
- "text": "為 ExR 授權金鑰實現人類可理解的名稱,以便輕鬆識別密鑰的目的/用途",
+ "text": "考慮用於快速突發的 AKS 虛擬節點",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "255461e2-aee3-4553-afc8-339248b262d6",
- "service": "AVS",
- "severity": "低",
- "text": "當使用單獨的服務原則部署 Azure VMware 解決方案和 ExpressRoute 時,請使用 Key Vault 儲存機密和授權密鑰",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "高",
+ "text": "使用 Container Insights(或 Prometheus 等其他工具)監控集群指標",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd",
- "service": "AVS",
- "severity": "低",
- "text": "當需要在 Azure VMware 解決方案中/上部署許多資源時,定義用於在 IaC 中序列化操作的資源依賴項,因為 Azure VMware 解決方案僅支援有限數量的並行操作。",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
+ "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
+ "service": "AKS",
+ "severity": "高",
+ "text": "使用 Container Insights(或 Telegraf/ElasticSearch 等其他工具)存儲和分析集群日誌",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1d79a9b2-4604-4489-a8f4-2d78e78cb7a3",
- "service": "AVS",
- "severity": "低",
- "text": "使用單個 Tier-1 閘道執行 NSX-T 分段的自動配置時,請使用 Azure 門戶 API 而不是 NSX-Manager API",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
+ "service": "AKS",
+ "severity": "中等",
+ "text": "監控節點的 CPU 和記憶體利用率",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
+ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
+ "service": "AKS",
"severity": "中等",
- "text": "打算使用自動橫向擴展時,請務必為運行 Azure VMware 解決方案的訂閱申請足夠的 Azure VMware 解決方案配額",
- "waf": "性能"
+ "text": "如果使用 Azure CNI,請監視每個節點消耗的 Pod IP 的百分比",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "OS 磁碟上的 I/O 是關鍵資源。如果節點中的操作系統在 I/O 上受到限制,這可能會導致不可預知的行為,通常最終導致節點被聲明為 NotReady",
+ "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
+ "service": "AKS",
"severity": "中等",
- "text": "打算使用自動縮減時,請務必在執行此操作之前考慮存儲策略要求",
- "waf": "性能"
+ "text": "監視節點中的OS磁碟佇列深度",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "b78036f5-e6bf-4bb9-bd50-3547cc447e82",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
+ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
+ "service": "AKS",
"severity": "中等",
- "text": "擴展操作始終需要在單個 SDDC 中序列化,因為一次只能執行一個擴展操作(即使使用多個集群也是如此)",
- "waf": "性能"
+ "text": "如果不對 AzFW/NVA 使用出口篩選,請監視標準 ALB 分配的 SNAT 連接埠",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bf15bce2-19e4-4a0e-a588-79424d226786",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
+ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
+ "service": "AKS",
"severity": "中等",
- "text": "考慮並驗證體系結構中使用的第三方解決方案的縮放操作(支援與否)",
- "waf": "性能"
+ "text": "訂閱 AKS 群集的資源運行狀況通知",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "d20b56c5-7be5-4851-a0f8-3835c586cb29",
- "service": "AVS",
- "severity": "中等",
- "text": "在自動化中為環境定義和強制實施橫向擴展/橫向擴展最大限制",
- "waf": "性能"
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
+ "severity": "高",
+ "text": "在 Pod 規範中配置請求和限制",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "769ef669-1a48-435a-a942-223ece80b123",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "service": "AKS",
"severity": "中等",
- "text": "實施監控規則以監控自動擴展操作,並監控成功和失敗,以啟用適當的(自動化)回應",
+ "text": "強制實施命名空間的資源配額",
"waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c5972cd4-cd21-4b07-9036-f5e6b4bfd3d5",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
- "severity": "高",
- "text": "使用 MON 時,請注意同時配置的 VM 的限制(HCX 的 MON 限制 [400 - 標準,1000 - 大型設備])",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "be1f38cf-03a8-422b-b463-cbbbc8ac299e",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "AKS",
"severity": "高",
- "text": "使用 MON 時,不能在超過 100 個網路分機上啟用 MON",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
- "waf": "可靠性"
+ "text": "確保訂閱具有足夠的配額來橫向擴展節點池",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
+ "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "中等",
- "text": "如果使用 VPN 連接進行遷移,請相應地調整 MTU 大小。",
+ "text": "使用群集自動縮放程式",
"waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e614658d-d457-4e92-9139-b821102cad6e",
- "service": "AVS",
- "severity": "中等",
- "text": "對於連接到 Azure(500Mbps 或更低)的低連接區域,請考慮部署 HCX WAN 優化設備",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
+ "guid": "831c2872-c693-4b39-a887-a561bada49bc",
+ "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
+ "service": "AKS",
+ "severity": "低",
+ "text": "自定義 AKS 節點池的節點配置",
"waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "ae01e6e8-43e5-42f4-922d-928c1b1cd521",
- "service": "AVS",
- "severity": "中等",
- "text": "確保從本地裝置啟動遷移,而不是從雲端裝置啟動遷移(不要執行反向遷移)",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "e54a29a9-de39-4ac0-b7c2-8dc935657202",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "AVS",
- "severity": "中等",
- "text": "使用 Azure Netapp Files 擴展 Azure VMware 解決方案的儲存時,請考慮將其用作 VMware 資料儲存庫,而不是直接附加到 VM 。",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "bff4564b-0d93-44a3-98b2-63e7dd60513a",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "AVS",
- "severity": "中等",
- "text": "確保將專用 ExpressRoute 閘道用於外部資料儲存解決方案",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "3649906e-bad3-48ea-b53c-c7de1d8aaab3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
+ "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
+ "service": "AKS",
"severity": "中等",
- "text": "確保在用於外部數據存儲解決方案的 ExpressRoute 閘道上啟用了 FastPath",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "571549ab-8153-4d89-b89d-c7b33be2b1a2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "AVS",
- "severity": "高",
- "text": "如果使用延伸群集,請確保供應商支援所選的災難恢復解決方案",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "4c486b6d-8bdc-4059-acf7-5ee8a1309888",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "AVS",
- "severity": "高",
- "text": "如果使用延伸群集,請確保提供的 SLA 符合您的要求",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "9579d66b-896d-471f-a6ca-7be9955d04c3",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "AVS",
- "severity": "高",
- "text": "如果使用延伸群集,請確保兩條 ExpressRoute 線路都連接到連接中心。",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "c49d987c-b3d1-4325-aa12-4b6e4d0685ed",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "AVS",
- "severity": "高",
- "text": "如果使用延伸群集,請確保兩條 ExpressRoute 線路都啟用了 GlobalReach。",
- "waf": "可靠性"
+ "text": "需要時使用 Horizontal Pod Autoscaler",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.AVS/privateClouds",
- "checklist": "Azure VMware Solution Design Review",
- "guid": "dce9793b-7bcd-4b3b-91eb-2ec14eea6e59",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "AVS",
+ "arm-service": "microsoft.containerservice/managedClusters",
+ "checklist": "Azure AKS Review",
+ "description": "更大的節點將帶來更高的性能和功能,例如臨時磁碟和加速網路,但它們會增加爆炸半徑並降低擴展粒度",
+ "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
+ "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
+ "service": "AKS",
"severity": "高",
- "text": "是否正確考慮了網站容災設置,並在需要時為您的業務進行了更改。",
- "waf": "可靠性"
+ "text": "考慮適當的節點大小,不要太大或太小",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "ab5351f6-383a-45ed-9c5e-b143b16db40a",
- "link": "https://learn.microsoft.com/azure/aks/use-windows-hpc",
+ "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
+ "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
"service": "AKS",
"severity": "低",
- "text": "如果 AKS Windows 工作負載需要,可以使用 HostProcess 容器",
- "waf": "可靠性"
+ "text": "如果可伸縮性需要超過 5000 個節點,請考慮使用其他 AKS 群集",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "a280dcf5-90ce-465d-b8e1-3f9ccbd46926",
- "link": "https://learn.microsoft.com/azure/azure-functions/functions-kubernetes-keda",
+ "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
+ "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
"service": "AKS",
"severity": "低",
- "text": "如果運行事件驅動的工作負載,請使用KEDA",
+ "text": "考慮訂閱 EventGrid Events for AKS 自動化",
"waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "26886d20-b66c-457b-a591-19bf8e8f5c58",
- "link": "https://dapr.io/",
+ "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
+ "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
"service": "AKS",
"severity": "低",
- "text": "使用 Dapr 簡化微服務開發",
- "waf": "操作"
+ "text": "若要在 AKS 群集上長時間運行操作,請考慮事件終止",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (sku.tier=='Paid') | distinct id,compliant",
- "guid": "71d41e36-10cc-457b-9a4b-1410d4395898",
- "link": "https://learn.microsoft.com/azure/aks/uptime-sla",
+ "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
+ "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
"service": "AKS",
- "severity": "高",
- "text": "使用 SLA 支援的 AKS 產品/服務",
- "waf": "可靠性"
+ "severity": "低",
+ "text": "如果需要,請考慮將 Azure 專用主機用於 AKS 節點",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "c1288b3c-6a57-4cfc-9444-51e1a3d3453a",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
+ "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
+ "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
+ "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
"service": "AKS",
- "severity": "低",
- "text": "在容器和部署定義中使用中斷預算",
- "waf": "可靠性"
+ "severity": "高",
+ "text": "使用臨時OS磁碟",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerregistry/registries",
+ "arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "3c763963-7a55-42d5-a15e-401955387e5c",
- "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication",
- "service": "ACR",
+ "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
+ "service": "AKS",
"severity": "高",
- "text": "如果使用專用註冊表,請配置區域複製以將映像存儲在多個區域中",
- "waf": "可靠性"
+ "text": "對於非臨時磁碟,在運行多個 Pod/節點時,請為節點使用高 IOPS 和更大的 OS 磁碟,因為它需要高性能才能運行多個 Pod,並且會生成具有預設 AKS 日誌輪換閾值的大量日誌",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "f82cb8eb-8c0a-4a63-a25a-4956eaa8dc4a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/aks/eslz-cost-governance-with-kubecost",
+ "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
+ "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
"service": "AKS",
"severity": "低",
- "text": "使用外部應用(如 kubecost)將成本分配給不同的使用者",
- "waf": "成本"
+ "text": "對於超高性能存儲選項,請在 AKS 上使用超級磁碟For hyper performance storage option use Ultra Disks on AKS",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "4d3dfbab-9924-4831-a68d-fdf0d72f462c",
- "link": "https://learn.microsoft.com/azure/aks/scale-down-mode",
+ "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
"service": "AKS",
- "severity": "低",
- "text": "使用縮減模式刪除/取消分配節點",
- "waf": "成本"
+ "severity": "中等",
+ "text": "避免將狀態保留在群集中,並將數據存儲在外部(AzStorage、AzSQL、Cosmos 等)",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "87e651ea-bc4a-4a87-a6df-c06a4b570ebc",
- "link": "https://learn.microsoft.com/azure/aks/gpu-multi-instance",
+ "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
+ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
"service": "AKS",
"severity": "中等",
- "text": "需要時,請在 AKS 群集上使用多實例分組 GPU",
- "waf": "成本"
+ "text": "如果使用 AzFiles Standard,出於性能原因,請考慮使用 AzFiles Premium 和/或 ANF",
+ "waf": "性能"
},
{
"arm-service": "microsoft.containerservice/managedClusters",
"checklist": "Azure AKS Review",
- "guid": "2b72a08b-0410-4cd6-9093-e068a5cf27e8",
- "link": "https://learn.microsoft.com/azure/aks/start-stop-nodepools",
- "service": "AKS",
- "severity": "低",
- "text": "如果運行開發/測試群集,請使用 NodePool Start/Stop",
- "waf": "成本"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.azurepolicy) and properties.addonProfiles.azurepolicy.enabled==true) | distinct id,compliant",
- "guid": "9ca48e4a-85e2-4223-bce8-bb12307ca5f1",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes",
+ "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
+ "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
"service": "AKS",
"severity": "中等",
- "text": "使用適用於 Kubernetes 的 Azure Policy 確保群集符合性",
- "waf": "安全"
+ "text": "如果使用 Azure 磁碟和可用區,請考慮在區域內為 LRS 磁碟設置節點池,並使用 VolumeBindingMode:WaitForFirstConsumer 在正確的區域中預配存儲,或將 ZRS 磁碟用於跨多個區域的節點池",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | project id,name,resourceGroup,poolcount=array_length(pools) | extend compliant = (poolcount > 1)",
- "guid": "6f158e3e-a3a9-42c2-be7e-2165c3a87af4",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
+ "service": "Entra",
"severity": "中等",
- "text": "使用使用者/系統節點池將應用程式與控制平面分開",
- "waf": "安全"
+ "text": "使用一個 Entra 租戶來管理 Azure 資源,除非你對多租戶有明確的法規或業務要求。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a7a1f893-9bda-4477-98f2-4c116775c2ea",
- "link": "https://learn.microsoft.com/azure/aks/use-system-pools",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Entra",
"severity": "低",
- "text": "向系統節點池添加污點以使其專用",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "55b46a94-8008-4ae7-b7e4-b475b6c8bdbf",
- "link": "https://learn.microsoft.com/azure/container-registry/",
- "service": "AKS",
- "severity": "中等",
- "text": "對映像使用專用註冊表,例如 ACR",
- "waf": "安全"
+ "text": "使用多租戶自動化方法管理 Microsoft Entra ID 租戶。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerregistry/registries",
- "checklist": "Azure AKS Review",
- "guid": "59bce65d-e8a0-43f9-9879-468d66a786d6",
- "link": "https://learn.microsoft.com/azure/security-center/container-security",
- "service": "ACR",
- "severity": "中等",
- "text": "掃描映像以查找漏洞",
- "waf": "安全"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "Entra",
+ "severity": "高",
+ "text": "使用具有相同 ID 的 Azure Lighthouse 進行多租戶管理。",
+ "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d167dd18-2b0a-4c24-8b99-9a646f8389a7",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-cluster-isolation",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Entra",
"severity": "高",
- "text": "定義應用分離要求(命名空間/節點池/集群)",
- "waf": "安全"
+ "text": "如果向合作夥伴授予管理租戶的訪問許可權,請使用 Azure Lighthouse。",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "5e3df584-eccc-4d97-a3b6-bcda3b50eb2e",
- "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure",
- "service": "AKS",
- "severity": "中等",
- "text": "使用 CSI 機密存儲驅動程式將機密存儲在 Azure Key Vault 中",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "348ef254-c27d-442e-abba-c7571559ab91",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
+ "service": "Entra",
+ "severity": "高",
+ "text": "強制實施與雲操作模型相符的 RBAC 模型。跨管理組和訂閱確定範圍和分配。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b03dda6d-58d7-4c89-8ddb-107d5769ae66",
- "link": "https://learn.microsoft.com/azure/aks/update-credentials",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "service": "Entra",
"severity": "高",
- "text": "如果將服務主體用於群集,請定期刷新憑據(如每季度)",
+ "text": "僅對所有帳戶類型使用身份驗證類型「工作或學校帳戶」。避免使用 Microsoft 帳戶",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e7ba73a3-0508-4f80-806f-527db30cee96",
- "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "Entra",
"severity": "中等",
- "text": "如果需要,請添加金鑰管理服務 etcd 加密",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ec8e4e42-0344-41b0-b865-9123e8956d31",
- "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請考慮使用適用於 AKS 的機密計算",
+ "text": "僅使用組來分配許可權。如果已建立組管理系統,則將本地組添加到僅 Entra ID 組。",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c9e95ffe-6dd1-4a17-8c5f-110389ca9b21",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable",
- "service": "AKS",
- "severity": "中等",
- "text": "考慮使用 Defender for Containers",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
+ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
+ "service": "Entra",
+ "severity": "高",
+ "text": "對有權訪問 Azure 環境的任何用戶強制實施 Microsoft Entra ID 條件訪問策略。",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.servicePrincipalProfile.clientId=='msi') | distinct id,compliant",
- "guid": "ed127dd1-42b0-46b2-8c69-99a646f3389a",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
+ "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
+ "service": "Entra",
"severity": "高",
- "text": "使用託管標識而不是服務主體",
+ "text": "對有權訪問 Azure 環境的任何使用者強制實施多重身份驗證。",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.aadProfile) | distinct id,compliant",
- "guid": "7e42c78e-78c0-46a6-8a21-94956e698dc4",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "Entra",
"severity": "中等",
- "text": "將身份驗證與 AAD(使用託管集成)集成",
+ "text": "強制實施 Microsoft Entra ID 特權標識管理 (PIM) 以建立零長期訪問許可權和最低特權。",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a2fe27b2-e287-401a-8352-beedf79b488d",
- "link": "https://learn.microsoft.com/azure/aks/control-kubeconfig-access",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
+ "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
+ "service": "Entra",
"severity": "中等",
- "text": "限制對管理員 kubeconfig (get-credentials --admin) 的訪問",
+ "text": "如果計劃從 Active Directory 域服務切換到 Entra 域服務,請評估所有工作負載的相容性。",
+ "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "eec4962c-c3bd-421b-b77f-26e5e6b3bec3",
- "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
+ "service": "Entra",
"severity": "中等",
- "text": "將授權與 AAD RBAC 集成",
+ "text": "將 Microsoft Entra ID 日誌與平臺為中心的 Azure Monitor 集成。Azure Monitor 允許圍繞 Azure 中的日誌和監視數據提供單一事實來源,為組織提供雲原生選項,以滿足日誌收集和保留方面的要求。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d4f3537c-1346-4dc5-9027-a71ffe1bd05d",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity",
- "service": "AKS",
+ "ammp": true,
+ "checklist": "Azure Landing Zone Review",
+ "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
+ "service": "Entra",
"severity": "高",
- "text": "在 Kubernetes 中使用命名空間限制 RBAC 許可權",
+ "text": "實施緊急訪問或打破玻璃帳戶,以防止租戶範圍的帳戶鎖定。",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d2e0d5d7-71d4-41e3-910c-c57b4a4b1410",
- "link": "https://learn.microsoft.com/azure/aks/workload-identity-migration-sidecar",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "35037e68-9349-4c15-b371-228514f4cdff",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "Entra",
"severity": "中等",
- "text": "對於 Pod Identity Access Management,請使用 Azure AD 工作負載標識(預覽版)",
+ "text": "請勿使用本地同步帳戶進行 Microsoft Entra ID 角色分配,除非你有特別需要它的方案。",
+ "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f4dcf690-1b30-407d-abab-6f8aa780d3a3",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#non-interactive-sign-in-with-kubelogin",
- "service": "AKS",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Entra",
"severity": "中等",
- "text": "對於 AKS 非互動式登錄名,請使用 kubelogin(預覽版)",
+ "text": "使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對應用程式的訪問許可權時,請將其作為平臺資源進行管理,因為每個租戶只能有一個實例。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.disableLocalAccounts==true) | distinct id,compliant",
- "guid": "b085b1f2-3119-4771-8c9a-bbf4411810ec",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#disable-local-accounts",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
+ "service": "VNet",
"severity": "中等",
- "text": "禁用 AKS 本地帳戶",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "36abb0db-c118-4f4c-9880-3f30f9a2deb6",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#configure-just-in-time-cluster-access-with-azure-ad-and-aks",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請配置 Just-in-time 群集訪問",
+ "text": "對於需要最大靈活性的網路方案,請使用中心輻射型網路拓撲。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4d7f4c6-79bf-45d0-aa05-ce8fc717e150",
- "link": "https://learn.microsoft.com/azure/aks/managed-aad#use-conditional-access-with-azure-ad-and-aks",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
+ "service": "VNet",
+ "severity": "高",
+ "text": "在中心虛擬網路中部署共用網路服務,包括 ExpressRoute 閘道、VPN 閘道和 Azure 防火牆或合作夥伴 NVA。如有必要,還可以部署 DNS 服務。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "VNet",
+ "severity": "高",
+ "text": "對應用程式登陸區域中的所有公共IP位址使用 DDoS 網路或IP保護計畫。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
+ "service": "NVA",
+ "severity": "中等",
+ "text": "部署合作夥伴網路技術或 NVA 時,請遵循合作夥伴供應商的指導。",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
+ "service": "ExpressRoute",
"severity": "低",
- "text": "如果需要,為 AKS 配置 AAD 條件訪問",
+ "text": "如果需要在中心輻射型方案中在 ExpressRoute 和 VPN 閘道之間傳輸,請使用 Azure 路由伺服器。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e1123a7c-a333-4eb4-a120-4ee3f293c9f3",
- "link": "https://learn.microsoft.com/azure/aks/use-group-managed-service-accounts",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualHubs",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
+ "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
+ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
+ "service": "ARS",
"severity": "低",
- "text": "如果 Windows AKS 工作負載需要,請配置 gMSA",
+ "text": "如果使用路由伺服器,請對路由伺服器子網使用 /27 前置綴。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1f711a74-3672-470b-b8b8-a2148d640d79",
- "link": "https://learn.microsoft.com/azure/aks/use-managed-identity#use-a-pre-created-kubelet-managed-identity",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
+ "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",
"severity": "中等",
- "text": "為了獲得更精細的控制,請考慮使用託管的 Kubelet 身份",
- "waf": "安全"
+ "text": "對於跨 Azure 區域具有多個中心輻射型拓撲的網路體系結構,請在中心 VNet 之間使用全域虛擬網路對等互連將區域相互連接。",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "cbd8ac2a-aebc-4a2a-94da-1dbf3dc99248",
- "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
+ "service": "VNet",
"severity": "中等",
- "text": "如果使用 AGIC,請勿跨集群共用 AppGW",
- "waf": "可靠性"
+ "text": "使用用於網路的 Azure Monitor 監視 Azure 上網路的端到端狀態。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnull(properties.addonProfiles.httpApplicationRouting) or properties.addonProfiles.httpApplicationRouting.enabled==false) | distinct id,compliant",
- "guid": "8008ae7d-7e4b-4475-a6c8-bdbf59bce65d",
- "link": "https://learn.microsoft.com/azure/aks/http-application-routing",
- "service": "AKS",
- "severity": "高",
- "text": "不要使用 AKS HTTP 路由載入項,而是將託管 NGINX 入口與應用程式路由載入項一起使用。",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
+ "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
+ "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",
+ "severity": "中等",
+ "text": "如果一個區域中有超過 400 個分支網路,請部署一個額外的中心,以繞過 VNet 對等互連限制 (500) 和可通過 ExpressRoute 播發的最大前綴數 (1000)。",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7bacd7b9-c025-4a9d-a5d2-25d6bc5439d9",
- "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
+ "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
+ "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",
"severity": "中等",
- "text": "對於 Windows 工作負載,請使用加速網路",
- "waf": "性能"
+ "text": "將每個路由表的路由數限制為 400 個。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (tolower(properties.networkProfile.loadBalancerSku)=='standard') | distinct id,compliant",
- "guid": "ba7da7be-9952-4914-a384-5d997cb39132",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
+ "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
+ "service": "VNet",
"severity": "高",
- "text": "使用標準 ALB(而不是基本 ALB)",
+ "text": "配置 VNet 對等互連時,請使用「允許流量流向遠端虛擬網路」設置。",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22fbe8d6-9b40-47ef-9011-25bb1a555a6b",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "如果使用 Azure CNI,請考慮對 NodePool 使用不同的子網",
+ "text": "使用 ExpressRoute Direct 時,請配置 MACsec,以便加密組織路由器和 MSEE 之間的第二層級別的流量。該圖顯示了流中的此加密。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c3c39c98-6bb2-4c12-859a-114b5e3df584",
- "link": "https://learn.microsoft.com/azure/private-link/private-link-overview",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "使用專用終結點(首選)或虛擬網路服務終結點從群集訪問 PaaS 服務",
+ "text": "對於無法使用MACsec的情況(例如,不使用ExpressRoute Direct),請使用 VPN 閘道通過 ExpressRoute 專用對等互連建立 IPsec 隧道。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.networkPlugin=='azure') | distinct id,compliant",
- "guid": "a0f61565-9de5-458f-a372-49c831112dbd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "高",
- "text": "選擇最適合你要求的 CNI 網路外掛程式(建議使用 Azure CNI)",
- "waf": "可靠性"
+ "text": "確保在 Azure 區域和本地位置之間不使用重疊的 IP 位址空間。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "7faf12e7-0943-4f63-8472-2da29c2b1cd6",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "高",
- "text": "如果使用 Azure CNI,請根據每個節點的最大 Pod 數相應地調整子網的大小",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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",
+ "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
+ "severity": "中等",
+ "text": "使用專用 Internet 的位址分配範圍中的 IP 位址 (RFC 1918)。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "22f54b29-bade-43aa-b1e8-c38ec9366673",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "VNet",
"severity": "高",
- "text": "如果使用 Azure CNI,請檢查每個節點的最大 Pod 數(預設為 30)",
+ "text": "確保不會浪費IP位址空間,不要創建不必要的大型虛擬網路(例如/16)。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "對於內部應用,組織通常會在其防火牆中打開整個AKS子網。這也會打開對節點的網路訪問,並可能打開對 Pod 的訪問(如果使用 Azure CNI)。如果 LoadBalancer IP 位於不同的子網中,則只有此子網可供應用用戶端使用。另一個原因是,如果 AKS 子網中的 IP 位址是稀缺資源,則將其 IP 位址用於服務會降低群集的最大可伸縮性。",
- "guid": "13c00567-4b1e-4945-a459-c373e7ed6162",
- "link": "https://learn.microsoft.com/azure/aks/internal-lb",
- "service": "AKS",
- "severity": "低",
- "text": "如果使用專用IP LoadBalancer服務,請使用專用子網(而不是 AKS 子網)",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "43f63047-22d9-429c-8b1c-d622f54b29ba",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "高",
- "text": "相應調整服務 IP 位址範圍的大小(這將限制群集的可伸縮性)",
+ "text": "請勿對生產網站和災難恢復網站使用重疊的IP位址範圍。",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "57bf217f-6dc8-481c-81e2-785773e9c00f",
- "link": "https://learn.microsoft.com/azure/aks/use-byo-cni",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請添加您自己的 CNI 外掛程式",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
+ "service": "DNS",
+ "severity": "中等",
+ "text": "對於只需要在 Azure 中進行名稱解析的環境,請使用 Azure 專用 DNS 進行解析,並使用委託區域進行名稱解析(例如“azure.contoso.com”)。",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
+ "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
+ "service": "DNS",
+ "severity": "中等",
+ "text": "對於需要跨 Azure 和本地進行名稱解析且沒有現有企業 DNS 服務(如 Active Directory)的環境,請使用 Azure DNS 專用解析程式將 DNS 請求路由到 Azure 或本地 DNS 伺服器。",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4b3bb365-9458-44d9-9ed1-5c8f52890364",
- "link": "https://learn.microsoft.com/azure/aks/use-multiple-node-pools#assign-a-public-ip-per-node-for-your-node-pools",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
+ "service": "DNS",
"severity": "低",
- "text": "如果需要,請在 AKS 中配置每個節點的公共 IP",
- "waf": "性能"
+ "text": "需要並部署自己的 DNS(例如 Red Hat OpenShift)的特殊工作負載應使用其首選的 DNS 解決方案。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b3808b9f-a1cf-4204-ad01-3a923ce474db",
- "link": "https://learn.microsoft.com/azure/aks/concepts-network",
- "service": "AKS",
- "severity": "中等",
- "text": "使用入口控制器公開基於 Web 的應用,而不是使用 LoadBalancer 類型的服務公開它們",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Network/dnsZones",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "614658d3-558f-4d77-849b-821112df27ee",
+ "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
+ "service": "DNS",
+ "severity": "高",
+ "text": "啟用 Azure DNS 的自動註冊,以自動管理虛擬網路中部署的虛擬機的 DNS 記錄的生命週期。",
+ "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ccb534e7-416e-4a1d-8e93-533b53199085",
- "link": "https://learn.microsoft.com/azure/aks/nat-gateway",
- "service": "AKS",
- "severity": "低",
- "text": "使用 Azure NAT 閘道作為 outboundType 來縮放出口流量",
- "waf": "可靠性"
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
+ "service": "Bastion",
+ "severity": "中等",
+ "text": "使用 Azure Bastion 安全地連接到網路。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "8ee9a69a-1b58-4b1e-9c61-476e110a160b",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni#dynamic-allocation-of-ips-and-enhanced-subnet-support",
- "service": "AKS",
+ "arm-service": "microsoft.network/bastionHosts",
+ "checklist": "Azure Landing Zone Review",
+ "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
+ "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
+ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
+ "service": "Bastion",
"severity": "中等",
- "text": "使用IP的動態分配來避免 Azure CNI IP 耗盡",
- "waf": "可靠性"
+ "text": "在子網 /26 或更大的情況下使用 Azure Bastion。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.networkProfile.outboundType=='userDefinedRouting') | distinct id,compliant",
- "guid": "3b365a91-7ecb-4e48-bbe5-4cd7df2e8bba",
- "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic",
- "service": "AKS",
- "severity": "高",
- "text": "如果安全要求要求,請使用 AzFW/NVA 篩選出口流量",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "WAF",
+ "severity": "中等",
+ "text": "使用 Azure Front Door 和 WAF 策略跨 Azure 區域為登陸區域的入站 HTTP/S 連接提供全域保護。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = ((isnull(properties.apiServerAccessProfile.enablePrivateCluster) or properties.apiServerAccessProfile.enablePrivateCluster==false) and isnotnull(properties.apiServerAccessProfile.authorizedIPRanges)) | distinct id,compliant",
- "guid": "c4581559-bb91-463e-a908-aed8c44ce3b2",
- "link": "https://learn.microsoft.com/azure/aks/api-server-authorized-ip-ranges",
- "service": "AKS",
- "severity": "中等",
- "text": "如果使用公共 API 終端節點,請限制可以存取它的 IP 位址",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
+ "severity": "低",
+ "text": "使用 Azure Front Door 和 Azure 應用程式閘道幫助保護 HTTP/S 應用時,請在 Azure Front Door 中使用 WAF 策略。鎖定 Azure 應用程式閘道,以便僅接收來自 Azure Front Door 的流量。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ecccd979-3b6b-4cda-9b50-eb2eb03dda6d",
- "link": "https://learn.microsoft.com/azure/aks/private-clusters",
- "service": "AKS",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "WAF",
"severity": "高",
- "text": "如果要求要求,請使用私有集群",
+ "text": "當入站 HTTP/S 連接需要 WAF 和其他反向代理時,請將它們部署在登陸區域虛擬網路中,並將它們與它們要保護和向 Internet 公開的應用一起部署。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | where isnotnull(properties.apiServerAccessProfile.enablePrivateCluster) | extend compliant = (properties.apiServerAccessProfile.enablePrivateCluster==true) | distinct id, compliant",
- "guid": "ce7f2a7c-297c-47c6-adea-a6ff838db665",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
- "severity": "中等",
- "text": "對於 Windows 2019 和 2022 AKS 節點,可以使用 Calico 網路策略",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
+ "severity": "高",
+ "text": "使用 Azure DDoS 網路或 IP 保護計劃來幫助保護虛擬網路中的公共 IP 位址終結點。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = isnotnull(properties.networkProfile.networkPolicy) | distinct id,compliant",
- "guid": "58d7c892-ddb1-407d-9769-ae669ca48e4a",
- "link": "https://learn.microsoft.com/azure/aks/use-network-policies",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
+ "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
+ "service": "VNet",
"severity": "高",
- "text": "啟用 Kubernetes 網路策略選項 (Calico/Azure)",
- "waf": "安全"
+ "text": "在即將到來的重大更改之前,規劃如何管理網路出站流量配置和策略。2025 年 9 月 30 日,新部署的預設出站訪問將停用,僅允許顯式訪問配置。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "85e2223e-ce8b-4b12-907c-a5f16f158e3e",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
+ "service": "VNet",
"severity": "高",
- "text": "使用 Kubernetes 網路策略提高集群內安全性",
+ "text": "添加診斷設置以保存所有受保護的公共IP位址(DDoS IP或網路保護)的 DDoS 相關日誌。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "a3a92c2d-e7e2-4165-a3a8-7af4a7a1f893",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network",
- "service": "AKS",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
+ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
+ "service": "Policy",
"severity": "高",
- "text": "將 WAF 用於 Web 工作負載(UI 或 API)",
+ "text": "確保存在策略分配,以拒絕直接綁定到虛擬機的公共IP位址。 如果特定 VM 上需要公共 IP,請使用排除項。",
"waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "9bda4776-8f24-4c11-9775-c2ea55b46a94",
- "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "在 AKS 虛擬網路中使用 DDoS 標準",
- "waf": "安全"
+ "text": "使用 ExpressRoute 作為到 Azure 的主要連接。 使用 VPN 作為備用連接源。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "Resources | where type=~'microsoft.containerservice/managedclusters' | project resourceGroup,name,pools=properties.agentPoolProfiles | mv-expand pools | project subnetId=tostring(pools.vnetSubnetID) | where isnotempty(subnetId) | join (Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,enableDdosProtection=tostring(properties.enableDdosProtection),subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,enableDdosProtection,subnetId=tostring(subnets.id)) on subnetId | distinct id,resourceGroup,name,enableDdosProtection | extend compliant = (enableDdosProtection == 'true')",
- "guid": "6c46b91a-1107-4485-ad66-3183e2a8c266",
- "link": "https://learn.microsoft.com/azure/aks/http-proxy",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請添加公司 HTTP 代理",
- "waf": "安全"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "description": "可以使用 AS 路徑預置和連接權重來影響從 Azure 到本地的流量,並使用自己的路由器中的所有 BGP 屬性來影響從本地到 Azure 的流量。",
+ "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "使用多個 ExpressRoute 線路或多個本地位置時,請使用 BGP 屬性來優化路由。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e9855d04-c3c3-49c9-a6bb-2c12159a114b",
- "link": "https://learn.microsoft.com/azure/aks/servicemesh-about",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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-about-virtual-network-gateways?source=recommendations#gwsku",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "考慮使用服務網格進行高級微服務通信管理",
- "waf": "安全"
+ "text": "根據頻寬和性能要求為 ExpressRoute/VPN 閘道選擇正確的 SKU。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67f7a9ed-5b31-4f38-a3f3-9812b2463cff",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
+ "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
+ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
+ "service": "ExpressRoute",
"severity": "高",
- "text": "設定有關最關鍵指標的警報(請參閱容器見解以獲取建議)",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "337453a3-cc63-4963-9a65-22ac19e80696",
- "link": "https://learn.microsoft.com/azure/advisor/advisor-get-started",
- "service": "AKS",
- "severity": "低",
- "text": "定期查看 Azure 顧問,瞭解有關群集的建議",
- "waf": "操作"
+ "text": "確保僅在達到與其成本相符的頻寬時才使用無限數據的 ExpressRoute 線路。",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "3aa70560-e7e7-4968-be3d-628af35b2ced",
- "link": "https://learn.microsoft.com/azure/aks/certificate-rotation",
- "service": "AKS",
- "severity": "低",
- "text": "啟用 AKS 自動證書輪換",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
+ "service": "ExpressRoute",
+ "severity": "高",
+ "text": "如果線路對等互連位置支援本地 SKU 的 Azure 區域,則利用 ExpressRoute 的本地 SKU 來降低線路成本。",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "e189c599-df0d-45a7-9dd4-ce32c1881370",
- "link": "https://learn.microsoft.com/azure/aks/supported-kubernetes-versions",
- "service": "AKS",
- "severity": "高",
- "text": "定期(例如,每季度)升級 kubernetes 版本,或使用 AKS 自動升級功能",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
+ "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "在受支援的 Azure 區域中部署區域冗餘 ExpressRoute 閘道。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f7c4c0d-4e51-4464-ad24-57ed67138b82",
- "link": "https://learn.microsoft.com/azure/aks/node-updates-kured",
- "service": "AKS",
- "severity": "高",
- "text": "如果您不使用 node-image 升級,請使用 kured 進行 Linux 節點升級",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "對於需要頻寬高於 10 Gbps 或專用 10/100 Gbps 埠的方案,請使用 ExpressRoute Direct。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "139c9580-ade3-426a-ba09-cf157d9f6477",
- "link": "https://learn.microsoft.com/azure/aks/node-image-upgrade",
- "service": "AKS",
- "severity": "高",
- "text": "定期(例如,每周)升級群集節點映像的常規過程",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
+ "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "如果需要低延遲,或者從本地到 Azure 的輸送量必須大於 10 Gbps,請啟用 FastPath 以從數據路徑繞過 ExpressRoute 閘道。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "0102ce16-ee30-41e6-b882-e52e4621dd68",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/bedrock/bedrock-automated-deployments",
- "service": "AKS",
- "severity": "低",
- "text": "考慮使用 gitops 將應用程式或集群配置部署到多個集群",
- "waf": "操作"
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
+ "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
+ "service": "VPN",
+ "severity": "中等",
+ "text": "使用區域冗餘 VPN 閘道將分支或遠端位置連接到 Azure(如果可用)。",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "d7672c26-7602-4482-85a4-14527fbe855c",
- "link": "https://learn.microsoft.com/azure/aks/command-invoke",
- "service": "AKS",
- "severity": "低",
- "text": "請考慮在專用群集上使用 AKS 命令調用",
- "waf": "操作"
+ "arm-service": "microsoft.network/virtualNetworkGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
+ "service": "VPN",
+ "severity": "中等",
+ "text": "在本地使用冗餘 VPN 設備(主動/主動或主動/被動)。",
+ "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "31d7aaab-7571-4449-ab80-53d89e89d17b",
- "link": "https://learn.microsoft.com/azure/aks/node-auto-repair#node-autodrain",
- "service": "AKS",
- "severity": "低",
- "text": "對於計劃的事件,請考慮使用 Node Auto Drain",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
+ "service": "ExpressRoute",
+ "severity": "高",
+ "text": "如果使用 ExpressRoute Direct,請考慮使用到本地 Azure 區域的 ExpressRoute 本地線路來節省成本。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "ed0fda7f-211b-47c7-8b6e-c18873fb473c",
- "link": "https://learn.microsoft.com/azure/aks/faq",
- "service": "AKS",
- "severity": "高",
- "text": "開發自己的治理實踐,以確保節點 RG(又名“基礎設施 RG”)中的操作員不會執行任何更改",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "當需要流量隔離或專用頻寬時,例如用於分離生產環境和非生產環境,請使用不同的 ExpressRoute 線路。它將幫助您確保隔離的路由域並減輕嘈雜的鄰居風險。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (properties.nodeResourceGroup !startswith 'MC_') | distinct id,compliant",
- "guid": "73b32a5a-67f7-4a9e-b5b3-1f38c3f39812",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "低",
- "text": "使用自定義節點 RG(又名“Infra RG”)名稱",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "使用內置的 Express Route Insights 監視 ExpressRoute 的可用性和利用率。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b2463cff-e189-4c59-adf0-d5a73dd4ce32",
- "link": "https://kubernetes.io/docs/setup/release/notes/",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
+ "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "請勿在 YAML 清單中使用已棄用的 Kubernetes API",
+ "text": "使用連接監視器監視整個網路的連接監視,尤其是本地和 Azure 之間的連接監視。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c1881370-6f7c-44c0-b4e5-14648d2457ed",
- "link": "https://learn.microsoft.com/azure-stack/aks-hci/adapt-apps-mixed-os-clusters",
- "service": "AKS",
- "severity": "低",
- "text": "污染 Windows 節點",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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#need-for-redundant-connectivity-solution",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "使用來自不同對等互連位置的 ExpressRoute 線路實現冗餘。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "67138b82-0102-4ce1-9ee3-01e6e882e52e",
- "link": "https://learn.microsoft.com/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-20H2%2Cwindows-10-20H2",
- "service": "AKS",
- "severity": "低",
- "text": "使 Windows 容器修補程式級別與主機修補程式級別保持同步",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "如果僅使用單個 ExpressRoute 線路,則使用網站到網站 VPN 作為 ExpressRoute 的故障轉移。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "通過群集級別的診斷設置",
- "guid": "5b56ad48-408f-4e72-934c-476ba280dcf5",
- "link": "https://learn.microsoft.com/azure/aks/monitor-aks",
- "service": "AKS",
- "severity": "低",
- "text": "將主日誌(又名 API 紀錄)發送到 Azure Monitor 或首選日誌管理解決方案",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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))",
+ "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
+ "service": "ExpressRoute",
+ "severity": "高",
+ "text": "如果在 GatewaySubnet 中使用路由表,請確保傳播閘道路由。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "64d1a846-e28a-4b6b-9a33-22a635c15a21",
- "link": "https://learn.microsoft.com/azure/aks/node-pool-snapshot",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請使用 nodePool 快照",
- "waf": "成本"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d581a947-69a2-4783-942e-9df3664324c8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
+ "service": "ExpressRoute",
+ "severity": "高",
+ "text": "如果使用 ExpressRoute,則本地路由應是動態的:如果連接失敗,它應收斂到線路的其餘連接。負載應在兩個連接之間共用,理想情況下為主動/主動,儘管也支持主動/被動。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5a5b252-1e44-4a59-a9d2-399c4d7b68d0",
- "link": "https://learn.microsoft.com/azure/aks/spot-node-pool",
- "service": "AKS",
- "severity": "低",
- "text": "考慮將現成節點池用於對時間敏感的工作負載",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "確保 ExpressRoute 線路的兩個物理鏈路連接到網路中的兩個不同的邊緣設備。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.aciConnectorLinux) and properties.addonProfiles.aciConnectorLinux.enabled==true) | distinct id,compliant",
- "guid": "c755562f-2b4e-4456-9b4d-874a748b662e",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "低",
- "text": "考慮用於快速突發的 AKS 虛擬節點",
- "waf": "操作"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "確保在客戶或供應商邊緣路由設備上啟用並配置雙向轉發檢測 (BFD)。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "6f8389a7-f82c-4b8e-a8c0-aa63a25a4956",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "ExpressRoute",
"severity": "高",
- "text": "使用 Container Insights(或 Prometheus 等其他工具)監控集群指標",
- "waf": "操作"
+ "text": "將 ExpressRoute 閘道連接到來自不同對等互連位置的兩條或多條線路,以實現更高的復原能力。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.addonProfiles.omsagent) and properties.addonProfiles.omsagent.enabled==true) | distinct id,compliant",
- "guid": "eaa8dc4a-2436-47b3-9697-15b1752beee0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview",
- "service": "AKS",
- "severity": "高",
- "text": "使用 Container Insights(或 Telegraf/ElasticSearch 等其他工具)存儲和分析集群日誌",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
+ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
+ "service": "ExpressRoute",
+ "severity": "中等",
+ "text": "配置 ExpressRoute 虛擬網路閘道的診斷日誌和警報。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
"waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "4621dd68-c5a5-4be2-bdb1-1726769ef669",
- "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze",
- "service": "AKS",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
+ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "監控節點的 CPU 和記憶體利用率",
- "waf": "操作"
+ "text": "請勿使用 ExpressRoute 線路進行 VNet 到 VNet 通信。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "1a4835ac-9422-423e-ae80-b123081a5417",
- "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni",
- "service": "AKS",
- "severity": "中等",
- "text": "如果使用 Azure CNI,請監視每個節點消耗的 Pod IP 的百分比",
- "waf": "操作"
+ "checklist": "Azure Landing Zone Review",
+ "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "service": "N/A",
+ "severity": "低",
+ "text": "請勿將 Azure 流量發送到混合位置進行檢查。 相反,請遵循“Azure 中的流量保留在 Azure 中”的原則,以便 Azure 中的資源之間的通信通過 Microsoft 主幹網络進行。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "OS 磁碟上的 I/O 是關鍵資源。如果節點中的操作系統在 I/O 上受到限制,這可能會導致不可預知的行為,通常最終導致節點被聲明為 NotReady",
- "guid": "415833ea-3ad3-4c2d-b733-165c3acbe04b",
- "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance",
- "service": "AKS",
- "severity": "中等",
- "text": "監視節點中的OS磁碟佇列深度",
- "waf": "操作"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
+ "link": "https://learn.microsoft.com/azure/firewall/overview",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "使用 Azure 防火牆來管理到 Internet 的 Azure 出站流量、非 HTTP/S 入站連接和東西流量篩選(如果組織需要)。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "be209d39-fda4-4777-a424-d116785c2fa5",
- "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
+ "service": "Firewall",
"severity": "中等",
- "text": "如果不對 AzFW/NVA 使用出口篩選,請監視標準 ALB 分配的 SNAT 連接埠",
- "waf": "操作"
+ "text": "創建全域 Azure 防火牆策略以管理全球網路環境中的安全狀況,並將其分配給所有 Azure 防火牆實例。通過 Azure 基於角色的訪問控制將增量防火牆策略委派給本地安全團隊,從而允許使用精細策略來滿足特定區域的要求。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "74c2ee76-569b-4a79-a57e-dedf91b022c9",
- "link": "https://learn.microsoft.com/azure/aks/aks-resource-health",
- "service": "AKS",
- "severity": "中等",
- "text": "訂閱 AKS 群集的資源運行狀況通知",
- "waf": "操作"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
+ "service": "Firewall",
+ "severity": "低",
+ "text": "如果組織想要使用此類解決方案來幫助保護出站連接,請在 Firewall Manager 中配置受支援的合作夥伴 SaaS 安全提供者。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "b54eb2eb-03dd-4aa3-9927-18e2edb11726",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
+ "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
+ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
+ "service": "Firewall",
"severity": "高",
- "text": "在 Pod 規範中配置請求和限制",
- "waf": "操作"
+ "text": "使用應用程式規則篩選目標主機名上的出站流量,以查找受支持的協定。 使用基於 FQDN 的網路規則和具有 DNS 代理的 Azure 防火牆來篩選通過其他協定流向 Internet 的傳出流量。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "769ef669-1a48-435a-a942-223ece80b123",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-scheduler",
- "service": "AKS",
- "severity": "中等",
- "text": "強制實施命名空間的資源配額",
- "waf": "操作"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
+ "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "使用 Azure 防火牆高級版啟用其他安全功能。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "081a5417-4158-433e-a3ad-3c2de733165c",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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#idps-signature-rules",
+ "service": "Firewall",
"severity": "高",
- "text": "確保訂閱具有足夠的配額來橫向擴展節點池",
- "waf": "操作"
+ "text": "將 Azure 防火牆威脅情報模式配置為「警報」和「拒絕」以獲得額外保護。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.autoScalerProfile)) | distinct id,compliant",
- "guid": "90ce65de-8e13-4f9c-abd4-69266abca264",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
- "severity": "中等",
- "text": "使用群集自動縮放程式",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
+ "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "將 Azure 防火牆 IDPS 模式配置為「拒絕」以獲得額外保護。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | extend compliant = (isnotnull(properties.austoscalerProfile)) | distinct id,compliant",
- "guid": "831c2872-c693-4b39-a887-a561bada49bc",
- "link": "https://learn.microsoft.com/azure/aks/custom-node-configuration",
- "service": "AKS",
- "severity": "低",
- "text": "自定義 AKS 節點池的節點配置",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "對於未連接到虛擬 WAN 的 VNet 中的子網,請附加路由表,以便將 Internet 流量重定向到 Azure 防火牆或網路虛擬設備。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "faa19bfe-9d55-4d04-a3c4-919ca1b2d121",
- "link": "https://learn.microsoft.com/azure/aks/concepts-scale",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
+ "service": "Firewall",
"severity": "中等",
- "text": "需要時使用 Horizontal Pod Autoscaler",
- "waf": "性能"
+ "text": "添加診斷設置,使用「特定於資源」的目標表保存所有 Azure 防火牆部署的日誌。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "description": "更大的節點將帶來更高的性能和功能,例如臨時磁碟和加速網路,但它們會增加爆炸半徑並降低擴展粒度",
- "guid": "5ae124ba-34df-4585-bcdc-e9bd3bb0cdb3",
- "link": "https://blog.cloudtrooper.net/2020/10/23/which-vm-size-should-i-choose-as-aks-node/",
- "service": "AKS",
- "severity": "高",
- "text": "考慮適當的節點大小,不要太大或太小",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
+ "service": "Firewall",
+ "severity": "重要",
+ "text": "從 Azure 防火牆經典規則(如果存在)遷移到防火牆策略。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "38800e6a-ae01-40a2-9fbc-ae5a06e5462d",
- "link": "https://learn.microsoft.com/azure/aks/quotas-skus-regions#service-quotas-and-limits",
- "service": "AKS",
- "severity": "低",
- "text": "如果可伸縮性需要超過 5000 個節點,請考慮使用其他 AKS 群集",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "對 Azure 防火牆子網使用 /26 前置綴。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9583c0f6-6083-43f6-aa6b-df7102c901bb",
- "link": "https://learn.microsoft.com/azure/event-grid/event-schema-aks",
- "service": "AKS",
- "severity": "低",
- "text": "考慮訂閱 EventGrid Events for AKS 自動化",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
+ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
+ "service": "Firewall",
+ "severity": "中等",
+ "text": "根據防火牆策略中的規則的使用頻率,將規則排列到規則集合組和規則集合中。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c5016d8c-c6c9-4165-89ae-673ef0fff19d",
- "link": "https://learn.microsoft.com/azure/aks/manage-abort-operations",
- "service": "AKS",
- "severity": "低",
- "text": "若要在 AKS 群集上長時間運行操作,請考慮事件終止",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
+ "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
+ "service": "Firewall",
+ "severity": "中等",
+ "text": "使用IP組或IP前置綴來減少IP表規則的數量。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "c4e37133-f186-4ce1-aed9-9f1b32f6e021",
- "link": "https://learn.microsoft.com/azure/aks/use-azure-dedicated-hosts",
- "service": "AKS",
- "severity": "低",
- "text": "如果需要,請考慮將 Azure 專用主機用於 AKS 節點",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
+ "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
+ "service": "Firewall",
+ "severity": "中等",
+ "text": "不要使用通配符作為DNAT的源IP,例如 *或 any,您應該為傳入的DNAT指定源IP。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "graph": "where type=='microsoft.containerservice/managedclusters' | project id,resourceGroup,name,pools=properties.agentPoolProfiles | mvexpand pools | extend compliant = (pools.osDiskType=='Ephemeral') | project id,name=strcat(name,'-',pools.name), resourceGroup, compliant",
- "guid": "24367b33-6971-45b1-952b-eee0b9b588de",
- "link": "https://learn.microsoft.com/azure/aks/cluster-configuration",
- "service": "AKS",
- "severity": "高",
- "text": "使用臨時OS磁碟",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
+ "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
+ "service": "Firewall",
+ "severity": "中等",
+ "text": "通過監控 SNAT 埠使用方式、評估 NAT 閘道設置並確保無縫故障轉移,防止 SNAT 埠耗盡。如果埠計數接近限制,則表明 SNAT 耗盡可能迫在眉睫。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "f0ce315f-1120-4166-8206-94f2cf3a4d07",
- "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "346840b8-1064-496e-8396-4b1340172d52",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
+ "service": "Firewall",
"severity": "高",
- "text": "對於非臨時磁碟,在運行多個 Pod/節點時,請為節點使用高 IOPS 和更大的 OS 磁碟,因為它需要高性能才能運行多個 Pod,並且會生成具有預設 AKS 日誌輪換閾值的大量日誌",
+ "text": "如果使用的是 Azure 防火牆高級版,請啟用 TLS 檢查。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "39c486ce-d5af-4062-89d5-18bb5fd795db",
- "link": "https://learn.microsoft.com/azure/aks/use-ultra-disks",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
+ "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
+ "service": "Firewall",
"severity": "低",
- "text": "對於超高性能存儲選項,請在 AKS 上使用超級磁碟For hyper performance storage option use Ultra Disks on AKS",
+ "text": "使用 Web 類別允許或拒絕對特定主題的出站訪問。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "9f7547c1-747d-4c56-868a-714435bd19dd",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
+ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
+ "service": "Firewall",
"severity": "中等",
- "text": "避免將狀態保留在群集中,並將數據存儲在外部(AzStorage、AzSQL、Cosmos 等)",
+ "text": "作為 TLS 檢查的一部分,請計劃從 Azure 應用閘道接收流量以進行檢查。",
"waf": "性能"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "24429eb7-2281-4376-85cc-57b4a4b18142",
- "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-storage",
- "service": "AKS",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
+ "link": "https://learn.microsoft.com/azure/firewall/dns-details",
+ "service": "Firewall",
"severity": "中等",
- "text": "如果使用 AzFiles Standard,出於性能原因,請考慮使用 AzFiles Premium 和/或 ANF",
- "waf": "性能"
+ "text": "啟用 Azure 防火牆 DNS 代理配置。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Azure AKS Review",
- "guid": "83958a8c-2689-4b32-ab57-cfc64546135a",
- "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support",
- "service": "AKS",
- "severity": "中等",
- "text": "如果使用 Azure 磁碟和可用區,請考慮在區域內為 LRS 磁碟設置節點池,並使用 VolumeBindingMode:WaitForFirstConsumer 在正確的區域中預配存儲,或將 ZRS 磁碟用於跨多個區域的節點池",
- "waf": "性能"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
+ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
+ "service": "Firewall",
+ "severity": "高",
+ "text": "將 Azure 防火牆與 Azure Monitor 集成,並啟用診斷日誌記錄以存儲和分析防火牆日誌。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
- "service": "Bot service",
- "severity": "中等",
- "text": "遵循 Azure 機器人服務中的可靠性支持建議",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
+ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
+ "service": "Firewall",
+ "severity": "低",
+ "text": "實施防火牆規則的備份",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
- "service": "Bot service",
- "severity": "中等",
- "text": "部署具有本地數據駐留和區域合規性的機器人",
- "waf": "可靠性"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "App Gateway",
+ "severity": "高",
+ "text": "不要中斷注入虛擬網路的 Azure PaaS 服務的控制平面通信,例如使用 0.0.0.0/0 路由或阻止控制平面流量的 NSG 規則。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.BotService/botServices",
- "checklist": "Azure Bot Service",
- "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
- "service": "Bot service",
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
+ "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
+ "service": "ExpressRoute",
"severity": "中等",
- "text": "Azure 機器人服務在全域和區域服務的主動-主動模式下運行。發生中斷時,無需檢測錯誤或管理服務。Azure 機器人服務在多區域地理體系結構中自動執行自動故障轉移和自動恢復。對於歐盟機器人區域服務,Azure 機器人服務在歐洲境內提供兩個完整區域,並提供主動/主動複製,以確保冗餘。對於全球機器人服務,所有可用的區域/地理位置都可以作為全球足跡。",
- "waf": "可靠性"
+ "text": "通過專用終結點和 ExpressRoute 專用對等互連從本地訪問 Azure PaaS 服務。此方法可避免在公共 Internet 上傳輸。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
- "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
- "service": "Spring Apps",
- "severity": "中等",
- "text": "Azure Spring Apps 允許對每個應用進行兩次部署,其中只有一個部署接收生產流量。您可以使用藍綠部署策略實現零停機時間。藍綠部署僅在標準層和企業層中可用。可以使用 CI/CD 和 ADO/GitHub 操作自動執行部署",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Network/virtualNetworks",
+ "checklist": "Azure Landing Zone Review",
+ "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/virtual-network/virtual-network-service-endpoints-overview",
+ "service": "VNet",
+ "severity": "高",
+ "text": "默認情況下,不要在所有子網上啟用虛擬網路服務終結點。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
- "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.Network/azureFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
+ "link": "azure/private-link/inspect-traffic-with-azure-firewall",
+ "service": "Firewall",
"severity": "中等",
- "text": "可以在多個區域中為應用程式創建 Azure Spring Apps 實例,並且流量管理器/Front Door 可以路由流量。",
- "waf": "可靠性"
+ "text": "使用 FQDN 而不是 Azure 防火牆或 NVA 中的 IP 位址篩選流向 Azure PaaS 服務的出口流量,以防止數據外洩。如果使用專用連結,則可以阻止所有 FQDN,否則僅允許所需的 PaaS 服務。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
- "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
- "service": "Spring Apps",
- "severity": "中等",
- "text": "在支持的區域中,Azure Spring Apps 可以部署為區域冗餘,這意味著實例會自動分佈在可用性區域之間。此功能僅在標準層和企業層中可用。",
- "waf": "可靠性"
+ "arm-service": "microsoft.network/expressRouteCircuits",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
+ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
+ "service": "ExpressRoute",
+ "severity": "高",
+ "text": "至少對閘道子網使用 /27 前置綴。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
- "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
- "service": "Spring Apps",
- "severity": "中等",
- "text": "對應用使用1個以上的應用實例",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "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)",
+ "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
+ "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
+ "service": "NSG",
+ "severity": "高",
+ "text": "不要依賴使用 VirtualNetwork 服務標記的 NSG 入站預設規則來限制連接。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "7504c230-6035-4183-95a5-85762acc6075",
- "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
+ "service": "NSG",
"severity": "中等",
- "text": "使用日誌、指標和跟蹤監視 Azure Spring Apps。將 ASA 與應用程式見解集成,並跟蹤故障並創建工作簿。",
- "waf": "可靠性"
+ "text": "使用 NSG 説明保護子網之間的流量,以及平台中的東西向流量(登陸區域之間的流量)。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
- "service": "Spring Apps",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "NSG",
"severity": "中等",
- "text": "在 Spring Cloud Gateway 中設置自動縮放",
- "waf": "可靠性"
+ "text": "使用 NSG 和應用程式安全組對登陸區域內的流量進行微分段,並避免使用中心 NVA 篩選流量流。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
- "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
- "service": "Spring Apps",
- "severity": "低",
- "text": "為具有標準使用量和專用計劃的應用啟用自動縮放。",
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
+ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
+ "service": "NSG",
+ "severity": "中等",
+ "text": "啟用 VNet 流日誌並將其饋送到流量分析中,以深入了解內部和外部流量流。",
+ "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Network/networkSecurityGroups",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
+ "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "service": "NSG",
+ "severity": "中等",
+ "text": "由於規則限制為 1000 條,因此每個 NSG 實施的 NSG 規則不要超過 900 個。",
+ "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.AppPlatform/Spring",
- "checklist": "Azure Spring Apps Review",
- "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
- "link": "https://learn.microsoft.com/azure/spring-apps/overview",
- "service": "Spring Apps",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
+ "service": "VWAN",
"severity": "中等",
- "text": "使用企業計劃為關鍵任務應用提供 Spring Boot 的商業支援。使用其他層,您可以獲得 OSS 支援。",
+ "text": "如果在虛擬 WAN 路由設計清單中明確描述了你的方案,請使用虛擬 WAN。",
+ "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "使用每個 Azure 區域的虛擬 WAN 中心,透過通用的全球 Azure 虛擬 WAN 跨 Azure 區域將多個登陸區域連接在一起。",
+ "waf": "性能"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "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/howto-firewall",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "對於出站 Internet 流量保護和篩選,請在安全中心部署 Azure 防火牆。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "確保虛擬 WAN 網路體系結構與已確定的體系結構方案保持一致。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
- "service": "IoT",
- "severity": "高",
- "text": "利用可用區(如果區域適用)(這是自動啟用的)",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "使用適用於虛擬 WAN 的 Azure Monitor 見解來監視虛擬 WAN 的端到端拓撲、狀態和關鍵指標。",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "不要在虛擬 WAN 中禁用分支到分支流量,除非應明確阻止這些流。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
+ "service": "VWAN",
"severity": "中等",
- "text": "請注意 Microsoft 發起的故障轉移。Microsoft 在極少數情況下會執行這些操作,以將所有IoT中心從受影響的區域故障轉移到相應的異地配對區域。",
+ "text": "使用 AS-Path 作為中心路由首選項,因為它比 ExpressRoute 或 VPN 更靈活。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
- "service": "IoT",
- "severity": "高",
- "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
+ "service": "VWAN",
+ "severity": "中等",
+ "text": "在虛擬 WAN 中配置基於標籤的傳播,否則虛擬中心之間的連接將受到損害。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
- "service": "IoT",
+ "arm-service": "microsoft.network/virtualWans",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9c75dfef-573c-461c-a698-68598595581a",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
+ "service": "VWAN",
"severity": "高",
- "text": "瞭解如何觸發手動故障轉移。",
+ "text": "至少為虛擬中心分配一個 /23 前置綴,以確保有足夠的IP空間可用。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/IotHubs",
- "checklist": "IoT Hub Review",
- "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
- "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
- "service": "IoT",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "高",
- "text": "瞭解如何在故障轉移後進行故障回復。",
- "waf": "可靠性"
+ "text": "戰略性地利用 Azure Policy,為環境定義控制,使用策略計劃對相關策略進行分組。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Front Door",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "中等",
- "text": "如果將客戶管理的 TLS 證書用於 Azure Front Door,請使用“最新”證書版本。降低手動續訂證書導致的中斷風險",
- "waf": "操作"
+ "text": "將法規和合規性要求映射到 Azure Policy 定義和 Azure 角色分配。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
- "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "中等",
- "text": "確保使用應用程式閘道 v2 SKU",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "在中間根管理組建立 Azure Policy 定義,以便可以在繼承的範圍內分配它們。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
- "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Load Balancer",
- "severity": "中等",
- "text": "確保將標準 SKU 用於 Azure 負載均衡器",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "高",
+ "text": "如果需要,在最高適當級別管理策略分配,並在底層管理排除項。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
- "service": "Load Balancer",
- "severity": "中等",
- "text": "確保負載均衡器前端IP位址是區域冗餘的(除非需要區域性前端)。",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "43334f24-9116-4341-a2ba-527526944008",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
+ "service": "Policy",
+ "severity": "低",
+ "text": "使用 Azure Policy 控制使用者可以在訂閱/管理組級別預配哪些服務。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "App Gateway",
- "severity": "中等",
- "text": "應用程式閘道 v2 應部署在IP前綴等於或大於 /24 的子網中",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
+ "severity": "高",
+ "text": "盡可能使用內置策略,以最大程度地減少運營開銷。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "description": "一般而言,反向代理的管理,特別是 WAF 的管理更接近應用程式而不是網路,因此它們與應用程式屬於同一訂閱。如果應用程式閘道和 WAF 由單個團隊管理,則在連接訂閱中集中應用程式閘道和 WAF 可能是可以的。",
- "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "description": "通過將「資源策略參與者」角色分配給特定範圍,可以將策略管理委派給相關團隊。例如,中心 IT 團隊可以監督管理組級別的策略,而應用程式團隊則處理其訂閱的策略,從而在遵守組織標準的情況下實現分散式治理。",
+ "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
+ "service": "Policy",
"severity": "中等",
- "text": "部署 Azure 應用程式閘道 v2 或合作夥伴 NVA,用於在登陸區域虛擬網路中代理入站 HTTP(S) 連接,並使用它們所保護的應用。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "text": "在特定範圍內分配內置的「資源策略參與者」角色,以啟用應用程式級治理。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "19048384-5c98-46cb-8913-156a12476e49",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Policy",
"severity": "中等",
- "text": "對應用程式登陸區域中的所有公共IP位址使用 DDoS 網路或IP保護計畫。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "限制在根管理組範圍內執行的 Azure Policy 分配數,以避免在繼承的範圍內通過排除項進行管理。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
- "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
+ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
+ "service": "Policy",
"severity": "中等",
- "text": "使用至少兩個實例數配置自動縮放。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "可靠性"
+ "text": "如果存在任何數據主權要求,則應部署 Azure 策略來強制實施這些要求。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
- "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
- "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
- "service": "App Gateway",
- "severity": "中等",
- "text": "跨可用性區域部署應用程式閘道",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "可靠性"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Front Door",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
+ "service": "Policy",
"severity": "中等",
- "text": "將 Azure Front Door 與 WAF 策略配合使用,以交付和幫助保護跨多個 Azure 區域的全域 HTTP/S 應用。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "對於主權登陸區域,部署主權策略基線,並在正確的管理組級別進行分配。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "Front Door",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
+ "service": "Policy",
"severity": "中等",
- "text": "使用 Front Door 和應用程式閘道幫助保護 HTTP/S 應用時,請在 Front Door 中使用 WAF 策略。鎖定應用程式閘道以僅接收來自 Front Door 的流量。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
- },
- {
- "ammp": true,
- "arm-service": "microsoft.network/trafficManagerProfiles",
- "checklist": "Azure Application Delivery Networking",
- "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "Traffic Manager",
- "severity": "高",
- "text": "使用流量管理器提供跨 HTTP/S 以外的協定的全域應用。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "可靠性"
- },
- {
- "checklist": "Azure Application Delivery Networking",
- "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
- "severity": "低",
- "text": "如果使用者只需要訪問內部應用程式,是否考慮將 Microsoft Entra ID 應用程式代理作為 Azure 虛擬桌面 (AVD) 的替代方法?",
- "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "text": "對於主權登陸區域,將主權控制目標記錄到策略映射。",
"waf": "安全"
},
{
- "checklist": "Azure Application Delivery Networking",
- "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
- "service": "Entra",
+ "arm-service": "Microsoft.Authorization/policyDefinitions",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
+ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
+ "service": "Policy",
"severity": "中等",
- "text": "若要減少為網路中的傳入連接打開的防火牆埠數,請考慮使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對內部應用程式的安全且經過身份驗證的訪問。",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "text": "對於主權登陸區,請確保已制定“主權控制目標到策略映射”的管理流程。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "Front Door",
- "severity": "高",
- "text": "在「預防」模式下部署 Front Door 的 WAF 策略。",
- "waf": "安全"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
+ "severity": "中等",
+ "text": "使用單個監視器日誌工作區集中管理平臺,但 Azure 基於角色的訪問控制 (Azure RBAC)、數據主權要求或數據保留策略要求使用單獨工作區的情況除外。",
+ "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
- "service": "Front Door",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Monitor",
"severity": "高",
- "text": "避免將 Azure 流量管理器和 Azure Front Door 結合使用。",
- "waf": "安全"
+ "text": "如果日誌保留要求超過 12 年,請將日誌匯出到 Azure 存儲。使用具有一次寫入、多次讀取策略的不可變存儲,使數據在使用者指定的時間間隔內不可擦除且不可修改。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
- "service": "Front Door",
- "severity": "高",
- "text": "在 Azure Front Door 和源上使用相同的功能變數名稱。主機名不匹配可能會導致細微的錯誤。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
+ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
+ "service": "VM",
+ "severity": "中等",
+ "text": "使用 Azure Policy 監視 OS 等級虛擬機 (VM) 配置偏移。通過策略啟用 Azure Automanage 計算機配置審核功能可説明應用程式團隊工作負載立即使用功能,而無需付出任何努力。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
- "service": "Front Door",
- "severity": "低",
- "text": "當 Azure Front Door 源組中只有一個源時,禁用運行狀況探測。",
- "waf": "性能"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "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",
+ "service": "VM",
+ "severity": "中等",
+ "text": "使用 Azure Update Manager 作為 Azure 中 Windows 和 Linux VM 的修補機制。",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
- "service": "Front Door",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
+ "service": "VM",
"severity": "中等",
- "text": "為 Azure Front Door 選擇良好的運行狀況探測終結點。請考慮構建運行狀況終結點,以檢查應用程式的所有依賴項。",
- "waf": "可靠性"
+ "text": "使用 Azure Arc 將 Azure Update Manager 用作 Azure 外部的 Windows 和 Linux VM 的修補機制。",
+ "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
- "service": "Front Door",
- "severity": "低",
- "text": "將 HEAD 運行狀況探測與 Azure Front Door 配合使用,以減少 Front Door 發送到應用程式的流量。",
- "waf": "性能"
+ "arm-service": "microsoft.network/networkWatchers",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "90483845-c986-4cb2-a131-56a12476e49f",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Network Watcher",
+ "severity": "中等",
+ "text": "使用網路觀察程序主動監視流量流。",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "Microsoft.Network/loadBalancers",
- "checklist": "Azure Application Delivery Networking",
- "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
- "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
- "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
- "service": "Load Balancer",
- "severity": "高",
- "text": "使用 Azure NAT 閘道而不是負載均衡器出站規則,以獲得更好的 SNAT 可伸縮性",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Monitor",
+ "severity": "中等",
+ "text": "使用 Azure Monitor 紀錄獲取見解和報告。",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
- "service": "Front Door",
- "severity": "高",
- "text": "將託管 TLS 證書與 Azure Front Door 配合使用。降低運營成本和因證書續訂而導致的中斷風險。",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
+ "service": "Monitor",
+ "severity": "中等",
+ "text": "使用 Azure Monitor 警報生成操作警報。",
"waf": "操作"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
- "service": "Front Door",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "Monitor",
"severity": "中等",
- "text": "將 Azure Front Door WAF 配置定義為代碼。通過使用代碼,您可以更輕鬆地採用新的規則集版本並獲得額外的保護。",
+ "text": "通過 Azure 自動化帳戶使用更改和清單跟蹤時,請確保已選擇受支持的區域,以便將 Log Analytics 工作區和自動化帳戶連結在一起。",
"waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
- "service": "Front Door",
- "severity": "高",
- "text": "將端到端 TLS 與 Azure Front Door 配合使用。使用 TLS 進行從用戶端到 Front Door 的連接,以及從 Front Door 到源的連接。",
- "waf": "安全"
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
+ "service": "Backup",
+ "severity": "低",
+ "text": "使用 Azure 備份時,請使用正確的備份類型(GRS、ZRS 和 LRS)進行備份,因為預設設置為 GRS。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
- "service": "Front Door",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "VM",
"severity": "中等",
- "text": "將 HTTP 到 HTTPS 重定向與 Azure Front Door 配合使用。通過自動將較舊的用戶端重定向到 HTTPS 請求來支援它們。",
+ "text": "使用 Azure 來賓策略通過 VM 擴展自動部署軟體配置,並強制實施合規的基線 VM 配置。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
- "service": "Front Door",
- "severity": "高",
- "text": "啟用 Azure Front Door WAF。保護您的應用程式免受一系列攻擊。",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "description": "使用 Azure Policy 的來賓配置功能來審核和修正電腦設置(例如 OS、應用程式、環境),以確保資源與預期配置保持一致,並且更新管理可以強制實施 VM 的修補程式管理。",
+ "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",
+ "severity": "中等",
+ "text": "通過 Azure Policy 監視 VM 安全配置偏移。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
- "service": "Front Door",
- "severity": "高",
- "text": "針對工作負載優化 Azure Front Door WAF。減少誤報檢測。",
- "waf": "安全"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "VM",
+ "severity": "中等",
+ "text": "使用 Azure Site Recovery 實現 Azure 到 Azure 虛擬機的災難恢復方案。這使您能夠跨區域複製工作負載。",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "Front Door",
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "Backup",
+ "severity": "中等",
+ "text": "使用 Azure 本機備份功能或與 Azure 相容的第三方備份解決方案。",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "高",
- "text": "啟用在 Azure Front Door WAF 策略中啟用的請求正文檢查功能。",
- "waf": "安全"
+ "text": "添加診斷設置以保存來自應用程式交付服務(如 Azure Front Door 和 Azure 應用程式閘道)的 WAF 日誌。定期查看日誌,以檢查攻擊和誤報檢測。",
+ "waf": "操作"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
- "service": "Front Door",
+ "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "WAF",
+ "severity": "中等",
+ "text": "將 WAF 日誌從應用程式交付服務(如 Azure Front Door 和 Azure 應用程式閘道)發送到 Microsoft Sentinel。檢測攻擊並將 WAF 遙測集成到整個 Azure 環境中。",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "5017f154-e3ab-4369-9829-e7e316183687",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "Key Vault",
"severity": "高",
- "text": "啟用 Azure Front Door WAF 預設規則集。默認規則集檢測並阻止常見攻擊。",
+ "text": "使用 Azure Key Vault 儲存機密和憑據。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
- "service": "Front Door",
- "severity": "高",
- "text": "啟用 Azure Front Door WAF 機器人保護規則集。機器人規則檢測好的和壞的機器人。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
+ "guid": "a0477a20-9945-4bda-9333-4f2491163418",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "對不同的應用程式和區域使用不同的 Azure Key Vault,以避免事務規模限制並限制對機密的訪問。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
- "service": "Front Door",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中等",
- "text": "使用最新的 Azure Front Door WAF 規則集版本。規則集更新會定期更新,以考慮當前的威脅形勢。",
+ "text": "在啟用軟刪除和清除策略的情況下預配 Azure Key Vault,以允許對已刪除物件進行保留保護。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
- "service": "Front Door",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中等",
- "text": "向 Azure Front Door WAF 添加速率限制。速率限制會阻止客戶端在短時間內意外或有意發送大量流量。",
+ "text": "遵循最低特權模型,將永久刪除密鑰、機密和證書的授權限制為專用的自定義 Microsoft Entra ID 角色。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
- "service": "Front Door",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中等",
- "text": "對 Azure Front Door WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可針對可能使基礎結構不堪重負的大量請求提供保護。",
+ "text": "使用公共證書頒發機構自動執行證書管理和續訂過程,以簡化管理。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
- "service": "Front Door",
- "severity": "低",
- "text": "如果您不希望收到來自所有地理區域的流量,請使用地理篩選器來阻止來自非預期國家/地區的流量。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "913156a1-2476-4e49-b541-acdce979377b",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "建立金鑰和證書輪換的自動化流程。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
- "service": "Front Door",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
"severity": "中等",
- "text": "使用 Azure Front Door WAF 對流量進行地理篩選時,請指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
+ "text": "在保管庫上啟用防火牆和虛擬網路服務終結點或專用終結點,以控制對密鑰保管庫的訪問。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
- "service": "App Gateway",
- "severity": "高",
- "text": "啟用 Azure 應用程式閘道 WAF 機器人保護規則集 機器人規則可檢測好機器人和壞機器人。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "使用以平臺為中心的 Azure Monitor Log Analytics 工作區來審核 Key Vault 的每個實例中的密鑰、證書和機密使用方式。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
- "service": "App Gateway",
- "severity": "高",
- "text": "啟用 Azure 應用程式閘道 WAF 策略中啟用的請求正文檢查功能。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "委託 Key Vault 實例化和特權訪問,並使用 Azure Policy 強制實施一致的合規配置。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
- "service": "App Gateway",
- "severity": "高",
- "text": "針對工作負載優化 Azure 應用程式閘道 WAF。減少誤報檢測。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "每個應用程式、每個環境、每個區域使用 Azure Key Vault。",
"waf": "安全"
},
{
- "ammp": true,
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "graph": "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",
- "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
- "service": "App Gateway",
- "severity": "高",
- "text": "在「防護」模式下部署應用程式閘道的 WAF 策略。",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
+ "service": "Key Vault",
+ "severity": "中等",
+ "text": "如果要自帶密鑰,則並非所有考慮的服務都支援此功能。實施相關的緩解措施,使不一致之處不會妨礙預期的結果。選擇適當的區域對和災難恢復區域,以最大程度地減少延遲。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
+ "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
+ "service": "Key Vault",
"severity": "中等",
- "text": "向 Azure 應用程式閘道 WAF 添加速率限制。速率限制會阻止客戶端在短時間內意外或有意發送大量流量。",
+ "text": "對於 Sovereign Landing Zone,請使用 Azure Key Vault 託管 HSM 來儲存機密和憑據。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
- "service": "App Gateway",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
+ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
+ "service": "Entra",
"severity": "中等",
- "text": "對 Azure 應用程式閘道 WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可針對可能使基礎結構不堪重負的大量請求提供保護。",
+ "text": "使用 Microsoft Entra ID 報告功能生成訪問控制審核報告。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
- "service": "App Gateway",
- "severity": "低",
- "text": "如果您不希望收到來自所有地理區域的流量,請使用地理篩選器來阻止來自非預期國家/地區的流量。",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "09945bda-4333-44f2-9911-634182ba5275",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
+ "service": "Defender",
+ "severity": "高",
+ "text": "為所有訂閱啟用Defender雲安全態勢管理。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
- "service": "App Gateway",
- "severity": "中等",
- "text": "使用 Azure 應用程式閘道 WAF 對流量進行地理篩選時,請指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
+ "service": "Defender",
+ "severity": "高",
+ "text": "在所有訂閱上為伺服器啟用Defender雲工作負載保護計劃。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
- "service": "App Gateway",
- "severity": "中等",
- "text": "使用最新的 Azure 應用程式閘道 WAF 規則集版本。規則集更新會定期更新,以考慮當前的威脅形勢。",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
+ "service": "Defender",
+ "severity": "高",
+ "text": "在所有訂閱上為 Azure 資源啟用 Defender 雲工作負載保護計劃。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "App Gateway",
- "severity": "中等",
- "text": "添加診斷設置以保存 Azure 應用程式閘道 WAF 紀錄。",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
- "service": "Front Door",
- "severity": "中等",
- "text": "添加診斷設置以保存 Azure Front Door WAF 紀錄。",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
- "service": "App Gateway",
- "severity": "中等",
- "text": "將 Azure 應用程式閘道 WAF 紀錄發送到 Microsoft Sentinel。",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "Front Door",
- "severity": "中等",
- "text": "將 Azure Front Door WAF 日誌發送到 Microsoft Sentinel。",
- "waf": "操作"
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
+ "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
+ "service": "VM",
+ "severity": "高",
+ "text": "在 IaaS 伺服器上啟用端點保護。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
+ "link": "https://learn.microsoft.com/azure/security-center/",
+ "service": "VM",
"severity": "中等",
- "text": "將 Azure 應用程式閘道 WAF 設定定義為代碼。通過使用代碼,您可以更輕鬆地採用新的規則集版本並獲得額外的保護。",
- "waf": "操作"
+ "text": "通過 Azure Monitor 紀錄和 Defender for Cloud 監視基本作業系統修補偏移。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Insights/components",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Monitor",
"severity": "中等",
- "text": "使用 WAF 策略而不是舊版 WAF 配置。",
- "waf": "操作"
+ "text": "將預設資源配置連接到集中式 Azure Monitor Log Analytics 工作區。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
- "service": "App Gateway",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
+ "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
+ "service": "Entra",
"severity": "中等",
- "text": "篩選後端中的入站流量,以便它們僅接受來自應用程式閘道子網的連接,例如使用NSG。",
+ "text": "對於 Sovereign Landing Zone,請在 Entra ID 租戶上啟用透明度日誌。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Azure Application Delivery Networking",
- "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
- "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
- "service": "Front Door",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
+ "service": "Entra",
"severity": "中等",
- "text": "確保源僅從 Azure Front Door 實例獲取流量。",
+ "text": "對於 Sovereign Landing Zone,請在 Entra ID 租戶上啟用客戶密碼箱。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
- "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Storage",
"severity": "高",
- "text": "您應該對發往後端伺服器的流量進行加密。",
+ "text": "啟用到存儲帳戶的安全傳輸。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
- "service": "App Gateway",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Landing Zone Review",
+ "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
+ "service": "Storage",
"severity": "高",
- "text": "您應該使用 Web 應用程式防火牆。",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
- "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
- "service": "App Gateway",
- "severity": "中等",
- "text": "將 HTTP 重定向到 HTTPS",
+ "text": "為存儲帳戶啟用容器軟刪除,以恢復已刪除的容器及其內容。",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
- "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
- "service": "App Gateway",
- "severity": "中等",
- "text": "使用閘道管理的 Cookie 將流量從使用者工作階段定向到同一伺服器進行處理",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
- "service": "App Gateway",
+ "arm-service": "Microsoft.KeyVault/vaults",
+ "checklist": "Azure Landing Zone Review",
+ "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",
"severity": "高",
- "text": "在計劃的服務更新期間啟用連接耗盡,以防止與後端池的現有 membr 的連接丟失",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
- "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
- "service": "App Gateway",
- "severity": "低",
- "text": "創建自訂錯誤頁面以顯示個人化的用戶體驗",
+ "text": "使用 Key Vault 機密可避免對敏感資訊(如憑據、虛擬機、用戶密碼)、證書或密鑰進行硬編碼。",
"waf": "操作"
},
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
- "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
- "service": "App Gateway",
- "severity": "中等",
- "text": "編輯 HTTP 請求和回應標頭,以便更輕鬆地在用戶端和伺服器之間進行路由和資訊交換",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
- "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
- "service": "App Gateway",
- "severity": "中等",
- "text": "配置 Front Door,通過快速全域故障轉移優化全球 Web 流量路由和頂級最終使用者性能和可靠性",
- "waf": "性能"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "App Gateway",
- "severity": "中等",
- "text": "使用傳輸層負載平衡",
- "waf": "性能"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
- "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
- "service": "App Gateway",
- "severity": "中等",
- "text": "根據主機名或域名為單個閘道上的多個 Web 應用程式配置路由",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
- "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
- "service": "App Gateway",
- "severity": "中等",
- "text": "集中管理 SSL 證書,以減少後端伺服器場的加密和解密開銷",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/applicationGateways",
- "checklist": "Azure Application Delivery Networking",
- "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
- "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
- "service": "App Gateway",
- "severity": "低",
- "text": "使用應用程式閘道對 WebSocket 和 HTTP/2 協定提供本機支援",
- "waf": "安全"
- },
{
"arm-service": "Microsoft.Search/searchServices",
"checklist": "Cognitive Search Review Checklist",
@@ -4434,4563 +4233,4764 @@
"waf": "可靠性"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "70c15989-c726-42c7-b0d3-24b7375b9201",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/considerations-recommendations",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "應用與存儲相關的 Microsoft 雲安全基準中的指導",
+ "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
+ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "使用一個 Entra 租戶來管理 Azure 資源,除非你對多租戶有明確的法規或業務要求。",
- "waf": "操作"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "6309957b-821a-43d1-b9d9-7fcf1802b747",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Entra",
- "severity": "低",
- "text": "使用多租戶自動化方法管理 Microsoft Entra ID 租戶。",
- "waf": "操作"
+ "text": "請考慮「存儲的 Azure 安全基線”",
+ "waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "78e11934-499a-45ed-8ef7-aae5578f0ecf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "默認情況下,Azure 儲存具有公共IP位址,並且可通過Internet訪問。專用終結點允許僅向需要訪問的 Azure 計算資源安全地公開 Azure 存儲,從而消除對公共 Internet 的暴露",
+ "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
+ "service": "Azure Storage",
"severity": "高",
- "text": "使用具有相同 ID 的 Azure Lighthouse 進行多租戶管理。",
- "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience",
- "waf": "操作"
+ "text": "考慮將專用終結點用於 Azure 存儲",
+ "waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "5d82e6df-6f61-42f2-82e2-3132d293be3d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Entra",
- "severity": "高",
- "text": "如果向合作夥伴授予管理租戶的訪問許可權,請使用 Azure Lighthouse。",
- "waf": "成本"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "新創建的存儲帳戶是使用ARM部署模型創建的,因此 RBAC、審核等都已啟用。確保訂閱中沒有具有經典部署模型的舊存儲帳戶",
+ "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
+ "service": "Azure Storage",
+ "severity": "中等",
+ "text": "確保較舊的存儲帳戶未使用“經典部署模型”",
+ "waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "348ef254-c27d-442e-abba-c7571559ab91",
- "link": "https://learn.microsoft.com/azure/role-based-access-control/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "利用 Microsoft Defender 瞭解可疑活動和錯誤配置。",
+ "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
+ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
+ "service": "Azure Storage",
"severity": "高",
- "text": "強制實施與雲操作模型相符的 RBAC 模型。跨管理組和訂閱確定範圍和分配。",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "text": "為所有存儲帳戶啟用 Microsoft DefenderEnable Defender for all of your storage accounts",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "Entra",
- "severity": "高",
- "text": "僅對所有帳戶類型使用身份驗證類型「工作或學校帳戶」。避免使用 Microsoft 帳戶",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "軟刪除機制允許恢復意外刪除的 Blob。",
+ "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
+ "service": "Azure Storage",
+ "severity": "中等",
+ "text": "為 blob 啟用“軟刪除”",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4b69bad3-3aad-45e8-a68e-1d76667313b4",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "請考慮有選擇地禁用某些 blob 容器的「軟刪除」 例如,如果應用程式必須確保立即刪除已刪除的資訊,例如出於機密性、隱私或合規性原因。",
+ "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "僅使用組來分配許可權。如果已建立組管理系統,則將本地組添加到僅 Entra ID 組。",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "text": "禁用 blob 的“軟刪除”",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "53e8908a-e28c-484c-93b6-b7808b9fe5c4",
- "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "容器的軟刪除使你能夠在刪除容器后恢復容器,例如從意外刪除操作中恢復。",
+ "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
+ "service": "Azure Storage",
"severity": "高",
- "text": "對有權訪問 Azure 環境的任何用戶強制實施 Microsoft Entra ID 條件訪問策略。",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "text": "為容器啟用“軟刪除”",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01",
- "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks",
- "service": "Entra",
- "severity": "高",
- "text": "對有權訪問 Azure 環境的任何使用者強制實施多重身份驗證。",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "請考慮有選擇地禁用某些 blob 容器的「軟刪除」 例如,如果應用程式必須確保立即刪除已刪除的資訊,例如出於機密性、隱私或合規性原因。",
+ "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
+ "service": "Azure Storage",
+ "severity": "中等",
+ "text": "禁用容器的“軟刪除”",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "14658d35-58fd-4772-99b8-21112df27ee4",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "Entra",
- "severity": "中等",
- "text": "強制實施 Microsoft Entra ID 特權標識管理 (PIM) 以建立零長期訪問許可權和最低特權。",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "通過強制使用者在刪除之前先刪除刪除鎖,防止意外刪除存儲帳戶",
+ "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
+ "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "在存儲帳戶上啟用資源鎖",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018",
- "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview",
- "service": "Entra",
- "severity": "中等",
- "text": "如果計劃從 Active Directory 域服務切換到 Entra 域服務,請評估所有工作負載的相容性。",
- "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "請考慮對 blob 使用“合法保留”或“基于時間的保留”策略,這樣就無法刪除 blob、容器或存儲帳戶。請注意,「不可能」實際上意味著「不可能」;存儲帳戶包含不可變 blob 後,「擺脫」該存儲帳戶的唯一方法是取消 Azure 訂閱。",
+ "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "考慮不可變的 blob",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1cf0b8da-70bd-44d0-94af-8d99cfc89ae1",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor",
- "service": "Entra",
- "severity": "中等",
- "text": "將 Microsoft Entra ID 日誌與平臺為中心的 Azure Monitor 集成。Azure Monitor 允許圍繞 Azure 中的日誌和監視數據提供單一事實來源,為組織提供雲原生選項,以滿足日誌收集和保留方面的要求。",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "請考慮禁用對存儲帳戶的未受保護的 HTTP/80 訪問,以便對所有數據傳輸進行加密、完整性保護,並對伺服器進行身份驗證。",
+ "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "需要 HTTPS,即在儲存帳戶上禁用埠 80",
"waf": "安全"
},
{
- "ammp": true,
- "checklist": "Azure Landing Zone Review",
- "guid": "984a859c-773e-47d2-9162-3a765a917e1f",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/security-emergency-access",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "在儲存帳戶上配置自定義域(主機名)時,請檢查是否需要 TLS/HTTPS;如果是這樣,可能需要將 Azure CDN 放在存儲帳戶的前面。",
+ "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
+ "service": "Azure Storage",
"severity": "高",
- "text": "實施緊急訪問或打破玻璃帳戶,以防止租戶範圍的帳戶鎖定。",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "強制實施 HTTPS(禁用 HTTP)時,請檢查是否未對儲存帳戶使用自定義域 (CNAME)。",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "35037e68-9349-4c15-b371-228514f4cdff",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "Entra",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "當用戶端使用SAS令牌訪問 blob 資料時,要求使用 HTTPS 有助於將憑據丟失的風險降至最低。",
+ "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "請勿使用本地同步帳戶進行 Microsoft Entra ID 角色分配,除非你有特別需要它的方案。",
- "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/",
+ "text": "將共享訪問簽名 (SAS) 令牌限製為僅 HTTPS 連接",
"waf": "安全"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d5d1e4e6-1465-48d3-958f-d77249b82111",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Entra",
- "severity": "中等",
- "text": "使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對應用程式的訪問許可權時,請將其作為平臺資源進行管理,因為每個租戶只能有一個實例。",
- "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "在可能的情況下,AAD 令牌應優先於共用訪問簽名",
+ "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
+ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "使用 Azure Active Directory (Azure AD) 令牌進行 blob 訪問",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "e8bbac75-7155-49ab-a153-e8908ae28c84",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/network-topology-and-connectivity",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "將角色分配給使用者、組或應用程式時,請僅向該安全主體授予他們執行任務所需的許可權。限制對資源的訪問有助於防止無意和惡意濫用數據。",
+ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "對於需要最大靈活性的網路方案,請使用中心輻射型網路拓撲。",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "IaM 許可權中的最低特權",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "使用者委派 SAS 使用 Azure Active Directory (Azure AD) 憑據以及為 SAS 指定的許可權進行保護。使用者委派 SAS 在範圍和功能方面類似於服務 SAS,但比服務 SAS 具有安全優勢。",
+ "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
+ "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",
"severity": "高",
- "text": "在中心虛擬網路中部署共用網路服務,包括 ExpressRoute 閘道、VPN 閘道和 Azure 防火牆或合作夥伴 NVA。如有必要,還可以部署 DNS 服務。",
- "waf": "成本"
+ "text": "使用 SAS 時,首選「使用者委派 SAS」,而不是基於存儲帳戶密鑰的 SAS。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "143b16c3-1d7a-4a9b-9470-4489a8042d88",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "存儲帳戶金鑰(“共用金鑰”)幾乎沒有審核功能。雖然可以監控誰/何時獲取密鑰副本,但一旦密鑰掌握在多個人手中,就不可能將使用方式歸因於特定使用者。僅依靠 AAD 身份驗證可以更輕鬆地將存儲存取許可權綁定到使用者。",
+ "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
+ "service": "Azure Storage",
"severity": "高",
- "text": "對應用程式登陸區域中的所有公共IP位址使用 DDoS 網路或IP保護計畫。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "請考慮禁用存儲帳戶密鑰,以便僅支援 AAD 訪問(和使用者委派 SAS)。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e2e8abac-3571-4559-ab91-53e89f89dc7b",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha",
- "service": "NVA",
- "severity": "中等",
- "text": "部署合作夥伴網路技術或 NVA 時,請遵循合作夥伴供應商的指導。",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "使用活動日誌數據來標識查看或更改存儲帳戶安全性的“時間”、“人員”、“內容”和“方式”(即存儲帳戶密鑰、訪問策略等)。",
+ "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "請考慮使用 Azure Monitor 審核存儲帳戶上的控制平面操作",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ce463dbb-bc8a-4c2a-aebc-92a43da1dae2",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn",
- "service": "ExpressRoute",
- "severity": "低",
- "text": "如果需要在中心輻射型方案中在 ExpressRoute 和 VPN 閘道之間傳輸,請使用 Azure 路由伺服器。",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "通過金鑰過期策略,您可以設置帳戶訪問金鑰輪換的提醒。如果指定的時間間隔已過且鍵尚未旋轉,則會顯示提醒。",
+ "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
+ "service": "Azure Storage",
+ "severity": "中等",
+ "text": "使用存儲帳戶密鑰時,請考慮啟用“金鑰過期策略”",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualHubs",
- "checklist": "Azure Landing Zone Review",
- "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 == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant",
- "guid": "91b9d7d5-91e1-4dcb-8f1f-fa7e465646cc",
- "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1",
- "service": "ARS",
- "severity": "低",
- "text": "如果使用路由伺服器,請對路由伺服器子網使用 /27 前置綴。",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS 過期策略指定 SAS 有效的建議時間間隔。SAS 過期策略適用於服務 SAS 或帳戶 SAS。當使用者生成的服務 SAS 或帳戶 SAS 的有效期間隔大於建議的時間間隔時,他們會看到警告。",
+ "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
+ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
+ "service": "Azure Storage",
+ "severity": "中等",
+ "text": "考慮配置 SAS 過期策略",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "cc881471-607c-41cc-a0e6-14658dd558f9",
- "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",
- "severity": "中等",
- "text": "對於跨 Azure 區域具有多個中心輻射型拓撲的網路體系結構,請在中心 VNet 之間使用全域虛擬網路對等互連將區域相互連接。",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-virtual-networks/",
- "waf": "性能"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "4722d929-c1b1-4cd6-81f5-4b29bade39ad",
- "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "存儲存取策略提供了撤銷服務 SAS 許可權的選項,而無需重新生成儲存帳戶密鑰。",
+ "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "使用用於網路的 Azure Monitor 監視 Azure 上網路的端到端狀態。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "waf": "操作"
+ "text": "考慮將 SAS 連結到儲存存取策略",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant",
- "guid": "0e7c28ec-9366-4572-83b0-f4664b1d944a",
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
+ "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "如果一個區域中有超過 400 個分支網路,請部署一個額外的中心,以繞過 VNet 對等互連限制 (500) 和可通過 ExpressRoute 播發的最大前綴數 (1000)。",
- "waf": "可靠性"
+ "text": "請考慮配置應用程式的原始程式碼儲存庫,以檢測簽入的連接字串和存儲帳戶密鑰。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant",
- "guid": "3d457936-e9b7-41eb-bdff-314b26450b12",
- "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",
- "severity": "中等",
- "text": "將每個路由表的路由數限制為 400 個。",
- "waf": "可靠性"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "理想情況下,應用程式應使用託管標識向 Azure 儲存進行身份驗證。如果無法做到這一點,請考慮在 Azure KeyVault 或等效服務中使用存儲憑據(連接字串、存儲帳戶密鑰、SAS、服務主體憑據)。",
+ "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
+ "service": "Azure Storage",
+ "severity": "高",
+ "text": "請考慮將連接字串儲存在 Azure KeyVault 中(在無法實現託管標識的情況下)",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)",
- "guid": "c76cb5a2-abe2-11ed-afa1-0242ac120002",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "在臨時 SAS 服務 SAS 或帳戶 SAS 上使用近期過期時間。這樣,即使 SAS 遭到入侵,它也只能在很短的時間內有效。如果無法引用存儲訪問策略,則此做法尤為重要。近期過期時間還通過限制可上傳到 blob 的時間來限制可寫入 blob 的數據量。",
+ "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "高",
- "text": "配置 VNet 對等互連時,請使用「允許流量流向遠端虛擬網路」設置。",
- "waf": "可靠性"
+ "text": "爭取縮短臨時 SAS 的有效期",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "de0d5973-cd4c-4d21-a088-137f5e6c4cfd",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "創建 SAS 時,請盡可能具體和嚴格。首選單個資源和操作的 SAS,而不是提供更廣泛訪問許可權的 SAS。",
+ "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "使用 ExpressRoute Direct 時,請配置 MACsec,以便加密組織路由器和 MSEE 之間的第二層級別的流量。該圖顯示了流中的此加密。",
+ "text": "將窄範圍應用於SAS",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering",
- "service": "ExpressRoute",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS 可以包含用戶端 IP 位址或位址範圍有權使用 SAS 請求資源的參數。",
+ "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "對於無法使用MACsec的情況(例如,不使用ExpressRoute Direct),請使用 VPN 閘道通過 ExpressRoute 專用對等互連建立 IPsec 隧道。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
+ "text": "盡可能考慮將SAS的範圍限定為特定的用戶端IP位址",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "SAS 無法限制用戶端上傳的數據量;考慮到存儲量隨時間變化的定價模型,驗證用戶端是否惡意上傳了大量內容可能是有意義的。",
+ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
+ "service": "Azure Storage",
+ "severity": "低",
+ "text": "請考慮在用戶端使用SAS上傳檔后檢查上傳的數據。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "使用「本地使用者帳戶」通過 SFTP 訪問 Blob 儲存時,“通常”RBAC 控制不適用。通過 NFS 或 REST 進行的 Blob 訪問可能比 SFTP 訪問更嚴格。遺憾的是,截至 2023 年初,本地使用者是 SFTP 端點當前支援的唯一身份管理形式",
+ "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
+ "service": "Azure Storage",
"severity": "高",
- "text": "確保在 Azure 區域和本地位置之間不使用重疊的 IP 位址空間。",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "SFTP:限制 SFTP 訪問的「本地使用者」數量,並審核一段時間內是否需要訪問。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "graph": "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",
- "guid": "3f630472-2dd6-49c5-a5c2-622f54b69bad",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "使用專用 Internet 的位址分配範圍中的 IP 位址 (RFC 1918)。",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "text": "SFTP:SFTP 端點不支持類似 POSIX 的 ACL。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "33aad5e8-c68e-41d7-9667-313b4f5664b5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
- "service": "VNet",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "存儲支援 CORS(跨域資源分享),即一種 HTTP 功能,使來自不同域的 Web 應用程式能夠放寬同源策略。啟用 CORS 時,請將 CorsRules 保留為最低許可權。",
+ "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
+ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
+ "service": "Azure Storage",
"severity": "高",
- "text": "確保不會浪費IP位址空間,不要創建不必要的大型虛擬網路(例如/16)。",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "性能"
+ "text": "避免過於寬泛的 CORS 策略",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "靜態數據始終在伺服器端加密,此外也可能在用戶端加密。伺服器端加密可能使用平臺管理的金鑰(預設)或客戶管理的金鑰進行。用戶端加密可以通過讓用戶端按 blob 向 Azure 儲存提供加密/解密金鑰,或者完全在用戶端處理加密來實現。因此,完全不依賴 Azure 存儲來保證機密性。",
+ "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "Azure Storage",
"severity": "高",
- "text": "請勿對生產網站和災難恢復網站使用重疊的IP位址範圍。",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "可靠性"
+ "text": "確定應如何加密靜態數據。了解數據的線程模型。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal",
- "service": "DNS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
+ "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "對於只需要在 Azure 中進行名稱解析的環境,請使用 Azure 專用 DNS 進行解析,並使用委託區域進行名稱解析(例如“azure.contoso.com”)。",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "操作"
+ "text": "確定應使用哪種/是否應使用平臺加密。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "41049d40-3a92-43c3-974d-00018ac6a9e0",
- "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview",
- "service": "DNS",
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
+ "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
+ "service": "Azure Storage",
"severity": "中等",
- "text": "對於需要跨 Azure 和本地進行名稱解析且沒有現有企業 DNS 服務(如 Active Directory)的環境,請使用 Azure DNS 專用解析程式將 DNS 請求路由到 Azure 或本地 DNS 伺服器。",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/",
+ "text": "確定應使用哪種/是否應使用用戶端加密。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "1e6a83de-5de3-42c1-a924-81607d5d1e4e",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances",
- "service": "DNS",
- "severity": "低",
- "text": "需要並部署自己的 DNS(例如 Red Hat OpenShift)的特殊工作負載應使用其首選的 DNS 解決方案。",
- "waf": "操作"
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Azure Blob Storage Review",
+ "description": "利用 Resource Graph 資源管理器(資源 | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true)查找允許匿名 blob 訪問的存儲帳戶。",
+ "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
+ "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",
+ "severity": "高",
+ "text": "考慮是否需要公共 blob 訪問,或者是否可以對某些存儲帳戶禁用公共 blob 訪問。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/dnsZones",
- "checklist": "Azure Landing Zone Review",
- "guid": "614658d3-558f-4d77-849b-821112df27ee",
- "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration",
- "service": "DNS",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
+ "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
+ "service": "Logic Apps",
"severity": "高",
- "text": "啟用 Azure DNS 的自動註冊,以自動管理虛擬網路中部署的虛擬機的 DNS 記錄的生命週期。",
- "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/",
- "waf": "操作"
+ "text": "根據業務和 SLO 要求選擇正確的邏輯應用託管計劃",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "guid": "ee1ac551-c4d5-46cf-b035-d0a3c50d87ad",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-overview",
- "service": "Bastion",
- "severity": "中等",
- "text": "使用 Azure Bastion 安全地連接到網路。",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
+ "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "Logic Apps",
+ "severity": "高",
+ "text": "使用區域冗餘和可用性區域保護邏輯應用免受區域故障的影響",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/bastionHosts",
- "checklist": "Azure Landing Zone Review",
- "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 == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant",
- "guid": "6eab9eb6-762b-485e-8ea8-15aa5dba0bd0",
- "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet",
- "service": "Bastion",
- "severity": "中等",
- "text": "在子網 /26 或更大的情況下使用 Azure Bastion。",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1d7aa9b6-4704-4489-a804-2d88e79d17b7",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
- "service": "WAF",
- "severity": "中等",
- "text": "使用 Azure Front Door 和 WAF 策略跨 Azure 區域為登陸區域的入站 HTTP/S 連接提供全域保護。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "3b22a5a6-7e7a-48ed-9b30-e38c3f29812b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "severity": "低",
- "text": "使用 Azure Front Door 和 Azure 應用程式閘道幫助保護 HTTP/S 應用時,請在 Azure Front Door 中使用 WAF 策略。鎖定 Azure 應用程式閘道,以便僅接收來自 Azure Front Door 的流量。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "安全"
- },
- {
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "WAF",
- "severity": "高",
- "text": "當入站 HTTP/S 連接需要 WAF 和其他反向代理時,請將它們部署在登陸區域虛擬網路中,並將它們與它們要保護和向 Internet 公開的應用一起部署。",
- "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
+ "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "Logic Apps",
"severity": "高",
- "text": "使用 Azure DDoS 網路或 IP 保護計劃來幫助保護虛擬網路中的公共 IP 位址終結點。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b034c01e-110b-463a-b36e-e3346e57f225",
- "link": "https://learn.microsoft.com/azure/virtual-network/ip-services/default-outbound-access",
- "service": "VNet",
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
+ "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
+ "service": "Logic Apps",
"severity": "高",
- "text": "在即將到來的重大更改之前,規劃如何管理網路出站流量配置和策略。2025 年 9 月 30 日,新部署的預設出站訪問將停用,僅允許顯式訪問配置。",
+ "text": "如果部署到獨立環境,請使用或遷移到應用服務環境 (ASE) v3",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures",
- "service": "VNet",
- "severity": "高",
- "text": "添加診斷設置以保存所有受保護的公共IP位址(DDoS IP或網路保護)的 DDoS 相關日誌。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Logic Apps checklist",
+ "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
+ "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
+ "service": "Logic Apps",
+ "severity": "中等",
+ "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護邏輯應用代碼",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41",
- "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp",
- "service": "Policy",
- "severity": "高",
- "text": "確保存在策略分配,以拒絕直接綁定到虛擬機的公共IP位址。 如果特定 VM 上需要公共 IP,請使用排除項。",
- "waf": "安全"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
+ "service": "App Services",
+ "severity": "低",
+ "text": "有關最佳實踐,請參閱基線高可用性區域冗餘 Web 應用程式體系結構",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "中等",
- "text": "使用 ExpressRoute 作為到 Azure 的主要連接。 使用 VPN 作為備用連接源。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "性能"
+ "text": "使用高級層和標準層。這些層支援暫存槽和自動備份。",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "description": "可以使用 AS 路徑預置和連接權重來影響從 Azure 到本地的流量,並使用自己的路由器中的所有 BGP 屬性來影響從本地到 Azure 的流量。",
- "guid": "f29812b2-363c-4efe-879b-599de0d5973c",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "使用多個 ExpressRoute 線路或多個本地位置時,請使用 BGP 屬性來優化路由。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
+ "service": "App Services",
+ "severity": "高",
+ "text": "利用區域適用的可用性區域(需要高級 v2 或 v3 層)",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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-about-virtual-network-gateways?source=recommendations#gwsku",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "中等",
- "text": "根據頻寬和性能要求為 ExpressRoute/VPN 閘道選擇正確的 SKU。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "性能"
+ "text": "實施健康檢查",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant",
- "guid": "7025b442-f6e9-4af6-b11f-c9574916016f",
- "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
+ "service": "App Services",
"severity": "高",
- "text": "確保僅在達到與其成本相符的頻寬時才使用無限數據的 ExpressRoute 線路。",
- "waf": "成本"
+ "text": "請參閱 Azure 應用服務的備份和還原最佳做法",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f4e7926a-ec35-476e-a412-5dd17136bd62",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
+ "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
+ "service": "App Services",
"severity": "高",
- "text": "如果線路對等互連位置支援本地 SKU 的 Azure 區域,則利用 ExpressRoute 的本地 SKU 來降低線路成本。",
- "waf": "成本"
+ "text": "實現 Azure 應用服務可靠性最佳做法",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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 contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant",
- "guid": "2447ec66-138a-4720-8f1c-e16ed301d6e8",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "在受支援的 Azure 區域中部署區域冗餘 ExpressRoute 閘道。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
+ "service": "App Services",
+ "severity": "低",
+ "text": "熟悉如何在災難期間將應用服務應用移動到另一個區域",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "72e52e36-11cc-458b-9a4b-1511e43a58a9",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "對於需要頻寬高於 10 Gbps 或專用 10/100 Gbps 埠的方案,請使用 ExpressRoute Direct。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "性能"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
+ "service": "App Services",
+ "severity": "高",
+ "text": "熟悉 Azure 應用服務中的可靠性支援",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "c2299c4d-7b57-4d0c-9555-62f2b3e4563a",
- "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "App Services",
"severity": "中等",
- "text": "如果需要低延遲,或者從本地到 Azure 的輸送量必須大於 10 Gbps,請啟用 FastPath 以從數據路徑繞過 ExpressRoute 閘道。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "性能"
+ "text": "確保為在應用服務計劃上運行的函數應用啟用“Always On”",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant",
- "guid": "4d873974-8b66-42d6-b15f-512a65498f6d",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway",
- "service": "VPN",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
+ "service": "App Services",
"severity": "中等",
- "text": "使用區域冗餘 VPN 閘道將分支或遠端位置連接到 Azure(如果可用)。",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "使用運行狀況檢查監視應用服務實例",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/virtualNetworkGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "45866df8-cf85-4ca9-bbe2-65ec1478919e",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable",
- "service": "VPN",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
+ "service": "App Services",
"severity": "中等",
- "text": "在本地使用冗餘 VPN 設備(主動/主動或主動/被動)。",
- "training": "https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/",
+ "text": "使用 Application Insights 可用性測試監視 Web 應用或網站的可用性和回應能力",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "718cb437-b060-2589-8856-2e93a5c6633b",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about",
- "service": "ExpressRoute",
- "severity": "高",
- "text": "如果使用 ExpressRoute Direct,請考慮使用到本地 Azure 區域的 ExpressRoute 本地線路來節省成本。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "成本"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
+ "service": "App Services",
+ "severity": "低",
+ "text": "使用 Application Insights 標準測試監視 Web 應用或網站的可用性和回應能力",
+ "waf": "可靠性"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "8042d88e-79d1-47b7-9b22-a5a67e7a8ed4",
- "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "當需要流量隔離或專用頻寬時,例如用於分離生產環境和非生產環境,請使用不同的 ExpressRoute 線路。它將幫助您確保隔離的路由域並減輕嘈雜的鄰居風險。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用 Azure Key Vault 儲存應用程式所需的任何機密。 Key Vault 為儲存機密提供安全且經過審核的環境,並通過 Key Vault SDK 或應用服務 Key Vault 引用與應用服務很好地集成。",
+ "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "高",
+ "text": "使用 Key Vault 儲存機密",
"waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b30e38c3-f298-412b-8363-cefe179b599d",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "使用內置的 Express Route Insights 監視 ExpressRoute 的可用性和利用率。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "操作"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用託管標識通過 Key Vault SDK 或透過應用服務 Key Vault 引用連接到 Key Vault。",
+ "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
+ "service": "App Services",
+ "severity": "高",
+ "text": "使用託管標識連接到 Key VaultUse Managed Identity to connect to Key Vault",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5bf68dc9-325e-4873-bf88-f8214ef2e5d2",
- "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "使用連接監視器監視整個網路的連接監視,尤其是本地和 Azure 之間的連接監視。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "操作"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "將應用服務 TLS 證書存儲在 Key Vault 中。",
+ "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
+ "service": "App Services",
+ "severity": "高",
+ "text": "使用 Key Vault 儲存 TLS 證書。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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#need-for-redundant-connectivity-solution",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "處理敏感信息的系統應隔離。 為此,請使用單獨的應用服務計劃或應用服務環境,並考慮使用不同的訂閱或管理組。",
+ "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
+ "service": "App Services",
"severity": "中等",
- "text": "使用來自不同對等互連位置的 ExpressRoute 線路實現冗餘。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "可靠性"
+ "text": "隔離處理敏感信息的系統",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "cf3fe65c-fec0-495a-8edc-9675200f2add",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "應用服務上的本地磁碟未加密,敏感數據不應存儲在這些磁碟上。 (例如:D:\\\\Local 和 %TMP%)。",
+ "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
+ "service": "App Services",
"severity": "中等",
- "text": "如果僅使用單個 ExpressRoute 線路,則使用網站到網站 VPN 作為 ExpressRoute 的故障轉移。",
- "waf": "可靠性"
+ "text": "不要將敏感數據存儲在本地磁碟上",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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))",
- "guid": "72105cc8-aaea-4ee1-8c7a-ad25977afcaf",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub",
- "service": "ExpressRoute",
- "severity": "高",
- "text": "如果在 GatewaySubnet 中使用路由表,請確保傳播閘道路由。",
- "waf": "可靠性"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "對於經過身份驗證的 Web 應用程式,請使用成熟的標識提供者,例如 Azure AD 或 Azure AD B2C。 利用所選的應用程式框架與此提供程式整合,或使用應用服務身份驗證/授權功能。",
+ "guid": "919ca0b2-c121-459e-814b-933df574eccc",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
+ "service": "App Services",
+ "severity": "中等",
+ "text": "使用已建立的身份提供程式進行身份驗證",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "d581a947-69a2-4783-942e-9df3664324c8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "將代碼從受控且受信任的環境(例如管理良好且安全的 DevOps 部署管道)部署到應用服務。這樣可以避免未經版本控制和驗證從惡意主機部署的代碼。",
+ "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
+ "service": "App Services",
"severity": "高",
- "text": "如果使用 ExpressRoute,則本地路由應是動態的:如果連接失敗,它應收斂到線路的其餘連接。負載應在兩個連接之間共用,理想情況下為主動/主動,儘管也支持主動/被動。",
- "waf": "可靠性"
+ "text": "從受信任的環境部署",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b258f058-b9f6-46cd-b28d-990106f0c3f8",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "確保 ExpressRoute 線路的兩個物理鏈路連接到網路中的兩個不同的邊緣設備。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "可靠性"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "禁用 FTP/FTPS 和 WebDeploy/SCM 的基本身份驗證。 這將禁止訪問這些服務,並強制使用 Azure AD 安全終結點進行部署。 請注意,還可以使用 Azure AD 憑據打開 SCM 網站。",
+ "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
+ "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
+ "service": "App Services",
+ "severity": "高",
+ "text": "禁用基本身份驗證",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "fe2a1b53-6fbd-4c67-b58a-85d7c7a0afcb",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-bfd",
- "service": "ExpressRoute",
- "severity": "中等",
- "text": "確保在客戶或供應商邊緣路由設備上啟用並配置雙向轉發檢測 (BFD)。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "可靠性"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "如果可能,請使用託管標識連接到 Azure AD 受保護的資源。 如果無法做到這一點,請將機密存儲在 Key Vault 中,並改用託管標識連接到 Key Vault。",
+ "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
+ "service": "App Services",
+ "severity": "高",
+ "text": "使用託管標識連接到資源",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "669b215a-ce43-4371-8f6f-11047f6490f1",
- "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "如果使用 Azure 容器註冊表中儲存的映像,請使用託管標識拉取這些映像。",
+ "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
+ "service": "App Services",
"severity": "高",
- "text": "將 ExpressRoute 閘道連接到來自不同對等互連位置的兩條或多條線路,以實現更高的復原能力。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "可靠性"
+ "text": "使用託管標識拉取容器",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "3f79ed00-203b-4c95-9efd-691505f5a1f9",
- "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "通過配置應用服務的診斷設置,可以將所有遙測數據發送到Log Analytics,作為日誌記錄和監視的中心目標。這允許你監視應用服務的運行時活動,例如 HTTP 日誌、應用程式日誌、平臺日誌等。",
+ "guid": "47768314-c115-4775-a2ea-55b46ad48408",
+ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
+ "service": "App Services",
"severity": "中等",
- "text": "配置 ExpressRoute 虛擬網路閘道的診斷日誌和警報。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "操作"
+ "text": "將應用服務運行時日誌發送到Log Analytics",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "5234c93f-b651-41dd-80c1-234177b91ced",
- "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance",
- "service": "ExpressRoute",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "設置診斷設置,將活動日誌發送到Log Analytics,作為日誌記錄和監視的中心目標。這樣,你就可以監視應用服務資源本身上的控制平面活動。",
+ "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
+ "service": "App Services",
"severity": "中等",
- "text": "請勿使用 ExpressRoute 線路進行 VNet 到 VNet 通信。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "性能"
- },
- {
- "checklist": "Azure Landing Zone Review",
- "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
- "service": "N/A",
- "severity": "低",
- "text": "請勿將 Azure 流量發送到混合位置進行檢查。 相反,請遵循“Azure 中的流量保留在 Azure 中”的原則,以便 Azure 中的資源之間的通信通過 Microsoft 主幹網络進行。",
- "waf": "性能"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720",
- "link": "https://learn.microsoft.com/azure/firewall/overview",
- "service": "Firewall",
- "severity": "高",
- "text": "使用 Azure 防火牆來管理到 Internet 的 Azure 出站流量、非 HTTP/S 入站連接和東西流量篩選(如果組織需要)。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "將應用服務活動日誌發送到Log Analytics",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c",
- "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用區域 VNet 集成、網路安全組和 UDR 的組合來控制出站網路訪問。 流量應路由到 NVA,例如 Azure 防火牆。 確保監控防火牆的日誌。",
+ "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
+ "service": "App Services",
"severity": "中等",
- "text": "創建全域 Azure 防火牆策略以管理全球網路環境中的安全狀況,並將其分配給所有 Azure 防火牆實例。通過 Azure 基於角色的訪問控制將增量防火牆策略委派給本地安全團隊,從而允許使用精細策略來滿足特定區域的要求。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "應控制出站網路訪問",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "655562f2-b3e4-4563-a4d8-739748b662d6",
- "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "可以使用 VNet 集成並使用 VNet NAT 閘道或 NVA(如 Azure 防火牆)來提供穩定的出站 IP。 這允許接收方根據需要根據IP列出允許清單。 請注意,對於與 Azure 服務的通信,通常不需要依賴於 IP 位址,應改用服務終結點等機制。 (此外,在接收端使用專用終結點可避免發生 SNAT,並提供穩定的出站 IP 範圍。",
+ "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
+ "service": "App Services",
"severity": "低",
- "text": "如果組織想要使用此類解決方案來幫助保護出站連接,請在 Firewall Manager 中配置受支援的合作夥伴 SaaS 安全提供者。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "text": "確保與互聯網位址的出站通信具有穩定的IP",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant",
- "guid": "14d99880-2f88-47e8-a134-62a7d85c94af",
- "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用應用服務訪問限制、服務終結點或專用終結點的組合來控制入站網路訪問。對於 Web 應用本身和 SCM 網站,可能需要和配置不同的訪問限制。",
+ "guid": "0725769e-e669-41a4-a34a-c932223ece80",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"severity": "高",
- "text": "使用應用程式規則篩選目標主機名上的出站流量,以查找受支持的協定。 使用基於 FQDN 的網路規則和具有 DNS 代理的 Azure 防火牆來篩選通過其他協定流向 Internet 的傳出流量。",
+ "text": "應控制入站網路訪問",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant",
- "guid": "c10d51ef-f999-455d-bba0-5c90ece07447",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用 Web 應用程式防火牆(如應用程式閘道或 Azure Front Door)防範惡意入站流量。 請務必監控 WAF 的日誌。",
+ "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
+ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
+ "service": "App Services",
"severity": "高",
- "text": "使用 Azure 防火牆高級版啟用其他安全功能。",
+ "text": "在應用服務前面使用 WAF",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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#idps-signature-rules",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "確保僅鎖定對 WAF 的訪問,從而無法繞過 WAF。 結合使用訪問限制、服務終結點和專用終結點。",
+ "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
+ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
+ "service": "App Services",
"severity": "高",
- "text": "將 Azure 防火牆威脅情報模式配置為「警報」和「拒絕」以獲得額外保護。",
+ "text": "避免繞過 WAF",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant",
- "guid": "b9d0dff5-bdd4-4cd8-88ed-5811610b2b2c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps",
- "service": "Firewall",
- "severity": "高",
- "text": "將 Azure 防火牆 IDPS 模式配置為「拒絕」以獲得額外保護。",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "在應用服務配置中將最低 TLS 策略設置為 1.2。",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
+ "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
+ "service": "App Services",
+ "severity": "中等",
+ "text": "將最低 TLS 策略設置為 1.2",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "a3784907-9836-4271-aafc-93535f8ec08b",
- "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "將應用服務配置為僅使用 HTTPS。 這會導致應用服務從 HTTP 重定向到 HTTPS。 強烈建議在代碼或 WAF 中使用 HTTP 嚴格傳輸安全性 (HSTS),這會通知瀏覽器只能使用 HTTPS 訪問網站。",
+ "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
+ "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
+ "service": "App Services",
"severity": "高",
- "text": "對於未連接到虛擬 WAN 的 VNet 中的子網,請附加路由表,以便將 Internet 流量重定向到 Azure 防火牆或網路虛擬設備。",
+ "text": "僅使用 HTTPS",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "715d833d-4708-4527-90ac-1b142c7045ba",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs",
- "service": "Firewall",
- "severity": "中等",
- "text": "添加診斷設置,使用「特定於資源」的目標表保存所有 Azure 防火牆部署的日誌。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "操作"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "不要在 CORS 配置中使用通配符,因為這允許所有源訪問服務(從而破壞 CORS 的目的)。具體而言,僅允許您希望能夠訪問服務的源。",
+ "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
+ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
+ "service": "App Services",
+ "severity": "高",
+ "text": "不得將通配符用於 CORS",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa",
- "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy",
- "service": "Firewall",
- "severity": "重要",
- "text": "從 Azure 防火牆經典規則(如果存在)遷移到防火牆策略。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "操作"
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "不得在生產環境中啟用遠端調試,因為這會在服務上打開其他埠,從而增加攻擊面。請注意,該服務會在 48 小時後自動轉為遠端調試。",
+ "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
+ "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
+ "service": "App Services",
+ "severity": "高",
+ "text": "關閉遠端調試",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "22d6419e-b627-4d95-9e7d-019fa759387f",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size",
- "service": "Firewall",
- "severity": "高",
- "text": "對 Azure 防火牆子網使用 /26 前置綴。",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "啟用 Defender for App Service。 這(除其他威脅外)檢測與已知惡意IP位址的通信。 在操作過程中查看 Defender for App Service 中的建議。",
+ "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
+ "service": "App Services",
+ "severity": "中等",
+ "text": "啟用 Defender for Cloud - Defender for App Service",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "828cec2e-af6c-40c2-8fa2-1b681ee63eb7",
- "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "Azure 在其網路上提供 DDoS 基本保護,可以通過智慧 DDoS 標準功能進行改進,該功能可以瞭解正常的流量模式並檢測異常行為。DDoS 標準適用於虛擬網路,因此必須為應用前面的網路資源(例如應用程式閘道或 NVA)配置它。",
+ "guid": "223ece80-b123-4071-a541-6415833ea3ad",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "App Services",
"severity": "中等",
- "text": "根據防火牆策略中的規則的使用頻率,將規則排列到規則集合組和規則集合中。",
- "waf": "性能"
+ "text": "在 WAF VNet 上啟用 DDOS 保護標準",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "0da83bb1-2f39-49af-b5c9-835fc455e3d1",
- "link": "https://learn.microsoft.com/azure/firewall/ip-groups",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "如果使用 Azure 容器註冊表中儲存的映像,請使用其專用終結點和應用設置“WEBSITE_PULL_IMAGE_OVER_VNET”通過虛擬網络從 Azure 容器註冊表拉取這些映射。",
+ "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
+ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
+ "service": "App Services",
"severity": "中等",
- "text": "使用IP組或IP前置綴來減少IP表規則的數量。",
- "waf": "性能"
+ "text": "通過虛擬網路拉取容器",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "c44c6f0e-1642-4a61-a17b-0922f835c93a",
- "link": "https://learn.microsoft.com/azure/firewall/tutorial-firewall-dnat",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "按照參與的滲透測試規則對 Web 應用程式進行滲透測試。",
+ "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
+ "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
+ "service": "App Services",
"severity": "中等",
- "text": "不要使用通配符作為DNAT的源IP,例如 *或 any,您應該為傳入的DNAT指定源IP。",
- "waf": "性能"
+ "text": "進行滲透測試",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7371dc21-251a-47a3-af14-6e01b9da4757",
- "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "部署根據 DevSecOps 實踐驗證和掃描漏洞的受信任代碼。",
+ "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
+ "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
+ "service": "App Services",
"severity": "中等",
- "text": "通過監控 SNAT 埠使用方式、評估 NAT 閘道設置並確保無縫故障轉移,防止 SNAT 埠耗盡。如果埠計數接近限制,則表明 SNAT 耗盡可能迫在眉睫。",
- "waf": "性能"
+ "text": "部署經過驗證的代碼",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "346840b8-1064-496e-8396-4b1340172d52",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection",
- "service": "Firewall",
+ "arm-service": "microsoft.web/sites",
+ "checklist": "Azure App Service Review",
+ "description": "使用最新版本的受支援平臺、程式設計語言、協定和框架。",
+ "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
+ "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
+ "service": "App Services",
"severity": "高",
- "text": "如果使用的是 Azure 防火牆高級版,請啟用 TLS 檢查。",
- "waf": "性能"
+ "text": "使用最新的平臺、語言、協定和框架",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "39990a13-915c-45f9-a2d3-562d7d6c4b7c",
- "link": "https://learn.microsoft.com/azure/firewall/premium-features#web-categories",
- "service": "Firewall",
- "severity": "低",
- "text": "使用 Web 類別允許或拒絕對特定主題的出站訪問。",
- "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.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "6eff7e6c-6c4a-43d7-be3f-6641c2cb3d4a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/gateway/application-gateway-before-azure-firewall",
- "service": "Firewall",
- "severity": "中等",
- "text": "作為 TLS 檢查的一部分,請計劃從 Azure 應用閘道接收流量以進行檢查。",
- "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.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "94f3eede-9aa3-4088-92a3-bb9a56509fad",
- "link": "https://learn.microsoft.com/azure/firewall/dns-details",
- "service": "Firewall",
- "severity": "中等",
- "text": "啟用 Azure 防火牆 DNS 代理配置。",
- "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.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "1dc04554-dece-4ffb-a49e-5c683e09f8da",
- "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics",
- "service": "Firewall",
- "severity": "高",
- "text": "將 Azure 防火牆與 Azure Monitor 集成,並啟用診斷日誌記錄以存儲和分析防火牆日誌。",
- "waf": "操作"
- },
- {
- "arm-service": "Microsoft.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "64e7000e-3c06-485e-b455-ced7f454cba3",
- "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall",
- "service": "Firewall",
- "severity": "低",
- "text": "實施防火牆規則的備份",
- "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.network/applicationGateways",
- "checklist": "Azure Landing Zone Review",
- "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511",
- "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
- "service": "App Gateway",
+ "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": "不要中斷注入虛擬網路的 Azure PaaS 服務的控制平面通信,例如使用 0.0.0.0/0 路由或阻止控制平面流量的 NSG 規則。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "waf": "安全"
+ "text": "監控令牌使用方式,防止由於容量導致服務中斷",
+ "waf": "卓越運營"
},
{
- "arm-service": "microsoft.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a",
- "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview",
- "service": "ExpressRoute",
+ "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": "通過專用終結點和 ExpressRoute 專用對等互連從本地訪問 Azure PaaS 服務。此方法可避免在公共 Internet 上傳輸。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/",
- "waf": "安全"
+ "text": "觀察已處理的推理令牌、生成的完成令牌等指標,監視速率限制",
+ "waf": "卓越運營"
},
{
- "arm-service": "Microsoft.Network/virtualNetworks",
- "checklist": "Azure Landing Zone Review",
- "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/virtual-network/virtual-network-service-endpoints-overview",
- "service": "VNet",
- "severity": "高",
- "text": "默認情況下,不要在所有子網上啟用虛擬網路服務終結點。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "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.Network/azureFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe",
- "link": "azure/private-link/inspect-traffic-with-azure-firewall",
- "service": "Firewall",
- "severity": "中等",
- "text": "使用 FQDN 而不是 Azure 防火牆或 NVA 中的 IP 位址篩選流向 Azure PaaS 服務的出口流量,以防止數據外洩。如果使用專用連結,則可以阻止所有 FQDN,否則僅允許所需的 PaaS 服務。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn",
- "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.network/expressRouteCircuits",
- "checklist": "Azure Landing Zone Review",
- "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",
- "guid": "f2aad7e3-bb03-4adc-8606-4123d342a917",
- "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway",
- "service": "ExpressRoute",
+ "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": "至少對閘道子網使用 /27 前置綴。",
+ "text": "將 Microsoft Entra 身份驗證與託管標識(而不是 API 金鑰)配合使用",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "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)",
- "guid": "11deb39d-8299-4e47-bbe0-0fb5a36318a8",
- "link": "https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags",
- "service": "NSG",
+ "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": "不要依賴使用 VirtualNetwork 服務標記的 NSG 入站預設規則來限制連接。",
- "waf": "安全"
+ "text": "使用已知的黃金數據集評估系統的性能/準確性,該數據集具有輸入和正確答案。利用 PromptFlow 中的功能進行評估。",
+ "waf": "卓越運營"
},
{
- "arm-service": "Microsoft.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "872e52e3-611c-4c58-a5a4-b1511e43a58a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation",
- "service": "NSG",
- "severity": "中等",
- "text": "使用 NSG 説明保護子網之間的流量,以及平台中的東西向流量(登陸區域之間的流量)。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "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.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "a4d87397-48b6-462d-9d15-f512a65498f6",
- "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "service": "NSG",
- "severity": "中等",
- "text": "使用 NSG 和應用程式安全組對登陸區域內的流量進行微分段,並避免使用中心 NVA 篩選流量流。",
- "training": "https://learn.microsoft.com/learn/paths/implement-network-security/",
- "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.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "guid": "dfe237de-143b-416c-91d7-aa9b64704489",
- "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview",
- "service": "NSG",
- "severity": "中等",
- "text": "啟用 VNet 流日誌並將其饋送到流量分析中,以深入了解內部和外部流量流。",
- "training": "https://learn.microsoft.com/learn/modules/design-implement-network-monitoring/",
- "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.Network/networkSecurityGroups",
- "checklist": "Azure Landing Zone Review",
- "graph": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)",
- "guid": "0390417d-53dc-44d9-b3f4-c8832f359b41",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
- "service": "NSG",
+ "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": "由於規則限制為 1000 條,因此每個 NSG 實施的 NSG 規則不要超過 900 個。",
- "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
- "waf": "可靠性"
+ "text": "通過限制令牌大小、流式處理選項來改善系統的延遲",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "412e7f98-3f63-4047-82dd-69c5b5c2622f",
- "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any",
- "service": "VWAN",
+ "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": "如果在虛擬 WAN 路由設計清單中明確描述了你的方案,請使用虛擬 WAN。",
- "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/",
- "waf": "操作"
+ "text": "估計彈性需求,以根據優先順序確定同步和批量請求分離。對於高優先順序,使用同步方法,對於低優先順序,首選使用佇列的異步批處理",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst",
- "service": "VWAN",
- "severity": "中等",
- "text": "使用每個 Azure 區域的虛擬 WAN 中心,透過通用的全球 Azure 虛擬 WAN 跨 Azure 區域將多個登陸區域連接在一起。",
+ "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.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "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/howto-firewall",
- "service": "VWAN",
+ "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": "對於出站 Internet 流量保護和篩選,請在安全中心部署 Azure 防火牆。",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "安全"
+ "text": "如果您使用的是預設輸送量單位 (PTU),請考慮為溢出請求部署每分鐘令牌 (TPM) 部署。當達到 PTU 限制時,使用閘道將請求路由到 TPM 部署。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "6667313b-4f56-464b-9e98-4a859c773e7d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology",
- "service": "VWAN",
- "severity": "中等",
- "text": "確保虛擬 WAN 網路體系結構與已確定的體系結構方案保持一致。",
- "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.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "261623a7-65a9-417e-8f34-8ef254c27d42",
- "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights",
- "service": "VWAN",
+ "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": "使用適用於虛擬 WAN 的 Azure Monitor 見解來監視虛擬 WAN 的端到端拓撲、狀態和關鍵指標。",
- "waf": "操作"
+ "text": "有一個性能基線,而不進行微調,以瞭解微調是否提高了模型性能",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "727c77e1-b9aa-4a37-a024-129d042422c1",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan",
- "service": "VWAN",
+ "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": "不要在虛擬 WAN 中禁用分支到分支流量,除非應明確阻止這些流。",
+ "text": "確保為工作負載提供足夠的 TPM 和 RPM 配額",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "d49ac006-6670-4bc9-9948-d3e0a3a94f4d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference",
- "service": "VWAN",
+ "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": "使用 AS-Path 作為中心路由首選項,因為它比 ExpressRoute 或 VPN 更靈活。",
+ "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.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "2586b854-237e-47f1-84a1-d45d4cd2310d",
- "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels",
- "service": "VWAN",
+ "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": "在虛擬 WAN 中配置基於標籤的傳播,否則虛擬中心之間的連接將受到損害。",
+ "text": "定期備份和複製關鍵數據,以確保數據丟失或系統故障時的數據可用性和可恢復性。利用 Azure 的備份和災難恢復服務來保護數據。",
"waf": "可靠性"
},
{
- "arm-service": "microsoft.network/virtualWans",
- "checklist": "Azure Landing Zone Review",
- "guid": "9c75dfef-573c-461c-a698-68598595581a",
- "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#what-is-the-recommended-hub-address-space-during-hub-creation",
- "service": "VWAN",
+ "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": "至少為虛擬中心分配一個 /23 前置綴,以確保有足夠的IP空間可用。",
+ "text": "應選擇 Azure AI 搜索服務層級以具有 SLA",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5c986cb2-9131-456a-8247-6e49f541acdc",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "高",
- "text": "戰略性地利用 Azure Policy,為環境定義控制,使用策略計劃對相關策略進行分組。",
+ "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "d8a2adb1-17d6-4326-af62-5ca44e5695f2",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "中等",
- "text": "將法規和合規性要求映射到 Azure Policy 定義和 Azure 角色分配。",
+ "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "223ace8c-b123-408c-a501-7f154e3ab369",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "中等",
- "text": "在中間根管理組建立 Azure Policy 定義,以便可以在繼承的範圍內分配它們。",
+ "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "3829e7e3-1618-4368-9a04-77a209945bda",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "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": "如果需要,在最高適當級別管理策略分配,並在底層管理排除項。",
+ "text": "使用 RBAC 管理對 Azure OpenAI 服務的訪問。為使用者分配適當的許可權,並根據其角色和職責限制訪問許可權",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "43334f24-9116-4341-a2ba-527526944008",
- "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services",
- "service": "Policy",
- "severity": "低",
- "text": "使用 Azure Policy 控制使用者可以在訂閱/管理組級別預配哪些服務。",
+ "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "be7d7e48-4327-46d8-adc0-55bcf619e8a1",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
+ "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": "盡可能使用內置策略,以最大程度地減少運營開銷。",
+ "text": "利用 Azure Defender 來檢測和回應安全威脅,並設置監視和警報機制來識別可疑活動或違規行為。利用 Azure Sentinel 進行高級威脅檢測和回應",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "description": "通過將「資源策略參與者」角色分配給特定範圍,可以將策略管理委派給相關團隊。例如,中心 IT 團隊可以監督管理組級別的策略,而應用程式團隊則處理其訂閱的策略,從而在遵守組織標準的情況下實現分散式治理。",
- "guid": "3f988795-25d6-4268-a6d7-0ba6c97be995",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy",
- "service": "Policy",
+ "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": "在特定範圍內分配內置的「資源策略參與者」角色,以啟用應用程式級治理。",
+ "text": "制定數據保留和處置策略,以遵守合規性法規。對不再需要的數據實施安全刪除方法,並維護數據保留和處置活動的審計跟蹤",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "19048384-5c98-46cb-8913-156a12476e49",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Policy",
- "severity": "中等",
- "text": "限制在根管理組範圍內執行的 Azure Policy 分配數,以避免在繼承的範圍內通過排除項進行管理。",
- "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "5a917e1f-348e-4f25-9c27-d42e8bbac757",
- "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline",
- "service": "Policy",
- "severity": "中等",
- "text": "如果存在任何數據主權要求,則應部署 Azure 策略來強制實施這些要求。",
- "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/",
+ "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.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "78b22132-b41c-460b-a4d3-df8f73a67dc2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone",
- "service": "Policy",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "對於主權登陸區域,部署主權策略基線,並在正確的管理組級別進行分配。",
+ "text": "對員工進行有關數據安全最佳實踐、安全處理數據的重要性以及與數據洩露相關的潛在風險的教育。鼓勵他們勤奮地遵循數據安全協定。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "caeea0e9-1024-41df-a52e-d99c3f22a6f4",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline",
- "service": "Policy",
- "severity": "中等",
- "text": "對於主權登陸區域,將主權控制目標記錄到策略映射。",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52",
+ "service": "Azure OpenAI",
+ "severity": "高",
+ "text": "將生產數據與開發和測試數據分開。僅在生產中使用真實的敏感數據,並在開發和測試環境中使用匿名或合成數據。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Authorization/policyDefinitions",
- "checklist": "Azure Landing Zone Review",
- "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a",
- "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives",
- "service": "Policy",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "對於主權登陸區,請確保已制定“主權控制目標到策略映射”的管理流程。",
+ "text": "如果您具有不同級別的數據敏感度,請考慮為每個級別創建單獨的索引。例如,您可以有一個用於常規數據的索引,另一個用於敏感數據的索引,每個索引都由不同的訪問協定管理",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "67e7a8ed-4b30-4e38-a3f2-9812b2363cef",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "使用單個監視器日誌工作區集中管理平臺,但 Azure 基於角色的訪問控制 (Azure RBAC)、數據主權要求或數據保留策略要求使用單獨工作區的情況除外。",
- "training": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "waf": "操作"
+ "text": "通過將敏感數據集放置在服務的不同實例中,進一步實現隔離。每個實例都可以使用其自己的特定 RBAC 策略集進行控制",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "5e6c4cfd-3e50-4454-9c24-47ec66138a72",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Monitor",
- "severity": "高",
- "text": "如果日誌保留要求超過 12 年,請將日誌匯出到 Azure 存儲。使用具有一次寫入、多次讀取策略的不可變存儲,使數據在使用者指定的時間間隔內不可擦除且不可修改。",
- "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
- "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.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "e7d7e484-3276-4d8b-bc05-5bcf619e8a13",
- "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview",
- "service": "VM",
- "severity": "中等",
- "text": "使用 Azure Policy 監視 OS 等級虛擬機 (VM) 配置偏移。通過策略啟用 Azure Automanage 計算機配置審核功能可説明應用程式團隊工作負載立即使用功能,而無需付出任何努力。",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "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.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "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",
- "service": "VM",
- "severity": "中等",
- "text": "使用 Azure Update Manager 作為 Azure 中 Windows 和 Linux VM 的修補機制。",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "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.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "c806c048-26b7-4ddf-b4c2-b4f0c476925d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ",
- "service": "VM",
- "severity": "中等",
- "text": "使用 Azure Arc 將 Azure Update Manager 用作 Azure 外部的 Windows 和 Linux VM 的修補機制。",
- "training": "https://learn.microsoft.com/azure/update-manager/overview?tabs=azure-vms",
- "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.network/networkWatchers",
- "checklist": "Azure Landing Zone Review",
- "guid": "90483845-c986-4cb2-a131-56a12476e49f",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Network Watcher",
- "severity": "中等",
- "text": "使用網路觀察程序主動監視流量流。",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "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.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "6944008b-e7d7-4e48-9327-6d8bdc055bcf",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Monitor",
+ "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": "使用 Azure Monitor 紀錄獲取見解和報告。",
- "waf": "操作"
+ "text": "使用提示壓縮工具,如 LLMLingua 或 gprtrim",
+ "waf": "成本優化"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "97be9951-9048-4384-9c98-6cb2913156a1",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview",
- "service": "Monitor",
- "severity": "中等",
- "text": "使用 Azure Monitor 警報生成操作警報。",
- "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.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "fed3c55f-a67e-4875-aadd-3aba3f9fde31",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "Monitor",
+ "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": "通過 Azure 自動化帳戶使用更改和清單跟蹤時,請確保已選擇受支持的區域,以便將 Log Analytics 工作區和自動化帳戶連結在一起。",
- "waf": "操作"
- },
- {
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "eba8cf22-45c6-4dc1-9b57-2cceb3b97ce5",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy",
- "service": "Backup",
- "severity": "低",
- "text": "使用 Azure 備份時,請使用正確的備份類型(GRS、ZRS 和 LRS)進行備份,因為預設設置為 GRS。",
- "waf": "可靠性"
+ "text": "實施強大的最終使用者身份驗證機制,例如多因素身份驗證,以防止對 LLM 應用程式和相關網路資源的未經授權的訪問",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "f541acdc-e979-4377-acdb-3751ab2ab13a",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "VM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "使用 Azure 來賓策略通過 VM 擴展自動部署軟體配置,並強制實施合規的基線 VM 配置。",
+ "text": "實施網路監控工具,以檢測和分析網路流量中的任何可疑或惡意活動。啟用日誌記錄以捕獲網路事件,並在發生安全事件時促進取證分析",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "description": "使用 Azure Policy 的來賓配置功能來審核和修正電腦設置(例如 OS、應用程式、環境),以確保資源與預期配置保持一致,並且更新管理可以強制實施 VM 的修補程式管理。",
- "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",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "通過 Azure Policy 監視 VM 安全配置偏移。",
+ "text": "進行安全審計和滲透測試,以識別和解決LLM應用程式的網路基礎設施中的任何網路安全弱點或漏洞",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "2476e49f-541a-4cdc-b979-377bcdb3751a",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "VM",
- "severity": "中等",
- "text": "使用 Azure Site Recovery 實現 Azure 到 Azure 虛擬機的災難恢復方案。這使您能夠跨區域複製工作負載。",
- "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.RecoveryServices/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "f625ca44-e569-45f2-823a-ce8cb12308ca",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "Backup",
- "severity": "中等",
- "text": "使用 Azure 本機備份功能或與 Azure 相容的第三方備份解決方案。",
- "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.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "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",
+ "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 Front Door 和 Azure 應用程式閘道)的 WAF 日誌。定期查看日誌,以檢查攻擊和誤報檢測。",
- "waf": "操作"
- },
- {
- "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls",
- "checklist": "Azure Landing Zone Review",
- "guid": "7f408960-c626-44cb-a018-347c8d790cdf",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "WAF",
- "severity": "中等",
- "text": "將 WAF 日誌從應用程式交付服務(如 Azure Front Door 和 Azure 應用程式閘道)發送到 Microsoft Sentinel。檢測攻擊並將 WAF 遙測集成到整個 Azure 環境中。",
- "waf": "操作"
+ "text": "應啟用 Azure AI 服務資源中的診斷日誌",
+ "waf": "卓越運營"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "5017f154-e3ab-4369-9829-e7e316183687",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
- "service": "Key Vault",
+ "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": "使用 Azure Key Vault 儲存機密和憑據。",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "graph": "ResourceContainers | where type=='microsoft.resources/subscriptions'| parse id with '/subscriptions/' SubscriptionID| project subscriptionId, SubscriptionName = name| join kind=leftouter (Resources| where type == 'microsoft.keyvault/vaults'| project id, name, subscriptionId) on subscriptionId| join kind= leftouter (Resources| where type == 'microsoft.keyvault/vaults'| summarize ResourceCount = count() by subscriptionId) on subscriptionId| extend RCount = iff(isnull(ResourceCount), 0, ResourceCount)| project-away ResourceCount| extend compliant = (RCount <> 1)",
- "guid": "a0477a20-9945-4bda-9333-4f2491163418",
- "link": "https://learn.microsoft.com/azure/key-vault/general/overview-throttling",
- "service": "Key Vault",
- "severity": "中等",
- "text": "對不同的應用程式和區域使用不同的 Azure Key Vault,以避免事務規模限制並限制對機密的訪問。",
+ "text": "為了安全起見,建議禁用密鑰訪問(本地身份驗證)。 禁用基於密鑰的訪問后,Microsoft Entra ID 將成為唯一的訪問方法,該方法允許保持最小許可權原則和精細控制。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "2ba52752-6944-4008-ae7d-7e4843276d8b",
+ "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": "Key Vault",
- "severity": "中等",
- "text": "在啟用軟刪除和清除策略的情況下預配 Azure Key Vault,以允許對已刪除物件進行保留保護。",
+ "service": "Azure OpenAI",
+ "severity": "高",
+ "text": "使用 Azure Key Vault 安全地存儲和管理密鑰。避免在 LLM 應用程式的代碼中硬編碼或嵌入敏感密鑰,並使用託管標識從 Azure Key Vault 中安全地檢索它們",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "dc055bcf-619e-48a1-9f98-879525d62688",
+ "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": "Key Vault",
- "severity": "中等",
- "text": "遵循最低特權模型,將永久刪除密鑰、機密和證書的授權限制為專用的自定義 Microsoft Entra ID 角色。",
+ "service": "Azure OpenAI",
+ "severity": "高",
+ "text": "定期輪換和過期存儲在 Azure Key Vault 中的密鑰,以最大程度地降低未經授權訪問的風險。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "6d70ba6c-97be-4995-8904-83845c986cb2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中等",
- "text": "使用公共證書頒發機構自動執行證書管理和續訂過程,以簡化管理。",
- "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "913156a1-2476-4e49-b541-acdce979377b",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中等",
- "text": "建立金鑰和證書輪換的自動化流程。",
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "cdb3751a-b2ab-413a-ba6e-55d7d8a2adb1",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
- "severity": "中等",
- "text": "在保管庫上啟用防火牆和虛擬網路服務終結點或專用終結點,以控制對密鑰保管庫的訪問。",
+ "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "17d6326a-f625-4ca4-9e56-95f2223ace8c",
- "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault",
- "service": "Key Vault",
- "severity": "中等",
- "text": "使用以平臺為中心的 Azure Monitor Log Analytics 工作區來審核 Key Vault 的每個實例中的密鑰、證書和機密使用方式。",
- "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.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "b12308ca-5017-4f15-9e3a-b3693829e7e3",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "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": "委託 Key Vault 實例化和特權訪問,並使用 Azure Policy 強制實施一致的合規配置。",
- "waf": "安全"
+ "text": "了解基礎模型和微調模型的成本差異以及令牌步長",
+ "waf": "成本優化"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "91163418-2ba5-4275-8694-4008be7d7e48",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "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": "每個應用程式、每個環境、每個區域使用 Azure Key Vault。",
- "waf": "安全"
+ "text": "設置成本跟蹤系統,用於監視模型使用方式,並使用該資訊來説明通知模型選擇和提示大小",
+ "waf": "成本優化"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "25d62688-6d70-4ba6-a97b-e99519048384",
- "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices",
- "service": "Key Vault",
+ "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": "安全"
+ "text": "為每個模型回應的令牌數設置最大限制。優化大小以確保其足夠大以實現有效的回應",
+ "waf": "成本優化"
},
{
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "guid": "4ac6b67c-b3a4-4ff9-8e87-b07a7ce7bbdb",
- "link": "https://learn.microsoft.com/industry/sovereignty/key-management",
- "service": "Key Vault",
+ "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": "對於 Sovereign Landing Zone,請使用 Azure Key Vault 託管 HSM 來儲存機密和憑據。",
- "waf": "安全"
+ "text": "查看提供的有關設置 AI 搜索以實現可靠性的指南",
+ "waf": "卓越運營"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "4e5695f2-223a-4ce8-ab12-308ca5017f15",
- "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/overview-reports",
- "service": "Entra",
+ "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": "使用 Microsoft Entra ID 報告功能生成訪問控制審核報告。",
- "waf": "安全"
+ "text": "規劃和管理 AI 搜索向量存儲",
+ "waf": "卓越運營"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "09945bda-4333-44f2-9911-634182ba5275",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management",
- "service": "Defender",
- "severity": "高",
- "text": "為所有訂閱啟用Defender雲安全態勢管理。",
- "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": "卓越運營"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan",
- "service": "Defender",
+ "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": "在所有訂閱上為伺服器啟用Defender雲工作負載保護計劃。",
- "waf": "安全"
+ "text": "評估計費模型的使用方式 - PAYG 與 PTU",
+ "waf": "成本優化"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription",
- "service": "Defender",
- "severity": "高",
- "text": "在所有訂閱上為 Azure 資源啟用 Defender 雲工作負載保護計劃。",
- "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.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b",
- "link": "https://learn.microsoft.com/mem/configmgr/protect/deploy-use/endpoint-protection",
- "service": "VM",
- "severity": "高",
- "text": "在 IaaS 伺服器上啟用端點保護。",
- "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.Compute/virtualMachines",
- "checklist": "Azure Landing Zone Review",
- "guid": "15833ee7-ad6c-46d3-9331-65c7acbe44ab",
- "link": "https://learn.microsoft.com/azure/security-center/",
- "service": "VM",
+ "arm-service": "Microsoft.CognitiveServices/accounts",
+ "checklist": "Azure OpenAI Review",
+ "guid": "294798b1-578b-4219-a46c-eb5443513592",
+ "service": "Azure OpenAI",
"severity": "中等",
- "text": "通過 Azure Monitor 紀錄和 Defender for Cloud 監視基本作業系統修補偏移。",
- "waf": "安全"
+ "text": "根據不同的搜索參數評估 Azure AI 搜尋結果",
+ "waf": "卓越運營"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Azure Landing Zone Review",
- "guid": "e5f8d79f-2e87-4768-924c-516775c6ea95",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Monitor",
+ "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": "將預設資源配置連接到集中式 Azure Monitor Log Analytics 工作區。",
- "waf": "安全"
+ "text": "只有在嘗試了其他基本方法(如提示工程和RAG處理數據)時,才將微調模型視為提高準確性的方法",
+ "waf": "卓越運營"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "1761e147-f65e-4d09-bbc2-f464f23e2eba",
- "link": "https://learn.microsoft.com/industry/sovereignty/transparency-logs",
- "service": "Entra",
+ "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": "對於 Sovereign Landing Zone,請在 Entra ID 租戶上啟用透明度日誌。",
- "waf": "安全"
+ "text": "使用提示工程技術來提高 LLM 回應的準確性",
+ "waf": "卓越運營"
},
{
- "checklist": "Azure Landing Zone Review",
- "guid": "d21a922d-5ca7-427a-82a6-35f7b21f1bfc",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/customer-lockbox-overview",
- "service": "Entra",
+ "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": "對於 Sovereign Landing Zone,請在 Entra ID 租戶上啟用客戶密碼箱。",
+ "text": "紅隊您的 GenAI 應用程式",
"waf": "安全"
},
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "b03ed428-4617-4067-a787-85468b9ccf3f",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Storage",
- "severity": "高",
- "text": "啟用到存儲帳戶的安全傳輸。",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Landing Zone Review",
- "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/data-protection-overview#recommendations-for-basic-data-protection",
- "service": "Storage",
- "severity": "高",
- "text": "為存儲帳戶啟用容器軟刪除,以恢復已刪除的容器及其內容。",
- "waf": "安全"
- },
- {
- "arm-service": "Microsoft.KeyVault/vaults",
- "checklist": "Azure Landing Zone Review",
- "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",
- "severity": "高",
- "text": "使用 Key Vault 機密可避免對敏感資訊(如憑據、虛擬機、用戶密碼)、證書或密鑰進行硬編碼。",
- "waf": "操作"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "ab91932c-9fc9-4d1b-a881-37f5e6c0cb9e",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-ADF_v1.docx",
- "service": "Azure Data Factory",
- "severity": "中等",
- "text": "利用 Azure 數據工廠的 FTA 復原能力手冊",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e503547c-d447-4e82-9138-a7200f1cac6d",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "高",
- "text": "在支援可用區的區域中使用區域冗餘管道",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "9ef1d6e8-32e5-42e3-911c-818b1a0bc511",
- "link": "https://learn.microsoft.com/azure/data-factory/source-control",
- "service": "Azure Data Factory",
- "severity": "中等",
- "text": "使用 DevOps 透過 Github/Azure DevOps 集成備份 ARM 範本",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "e43a18a9-cd29-49cf-b7b1-7db8255562f2",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "中等",
- "text": "請確保在另一個區域中複製自承載集成運行時 VM",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "guid": "aee4563a-fd83-4393-98b2-62d6dc5f512a",
- "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery",
- "service": "Azure Data Factory",
- "severity": "中等",
- "text": "請確保在姊妹區域中複製或複製您的網路。必須在另一個區域創建 Vnet 的副本",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DataFactory/datafactories",
- "checklist": "Azure Data Factory Review Checklist",
- "description": "如果ADF管道使用Key Vault,則無需執行任何操作即可複製Key Vault。Key Vault 是一項託管服務,Microsoft 會為你處理它",
- "guid": "25498f6d-bad3-47da-a43b-c6ce1d7aa9b2",
- "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
- "service": "Azure Data Factory",
- "severity": "低",
- "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",
+ "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e",
+ "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/",
"service": "Azure OpenAI",
- "severity": "高",
- "text": "遵循 Metaprompting 護欄,實現 realible AI",
+ "severity": "中等",
+ "text": "為最終使用者提供 LLM 回應的評分選項並跟蹤這些分數。",
"waf": "卓越運營"
},
{
"arm-service": "Microsoft.CognitiveServices/accounts",
"checklist": "Azure OpenAI Review",
- "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1",
- "link": "https://github.com/Azure-Samples/AI-Gateway",
+ "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": "考慮使用APIM或 AI central 等解決方案的閘道模式,以實現更好的速率限制、負載均衡、身份驗證和日誌記錄",
- "waf": "卓越運營"
+ "text": "考慮配額管理做法",
+ "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",
+ "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410",
+ "link": "https://github.com/Azure/aoai-apim/blob/main/README.md",
"service": "Azure OpenAI",
- "severity": "高",
- "text": "為您的 AOAI 實例啟用監控",
+ "severity": "中等",
+ "text": "使用負載均衡器解決方案(如基於APIM的閘道)在服務和區域之間平衡負載和容量",
"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.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
+ "service": "Azure Monitor",
+ "text": "Azure Monitor 中的數據收集規則 -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "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.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "45901365-d38e-443f-abcb-d868266abca2",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
+ "service": "Azure Backup",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
+ "service": "VM",
+ "text": "刪除或存檔未關聯的服務(磁碟、網卡、IP 位址等)",
+ "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.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
+ "service": "Azure Backup",
+ "text": "考慮在網站恢復存儲和非任務關鍵型應用程式的備份之間取得良好的平衡",
+ "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.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
+ "service": "Azure Monitor",
+ "text": "檢查 40 個不同 Log Analytics 工作區之間的支出和節省機會 - 對非生產工作區使用不同的保留和數據收集 - 創建每日上限以實現意識和層大小調整 - 如果確實設置了每日上限,除了在達到上限時創建警報外,請確保還創建警報規則,以便在達到某個百分比(例如 90%)時收到通知。- 如果可能,考慮工作空間改造 - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
+ "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.Insights/components",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Azure Monitor",
+ "text": "強制執行清除日誌策略和自動化(如果需要,可以將記錄移至冷存儲)",
+ "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "VM",
+ "text": "檢查磁碟是否確實需要,如果不是:刪除。如果需要,請尋找較低的儲存層或使用備份 -",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
+ "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.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
+ "service": "Storage",
+ "text": "考慮使用自定義規則將未使用的存儲移動到較低層 - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "VM",
+ "text": "確保 advisor 配置為適合 VM 大小調整",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "description": "通過在成本分析系統中搜索計量類別許可證進行檢查",
+ "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
+ "service": "VM",
+ "text": "在所有 Windows VM 上運行腳本 https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server - 如果頻繁創建 Windows VM,請考慮實施策略",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
+ "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
+ "service": "VM",
+ "text": "如果您已經擁有許可證,也可以將其置於 AHUB https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
+ "service": "VM",
+ "text": "使用靈活性選項(不超過 4-5 個系列)整合保留的 VM 系列",
+ "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
+ "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",
+ "text": "利用 Azure 預留實例:此功能允許將 VM 預留 1 年或 3 年,與 PAYG 價格相比,可顯著節省成本。",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
+ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
+ "service": "VM",
+ "text": "只能保留較大的磁碟 => 1 TiB -",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
+ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
+ "service": "VM",
+ "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.Sql/servers",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
+ "service": "Azure SQL",
+ "text": "檢查是否適用並強制執行策略/更改 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",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
+ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
+ "service": "VM",
+ "text": "虛擬機 + 許可證部分折扣 (ahub + 3YRI) 約為 70% 的折扣",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "VM",
+ "text": "考慮使用 VMSS 來滿足需求,而不是按比例調整",
+ "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.containerservice/managedClusters",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "AKS",
+ "text": "使用 AKS 自動縮放程式符合群集使用方式(確保 Pod 要求與縮放程式符合)",
+ "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.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
+ "service": "Azure Backup",
+ "text": "將恢復點移至保管庫存檔(如果適用)(驗證)",
+ "training": "https://azure.microsoft.com/pricing/reservations/",
+ "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.Databricks/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
+ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
+ "service": "Databricks",
+ "text": "請考慮盡可能使用帶回退功能的現成 VM。考慮群集的自動終止。",
+ "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.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
+ "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
+ "service": "Azure Functions",
+ "text": "功能 - 重用連接",
+ "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
+ "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.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
+ "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
+ "service": "Azure Functions",
+ "text": "函數 - 本地快取資料",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
+ "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.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
+ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
+ "service": "Azure Functions",
+ "text": "函數 - 冷啟動 - 使用“從包運行”功能。這樣,代碼將下載為單個 zip 檔。例如,這可以顯著改進具有大量節點模組的 Javascript 函數。使用特定於語言的工具來減小包大小,例如,搖樹 Javascript 應用程式。",
+ "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "Azure Functions",
+ "text": "功能 - 保持功能溫暖",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
+ "link": "https://learn.microsoft.com/azure/governance/policy/overview",
+ "service": "Azure Functions",
+ "text": "使用具有不同功能的自動縮放時,可能會有一個資源驅動所有資源的所有自動縮放 - 請考慮將其移動到單獨的消耗計劃(並考慮更高的 CPU 計劃)",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
+ "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
+ "service": "Azure Functions",
+ "text": "給定計劃中的函數應用都縮放在一起,因此縮放的任何問題都可能影響計劃中的所有應用。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
+ "service": "Azure Functions",
+ "text": "我需要為「等待時間」付費嗎?這個問題通常是在執行異步操作並等待結果的 C# 函數的上下文中提出的,例如 await Task.Delay(1000) 或 await client。GetAsync('http://google.com')。答案是肯定的 - GB 秒計算基於函數的開始和結束時間以及該時間段內的記憶體使用方式。在這段時間內實際發生的CPU活動未計入計算。此規則的一個例外是,如果使用的是持久函數。您無需為在業務流程協調程式函數中等待所花費的時間付費。在可能的情況下應用需求塑造技術(開發環境?)https://github.com/Azure-Samples/functions-csharp-premium-scaler",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "Front Door",
+ "text": "Frontdoor - 關閉預設主頁在應用的應用程式設置中,將 AzureWebJobsDisableHomepage 設置為 true。這將向PoP返回204(無內容),因此僅返回標頭數據。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
+ "service": "Front Door",
+ "text": "Frontdoor - 路由到不返回任何內容的內容。設置函數、函數代理,或在 WebApp 中添加返回 200 (OK) 且不發送內容或發送最少內容的路由。這樣做的好處是您可以在調用時註銷。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
+ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
+ "service": "Storage",
+ "text": "考慮為使用較少的數據存檔層",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
+ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
+ "service": "VM",
+ "text": "檢查大小與層不匹配的磁碟大小(即 513 GiB 磁碟將支付 P30 (1TiB) 並考慮調整大小",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
+ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
+ "service": "Storage",
+ "text": "盡可能考慮使用標準 SSD,而不是 Premium 或 Ultra",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
+ "service": "Storage",
+ "text": "對於存儲帳戶,請確保所選層不會增加事務費用(移動到下一層可能會更便宜)",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.RecoveryServices/vaults",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
+ "service": "Site Recovery",
+ "text": "對於 ASR,如果 RPO/RTO 和複製輸送量允許,請考慮使用標準 SSD 磁碟",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Storage/storageAccounts",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
+ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
+ "service": "Storage",
+ "text": "存儲帳戶:檢查熱層和/或 GRS 必填",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
+ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
+ "service": "VM",
+ "text": "磁碟 - 驗證高級 SSD 磁碟在任何地方的使用方式:例如,非生產磁碟可以交換到標準 SSD 或按需高級 SSD",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
+ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
+ "service": "Synapse",
+ "text": "創建預算以管理成本並創建警報,自動通知利益相關者支出異常和超支風險。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "Synapse",
+ "text": "將成本數據匯出到存儲帳戶以進行其他數據分析。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Synapse",
+ "text": "通過在不使用資源時暫停資源來控制專用 SQL 池的成本。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
+ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
+ "service": "Synapse",
+ "text": "啟用無伺服器 Apache Spark 自動暫停功能,並相應地設置超時值。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Synapse",
+ "text": "創建多個不同大小的 Apache Spark 池定義。",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Synapse/workspaces",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
+ "service": "Synapse",
+ "text": "使用預購計劃購買為期一年的 Azure Synapse 提交單元 (SCU),以節省 Azure Synapse Analytics 成本。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "成本"
+ },
+ {
+ "arm-service": "Microsoft.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "VM",
+ "text": "將現成 VM 用於可中斷作業:這些 VM 可以以折扣價競標和購買,為非關鍵工作負載提供經濟高效的解決方案。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "VM",
+ "text": "合理調整所有 VM 的大小",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "VM",
+ "text": "將 VM 大小與規範化大小和最新大小交換",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "調整 VM 大小 - 從低於 5% 的監視使用率開始,然後工作到 40%",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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.Compute/virtualMachines",
+ "checklist": "Cost Optimization Checklist",
+ "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "VM",
+ "text": "容器化應用程式可以提高 VM 密度並節省擴展成本",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
+ "service": "Redis",
"severity": "高",
- "text": "利用 Azure Defender 來檢測和回應安全威脅,並設置監視和警報機制來識別可疑活動或違規行為。利用 Azure Sentinel 進行高級威脅檢測和回應",
- "waf": "安全"
+ "text": "為 Azure Cache for Redis 啟用區域冗餘。Azure Cache for Redis 支持高級層和企業層中的區域冗餘配置。區域冗餘緩存可以將其節點放置在同一區域的不同 Azure 可用性區域中。它消除了作為單點故障的數據中心或可用區中斷,並提高了緩存的整體可用性。",
+ "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",
+ "arm-service": "microsoft.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
+ "service": "Redis",
"severity": "中等",
- "text": "制定數據保留和處置策略,以遵守合規性法規。對不再需要的數據實施安全刪除方法,並維護數據保留和處置活動的審計跟蹤",
- "waf": "安全"
+ "text": "為 Azure Cache for Redis 實例配置數據持久性。由於緩存數據存儲在記憶體中,因此多個節點的罕見和計劃外故障可能會導致所有數據被丟棄。為了避免完全丟失數據,Redis 持久性允許您定期拍攝記憶體中數據的快照,並將其存儲到存儲帳戶中。",
+ "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.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
+ "service": "Redis",
+ "severity": "中等",
+ "text": "使用異地冗餘存儲帳戶保留 Azure Cache for Redis 數據,或在異地冗餘不可用的情況下使用區域冗餘",
+ "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.cache/redis",
+ "checklist": "Redis Resiliency checklist",
+ "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
+ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
+ "service": "Redis",
+ "severity": "中等",
+ "text": "為高級 Azure Cache for Redis 實例配置被動異地複製。異地複製是一種用於連結兩個或多個 Azure Cache for Redis 實例的機制,通常跨越兩個 Azure 區域。異地複製主要用於跨區域災難恢復。兩個高級層緩存實例通過異地複製進行連接,從而提供對主緩存的讀取和寫入,並將數據複製到輔助緩存。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "6ad48408-ee72-4734-a476-ba28fdcf590c",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot",
+ "service": "Bot service",
"severity": "中等",
- "text": "對員工進行有關數據安全最佳實踐、安全處理數據的重要性以及與數據洩露相關的潛在風險的教育。鼓勵他們勤奮地遵循數據安全協定。",
- "waf": "安全"
+ "text": "遵循 Azure 機器人服務中的可靠性支持建議",
+ "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.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "e65de8e1-3f9c-4cbd-9682-66abca264f9a",
+ "link": "https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-regionalization",
+ "service": "Bot service",
+ "severity": "中等",
+ "text": "部署具有本地數據駐留和區域合規性的機器人",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620",
- "service": "Azure OpenAI",
+ "arm-service": "Microsoft.BotService/botServices",
+ "checklist": "Azure Bot Service",
+ "guid": "19bfe9d5-5d04-4c3c-9919-ca1b2d1215ae",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-bot#cross-region-disaster-recovery-in-multi-region-geography",
+ "service": "Bot service",
"severity": "中等",
- "text": "如果您具有不同級別的數據敏感度,請考慮為每個級別創建單獨的索引。例如,您可以有一個用於常規數據的索引,另一個用於敏感數據的索引,每個索引都由不同的訪問協定管理",
- "waf": "安全"
+ "text": "Azure 機器人服務在全域和區域服務的主動-主動模式下運行。發生中斷時,無需檢測錯誤或管理服務。Azure 機器人服務在多區域地理體系結構中自動執行自動故障轉移和自動恢復。對於歐盟機器人區域服務,Azure 機器人服務在歐洲境內提供兩個完整區域,並提供主動/主動複製,以確保冗餘。對於全球機器人服務,所有可用的區域/地理位置都可以作為全球足跡。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f00a69de-7076-4734-a734-6e4552cad9e1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
+ "service": "Front Door",
"severity": "中等",
- "text": "通過將敏感數據集放置在服務的不同實例中,進一步實現隔離。每個實例都可以使用其自己的特定 RBAC 策略集進行控制",
- "waf": "安全"
+ "text": "如果將客戶管理的 TLS 證書用於 Azure Front Door,請使用“最新”證書版本。降低手動證書續訂導致的中斷風險",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab",
- "service": "Azure OpenAI",
- "severity": "高",
- "text": "認識到從敏感資訊生成的嵌入和向量本身就是敏感的。這些數據應得到與源材料相同的保護措施",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant",
+ "guid": "553585a6-abe0-11ed-afa1-0242ac120002",
+ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "確保使用應用程式閘道 v2 SKU",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"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 應用於具有嵌入和向量的數據存儲,並根據角色的訪問要求確定存取範圍",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')",
+ "guid": "4e35fbf5-0ae2-48b2-97ce-753353edbd1a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "Load Balancer",
+ "severity": "中等",
+ "text": "請確保對 Azure 負載均衡器使用標準 SKU",
"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 服務配置專用終結點,以限制網路內的服務訪問",
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "9432621a-8397-4654-a882-5bc856b7ef83",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones",
+ "service": "Load Balancer",
+ "severity": "中等",
+ "text": "確保負載均衡器前端IP位址是區域冗餘的(除非需要區域前端)。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370",
- "service": "Azure OpenAI",
- "severity": "高",
- "text": "使用 Azure 防火牆和 UDR 強制實施嚴格的入站和出站流量控制,並限制外部集成點",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "dfc50f87-3800-424c-937b-ed5f186e7c15",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "應用程式閘道 v2 應部署在IP前綴等於或大於 /24 的子網中",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6f7c0cba-fe51-4464-add4-57e927138b82",
- "service": "Azure OpenAI",
- "severity": "高",
- "text": "實施網路分段和訪問控制,將 LLM 應用程式的存取限製為僅授權使用者和系統,並防止橫向行動",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "description": "一般而言,反向代理(尤其是 WAF)的管理更接近應用程式,而不是網路,因此它們與應用程式屬於同一訂閱。如果應用程式閘道和 WAF 由一個團隊管理,則在連接訂閱中集中管理應用程式閘道和 WAF 可能是可以的。",
+ "guid": "48b662d6-d15f-4512-a654-98f6dfe237de",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "部署 Azure 應用程式閘道 v2 或合作夥伴 NVA,用於在登陸區域虛擬網路中代理入站 HTTP(S) 連接,並與其保護的應用一起使用。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
"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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f109e1f3-c79b-4f14-82de-6b5c22314d08",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "App Gateway",
"severity": "中等",
- "text": "使用提示壓縮工具,如 LLMLingua 或 gprtrim",
- "waf": "成本優化"
+ "text": "對應用程式登陸區域中的所有公共IP位址使用 DDoS 網路或IP保護計畫。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant",
+ "guid": "135bf4ac-f9db-461f-b76b-2ee9e30b12c0",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "配置自動縮放,最小實例數為 2。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "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",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant",
+ "guid": "060c6964-52b5-48db-af8b-83e4b2d85349",
+ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2",
+ "service": "App Gateway",
"severity": "中等",
- "text": "實施強大的最終使用者身份驗證機制,例如多因素身份驗證,以防止對 LLM 應用程式和相關網路資源的未經授權的訪問",
- "waf": "安全"
+ "text": "跨可用性區域部署應用程式閘道",
+ "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "93555620-2bfe-4456-9b0d-834a348b263e",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "e79d17b7-3b22-4a5a-97e7-a8ed4b30e38c",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Front Door",
"severity": "中等",
- "text": "實施網路監控工具,以檢測和分析網路流量中的任何可疑或惡意活動。啟用日誌記錄以捕獲網路事件,並在發生安全事件時促進取證分析",
+ "text": "將 Azure Front Door 與 WAF 策略結合使用,以交付並幫助保護跨多個 Azure 區域的全球 HTTP/S 應用。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3f29812b-2363-4cef-b179-b599de0d5973",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "Front Door",
"severity": "中等",
- "text": "進行安全審計和滲透測試,以識別和解決LLM應用程式的網路基礎設施中的任何網路安全弱點或漏洞",
+ "text": "使用 Front Door 和應用程式閘道幫助保護 HTTP/S 應用時,請在 Front Door 中使用 WAF 策略。鎖定應用程式閘道以僅接收來自 Front Door 的流量。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
"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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/trafficManagerProfiles",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "cd4cd21b-0881-437f-9e6c-4cfd3e504547",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "Traffic Manager",
+ "severity": "高",
+ "text": "使用流量管理器交付跨 HTTP/S 以外的協定的全域應用。",
+ "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
+ "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",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3b4b3e88-a459-4ed5-a22f-644dfbc58204",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
"severity": "低",
- "text": "Azure AI 服務帳戶遵循組織命名約定",
- "waf": "卓越運營"
+ "text": "如果使用者只需要存取內部應用程式,Microsoft Entra ID 應用程式代理是否被視為 Azure 虛擬桌面 (AVD) 的替代方案?",
+ "training": "https://learn.microsoft.com/learn/modules/configure-azure-ad-application-proxy/",
+ "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": "卓越運營"
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "01ca7cf1-5754-442d-babb-8ba6772e5c30",
+ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works",
+ "service": "Entra",
+ "severity": "中等",
+ "text": "若要減少為網路中的傳入連接打開的防火牆埠數,請考慮使用 Microsoft Entra ID 應用程式代理為遠端使用者提供對內部應用程式的安全和經過身份驗證的訪問。",
+ "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "ae248989-b306-4591-9186-de482e3f0f0e",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "Front Door",
"severity": "高",
- "text": "為了安全起見,建議禁用密鑰訪問(本地身份驗證)。 禁用基於密鑰的訪問后,Microsoft Entra ID 將成為唯一的訪問方法,該方法允許保持最小許可權原則和精細控制。",
+ "text": "在「預防」模式下部署 Front Door 的 WAF 策略,以便 Web 應用程式防火牆採取適當的措施來允許或拒絕流量。",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "062d5839-4d36-402f-bfa4-02811eb936e9",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door",
+ "service": "Front Door",
"severity": "高",
- "text": "使用 Azure Key Vault 安全地存儲和管理密鑰。避免在 LLM 應用程式的代碼中硬編碼或嵌入敏感密鑰,並使用託管標識從 Azure Key Vault 中安全地檢索它們",
+ "text": "避免結合使用 Azure 流量管理器和 Azure Front Door。",
"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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5efeb96a-003f-4b18-8fcd-b4d84459c2b2",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin",
+ "service": "Front Door",
"severity": "高",
- "text": "定期輪換和過期存儲在 Azure Key Vault 中的密鑰,以最大程度地降低未經授權訪問的風險。",
+ "text": "在 Azure Front Door 和源上使用相同的功能變數名稱。主機名不匹配可能會導致細微的錯誤。",
"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.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "0b5a380c-4bfb-47bc-b1d7-dcfef363a61b",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group",
+ "service": "Front Door",
+ "severity": "低",
+ "text": "當 Azure Front Door 源組中只有一個源時,禁用運行狀況探測。",
+ "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.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5567048e-e5d7-4206-9c55-b5ed45d2cc0c",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#select-good-health-probe-endpoints",
+ "service": "Front Door",
+ "severity": "中等",
+ "text": "為 Azure Front Door 選擇良好的運行狀況探測終結點。請考慮構建用於檢查應用程式的所有依賴項的運行狀況終結點。",
+ "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.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "a13f72f3-8f5c-4864-95e5-75bf37fbbeb1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes",
+ "service": "Front Door",
+ "severity": "低",
+ "text": "將 HEAD 運行狀況探測與 Azure Front Door 配合使用,以減少 Front Door 發送到應用程式的流量。",
+ "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",
+ "ammp": true,
+ "arm-service": "Microsoft.Network/loadBalancers",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant",
+ "guid": "97a2fd46-64b0-1dfa-b72d-9c8869496d75",
+ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity",
+ "service": "Load Balancer",
"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": "成本優化"
+ "text": "使用 Azure NAT 閘道而不是負載均衡器出站規則來提高 SNAT 可伸縮性",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "af95c92d-d723-4f4a-98d7-8722324efd4d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates",
+ "service": "Front Door",
"severity": "高",
- "text": "在可能的情況下,批量請求,以最大程度地減少每次調用的開銷,從而降低總體成本。確保優化批量大小",
- "waf": "成本優化"
+ "text": "將託管 TLS 證書與 Azure Front Door 配合使用。降低運營成本和因證書續訂而導致的停機風險。",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "189ea962-3969-4863-8f5a-5ad808c2cf4b",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#define-your-waf-configuration-as-code",
+ "service": "Front Door",
"severity": "中等",
- "text": "設置成本跟蹤系統,用於監視模型使用方式,並使用該資訊來説明通知模型選擇和提示大小",
- "waf": "成本優化"
+ "text": "將 Azure Front Door WAF 配置定義為代碼。通過使用代碼,您可以更輕鬆地採用新的規則集版本並獲得額外的保護。",
+ "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": "成本優化"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2e30abab-5478-417c-81bf-bf1ad4ed1ed4",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-end-to-end-tls",
+ "service": "Front Door",
+ "severity": "高",
+ "text": "將端到端 TLS 與 Azure Front Door 配合使用。使用 TLS 建立從用戶端到 Front Door 的連接,以及從 Front Door 到源的連接。",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "10aa45af-166f-44c4-9f36-b6d592dac2ca",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-http-to-https-redirection",
+ "service": "Front Door",
"severity": "中等",
- "text": "查看提供的有關設置 AI 搜索以實現可靠性的指南",
- "waf": "卓越運營"
+ "text": "將 HTTP 到 HTTPS 重定向與 Azure Front Door 配合使用。通過自動將舊用戶端重定向到 HTTPS 請求來支持它們。",
+ "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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "28b9ee82-b2c7-45aa-bc98-6de6f59a095d",
+ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#enable-the-waf",
+ "service": "Front Door",
+ "severity": "高",
+ "text": "啟用 Azure Front Door WAF。保護您的應用程式免受一系列攻擊。",
+ "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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "2902d8cc-1b0c-4495-afad-624ab70f7bd6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#tune-your-waf",
+ "service": "Front Door",
+ "severity": "高",
+ "text": "通過在檢測模式下配置 WAF,為工作負載優化 Azure Front Door WAF,以減少和修復誤報檢測。",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "17ba124b-127d-42b6-9322-388d5b2bbcfc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "Front Door",
"severity": "高",
- "text": "評估計費模型的使用方式 - PAYG 與 PTU",
- "waf": "成本優化"
+ "text": "啟用在 Azure Front Door WAF 策略中啟用的請求正文檢查功能。",
+ "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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "49a98f2b-ec22-4a87-9415-6a10b00d6555",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-default-rule-sets",
+ "service": "Front Door",
+ "severity": "高",
+ "text": "啟用 Azure Front Door WAF 預設規則集。默認規則集檢測並阻止常見攻擊。",
+ "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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "147a13d4-2a2f-4824-a524-f5855b52b946",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#enable-bot-management-rules",
+ "service": "Front Door",
+ "severity": "高",
+ "text": "啟用 Azure Front Door WAF 機器人保護規則集。機器人規則可檢測好的和壞的機器人。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.CognitiveServices/accounts",
- "checklist": "Azure OpenAI Review",
- "guid": "294798b1-578b-4219-a46c-eb5443513592",
- "service": "Azure OpenAI",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d7dcdcb9-0d99-44b9-baab-ac7570ede79a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-the-latest-ruleset-versions",
+ "service": "Front Door",
"severity": "中等",
- "text": "根據不同的搜索參數評估 Azure AI 搜尋結果",
- "waf": "卓越運營"
+ "text": "使用最新的 Azure Front Door WAF 規則集版本。規則集更新會定期更新,以考慮當前的威脅形勢。",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "b9620385-1cde-418f-914b-a84a06982ffc",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-rate-limiting",
+ "service": "Front Door",
"severity": "中等",
- "text": "只有在嘗試了其他基本方法(如提示工程和RAG處理數據)時,才將微調模型視為提高準確性的方法",
- "waf": "卓越運營"
+ "text": "向 Azure Front Door WAF 添加速率限制。速率限制可阻止客戶端在短時間內意外或有意發送大量流量。",
+ "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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6dc36c52-0124-4ffe-9eaf-23ec1282dedb",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#use-a-high-threshold-for-rate-limits",
+ "service": "Front Door",
"severity": "中等",
- "text": "使用提示工程技術來提高 LLM 回應的準確性",
- "waf": "卓越運營"
+ "text": "對 Azure Front Door WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可防止可能使基礎結構不堪重負的極大量請求。",
+ "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 應用程式",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "388a3d0e-0a43-4367-90b2-3dd2aeece5ee",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#geo-filter-traffic",
+ "service": "Front Door",
+ "severity": "低",
+ "text": "如果您不希望來自所有地理區域的流量,請使用地理篩檢程式來阻止來自非預期國家/地區的流量。",
"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",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "00acd8a9-6975-414f-8491-2be6309893b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#specify-the-unknown-zz-location",
+ "service": "Front Door",
"severity": "中等",
- "text": "為最終使用者提供 LLM 回應的評分選項並跟蹤這些分數。",
- "waf": "卓越運營"
+ "text": "使用 Azure Front Door WAF 對流量進行地理篩選時,指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
+ "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",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "2f8e81eb-8e68-4026-8b1f-70f9b05f7cf9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection",
+ "service": "App Gateway",
"severity": "高",
- "text": "考慮配額管理做法",
- "waf": "成本優化"
+ "text": "啟用 Azure 應用程式閘道 WAF 機器人保護規則集。機器人規則可檢測好的和壞的機器人。",
+ "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": "卓越運營"
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "8ea8e0d4-84e8-4b33-aeab-493f6391b4d6",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection",
+ "service": "App Gateway",
+ "severity": "高",
+ "text": "啟用在 Azure 應用程式閘道 WAF 策略中啟用的請求正文檢查功能。",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure 事件中心提供靜態數據加密。如果使用自己的金鑰,則仍使用 Microsoft 管理的金鑰對數據進行加密,但此外,Microsoft 管理的金鑰將使用客戶管理的密鑰進行加密。",
- "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
- "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
- "service": "Event Hubs",
- "severity": "低",
- "text": "需要時,在靜態數據加密中使用客戶管理的金鑰選項",
- "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a4dd86d3-5ffa-408c-b660-cce073d085b8",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf",
+ "service": "App Gateway",
+ "severity": "高",
+ "text": "在檢測模式下針對工作負載優化 Azure 應用程式閘道 WAF。減少誤報檢測。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure 事件中心命名空間允許用戶端使用 TLS 1.0 及更高版本發送和接收數據。若要強制實施更嚴格的安全措施,可以將事件中心命名空間配置為要求用戶端使用較新版本的 TLS 發送和接收數據。如果事件中心命名空間需要最低版本的 TLS,則使用舊版本發出的任何請求都將失敗。",
- "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
- "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
- "service": "Event Hubs",
- "severity": "中等",
- "text": "對請求強制實施傳輸層安全性 (TLS) 的最低要求版本",
- "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
+ "ammp": true,
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "graph": "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",
+ "guid": "baf8e317-2397-4d49-b3d1-0dcc16d8778d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings",
+ "service": "App Gateway",
+ "severity": "高",
+ "text": "在「預防」模式下部署應用程式閘道的 WAF 策略。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "創建事件中心命名空間時,會自動為命名空間創建名為 RootManageSharedAccessKey 的策略規則。此策略具有整個命名空間的管理許可權。建議您將此規則視為管理根帳戶,不要在應用程式中使用它。建議將 AAD 用作 RBAC 的身份驗證提供程式。",
- "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "43fae595-8a32-4299-a69e-0f32c454dcc9",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview",
+ "service": "App Gateway",
"severity": "中等",
- "text": "避免在不必要的情況下使用root帳戶",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
+ "text": "向 Azure 應用程式閘道 WAF 添加速率限制。速率限制可阻止客戶端在短時間內意外或有意發送大量流量。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure 資源的託管標識可以使用 Azure AD 憑據從 Azure 虛擬機 (VM)、函數應用、虛擬機規模集和其他服務中運行的應用程式授權訪問事件中心資源。通過將 Azure 資源的託管標識與 Azure AD 身份驗證結合使用,可以避免將憑據存儲在雲中運行的應用程式中。",
- "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
- "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "041e0ad8-7b12-4694-a0b7-a0e25ee2470f",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details",
+ "service": "App Gateway",
"severity": "中等",
- "text": "如果可能,應用程式應使用託管標識向 Azure 事件中心進行身份驗證。如果沒有,請考慮在 Azure Key Vault 或等效服務中擁有存儲憑據(SAS、服務主體憑據)",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "對 Azure 應用程式閘道 WAF 速率限制使用高閾值。高速率限制閾值可避免阻止合法流量,同時仍可防止可能使基礎結構不堪重負的極大量請求。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "創建許可權時,請對用戶端對 Azure 事件中心的訪問提供精細控制。Azure 事件中心中的許可權可以而且應該限定為單個資源級別,例如消費者組、事件中心實體、事件中心命名空間等。",
- "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
- "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
- "service": "Event Hubs",
- "severity": "高",
- "text": "使用最低特權數據平面 RBAC",
- "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "99937189-ff78-492a-b9ca-18d828d82b37",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#geo-filtering-best-practices",
+ "service": "App Gateway",
+ "severity": "低",
+ "text": "如果您不希望來自所有地理區域的流量,請使用地理篩檢程式來阻止來自非預期國家/地區的流量。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "Azure 事件中心資源日誌包括操作日誌、虛擬網路和 Kafka 日誌。運行時審核日誌捕獲事件中心中所有數據平面訪問操作(例如發送或接收事件)的聚合診斷資訊。",
- "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
- "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "349a15c1-52f4-4319-9078-3895d95ecafd",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules",
+ "service": "App Gateway",
"severity": "中等",
- "text": "啟用記錄以進行安全調查。使用 Azure Monitor 捕獲指標和日誌,例如資源日誌、運行時審核日誌和 Kafka 紀錄",
- "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
+ "text": "使用 Azure 應用程式閘道 WAF 對流量進行地理篩選時,指定未知 (ZZ) 位置。避免在IP位址無法進行地理匹配時意外阻止合法請求。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "默認情況下,Azure 事件中心具有公共IP位址,並且可通過Internet訪問。專用終結點允許虛擬網路和 Azure 事件中心之間的流量遍歷 Microsoft 主幹網路。除此之外,如果未使用公共終結點,則應禁用這些終結點。",
- "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
- "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "6c19dfd5-a61c-436c-9001-491b9b3d0228",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions",
+ "service": "App Gateway",
"severity": "中等",
- "text": "請考慮使用專用終結點訪問 Azure 事件中心,並在適用時禁用公用網路訪問。",
- "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
+ "text": "使用最新的 Azure 應用程式閘道 WAF 規則集版本。規則集更新會定期更新,以考慮當前的威脅形勢。",
"waf": "安全"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "使用IP防火牆,可以將公共終結點進一步限製為僅一組IPv4位址或 CIDR(無類別域間路由)表示法的IPv4位址範圍。",
- "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f84106a2-2e9e-42ac-add6-d3416ecfed53",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "App Gateway",
"severity": "中等",
- "text": "請考慮僅允許從特定IP位址或範圍訪問 Azure 事件中心命名空間",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "安全"
+ "text": "添加診斷設置以保存 Azure 應用程式閘道 WAF 紀錄。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
- "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "4cea4050-7946-4a7c-89e6-b021b73c352d",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs",
+ "service": "Front Door",
"severity": "中等",
- "text": "利用 FTA 彈性手冊",
- "waf": "可靠性"
+ "text": "添加診斷設置以保存 Azure Front Door WAF 紀錄。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "對於從門戶創建的新 EH 命名空間,在啟用區域的區域中具有高級、專用或標準 SKU,將自動啟用此功能。EH 元數據和事件數據本身都是跨區域複製的",
- "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
- "service": "Event Hubs",
- "severity": "高",
- "text": "利用可用區(如果區域適用)",
- "waf": "可靠性"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "92664c60-47e3-4591-8b1b-8d557656e686",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "將 Azure 應用程式閘道 WAF 紀錄發送到 Microsoft Sentinel。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
- "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "845f5f91-9c21-4674-a725-5ce890850e20",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
+ "service": "Front Door",
"severity": "中等",
- "text": "使用高級或專用 SKU 實現可預測的性能",
- "waf": "可靠性"
+ "text": "將 Azure Front Door WAF 日誌發送到 Microsoft Sentinel。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "啟用內置異地災難恢復功能后,可確保命名空間的整個配置(事件中心、消費者組和設置)從主命名空間持續複製到輔助命名空間,並允許隨時從主命名空間向輔助命名空間進行一次故障轉移。主動/被動功能旨在更輕鬆地從失敗的 Azure 區域中恢復和放棄,而無需更改應用程式配置",
- "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
- "service": "Event Hubs",
- "severity": "高",
- "text": "使用主動被動配置規劃異地災難恢復",
- "waf": "可靠性"
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ba0e9b26-6e0d-4ec8-8541-023c00afd5b7",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "將 Azure 應用程式閘道 WAF 設定定義為代碼。通過使用代碼,您可以更輕鬆地採用新的規則集版本並獲得額外的保護。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "description": "應用於無法容忍關閉區域中事件數據中斷或丟失的DR配置。對於這些情況,請遵循複製指南,不要使用內置的異地災難恢復功能(主動/被動)。使用「主動/主動」時,在不同區域和命名空間中維護多個事件中心,事件將在中心之間複製",
- "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
- "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f17ec301-8470-4afd-aabc-c1fdfe47dcc0",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview",
+ "service": "App Gateway",
"severity": "中等",
- "text": "對於業務關鍵型應用程式,請使用 Active Active 配置",
- "waf": "可靠性"
+ "text": "使用 WAF 策略而不是舊版 WAF 配置。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.eventhub/namespaces",
- "checklist": "Azure Event Hub Review",
- "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
- "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
- "service": "Event Hubs",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "d4eb8667-f8cb-4cdd-94e6-2f967ba98f88",
+ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway",
+ "service": "App Gateway",
"severity": "中等",
- "text": "設計可復原的事件中心",
- "waf": "可靠性"
+ "text": "篩選後端中的入站流量,以便它們僅接受來自應用程式閘道子網的連接,例如與 NSG 的連接。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "應用與存儲相關的 Microsoft 雲安全基準中的指導",
- "guid": "d237de14-3b16-4c21-b7aa-9b64604489a8",
- "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/storage-security-baseline",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/frontdoors",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "7d3df025-59a3-447d-ac25-3f5750d35de1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/origin-security?tabs=app-service-functions",
+ "service": "Front Door",
"severity": "中等",
- "text": "請考慮「存儲的 Azure 安全基線”",
+ "text": "確保源僅接收來自 Azure Front Door 實例的流量。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "默認情況下,Azure 儲存具有公共IP位址,並且可通過Internet訪問。專用終結點允許僅向需要訪問的 Azure 計算資源安全地公開 Azure 存儲,從而消除對公共 Internet 的暴露",
- "guid": "f42d78e7-9d17-4a73-a22a-5a67e7a8ed4b",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "a66f0fd8-2ca4-422e-8df3-235148127ca2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/ssl-overview",
+ "service": "App Gateway",
"severity": "高",
- "text": "考慮將專用終結點用於 Azure 存儲",
+ "text": "您應該對流向後端伺服器的流量進行加密。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "新創建的存儲帳戶是使用ARM部署模型創建的,因此 RBAC、審核等都已啟用。確保訂閱中沒有具有經典部署模型的舊存儲帳戶",
- "guid": "30e37c3e-2971-41b2-963c-eee079b598de",
- "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "3dba65cb-834d-44d8-a3ca-a6aa2f1587be",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/overview",
+ "service": "App Gateway",
+ "severity": "高",
+ "text": "您應該使用 Web 應用程式防火牆。",
+ "waf": "安全"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "0158fcb6-0bc1-4687-832f-cc7c359c22d2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/redirect-overview",
+ "service": "App Gateway",
"severity": "中等",
- "text": "確保較舊的存儲帳戶未使用“經典部署模型”",
+ "text": "將 HTTP 重定向到 HTTPS",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "利用 Microsoft Defender 瞭解可疑活動和錯誤配置。",
- "guid": "fc5972cd-4cd2-41b0-a803-7f5e6b4bfd3d",
- "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "bb697864-1b4c-43af-8667-90cc69aaed5f",
+ "link": "https://learn.microsoft.com/azure/application-gateway/how-application-gateway-works#modifications-to-the-request",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "使用閘道管理的 Cookie 將流量從使用者工作階段定向到同一伺服器進行處理",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "ff353ad8-15fb-4ae8-9fc5-a85a36d36a35",
+ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-http-settings",
+ "service": "App Gateway",
"severity": "高",
- "text": "為所有存儲帳戶啟用 Microsoft DefenderEnable Defender for all of your storage accounts",
+ "text": "在計劃的服務更新期間啟用連接耗盡,以防止與後端池的現有成員的連接丟失",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "軟刪除機制允許恢復意外刪除的 Blob。",
- "guid": "503547c1-447e-4c66-828a-7100f1ce16dd",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "c8741f03-45a4-4183-a6b8-139e0773b8b5",
+ "link": "https://learn.microsoft.com/azure/application-gateway/custom-error",
+ "service": "App Gateway",
+ "severity": "低",
+ "text": "創建自訂錯誤頁面以顯示個人化的用戶體驗",
+ "waf": "操作"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "f850d46f-f5d7-4b17-b48c-a780741402e1",
+ "link": "https://learn.microsoft.com/azure/application-gateway/rewrite-http-headers-url",
+ "service": "App Gateway",
"severity": "中等",
- "text": "為 blob 啟用“軟刪除”",
+ "text": "編輯 HTTP 請求和回應標頭,以便更輕鬆地在用戶端和伺服器之間進行路由和資訊交換",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "請考慮有選擇地禁用某些 blob 容器的「軟刪除」 例如,如果應用程式必須確保立即刪除已刪除的資訊,例如出於機密性、隱私或合規性原因。",
- "guid": "3f1d5e87-2e52-4e36-81cc-58b4a4b1510e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-enable",
- "service": "Azure Storage",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "eadc3164-4a0f-461c-85f1-1a372c04dfd1",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "配置 Front Door 以優化全球 Web 流量路由和頂級最終使用者性能,並通過快速全域故障轉移實現可靠性",
+ "waf": "性能"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "29dcc19f-a8fa-4c35-8281-290577538793",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "使用傳輸層負載均衡",
+ "waf": "性能"
+ },
+ {
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "276898c1-af5e-4819-9e8e-049c7801ab9d",
+ "link": "https://learn.microsoft.com/azure/application-gateway/multiple-site-overview",
+ "service": "App Gateway",
"severity": "中等",
- "text": "禁用 blob 的“軟刪除”",
+ "text": "根據主機名或域名為單個閘道上的多個 Web 應用程式配置路由",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "容器的軟刪除使你能夠在刪除容器后恢復容器,例如從意外刪除操作中恢復。",
- "guid": "43a58a9c-2289-4c3d-9b57-d0c655462f2a",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-overview",
- "service": "Azure Storage",
- "severity": "高",
- "text": "為容器啟用“軟刪除”",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "5fe365b6-58e8-47ed-a8cf-5163850380a2",
+ "link": "https://learn.microsoft.com/azure/application-gateway/create-ssl-portal",
+ "service": "App Gateway",
+ "severity": "中等",
+ "text": "集中管理 SSL 證書,以減少後端伺服器場的加密和解密開銷",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "請考慮有選擇地禁用某些 blob 容器的「軟刪除」 例如,如果應用程式必須確保立即刪除已刪除的資訊,例如出於機密性、隱私或合規性原因。",
- "guid": "3e3453a3-c863-4964-ab65-2d6c15f51296",
- "link": "https://learn.microsoft.com/azure/storage/blobs/soft-delete-container-enable",
- "service": "Azure Storage",
- "severity": "中等",
- "text": "禁用容器的“軟刪除”",
+ "arm-service": "microsoft.network/applicationGateways",
+ "checklist": "Azure Application Delivery Networking",
+ "guid": "fa64b4dd-35c2-4047-ac5c-45dfbf8b0db9",
+ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket",
+ "service": "App Gateway",
+ "severity": "低",
+ "text": "使用應用程式閘道獲得對 WebSocket 和 HTTP/2 協定的本機支援",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "通過強制使用者在刪除之前先刪除刪除鎖,防止意外刪除存儲帳戶",
- "guid": "5398e6de-d227-4dd1-92b0-6c21d7999a64",
- "link": "https://learn.microsoft.com/azure/storage/common/lock-account-resource",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
+ "service": "IoT Hub DPS",
"severity": "高",
- "text": "在存儲帳戶上啟用資源鎖",
- "waf": "安全"
+ "text": "根據業務和 SLO 要求選擇正確的邏輯應用託管計劃",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "請考慮對 blob 使用“合法保留”或“基于時間的保留”策略,這樣就無法刪除 blob、容器或存儲帳戶。請注意,「不可能」實際上意味著「不可能」;存儲帳戶包含不可變 blob 後,「擺脫」該存儲帳戶的唯一方法是取消 Azure 訂閱。",
- "guid": "6f4389a8-f42c-478e-98c0-6a73a22a4956",
- "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
+ "service": "IoT Hub DPS",
"severity": "高",
- "text": "考慮不可變的 blob",
- "waf": "安全"
+ "text": "使用區域冗餘和可用性區域保護邏輯應用免受區域故障的影響",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "請考慮禁用對存儲帳戶的未受保護的 HTTP/80 訪問,以便對所有數據傳輸進行加密、完整性保護,並對伺服器進行身份驗證。",
- "guid": "e7a8dc4a-20e2-47c3-b297-11b1352beee0",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-require-secure-transfer",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "8aed4fbf-0830-4883-899d-222a154af478",
+ "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
+ "service": "IoT Hub DPS",
"severity": "高",
- "text": "需要 HTTPS,即在儲存帳戶上禁用埠 80",
- "waf": "安全"
+ "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "在儲存帳戶上配置自定義域(主機名)時,請檢查是否需要 TLS/HTTPS;如果是這樣,可能需要將 Azure CDN 放在存儲帳戶的前面。",
- "guid": "79b588de-fc49-472c-b3cd-21bf77036e5e",
- "link": "https://learn.microsoft.com/azure/storage/blobs/storage-custom-domain-name",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "IoT Hub DPS",
"severity": "高",
- "text": "強制實施 HTTPS(禁用 HTTP)時,請檢查是否未對儲存帳戶使用自定義域 (CNAME)。",
- "waf": "安全"
+ "text": "如果部署到獨立環境,請使用或遷移到應用服務環境 (ASE) v3",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "當用戶端使用SAS令牌訪問 blob 資料時,要求使用 HTTPS 有助於將憑據丟失的風險降至最低。",
- "guid": "6b4bed3d-5035-447c-8347-dc56028a71ff",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/provisioningServices",
+ "checklist": "Device Provisioning Service Review",
+ "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "IoT Hub DPS",
"severity": "中等",
- "text": "將共享訪問簽名 (SAS) 令牌限製為僅 HTTPS 連接",
- "waf": "安全"
+ "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護邏輯應用代碼",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "在可能的情況下,AAD 令牌應優先於共用訪問簽名",
- "guid": "e1ce15dd-3f0d-45e7-92d4-1e3611cc57b4",
- "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "ac1d6380-f866-4bbd-a9b4-b1ee5d7908b8",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#availability-zones",
+ "service": "IoT",
"severity": "高",
- "text": "使用 Azure Active Directory (Azure AD) 令牌進行 blob 訪問",
- "waf": "安全"
+ "text": "利用可用區(如果區域適用)(這是自動啟用的)",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "將角色分配給使用者、組或應用程式時,請僅向該安全主體授予他們執行任務所需的許可權。限制對資源的訪問有助於防止無意和惡意濫用數據。",
- "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "35f651e8-0124-4ef7-8c57-658e38609e6e",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "中等",
- "text": "IaM 許可權中的最低特權",
- "waf": "安全"
+ "text": "請注意 Microsoft 發起的故障轉移。Microsoft 在極少數情況下會執行這些操作,以將所有IoT中心從受影響的區域故障轉移到相應的異地配對區域。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "使用者委派 SAS 使用 Azure Active Directory (Azure AD) 憑據以及為 SAS 指定的許可權進行保護。使用者委派 SAS 在範圍和功能方面類似於服務 SAS,但比服務 SAS 具有安全優勢。",
- "guid": "55461e1a-3e34-453a-9c86-39648b652d6c",
- "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",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "4ed3e490-dc06-4a1e-b467-5d0239d85540",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#cross-region-dr",
+ "service": "IoT",
"severity": "高",
- "text": "使用 SAS 時,首選「使用者委派 SAS」,而不是基於存儲帳戶密鑰的 SAS。",
- "waf": "安全"
+ "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "存儲帳戶金鑰(“共用金鑰”)幾乎沒有審核功能。雖然可以監控誰/何時獲取密鑰副本,但一旦密鑰掌握在多個人手中,就不可能將使用方式歸因於特定使用者。僅依靠 AAD 身份驗證可以更輕鬆地將存儲存取許可權綁定到使用者。",
- "guid": "15f51296-5398-4e6d-bd22-7dd142b06c21",
- "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "a11ecab0-db47-46f7-9aa7-17764e7e45a1",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#microsoft-initiated-failover",
+ "service": "IoT",
"severity": "高",
- "text": "請考慮禁用存儲帳戶密鑰,以便僅支援 AAD 訪問(和使用者委派 SAS)。",
- "waf": "安全"
+ "text": "瞭解如何觸發手動故障轉移。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "使用活動日誌數據來標識查看或更改存儲帳戶安全性的“時間”、“人員”、“內容”和“方式”(即存儲帳戶密鑰、訪問策略等)。",
- "guid": "d7999a64-6f43-489a-af42-c78e78c06a73",
- "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.Devices/IotHubs",
+ "checklist": "IoT Hub Review",
+ "guid": "f9db8dfb-1194-460b-aedd-34dd6a69db22",
+ "link": "https://learn.microsoft.com/azure/iot-hub/iot-hub-ha-dr#failback",
+ "service": "IoT",
"severity": "高",
- "text": "請考慮使用 Azure Monitor 審核存儲帳戶上的控制平面操作",
- "waf": "安全"
+ "text": "瞭解如何在故障轉移後進行故障回復。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "通過金鑰過期策略,您可以設置帳戶訪問金鑰輪換的提醒。如果指定的時間間隔已過且鍵尚未旋轉,則會顯示提醒。",
- "guid": "a22a4956-e7a8-4dc4-a20e-27c3e29711b1",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
+ "service": "Azure MySQL",
"severity": "中等",
- "text": "使用存儲帳戶密鑰時,請考慮啟用“金鑰過期策略”",
- "waf": "安全"
+ "text": "利用靈活伺服器",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS 過期策略指定 SAS 有效的建議時間間隔。SAS 過期策略適用於服務 SAS 或帳戶 SAS。當使用者生成的服務 SAS 或帳戶 SAS 的有效期間隔大於建議的時間間隔時,他們會看到警告。",
- "guid": "352beee0-79b5-488d-bfc4-972cd3cd21bf",
- "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
+ "service": "Azure MySQL",
+ "severity": "高",
+ "text": "利用區域適用的可用區",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "Microsoft.DBforMySQL/servers",
+ "checklist": "MySQL Review Checklist",
+ "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
+ "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
+ "service": "Azure MySQL",
"severity": "中等",
- "text": "考慮配置 SAS 過期策略",
- "waf": "安全"
+ "text": "將數據傳入複製用於跨區域災難恢復方案",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "存儲存取策略提供了撤銷服務 SAS 許可權的選項,而無需重新生成儲存帳戶密鑰。",
- "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56",
- "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "6d8e32a8-3892-479d-a40b-10f6b4f6f298",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concepts-blue-green-deployment-strategies",
+ "service": "Spring Apps",
"severity": "中等",
- "text": "考慮將 SAS 連結到儲存存取策略",
- "waf": "安全"
+ "text": "Azure Spring Apps 允許對每個應用進行兩次部署,其中只有一個部署接收生產流量。您可以使用藍綠部署策略實現零停機時間。藍綠部署僅在標準層和企業層中可用。可以使用 CI/CD 和 ADO/GitHub 操作自動執行部署",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "fbcb40ac-9480-4a6d-bcf4-8081252a6716",
+ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region",
+ "service": "Spring Apps",
+ "severity": "中等",
+ "text": "可以在多個區域中為應用程式創建 Azure Spring Apps 實例,並且流量管理器/Front Door 可以路由流量。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36",
- "link": "https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ff1ae6a7-9301-4feb-9d11-56cd72f1d4ef",
+ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps",
+ "service": "Spring Apps",
"severity": "中等",
- "text": "請考慮配置應用程式的原始程式碼儲存庫,以檢測簽入的連接字串和存儲帳戶密鑰。",
- "waf": "安全"
+ "text": "在支持的區域中,Azure Spring Apps 可以部署為區域冗餘,這意味著實例會自動分佈在可用性區域之間。此功能僅在標準層和企業層中可用。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "理想情況下,應用程式應使用託管標識向 Azure 儲存進行身份驗證。如果無法做到這一點,請考慮在 Azure KeyVault 或等效服務中使用存儲憑據(連接字串、存儲帳戶密鑰、SAS、服務主體憑據)。",
- "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d",
- "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys",
- "service": "Azure Storage",
- "severity": "高",
- "text": "請考慮將連接字串儲存在 Azure KeyVault 中(在無法實現託管標識的情況下)",
- "waf": "安全"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "ffc735ad-fbb1-4802-b43f-ad6387c4c066",
+ "link": "https://learn.microsoft.com/azure/spring-apps/concept-understand-app-and-deployment",
+ "service": "Spring Apps",
+ "severity": "中等",
+ "text": "對應用使用1個以上的應用實例",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "在臨時 SAS 服務 SAS 或帳戶 SAS 上使用近期過期時間。這樣,即使 SAS 遭到入侵,它也只能在很短的時間內有效。如果無法引用存儲訪問策略,則此做法尤為重要。近期過期時間還通過限制可上傳到 blob 的時間來限制可寫入 blob 的數據量。",
- "guid": "27138b82-1102-4cac-9eae-01e6e842e52f",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
- "severity": "高",
- "text": "爭取縮短臨時 SAS 的有效期",
- "waf": "安全"
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "7504c230-6035-4183-95a5-85762acc6075",
+ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services",
+ "service": "Spring Apps",
+ "severity": "中等",
+ "text": "使用日誌、指標和跟蹤監視 Azure Spring Apps。將 ASA 與應用程式見解集成,並跟蹤故障並創建工作簿。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "創建 SAS 時,請盡可能具體和嚴格。首選單個資源和操作的 SAS,而不是提供更廣泛訪問許可權的 SAS。",
- "guid": "4721d928-c1b1-4cd5-81e5-4a29a9de399c",
- "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "1eb48d58-3eec-4ef5-80b0-d2b0dde3f0c6",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-configure-enterprise-spring-cloud-gateway",
+ "service": "Spring Apps",
"severity": "中等",
- "text": "將窄範圍應用於SAS",
- "waf": "安全"
+ "text": "在 Spring Cloud Gateway 中設置自動縮放",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS 可以包含用戶端 IP 位址或位址範圍有權使用 SAS 請求資源的參數。",
- "guid": "fd7b28dc-9355-4562-82bf-e4564b0d834a",
- "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas",
- "service": "Azure Storage",
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "97411607-b6fd-4335-99d1-9885faf4e392",
+ "link": "https://learn.microsoft.com/azure/spring-apps/how-to-setup-autoscale",
+ "service": "Spring Apps",
+ "severity": "低",
+ "text": "為具有標準使用量和專用計劃的應用啟用自動縮放。",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "Microsoft.AppPlatform/Spring",
+ "checklist": "Azure Spring Apps Review",
+ "guid": "dfcaffd1-d27c-4ef2-998d-64c1df3a7ac3",
+ "link": "https://learn.microsoft.com/azure/spring-apps/overview",
+ "service": "Spring Apps",
"severity": "中等",
- "text": "盡可能考慮將SAS的範圍限定為特定的用戶端IP位址",
- "waf": "安全"
+ "text": "使用企業計劃為關鍵任務應用提供 Spring Boot 的商業支援。使用其他層,您可以獲得 OSS 支援。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "SAS 無法限制用戶端上傳的數據量;考慮到存儲量隨時間變化的定價模型,驗證用戶端是否惡意上傳了大量內容可能是有意義的。",
- "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e",
- "service": "Azure Storage",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure 事件中心提供靜態數據加密。如果使用自己的金鑰,則仍使用 Microsoft 管理的金鑰對數據進行加密,但此外,Microsoft 管理的金鑰將使用客戶管理的密鑰進行加密。",
+ "guid": "7aaf12e7-b94e-4f6e-847d-2d92981b1cd6",
+ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key",
+ "service": "Event Hubs",
"severity": "低",
- "text": "請考慮在用戶端使用SAS上傳檔后檢查上傳的數據。",
+ "text": "需要時,在靜態數據加密中使用客戶管理的金鑰選項",
+ "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "使用「本地使用者帳戶」通過 SFTP 訪問 Blob 儲存時,“通常”RBAC 控制不適用。通過 NFS 或 REST 進行的 Blob 訪問可能比 SFTP 訪問更嚴格。遺憾的是,截至 2023 年初,本地使用者是 SFTP 端點當前支援的唯一身份管理形式",
- "guid": "ad53cc7c-e1d7-4aaa-a357-1449ab8053d8",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model",
- "service": "Azure Storage",
- "severity": "高",
- "text": "SFTP:限制 SFTP 訪問的「本地使用者」數量,並審核一段時間內是否需要訪問。",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure 事件中心命名空間允許用戶端使用 TLS 1.0 及更高版本發送和接收數據。若要強制實施更嚴格的安全措施,可以將事件中心命名空間配置為要求用戶端使用較新版本的 TLS 發送和接收數據。如果事件中心命名空間需要最低版本的 TLS,則使用舊版本發出的任何請求都將失敗。",
+ "guid": "d2f54b29-769e-43a6-a0e7-828ac936657e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "對請求強制實施傳輸層安全性 (TLS) 的最低要求版本",
+ "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "9f89dc7b-33be-42a1-a27f-7b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization",
- "service": "Azure Storage",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "創建事件中心命名空間時,會自動為命名空間創建名為 RootManageSharedAccessKey 的策略規則。此策略具有整個命名空間的管理許可權。建議您將此規則視為管理根帳戶,不要在應用程式中使用它。建議將 AAD 用作 RBAC 的身份驗證提供程式。",
+ "guid": "13b0f566-4b1e-4944-a459-837ee79d6c6d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies",
+ "service": "Event Hubs",
"severity": "中等",
- "text": "SFTP:SFTP 端點不支持類似 POSIX 的 ACL。",
+ "text": "避免在不必要的情況下使用root帳戶",
+ "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-identities-governance/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "存儲支援 CORS(跨域資源分享),即一種 HTTP 功能,使來自不同域的 Web 應用程式能夠放寬同源策略。啟用 CORS 時,請將 CorsRules 保留為最低許可權。",
- "guid": "cef39812-bd46-43cb-aac8-ac199ebb91a3",
- "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services",
- "service": "Azure Storage",
- "severity": "高",
- "text": "避免過於寬泛的 CORS 策略",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure 資源的託管標識可以使用 Azure AD 憑據從 Azure 虛擬機 (VM)、函數應用、虛擬機規模集和其他服務中運行的應用程式授權訪問事件中心資源。通過將 Azure 資源的託管標識與 Azure AD 身份驗證結合使用,可以避免將憑據存儲在雲中運行的應用程式中。",
+ "guid": "3a365a5c-7acb-4e48-abd5-4cd79f2e8776",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "如果可能,應用程式應使用託管標識向 Azure 事件中心進行身份驗證。如果沒有,請考慮在 Azure Key Vault 或等效服務中擁有存儲憑據(SAS、服務主體憑據)",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "靜態數據始終在伺服器端加密,此外也可能在用戶端加密。伺服器端加密可能使用平臺管理的金鑰(預設)或客戶管理的金鑰進行。用戶端加密可以通過讓用戶端按 blob 向 Azure 儲存提供加密/解密金鑰,或者完全在用戶端處理加密來實現。因此,完全不依賴 Azure 存儲來保證機密性。",
- "guid": "3d90cae2-cc88-4137-86f7-c0cbafe61464",
- "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
- "service": "Azure Storage",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "創建許可權時,請對用戶端對 Azure 事件中心的訪問提供精細控制。Azure 事件中心中的許可權可以而且應該限定為單個資源級別,例如消費者組、事件中心實體、事件中心命名空間等。",
+ "guid": "8357c559-675c-45ee-a5b8-6ad8844ce3b2",
+ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs",
+ "service": "Event Hubs",
"severity": "高",
- "text": "確定應如何加密靜態數據。了解數據的線程模型。",
+ "text": "使用最低特權數據平面 RBAC",
+ "training": "https://learn.microsoft.com/learn/modules/explore-basic-services-identity-types/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "8dd457e9-2713-48b8-8110-2cac6eae01e6",
- "link": "https://learn.microsoft.com/azure/storage/common/customer-managed-keys-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json",
- "service": "Azure Storage",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "Azure 事件中心資源日誌包括操作日誌、虛擬網路和 Kafka 日誌。運行時審核日誌捕獲事件中心中所有數據平面訪問操作(例如發送或接收事件)的聚合診斷資訊。",
+ "guid": "b38b875b-a1cf-4104-a900-3a4d3ce474db",
+ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference",
+ "service": "Event Hubs",
"severity": "中等",
- "text": "確定應使用哪種/是否應使用平臺加密。",
+ "text": "啟用記錄以進行安全調查。使用 Azure Monitor 捕獲指標和日誌,例如資源日誌、運行時審核日誌和 Kafka 紀錄",
+ "training": "https://learn.microsoft.com/learn/paths/manage-identity-and-access/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "guid": "e842e52f-4721-4d92-ac1b-1cd521e54a29",
- "link": "https://learn.microsoft.com/azure/storage/blobs/encryption-customer-provided-keys",
- "service": "Azure Storage",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "默認情況下,Azure 事件中心具有公共IP位址,並且可通過Internet訪問。專用終結點允許虛擬網路和 Azure 事件中心之間的流量遍歷 Microsoft 主幹網路。除此之外,如果未使用公共終結點,則應禁用這些終結點。",
+ "guid": "5abca2a4-eda1-4dae-8cc9-5d48c6b791dc",
+ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service",
+ "service": "Event Hubs",
"severity": "中等",
- "text": "確定應使用哪種/是否應使用用戶端加密。",
+ "text": "請考慮使用專用終結點訪問 Azure 事件中心,並在適用時禁用公用網路訪問。",
+ "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Azure Blob Storage Review",
- "description": "利用 Resource Graph 資源管理器(資源 | where type == 'microsoft.storage/storageaccounts' | where properties['allowBlobPublicAccess'] == true)查找允許匿名 blob 訪問的存儲帳戶。",
- "guid": "659ae558-b937-4d49-a5e1-112dbd7ba012",
- "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",
- "severity": "高",
- "text": "考慮是否需要公共 blob 訪問,或者是否可以對某些存儲帳戶禁用公共 blob 訪問。",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "使用IP防火牆,可以將公共終結點進一步限製為僅一組IPv4位址或 CIDR(無類別域間路由)表示法的IPv4位址範圍。",
+ "guid": "a0e6c465-89e5-458b-a37d-3974d1112dbd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "請考慮僅允許從特定IP位址或範圍訪問 Azure 事件中心命名空間",
+ "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
"waf": "安全"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "388c3e25-e800-4ad2-9df3-f3d6ae1050b7",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "31d41e36-11c8-417b-8afb-c410d4391898",
+ "link": "https://github.com/Azure/fta-resiliencyplaybooks/blob/main/paas-foundations-playbooks-AEH_v1.docx",
+ "service": "Event Hubs",
"severity": "中等",
- "text": "利用靈活伺服器",
+ "text": "利用 FTA 彈性手冊",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "de3aad1e-8c38-4ec9-9666-7313c005674b",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#high-availability-within-and-across-availability-zones",
- "service": "Azure MySQL",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "對於從門戶創建的新 EH 命名空間,在啟用區域的區域中具有高級、專用或標準 SKU,將自動啟用此功能。EH 元數據和事件數據本身都是跨區域複製的",
+ "guid": "f15bce21-9e4a-40eb-9787-9424d226786d",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones",
+ "service": "Event Hubs",
"severity": "高",
- "text": "利用區域適用的可用區",
- "waf": "可靠性"
- },
- {
- "arm-service": "Microsoft.DBforMySQL/servers",
- "checklist": "MySQL Review Checklist",
- "guid": "1e944a45-9c37-43e7-bd61-623b365a917e",
- "link": "https://learn.microsoft.com/azure/mysql/flexible-server/overview#setup-hybrid-or-multi-cloud-data-synchronization-with-data-in-replication",
- "service": "Azure MySQL",
- "severity": "中等",
- "text": "將數據傳入複製用於跨區域災難恢復方案",
+ "text": "利用可用區(如果區域適用)",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "cb26b2ba-a9db-45d1-8260-d9c6ec1447d9",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/single-tenant-overview-compare",
- "service": "IoT Hub DPS",
- "severity": "高",
- "text": "根據業務和 SLO 要求選擇正確的邏輯應用託管計劃",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "20b56c56-ad58-4519-8f82-735c586bb281",
+ "link": "https://learn.microsoft.com/azure/event-hubs/compare-tiers",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "使用高級或專用 SKU 實現可預測的性能",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "f6dd7977-1123-4f39-b488-f91415a8430a",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "IoT Hub DPS",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "啟用內置異地災難恢復功能后,可確保命名空間的整個配置(事件中心、消費者組和設置)從主命名空間持續複製到輔助命名空間,並允許隨時從主命名空間向輔助命名空間進行一次故障轉移。主動/被動功能旨在更輕鬆地從失敗的 Azure 區域中恢復和放棄,而無需更改應用程式配置",
+ "guid": "dc15a1c0-75ee-49f1-90ac-ccd579376bcd",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal",
+ "service": "Event Hubs",
"severity": "高",
- "text": "使用區域冗餘和可用性區域保護邏輯應用免受區域故障的影響",
+ "text": "使用主動被動配置規劃異地災難恢復",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "8aed4fbf-0830-4883-899d-222a154af478",
- "link": "https://learn.microsoft.com/en-us/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "IoT Hub DPS",
- "severity": "高",
- "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "description": "應用於無法容忍關閉區域中事件數據中斷或丟失的DR配置。對於這些情況,請遵循複製指南,不要使用內置的異地災難恢復功能(主動/被動)。使用「主動/主動」時,在不同區域和命名空間中維護多個事件中心,事件將在中心之間複製",
+ "guid": "6e31b67d-67ba-4591-89c0-9e805d597c7e",
+ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "對於業務關鍵型應用程式,請使用 Active Active 配置",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "da0f033e-d180-4f36-9aa4-c468dba14203",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "IoT Hub DPS",
- "severity": "高",
- "text": "如果部署到獨立環境,請使用或遷移到應用服務環境 (ASE) v3",
+ "arm-service": "microsoft.eventhub/namespaces",
+ "checklist": "Azure Event Hub Review",
+ "guid": "9ced16ad-d186-4f0a-a241-a999a68af77c",
+ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design",
+ "service": "Event Hubs",
+ "severity": "中等",
+ "text": "設計可復原的事件中心",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.Devices/provisioningServices",
- "checklist": "Device Provisioning Service Review",
- "guid": "62711604-c9d1-4b0a-bdb7-5fda54a4f6c1",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "IoT Hub DPS",
+ "checklist": "SAP Checklist",
+ "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85",
+ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview",
+ "service": "SAP",
"severity": "中等",
- "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護邏輯應用代碼",
+ "text": "Azure SAP 解決方案中心 (ACSS) 是一項 Azure 產品/服務,可使 SAP 成為 Azure 上的頂級工作負載。ACSS 是一種端到端解決方案,使你能夠在 Azure 上創建和運行 SAP 系統作為統一的工作負載,並為創新提供更無縫的基礎。可以利用新的和現有的基於 Azure 的 SAP 系統的管理功能。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-center-sap-solutions/?source=recommendations",
"waf": "操作"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d7941d4a-7b6f-458f-8714-2f8f8c059ad4",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5d75e99d-624d-4afe-91d9-e17adc580790",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops",
+ "service": "SAP",
"severity": "中等",
- "text": "在全域級別實施錯誤處理策略",
+ "text": "Azure 支援在Linux和 Windows 中自動執行 SAP 部署。SAP 部署自動化框架是一種開源編排工具,可以部署、安裝和維護 SAP 環境。",
+ "training": "https://github.com/Azure/sap-automation",
"waf": "操作"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0b0c0765-ff37-4369-90bd-3eb23ce71b08",
- "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "d17f6f39-a377-48a2-931f-5ead3ebe33a8",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform",
+ "service": "SAP",
"severity": "中等",
- "text": "確保所有 API 策略都包含一個元素。",
- "waf": "操作"
+ "text": "在符合 RTO 要求的任何時間點和時間範圍內對生產資料庫執行時間點恢復;時間點恢復通常包括操作員在DBMS層上或通過SAP刪除數據時出現的錯誤",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a5c45b03-93b6-42fe-b16b-8fccb6a79902",
- "link": "https://learn.microsoft.com/azure/api-management/policy-fragments",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a",
+ "service": "SAP",
"severity": "中等",
- "text": "使用策略片段可避免在多個 API 中重複相同的策略定義",
- "waf": "操作"
+ "text": "測試備份和恢復時間,以驗證它們是否滿足在災難發生后同時還原所有系統的 RTO 要求。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c3818a95-6ff3-4474-88dc-e809b46dad6a",
- "link": "https://learn.microsoft.com/azure/api-management/monetization-support",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "b651423c-8552-42db-a545-5cb50c05527a",
+ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
+ "service": "SAP",
+ "severity": "高",
+ "text": "可以在配對區域之間複製標準存儲,但不能使用標準存儲來存儲資料庫或虛擬硬碟。您只能在使用的配對區域之間複製備份。對於所有其他數據,請使用本機 DBMS 功能(如 SQL Server Always On 或 SAP HANA 系統複製)運行複製。將 Site Recovery、rsync 或 robocopy 以及其他第三方軟體組合用於 SAP 應用程式層。",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "aa208dca-784f-46c6-9014-cc919c542dc9",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
"severity": "中等",
- "text": "如果您計劃通過 API 獲利,請查看“獲利支援”一文,瞭解最佳做法",
- "waf": "操作"
+ "text": "使用 Azure 可用性區域實現高可用性時,必須考慮 SAP 應用程式伺服器和資料庫伺服器之間的延遲。對於具有高延遲的區域,需要制定操作過程,以確保 SAP 應用程式伺服器和資料庫伺服器始終在同一區域中運行。",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "a7d0840a-c8c4-4e83-adec-5ca578eb4049",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "ba07c007-1f90-43e9-aa4f-601346b80352",
+ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering",
+ "service": "SAP",
"severity": "高",
- "text": "啟用診斷設置以將日誌導出到 Azure Monitor",
- "waf": "操作"
+ "text": "設置從本地到主要和次要 Azure 災難恢復區域的 ExpressRoute 連接。此外,作為使用 ExpressRoute 的替代方法,請考慮設置從本地到主要和輔助 Azure 災難恢復區域的 VPN 連接。",
+ "training": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8691fa38-45ed-4299-a247-fecd98d35deb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-app-insights",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "d2b30195-b11d-4a8f-a672-28b2b4169a7c",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance",
+ "service": "SAP",
+ "severity": "低",
+ "text": "跨區域複製證書、機密或密鑰等金鑰保管庫內容,以便解密DR區域中的數據。",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "05f1101d-250f-40e7-b2a1-b674ab50edbd",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana",
+ "service": "SAP",
"severity": "中等",
- "text": "啟用 Application Insights 以獲取更詳細的遙測數據",
- "waf": "操作"
+ "text": "對等連接主虛擬網路和災難恢復虛擬網路。例如,對於 HANA 系統複製,需要將 SAP HANA DB 虛擬網路對等互連到災難恢復網站的 SAP HANA DB 虛擬網路。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "55fd27bb-76ac-4a91-bc37-049e885be6b7",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor",
- "service": "APIM",
- "severity": "高",
- "text": "針對最關鍵的指標配置警報",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "d3351bf7-628a-46de-917d-dfc11d3b6b40",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels",
+ "service": "SAP",
+ "severity": "低",
+ "text": "如果將 Azure NetApp 檔案儲存用於 SAP 部署,則至少要在兩個區域的高級層中創建兩個 Azure NetApp 檔帳戶。",
+ "training": "https://learn.microsoft.com/training/modules/choose-service-level-azure-netapp-files-hpc-applications/2-identify-decision-criteria",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "39460bdb-156f-4dc2-a87f-1e8c11ab0998",
- "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#certificate-management-in-azure-key-vault",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "726a1d3e-5508-4a06-9d54-93f4b50040c1",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
"severity": "高",
- "text": "確保自定義 SSL 證書儲存在 Azure Key Vault 中,以便可以安全地訪問和更新它們",
- "waf": "安全"
+ "text": "應使用本機資料庫複製技術來同步HA對中的資料庫。",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "e9217997-5f6c-479d-8576-8f2adf706ec8",
- "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-ad-authentication-required-for-data-plane-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "6561f847-3db5-4ff8-9200-5ad3c3b436ad",
+ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq",
+ "service": "SAP",
"severity": "高",
- "text": "使用 Azure AD 保護對 API(數據平面)的傳入請求",
- "waf": "安全"
+ "text": "主虛擬網路 (VNet) 的 CIDR 不應與DR網站的 VNet 的 CIDR 衝突或重疊",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5e5f64ba-c90e-480e-8888-398d96cf0bfb",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-aad",
- "service": "APIM",
- "severity": "中等",
- "text": "使用 Microsoft Entra ID 在開發人員門戶中對用戶進行身份驗證",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a",
+ "service": "SAP",
+ "severity": "高",
+ "text": "使用 Site Recovery 將應用程式伺服器複製到 DR 網站。Site Recovery 還可以説明將中心服務群集 VM 複製到DR網站。調用DR時,需要在DR網站上重新配置Linux Pacemaker群集(例如,替換VIP或SBD、運行 corosync.conf 等)。",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8e574ce-280f-49c8-b2ef-68279b081cf3",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-create-groups",
- "service": "APIM",
- "severity": "中等",
- "text": "創建適當的組來控制產品的可見性",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "8300cb30-766b-4084-b126-0dd8fb1269a1",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
+ "severity": "高",
+ "text": "考慮 SAP 軟體針對單點故障的可用性。這包括應用程式中的單點故障,例如 SAP NetWeaver 和 SAP S/4HANA 架構中使用的 DBMS、SAP ABAP 和 ASCS + SCS。此外,還有其他工具,例如 SAP Web Dispatcher。",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/2-explore-high-availability-disaster-recovery-support-azure-for-sap-workloads?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "06862505-2d9a-4874-9491-2837b00a3475",
- "link": "https://learn.microsoft.com/azure/api-management/backends",
- "service": "APIM",
- "severity": "中等",
- "text": "使用後端功能消除冗餘 API 後端配置",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "56402f11-ccbe-42c3-a2f6-c6f6f38ab579",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations",
+ "service": "SAP",
+ "severity": "高",
+ "text": "對於 SAP 和 SAP 資料庫,請考慮實現自動故障轉移群集。在 Windows 中,Windows Server 故障轉移群集支援故障轉移。在 Linux 中,Linux Pacemaker 或第三方工具(如 SIOS Protection Suite 和 Veritas InfoScale)支援故障轉移。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "03b125d5-b69b-4739-b7fd-84b86da4933e",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal",
- "service": "APIM",
- "severity": "中等",
- "text": "使用命名值存儲可在策略中使用的通用值",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "afae6bec-2671-49ae-bc69-140b8ec8d320",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows",
+ "service": "SAP",
+ "severity": "高",
+ "text": "Azure 不支援主 VM 和輔助 VM 共用 DBMS 數據存儲的體系結構。對於 DBMS 層,常見的體系結構模式是同時複製資料庫,並使用與主虛擬機和輔助虛擬機使用的存儲堆疊不同的存儲堆疊。",
+ "training": "https://learn.microsoft.com/training/paths/ensure-business-continuity-implement-disaster-recovery/?source=recommendationshttps%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Ftraining%2Fpaths%2Fensure-business-continuity-implement-disaster-recovery%2F%3Fsource%3Drecommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "beae759e-4ddb-4326-bf26-47f87d3454b6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region",
- "service": "APIM",
- "severity": "中等",
- "text": "對於DR,利用高級層,跨兩個或多個區域擴展部署,實現99.99%的SLA",
+ "checklist": "SAP Checklist",
+ "guid": "ac614e95-6767-4bc3-b8a4-9953533da6ba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general",
+ "service": "SAP",
+ "severity": "高",
+ "text": "DBMS 數據和事務/重做日誌檔存儲在 Azure 支援的塊存儲或 Azure NetApp 檔中。不支援將 Azure 檔案儲存或 Azure 高級檔儲存作為 DBMS 資料和/或使用 SAP 工作負載重做日誌檔的存儲。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-databases/2-explore-database-support-azure-for-sap-workloads",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "9c8d1664-dd9a-49d4-bd83-950af0af4044",
- "link": "https://learn.microsoft.com/azure/api-management/high-availability",
- "service": "APIM",
- "severity": "中等",
- "text": "在兩個或多個可用區中部署至少一台設備,SLA 提高 99.99%",
+ "checklist": "SAP Checklist",
+ "guid": "1f737179-8e7f-4e1a-a30c-e5a649a3092b",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk",
+ "service": "SAP",
+ "severity": "高",
+ "text": "可以在 Windows 中將 Azure 共用磁碟用於 ASCS + SCS 元件和特定的高可用性方案。為 SAP 應用程式層元件和 DBMS 層單獨設置故障轉移群集。Azure 目前不支援將 SAP 應用程式層元件和 DBMS 層合併到一個故障轉移群集中的高可用性體系結構。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8d2db6e8-85c6-4118-a52c-ae76a4f27934",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "a78b3d31-3170-44f2-b5d7-651a29f4ccf5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections",
+ "service": "SAP",
"severity": "高",
- "text": "確保有一個自動備份例程",
+ "text": "SAP 應用程式層元件 (ASCS) 和 DBMS 層的大多數故障轉移群集都需要故障轉移群集的虛擬 IP 位址。 Azure 負載均衡器應處理所有其他情況的虛擬IP位址。一個設計原則是每個集群配置使用一個負載均衡器。建議使用標準版本的負載均衡器(標準負載均衡器 SKU)。",
+ "training": "https://learn.microsoft.com/training/modules/implement-high-availability-for-sap-workloads-azure/?source=recommendations",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "43e60b94-7bca-43a2-aadf-efb04d63a485",
- "link": "https://learn.microsoft.com/azure/api-management/retry-policy",
- "service": "APIM",
- "severity": "中等",
- "text": "使用策略添加故障轉移後端 URL 和緩存,以減少失敗的調用。",
+ "checklist": "SAP Checklist",
+ "guid": "1a541741-5833-4fb4-ae3c-2df743165c3a",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations",
+ "service": "SAP",
+ "severity": "高",
+ "text": "確保在負載均衡器上啟用了浮動IP",
+ "training": "https://learn.microsoft.com/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "8210699f-8d43-45c2-8f19-57e54134bd8f",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs",
- "service": "APIM",
- "severity": "低",
- "text": "如果需要以高性能級別進行日誌記錄,請考慮事件中心策略",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "c47cc4f3-f105-452c-845e-9b307b3856c1",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
+ "service": "SAP",
+ "severity": "高",
+ "text": "在部署高可用性基礎結構之前,請根據所選的區域確定是使用 Azure 可用性集還是可用性區域進行部署。",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "121bfc39-fa7b-4096-b93b-ab56c1bc0bed",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling",
- "service": "APIM",
- "severity": "中等",
- "text": "應用限制策略來控制每秒的請求數",
- "training": "https://learn.microsoft.com/training/modules/protect-apis-on-api-management/",
- "waf": "性能"
+ "checklist": "SAP Checklist",
+ "guid": "844f69c3-07e5-4ec1-bff7-4be27bcf5fea",
+ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1",
+ "service": "SAP",
+ "severity": "高",
+ "text": "如果要滿足 SAP 元件(中央服務、應用程式伺服器和資料庫)應用程式的基礎結構 SLA,則必須為所有元件選擇相同的高可用性選項(VM、可用性集、可用性區域)。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "bb5f356b-3daf-47a2-a9ee-867a8100bbd5",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-autoscale",
- "service": "APIM",
- "severity": "中等",
- "text": "配置自動縮放以在負載增加時橫向擴展實例數",
- "waf": "性能"
+ "checklist": "SAP Checklist",
+ "guid": "cbe05bbe-209d-4490-ba47-778424d11678",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "severity": "高",
+ "text": "不要在同一可用性集中混合使用不同角色的伺服器。將中央服務 VM、資料庫 VM、應用程式 VM 保留在自己的可用性集中",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "84b94abb-59b6-4b9d-8587-3413669468e8",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-provision-self-hosted-gateway",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "f2201000-d045-40a6-a79a-d7cdc01b4d86",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location",
+ "service": "SAP",
"severity": "中等",
- "text": "在 Azure 沒有靠近後端 API 的區域的地方部署自承載閘道。",
- "waf": "性能"
+ "text": "除非使用鄰近放置組,否則無法在 Azure 可用性區域內部署 Azure 可用性集。",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1fe8db45-a017-4888-8c4d-4422583cfae0",
- "link": "https://learn.microsoft.com/azure/api-management/upgrade-and-scale#upgrade-and-scale",
- "service": "APIM",
- "severity": "中等",
- "text": "將高級層用於生產工作負載。",
+ "checklist": "SAP Checklist",
+ "guid": "9674e7c7-7796-4181-8920-09f4429543ba",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview",
+ "service": "SAP",
+ "severity": "高",
+ "text": "創建可用性集時,請使用最大數量的容錯域和更新可用的域。例如,如果在一個可用性集中部署兩個以上的 VM,請使用最大數量的容錯域(三個)和足夠的更新域來限制潛在的物理硬體故障、網路中斷或電源中斷的影響,以及 Azure 計劃內維護。默認的容錯域數為 2,以後無法連線更改。",
+ "training": "https://learn.microsoft.com/training/modules/configure-virtual-machine-availability/?source=recommendations",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "1b8d68a4-66cd-44d5-ba94-3ee94440e8d6",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services",
- "service": "APIM",
- "severity": "中等",
- "text": "在多區域模型中,使用策略根據可用性或延遲將請求路由到區域後端。",
+ "checklist": "SAP Checklist",
+ "guid": "ae4ecb95-b70f-428f-8b9a-4c5b7e3478a2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
+ "severity": "高",
+ "text": "在可用性集部署中使用 Azure 鄰近放置組時,所有三個 SAP 元件(中央服務、應用程式伺服器和資料庫)都應位於同一鄰近放置組中。",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "46f07d33-ef9a-44e8-8f98-67c097c5d8cd",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "5d2fa56c-56ad-4484-88fe-72734c486ba2",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "高",
- "text": "注意APIM的局限性",
+ "text": "每個 SAP SID 使用一個鄰近放置組。組不跨可用性區域或 Azure 區域",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "10f58602-f0f9-4d77-972a-956f6e0f2600",
- "link": "https://learn.microsoft.com/en-us/azure/api-management/self-hosted-gateway-overview",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "bca3b10e-0ff5-4aec-ac16-4c4bd1a1c13f",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"severity": "高",
- "text": "確保自承載閘道部署具有復原能力。",
+ "text": "根據操作系統的不同,使用以下服務之一來運行 SAP 中心服務群集。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
"waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "7519e385-a88b-4d34-966b-6269d686e890",
- "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "ed46b937-913e-4018-9c62-8393ab037e53",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid",
+ "service": "SAP",
"severity": "中等",
- "text": "在APIM前面使用 Azure Front Door 進行多區域部署",
- "waf": "性能"
+ "text": "Azure 目前不支援將 ASCS 和 DB HA 組合在同一 Linux Pacemaker 群集中;將它們分成單獨的集群。但是,最多可以將五個多個中心服務群集合併到一對 VM 中。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "cd45c90e-7690-4753-930b-bf290c69c074",
- "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#virtual-network-integration",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "f656e745-0cfb-453e-8008-0528fa21c933",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery",
+ "service": "SAP",
"severity": "中等",
- "text": "在虛擬網络 (VNet) 中部署服務Deploy the service within a Virtual Network (VNet)",
- "waf": "安全"
+ "text": "在可用性集或可用性區域中的高可用性對中部署兩個 VM。這些 VM 的大小應相同,並具有相同的存儲配置。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "02661582-b3d1-48d1-9d7b-c6a918a0ca33",
- "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",
+ "checklist": "SAP Checklist",
+ "guid": "7f684ebc-95da-425e-b329-e782dbed050f",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance",
+ "service": "SAP",
"severity": "中等",
- "text": "將網路安全組 (NSG) 部署到子網,以限制或監視進出APIM的流量。",
- "waf": "安全"
+ "text": "Azure 支援在 Red Hat Enterprise Linux (RHEL) 上運行的同一高可用性群集上安裝和配置 SAP HANA 和 ASCS/SCS 和 ERS 實例。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "67437a28-2721-4a2c-becd-caa54c8237a5",
- "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",
- "severity": "中等",
- "text": "部署專用終結點以在未將APIM部署到 VNet 時篩選傳入流量。",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "07991f7d-6598-4d90-9431-45c62605d3a5",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "高",
+ "text": "在高級託管 SSD 上運行所有生產系統,並使用 Azure NetApp 檔或超級磁碟存儲。至少OS磁碟應位於高級層,以便您可以獲得更好的性能和最佳SLA。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "d698adbd-3288-44cb-b10a-9b572da395ae",
- "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#disable-public-network-access",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "73cdaecc-7d74-48d8-a040-88416eebc98c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage",
+ "service": "SAP",
+ "severity": "高",
+ "text": "應僅在 SAP 認證的存儲類型上運行 Azure 上的 SAP HANA。請注意,某些卷必須在某些磁碟配置(如果適用)上運行。這些配置包括啟用寫入加速器和使用高級存儲。您還需要確保在儲存上運行的檔案系統與在電腦上運行的 DBMS 相容。",
+ "training": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1?source=recommendations",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "51904867-a70e-4fa0-b4ff-3e6292846d7c",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage",
+ "service": "SAP",
+ "severity": "高",
+ "text": "請考慮根據用於 SAP 工作負載的儲存類型配置高可用性。Azure Site Recovery 不支援 Azure 中提供的某些存儲服務,因此高可用性配置可能會有所不同。",
+ "training": "https://learn.microsoft.com/training/modules/implement-disaster-recovery-for-sap-workloads-azure/2-explore-disaster-recovery-sap-workloads",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "1ac2d928-c9b7-42c6-ba18-23b1aea78693",
+ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
"severity": "高",
- "text": "禁用公網訪問",
- "waf": "安全"
+ "text": "不同的本機 Azure 儲存服務(如 Azure 檔存儲、Azure NetApp 檔、Azure 共用磁碟)可能並非在所有區域都可用。因此,若要在故障轉移后在DR區域上設置類似的SAP,請確保在DR網站中提供相應的存儲服務。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "0674d750-0c6f-4ac0-8717-ceec04d0bdbd",
- "link": "https://learn.microsoft.com/azure/api-management/automation-manage-api-management",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "925d1f8c-01f3-4a67-948e-aabf0a1fad60",
+ "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",
"severity": "中等",
- "text": "使用 PowerShell 自動化腳本簡化管理",
- "waf": "操作"
+ "text": "自動執行 SAP System Start-Stop 以管理成本。",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "c385bfcd-49fd-4786-81ba-cedbb4c57345",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations",
- "service": "APIM",
- "severity": "中等",
- "text": "通過基礎架構即代碼配置APIM。查看 Cloud Adaption Framework 中的 DevOps 最佳實踐 APIM 登陸區域加速器",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "71dc00cd-4392-4262-8949-20c05e6c0333",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "低",
+ "text": "如果將 Azure 高級存儲與 SAP HANA 配合使用,則可以使用 Azure 標準 SSD 儲存來選擇成本敏感的儲存解決方案。但是,請注意,選擇“標準 SSD”或“標準 HDD Azure”存儲將影響各個 VM 的 SLA。此外,對於具有較低 I/O 輸送量和低延遲的系統(例如非生產環境),可以使用較低系列的 VM。",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "6c3a27c0-197f-426c-9ffa-86fed51d9ab6",
- "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial",
- "service": "APIM",
- "severity": "中等",
- "text": "促進 Visual Studio Code APIM 擴展的使用,以加快 API 開發速度",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "9877f353-2591-4e8b-8381-e9043fed1010",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1",
+ "service": "SAP",
+ "severity": "低",
+ "text": "作為成本較低的替代配置(多用途),可以為非生產 HANA 資料庫伺服器 VM 選擇低性能 SKU。但是,請務必注意,某些 VM 類型(如 E 系列)未經 HANA 認證(SAP HANA 硬體目錄),或者無法實現小於 1 毫秒的存儲延遲。",
+ "waf": "成本"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "354f1c03-8112-4965-85ad-c0074bddf231",
- "link": "https://learn.microsoft.com/azure/api-management/devops-api-development-templates",
- "service": "APIM",
- "severity": "中等",
- "text": "在工作流中實施DevOps和 CI/CD",
- "waf": "操作"
+ "checklist": "SAP Checklist",
+ "guid": "fda1dbf3-dc95-4d48-a7c7-91dca0f6c565",
+ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security",
+ "service": "SAP",
+ "severity": "高",
+ "text": "對管理組、訂閱、資源組和資源強制實施 RBAC 模型",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "b6439493-426a-45f3-9697-cf65baee208d",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates-for-clients",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "45911475-e39e-4530-accc-d979366bcda2",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "中等",
- "text": "使用用戶端證書身份驗證保護 API",
+ "text": "強制實施主體傳播,以便透過雲連接器將身份從 SAP 雲應用程式轉發到 SAP 本地(包括 IaaS)",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/2-explore-azure-virtual-machine-auth-access-control",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2a67d143-1033-4c0a-8732-680896478f08",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-mutual-certificates",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "750ab1ab-039d-495d-94c7-c8929cb107d5",
+ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration",
+ "service": "SAP",
"severity": "中等",
- "text": "使用用戶端證書身份驗證保護後端服務",
+ "text": "使用 SAML 通過 Azure AD 實現 SAP SaaS 應用程式(如 SAP Analytics Cloud、SAP Cloud Platform、Business by Design、SAP Qualtrics 和 SAP C4C)的 SSO。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "074435f5-4a46-41ac-b521-d6114cb5d845",
- "link": "https://learn.microsoft.com/azure/api-management/mitigate-owasp-api-threats",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "325ae525-ba34-4d46-a5e2-213ace7bb122",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
"severity": "中等",
- "text": "查看“緩解 OWASP API 安全前 10 大威脅的建議”一文,並查看適用於您的 API 的內容",
+ "text": "使用 SAML 對基於 SAP NetWeaver 的 Web 應用程式(如 SAP Fiori 和 SAP Web GUI)實施 SSO。",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "5507c4b8-a7f8-41d6-9661-418c987100c9",
- "link": "https://learn.microsoft.com/azure/api-management/authorizations-overview",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1",
+ "service": "SAP",
"severity": "中等",
- "text": "使用授權功能簡化後端 API 的 OAuth 2.0 令牌管理",
+ "text": "使用 SAML 對基於 SAP NetWeaver 的 Web 應用程式(如 SAP Fiori 和 SAP Web GUI)實施 SSO。",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/6-exercise-integrate-azure-active-directory-sap-fiori",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "2deee033-b906-4bc2-9f26-c8d3699fe091",
- "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-manage-protocols-ciphers",
- "service": "APIM",
- "severity": "高",
- "text": "加密傳輸中的資訊時,請使用最新的 TLS 版本。盡可能禁用過時和不必要的協議和密碼。",
+ "checklist": "SAP Checklist",
+ "guid": "f29676ef-0c9c-4c4d-ab21-a55504c0c829",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "可以使用SAP NetWeaver SSO 或合作夥伴解決方案將 SSO 實現到 SAP GUI。",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/8-exercise-integrate-azure-active-directory-sap-netweaver",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "f8af3d94-1d2b-4070-846f-849197524258",
- "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#im-8-restrict-the-exposure-of-credential-and-secrets",
- "service": "APIM",
- "severity": "高",
- "text": "確保機密(命名值)存儲在 Azure Key Vault 中,以便可以安全地訪問和更新它們",
+ "checklist": "SAP Checklist",
+ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "對於 SAP GUI 和 Web 瀏覽器存取的 SSO,請實施 SNC/Kerberos/SPNEGO(簡單且受保護的 GSSAPI 協商機制),因為它易於配置和維護。對於使用 X.509 用戶端證書的 SSO,請考慮 SAP 安全登錄伺服器,它是 SAP SSO 解決方案的一個元件。",
+ "training": "https://learn.microsoft.com/training/modules/explore-identity-services/9-exercise-integrate-active-directory-sap-single-sign-on",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "791abd8b-7706-4e31-9569-afefde724be3",
- "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#managed-identities",
- "service": "APIM",
+ "checklist": "SAP Checklist",
+ "guid": "6c8bcbf4-5bbe-4609-b8a0-3e97778424d6",
+ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/",
+ "service": "SAP",
"severity": "中等",
- "text": "盡可能使用託管標識向其他 Azure 資源進行身份驗證",
+ "text": "對於 SAP GUI 和 Web 瀏覽器存取的 SSO,請實施 SNC/Kerberos/SPNEGO(簡單且受保護的 GSSAPI 協商機制),因為它易於配置和維護。對於使用 X.509 用戶端證書的 SSO,請考慮 SAP 安全登錄伺服器,它是 SAP SSO 解決方案的一個元件。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.ApiManagement/service",
- "checklist": "Azure API Management Review",
- "guid": "220c4ca6-6688-476b-b2b5-425a78e6fb87",
- "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",
- "severity": "高",
- "text": "使用 APIM 前面部署應用程式閘道來使用 Web 應用程式防火牆 (WAF)",
+ "checklist": "SAP Checklist",
+ "guid": "16785d6f-a96c-496a-b885-18f482734c88",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 OAuth for SAP NetWeaver 實現 SSO,以允許第三方或自定義應用程式訪問 SAP NetWeaver OData 服務。",
"waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "高",
- "text": "根據您的業務和 SLO 要求選擇正確的功能託管計劃",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "a747c350-8d4c-449c-93af-393dbca77c48",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "實現 SSO 到 SAP HANA",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
- "service": "Azure Functions",
- "severity": "高",
- "text": "利用區域適用的可用區(不適用於消耗層)",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "c7bae5bf-daf9-4761-9c56-f92891890aa4",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "將 Azure AD 視為 RISE 上託管的 SAP 系統的標識提供者。有關詳細資訊,請參閱將服務與 Azure AD 集成。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "e4e48226-ce54-44b6-bb6b-bfa15bd8f753",
+ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md",
+ "service": "SAP",
"severity": "中等",
- "text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
- "waf": "可靠性"
+ "text": "對於訪問 SAP 的應用程式,可能需要使用主體傳播來建立 SSO。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
- "service": "Azure Functions",
- "severity": "高",
- "text": "如果部署到獨立環境,請使用或遷移到應用服務環境 (ASE) v3",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "59921095-4980-4fc1-a5b6-524a5a560c79",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "如果使用的是需要 SAP Identity Authentication Service (IAS) 的 SAP BTP 服務或 SaaS 解決方案,請考慮在 SAP Cloud Identity Authentication Services 和 Azure AD 之間實現 SSO 以存取這些 SAP 服務。此集成允許 SAP IAS 充當代理標識提供者,並將身份驗證請求轉發到 Azure AD,作為中央使用者存儲和標識提供者。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "Azure Functions",
- "severity": "高",
- "text": "確保為應用服務計劃上運行的所有函數應用啟用“始終開啟”",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "a709c664-317e-41e4-9e34-67d9016a86f4",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "實現 SSO 到 SAP BTP",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "01f11b7f-38df-4251-9c76-4dec19abd3e8",
+ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial",
+ "service": "SAP",
"severity": "中等",
- "text": "將函數應用與其自己的存儲帳戶配對。盡量不要重用函數應用的存儲帳戶,除非它們緊密耦合",
- "waf": "可靠性"
+ "text": "如果使用的是 SAP SuccessFactors,請考慮使用 Azure AD 自動使用者預配。通過此整合,當你向 SAP SuccessFactors 添加新員工時,可以在 Azure AD 中自動建立使用者帳戶。 (可選)可以在 Microsoft 365 或 Azure AD 支援的其他 SaaS 應用程式中建立使用者帳戶。 使用將電子郵件地址寫回 SAP SuccessFactors。",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Azure Function Review",
- "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
- "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
- "service": "Azure Functions",
+ "checklist": "SAP Checklist",
+ "guid": "6ba28021-4591-4147-9e39-e5309cccd979",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups",
+ "service": "SAP",
"severity": "中等",
- "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護函數應用代碼",
+ "text": "對 SAP 訂閱強制實施現有管理組策略",
+ "training": "https://learn.microsoft.com/training/modules/enterprise-scale-organization/4-management-group-subscription-organization",
"waf": "操作"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "a95b86ad-8840-48e3-9273-4b875ba18f20",
- "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models",
- "service": "Azure Monitor",
- "text": "Azure Monitor 中的數據收集規則 -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "366bcda2-750a-4b1a-a039-d95d54c7c892",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "高",
+ "text": "將緊密耦合的應用程式集成到同一個 SAP 訂閱中,以避免額外的路由和管理複雜性",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-subscriptions",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "45901365-d38e-443f-abcb-d868266abca2",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation",
- "service": "Azure Backup",
- "text": "檢查未找到底層數據源的備份實例",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "9cb107d5-325a-4e52-9ba3-4d4685e2213a",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "高",
+ "text": "利用訂閱作為縮放單元並擴展我們的資源,請考慮按環境部署訂閱,例如。沙箱、非生產、生產",
+ "training": "https://learn.microsoft.com/training/modules/configure-subscriptions/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "64f9a19a-f29c-495d-94c6-c7919ca0f6c5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/lighthouse",
- "service": "VM",
- "text": "刪除或存檔未關聯的服務(磁碟、網卡、IP 位址等)",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "ce7bb122-f7c9-45f0-9e15-4e3aa3592829",
+ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview",
+ "service": "SAP",
+ "severity": "高",
+ "text": "確保在訂閱預配過程中增加配額(例如,訂閱中可用的 VM 核心總數)",
+ "training": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "69bad37a-ad53-4cc7-ae1d-76667357c449",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations",
- "service": "Azure Backup",
- "text": "考慮在網站恢復存儲和非任務關鍵型應用程式的備份之間取得良好的平衡",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "ce4fab2f-433a-4d59-a5a9-3d1032e03ebc",
+ "link": "https://learn.microsoft.com/rest/api/reserved-vm-instances/quotaapi?branch=capacity",
+ "service": "SAP",
+ "severity": "低",
+ "text": "配額 API 是一個 REST API,可用於查看和管理 Azure 服務的配額。如有必要,請考慮使用它。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "674b5ed8-5a85-49c7-933b-e2a1a27b765a",
- "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts",
- "service": "Azure Monitor",
- "text": "檢查 40 個不同 Log Analytics 工作區之間的支出和節省機會 - 對非生產工作區使用不同的保留和數據收集 - 創建每日上限以實現意識和層大小調整 - 如果確實設置了每日上限,除了在達到上限時創建警報外,請確保還創建警報規則,以便在達到某個百分比(例如 90%)時收到通知。- 如果可能,考慮工作空間改造 - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/understand-work-scopes",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "cbfad17b-f240-42bf-a1d8-f4f4cee661c8",
+ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal",
+ "service": "SAP",
+ "severity": "高",
+ "text": "如果部署到可用性區域,請確保在配額獲得批准后,VM 的區域部署可用。提交支援請求,其中包含所需的訂閱、VM 系列、CPU 數量和可用性區域。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Insights/components",
- "checklist": "Cost Optimization Checklist",
- "guid": "91be1f38-8ef3-494c-8bd4-63cbbac75819",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Azure Monitor",
- "text": "強制執行清除日誌策略和自動化(如果需要,可以將記錄移至冷存儲)",
- "training": "https://www.youtube.com/watch?v=nHQYcYGKuyw",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "e6e20617-3686-4af4-9791-f8935ada4332",
+ "link": "https://azure.microsoft.com/explore/global-infrastructure/products-by-region/",
+ "service": "SAP",
+ "severity": "高",
+ "text": "確保所需的服務和功能在所選部署區域內可用,例如。ANF、區域等",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/migrate/azure-best-practices/multiple-regions?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6aae01e6-a84d-4e5d-b36d-1d92881a1bd5",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "VM",
- "text": "檢查磁碟是否確實需要,如果不是:刪除。如果需要,請尋找較低的儲存層或使用備份 -",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/manage-automation",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "4e138115-2318-41aa-9174-26943ff8ae7d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "利用 Azure 資源標記進行成本分類和資源分組(:BillTo、部門(或營業單位)、環境(生產、階段、開發)、層(Web 層、應用層)、應用程式擁有者、ProjectName)",
+ "training": "https://learn.microsoft.com/training/paths/implement-resource-mgmt-security/",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d1e44a19-659d-4395-afd7-7289b835556d",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations",
- "service": "Storage",
- "text": "考慮使用自定義規則將未使用的存儲移動到較低層 - https://learn.microsoft.com/azure/storage/blobs/lifecycle-management-policy-configure",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "2f7c95f0-6e15-44e3-aa35-92829e6e2061",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
+ "severity": "高",
+ "text": "使用 Azure 備份服務幫助保護 HANA 資料庫。",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-backup-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "d0102cac-6aae-401e-9a84-de5de36d1d92",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "VM",
- "text": "確保 advisor 配置為適合 VM 大小調整",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "302a2fbf-3745-4a5f-a365-c9d1a16ca22c",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "如果為 HANA、Oracle 或 DB2 資料庫部署 Azure NetApp 檔,請使用 Azure 應用程式一致性快照工具( AzAcSnap )來創建應用程式一致性快照。AzAcSnap 還支援 Oracle 資料庫。請考慮在中央 VM 上使用 AzAcSnap,而不是在單個 VM 上使用 AzAcSnap。",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "description": "通過在成本分析系統中搜索計量類別許可證進行檢查",
- "guid": "59ae568b-a38d-4498-9e22-13dbd7bb012f",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations",
- "service": "VM",
- "text": "在所有 Windows VM 上運行腳本 https://learn.microsoft.com/azure/virtual-machines/windows/hybrid-use-benefit-licensing?ref=andrewmatveychuk.com#convert-an-existing-vm-using-azure-hybrid-benefit-for-windows-server - 如果頻繁創建 Windows VM,請考慮實施策略",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "42d37218-a3a7-45df-bff6-1173e7f249ea",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "severity": "高",
+ "text": "確保操作系統和 SAP 系統之間的時區匹配。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "7b95e06e-158e-42ea-9992-c2de6e2065b3",
- "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure",
- "service": "VM",
- "text": "如果您已經擁有許可證,也可以將其置於 AHUB https://learn.microsoft.com/azure/virtual-machines/linux/azure-hybrid-benefit-linux?tabs=rhelpayg%2Crhelbyos%2CrhelEnablebyos%2Crhelcompliance",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "c3c7abc0-716c-4486-893c-40e181d65539",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-multi-sid",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "不要將不同的應用程式服務分組到同一個集群中。例如,不要將DRBD和中央服務集群組合在同一集群上。但是,可以使用同一個 Pacemaker 群集來管理大約五個不同的中心服務(多 SID 群集)。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "75c1e945-b459-4837-bf7a-e7c6d3b475a5",
- "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal",
- "service": "VM",
- "text": "使用靈活性選項(不超過 4-5 個系列)整合保留的 VM 系列",
- "training": "https://learn.microsoft.com/azure/automation/automation-solution-vm-management",
+ "checklist": "SAP Checklist",
+ "guid": "a491dfc4-9353-4213-9217-eef0949f9467",
+ "link": "https://azure.microsoft.com/pricing/offers/dev-test/",
+ "service": "SAP",
+ "severity": "低",
+ "text": "請考慮在暫停模型中運行開發/測試系統,以節省和優化 Azure 運行成本。",
"waf": "成本"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "c7acbe49-bbe6-44dd-a9f2-e87778468d55",
- "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",
- "text": "利用 Azure 預留實例:此功能允許將 VM 預留 1 年或 3 年,與 PAYG 價格相比,可顯著節省成本。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "b7056168-6199-4732-a514-cdbb2d5c9c54",
+ "link": "https://learn.microsoft.com/azure/lighthouse/overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "如果通過管理客戶的 SAP 資產與客戶合作,請考慮使用 Azure Lighthouse。Azure Lighthouse 允許託管服務提供者使用 Azure 本機標識服務對客戶的環境進行身份驗證。它將控制權交到客戶手中,因為他們可以隨時撤銷訪問許可權並審核服務提供者的行為。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a6bcca2b-4fea-41db-b3dd-95d48c7c891d",
- "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview",
- "service": "VM",
- "text": "只能保留較大的磁碟 => 1 TiB -",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "4d116785-d2fa-456c-96ad-48408fe72734",
+ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure Update Manager 檢查單個 VM 或多個 VM 的可用更新狀態,並考慮計劃定期修補。",
+ "training": "https://learn.microsoft.com/training/modules/keep-your-virtual-machines-updated/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "cb1f7d57-59ae-4568-aa38-d4985e2213db",
- "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain",
- "service": "VM",
- "text": "調整大小優化后",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "76c8bcbf-45bb-4e60-ad8a-03e97778424d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation",
+ "service": "SAP",
+ "severity": "低",
+ "text": "使用 SAP Landscape Management (LaMa) 優化和管理 SAP Basis 運營。使用適用於 Azure 的 SAP LaMa 連接器重新置放、複製、克隆和刷新 SAP 系統。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-remote-management/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Sql/servers",
- "checklist": "Cost Optimization Checklist",
- "guid": "d7bb012f-7b95-4e06-b158-e2ea3992c2de",
- "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy",
- "service": "Azure SQL",
- "text": "檢查是否適用並強制執行策略/更改 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",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "14591147-5e39-4e53-89cc-cd979366bcda",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用用於 SAP 解決方案的 Azure Monitor 監視 Azure 上的 SAP 工作負載(SAP HANA、高可用性 SUSE 群集和 SQL 系統)。請考慮使用 SAP 解決方案管理器補充用於 SAP 解決方案的 Azure Monitor。",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "6e2065b3-a76a-4f4a-991e-8839ada46667",
- "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices",
- "service": "VM",
- "text": "虛擬機 + 許可證部分折扣 (ahub + 3YRI) 約為 70% 的折扣",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "2750ab1a-b039-4d95-b54c-7c8929cb107d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap",
+ "service": "SAP",
+ "severity": "高",
+ "text": "運行適用於 SAP 的 VM 擴展檢查。適用於 SAP 的 VM 擴展使用虛擬機 (VM) 的分配託管標識來訪問 VM 監視和配置數據。該檢查可確保 SAP 應用程式中的所有性能指標都來自適用於 SAP 的基礎 Azure 擴展。",
+ "training": "https://learn.microsoft.com/training/modules/configure-azure-enhanced-monitoring-extension-for-sap/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "ccbd9792-a6bc-4ca2-a4fe-a1dbf3dd95d4",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel",
- "service": "VM",
- "text": "考慮使用 VMSS 來滿足需求,而不是按比例調整",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "5325ae52-5ba3-44d4-985e-2213ace7bb12",
+ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure Policy 進行訪問控制和合規性報告。Azure Policy 提供了強制實施組織範圍設置的功能,以確保一致的策略遵守和快速違規檢測。",
+ "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.containerservice/managedClusters",
- "checklist": "Cost Optimization Checklist",
- "guid": "c1b1cd52-1e54-4a29-a9de-39ac0e7c28dc",
- "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure",
- "service": "AKS",
- "text": "使用 AKS 自動縮放程式符合群集使用方式(確保 Pod 要求與縮放程式符合)",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "523181aa-4174-4269-93ff-8ae7d7d47431",
+ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure 網路觀察程式中的連接監視器監視 SAP 資料庫和應用程式伺服器的延遲指標。或者使用 Azure Monitor 收集和顯示網路延遲度量。",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/collecting-and-displaying-niping-network-latency-measurements/ba-p/1833979",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "44be3b1a-27f8-4b9e-a1be-1f38df03a822",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work",
- "service": "Azure Backup",
- "text": "將恢復點移至保管庫存檔(如果適用)(驗證)",
- "training": "https://azure.microsoft.com/pricing/reservations/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "73686af4-6791-4f89-95ad-a43324e13811",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "在預配的 Azure 基礎結構上對 SAP HANA 執行質量檢查,以驗證預配的 VM 是否符合 Azure 上的 SAP HANA 最佳做法。",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Databricks/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "cd463cbb-bc8a-4c29-aebc-91a43da1dae2",
- "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination",
- "service": "Databricks",
- "text": "請考慮盡可能使用帶回退功能的現成 VM。考慮群集的自動終止。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "616785d6-fa96-4c96-ad88-518f482734c8",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones",
+ "service": "SAP",
+ "severity": "高",
+ "text": "對於每個 Azure 訂閱,請在區域部署之前對 Azure 可用性區域運行延遲測試,以選擇用於在 Azure 上部署 SAP 的低延遲區域。",
+ "training": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "cc881470-607c-41cc-a0e6-14658dd458e9",
- "link": "https://learn.microsoft.com/azure/governance/policy/how-to/guest-configuration-create",
- "service": "Azure Functions",
- "text": "功能 - 重用連接",
- "training": "https://learn.microsoft.com/azure/cost-management-billing/reservations/reservation-apis?toc=%2Fazure%2Fcost-management-billing%2Ftoc.json",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "410adcba-db46-424f-a6c4-05ecde75c52e",
+ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "運行復原報告,確保整個預配的 Azure 基礎結構(計算、資料庫、網路、存儲、Site Recovery)的配置符合適用於 Azure 的 Cloud Adaption Framework 定義的配置。",
+ "training": "https://learn.microsoft.com/training/paths/azure-well-architected-framework/",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "27139b82-1102-4dbd-9eaf-11e6f843e52f",
- "link": "https://learn.microsoft.com/azure/automation/update-management/overview",
- "service": "Azure Functions",
- "text": "函數 - 本地快取資料",
- "training": "https://learn.microsoft.com/learn/paths/azure-administrator-manage-compute-resources/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "86ba2802-1459-4114-95e3-9e5309cccd97",
+ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用適用於 SAP 的 Microsoft Sentinel 解決方案實施威脅防護。使用此解決方案監視 SAP 系統,並檢測整個業務邏輯和應用程式層的複雜威脅。",
+ "training": "https://learn.microsoft.com/training/modules/plan-microsoft-sentinel-deployment-sap/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "4722d928-c1b1-4cd5-81e5-4a29b9de39ac",
- "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview",
- "service": "Azure Functions",
- "text": "函數 - 冷啟動 - 使用“從包運行”功能。這樣,代碼將下載為單個 zip 檔。例如,這可以顯著改進具有大量節點模組的 Javascript 函數。使用特定於語言的工具來減小包大小,例如,搖樹 Javascript 應用程式。",
- "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "579266bc-ca27-45fa-a1ab-fe9d55d04c3c",
+ "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/enable-tag-inheritance",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "Azure 標記可用於對資源進行邏輯分組和跟蹤,自動執行其部署,最重要的是,提供對所發生成本的可見性。",
+ "training": "https://learn.microsoft.com/training/modules/analyze-costs-create-budgets-azure-cost-management/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "0e7c28dc-9366-4572-82bf-f4564b0d934a",
- "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
- "service": "Azure Functions",
- "text": "功能 - 保持功能溫暖",
- "training": "https://learn.microsoft.com/learn/paths/implement-resource-mgmt-security/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "04b8e5e5-13cb-4b22-af62-5a8ecfcf0337",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows",
+ "service": "SAP",
+ "severity": "低",
+ "text": "對延遲敏感型應用程式使用虛擬機間延遲監視。",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "359c363e-7dd6-4162-9a36-4a907ebae38e",
- "link": "https://learn.microsoft.com/azure/governance/policy/overview",
- "service": "Azure Functions",
- "text": "使用具有不同功能的自動縮放時,可能會有一個資源驅動所有資源的所有自動縮放 - 請考慮將其移動到單獨的消耗計劃(並考慮更高的 CPU 計劃)",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "07e5ed53-3d96-43d8-87ea-631b77da5aba",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure Site Recovery 監視來維護 SAP 應用程式伺服器的災難恢復服務的運行狀況。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-storage/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "ad53cc7d-e2e8-4aaa-a357-1549ab9153d8",
- "link": "https://learn.microsoft.com/azure/service-health/alerts-activity-log-service-notifications-portal",
- "service": "Azure Functions",
- "text": "給定計劃中的函數應用都縮放在一起,因此縮放的任何問題都可能影響計劃中的所有應用。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "abb6af9c-982c-4cf1-83fb-329fafd1ee56",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "從防病毒掃描中排除所有資料庫檔系統和可執行程式。包含它們可能會導致性能問題。請與資料庫供應商聯繫,瞭解排除清單中的規範性詳細資訊。例如,Oracle 建議從防病毒掃描中排除 /oracle}sapdata。",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.Web/sites",
- "checklist": "Cost Optimization Checklist",
- "guid": "9f89dc7b-44be-43b1-a27f-8b9e91be1f38",
- "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/action-groups",
- "service": "Azure Functions",
- "text": "我需要為「等待時間」付費嗎?這個問題通常是在執行異步操作並等待結果的 C# 函數的上下文中提出的,例如 await Task.Delay(1000) 或 await client。GetAsync('http://google.com')。答案是肯定的 - GB 秒計算基於函數的開始和結束時間以及該時間段內的記憶體使用方式。在這段時間內實際發生的CPU活動未計入計算。此規則的一個例外是,如果使用的是持久函數。您無需為在業務流程協調程式函數中等待所花費的時間付費。在可能的情況下應用需求塑造技術(開發環境?)https://github.com/Azure-Samples/functions-csharp-premium-scaler",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "c027f893-f404-41a9-b33d-39d625a14964",
+ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login",
+ "service": "SAP",
+ "severity": "低",
+ "text": "請考慮在遷移後收集非 HANA 資料庫的完整資料庫統計資訊。例如,實施SAP 註釋1020260 - 交付 Oracle 統計資訊。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "3da1dae2-cc88-4147-8607-c1cca0e61465",
- "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment",
- "service": "Front Door",
- "text": "Frontdoor - 關閉預設主頁在應用的應用程式設置中,將 AzureWebJobsDisableHomepage 設置為 true。這將向PoP返回204(無內容),因此僅返回標頭數據。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "fdafb1f5-3eee-4354-a8c9-deb8127ebc2e",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "請考慮將 Oracle 自動儲存管理 (ASM) 用於使用 Azure 上的 SAP 的所有 Oracle 部署。",
+ "training": "https://learn.microsoft.com/training/paths/administer-infrastructure-resources-in-azure/?source=recommendations",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.network/frontdoors",
- "checklist": "Cost Optimization Checklist",
- "guid": "8dd458e9-2713-49b8-8110-2dbd6eaf11e6",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor",
- "service": "Front Door",
- "text": "Frontdoor - 路由到不返回任何內容的內容。設置函數、函數代理,或在 WebApp 中添加返回 200 (OK) 且不發送內容或發送最少內容的路由。這樣做的好處是您可以在調用時註銷。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "33c5d5bf-daf3-4f0d-bd50-6010fdcec22e",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "對於運行 Oracle 的 Azure 上的 SAP,SQL 腳本集合可説明你診斷性能問題。 自動工作負載存儲庫 (AWR) 報告包含用於診斷 Oracle 系統中問題的寶貴資訊。我們建議您在多個工作階段期間運行 AWR 報告,並為其選擇高峰時間,以確保分析的廣泛覆蓋範圍。",
+ "training": "https://learn.microsoft.com/ja-jp/azure/well-architected/oracle-iaas/performance-efficiency",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "7e31c67d-68cf-46a6-8a11-94956d697dc3",
- "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring",
- "service": "Storage",
- "text": "考慮為使用較少的數據存檔層",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "d89fd98d-23e4-4b40-a92e-32db9365522c",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "高",
+ "text": "使用 Azure Site Recovery 監視來維護 SAP 應用程式伺服器的災難恢復服務的運行狀況。",
+ "training": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "a2ed27b2-d186-4f1a-8252-bddde68a487c",
- "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings",
- "service": "VM",
- "text": "檢查大小與層不匹配的磁碟大小(即 513 GiB 磁碟將支付 P30 (1TiB) 並考慮調整大小",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "5ba34d46-85e2-4213-ace7-bb122f7c95f0",
+ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "若要安全交付 HTTP/S 應用,請使用應用程式閘道 v2 並確保啟用 WAF 保護和策略。",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "dec4861b-c3bc-410a-b77e-26e4d5a3bec2",
- "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration",
- "service": "Storage",
- "text": "盡可能考慮使用標準 SSD,而不是 Premium 或 Ultra",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "fa9d30bc-1b82-4e4b-bfdf-6b017938b9e6",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "如果在遷移到 Azure 期間未更改虛擬機器的 DNS 或虛擬名稱,則後台 DNS 和虛擬名稱將連接 SAP 環境中的許多系統介面,並且客戶有時只會知道開發人員隨時間推移定義的介面。遷移后,當虛擬或 DNS 名稱更改時,各種系統之間會出現連接挑戰,建議保留 DNS 別名以防止出現此類困難。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "c4e2436b-1336-4db5-9f17-960eee0bdf5c",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift",
- "service": "Storage",
- "text": "對於存儲帳戶,請確保所選層不會增加事務費用(移動到下一層可能會更便宜)",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "a2858f78-105b-4f52-b7a9-5b0f4439743b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用不同的 DNS 區域來區分每個環境(沙箱、開發、預生產和生產)。具有自己的 VNet 的 SAP 部署除外;在這裡,私有 DNS 區域可能不是必需的。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/4-explore-name-resolution",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.RecoveryServices/vaults",
- "checklist": "Cost Optimization Checklist",
- "guid": "c2efc5d7-61d4-41d2-900b-b47a393a040f",
- "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview",
- "service": "Site Recovery",
- "text": "對於 ASR,如果 RPO/RTO 和複製輸送量允許,請考慮使用標準 SSD 磁碟",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "a3592829-e6e2-4061-9368-6af46791f893",
+ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "本地和全域 VNet 對等互連提供連接,是確保跨多個 Azure 區域的 SAP 部署的登陸區域之間的連接的首選方法",
+ "training": "https://learn.microsoft.com/training/modules/configure-vnet-peering/?source=recommendations",
+ "waf": "可靠性"
},
{
- "arm-service": "Microsoft.Storage/storageAccounts",
- "checklist": "Cost Optimization Checklist",
- "guid": "d3294798-b118-48b2-a5a4-6ceb544451e1",
- "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery",
- "service": "Storage",
- "text": "存儲帳戶:檢查熱層和/或 GRS 必填",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "41742694-3ff8-4ae7-b7d4-743176c8bcbf",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide",
+ "service": "SAP",
+ "severity": "高",
+ "text": "不支援在 SAP 應用程式和 SAP 資料庫伺服器之間部署任何 NVA",
+ "training": "https://me.sap.com/notes/2731110",
+ "waf": "性能"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "92d34429-3c76-4286-97a5-51c5b04e4f18",
- "link": "https://learn.microsoft.com/azure/backup/backup-center-overview",
- "service": "VM",
- "text": "磁碟 - 驗證高級 SSD 磁碟在任何地方的使用方式:例如,非生產磁碟可以交換到標準 SSD 或按需高級 SSD",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "7d4bc7d2-c34a-452e-8f1d-6ae3c8eafcc3",
+ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "在需要跨 Azure 區域和本地位置的全域傳輸連接的新網路、大型網路或全球網路中使用虛擬 WAN 進行 Azure 部署。使用此方法,無需手動設置 Azure 網路的可傳遞路由,並且可以遵循 Azure 部署上的 SAP 標準。",
+ "training": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "54387e5c-ed12-46cd-832a-f5b2fc6998a5",
- "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview",
- "service": "Synapse",
- "text": "創建預算以管理成本並創建警報,自動通知利益相關者支出異常和超支風險。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "0cedb1f6-ae6c-492b-8b17-8061f50b16d3",
+ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "僅當使用合作夥伴 NVA 時,才考慮在區域之間部署網路虛擬設備 (NVA)。如果存在本機 NVA,則不需要區域或 VNet 之間的 NVA。部署合作夥伴網路技術和 NVA 時,請按照供應商的指南驗證與 Azure 網路衝突的配置。",
+ "training": "https://learn.microsoft.com/training/modules/control-network-traffic-flow-with-routes/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "35e33789-7e31-4c67-b68c-f6a62a119495",
- "link": "https://learn.microsoft.com/azure/virtual-machines/availability",
- "service": "Synapse",
- "text": "將成本數據匯出到存儲帳戶以進行其他數據分析。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "facc08c6-ea95-4641-91cd-fa09e573adbd",
+ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "虛擬 WAN 管理基於虛擬 WAN 的拓撲的分支 VNet 之間的連接(無需設置使用者定義的路由 [UDR] 或 NVA),同一虛擬中心中 VNet 到 VNet 流量的最大網路輸送量為每秒 50 G。如有必要,SAP 登陸區域可以使用 VNet 對等互連連接到其他登陸區域並克服此頻寬限制。",
+ "training": "https://learn.microsoft.com/training/modules/hub-and-spoke-network-architecture/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "6d697dc3-a2ed-427b-8d18-6f1a1252bddd",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "Synapse",
- "text": "通過在不使用資源時暫停資源來控制專用 SQL 池的成本。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "82734c88-6ba2-4802-8459-11475e39e530",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
+ "severity": "高",
+ "text": "不建議將公共IP分配給運行SAP工作負載的 VM。",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "e68a487c-dec4-4861-ac3b-c10ae77e26e4",
- "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/overview",
- "service": "Synapse",
- "text": "啟用無伺服器 Apache Spark 自動暫停功能,並相應地設置超時值。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "9cccd979-366b-4cda-8750-ab1ab039d95d",
+ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations",
+ "service": "SAP",
+ "severity": "高",
+ "text": "配置 ASR 時,請考慮在 DR 端保留 IP 位址",
+ "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "d5a3bec2-c4e2-4436-a133-6db55f17960e",
- "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-latest-version-for-customer-managed-certificates",
- "service": "Synapse",
- "text": "創建多個不同大小的 Apache Spark 池定義。",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "54c7c892-9cb1-407d-9325-ae525ba34d46",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing",
+ "service": "SAP",
+ "severity": "高",
+ "text": "避免對生產網站和DR網站使用重疊的IP位址範圍。",
+ "training": "https://learn.microsoft.com/training/modules/design-ip-addressing-for-azure/?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Synapse/workspaces",
- "checklist": "Cost Optimization Checklist",
- "guid": "ee0bdf5c-c2ef-4c5d-961d-41d2500bb47a",
- "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-groups-in-the-azure-landing-zone-accelerator",
- "service": "Synapse",
- "text": "使用預購計劃購買為期一年的 Azure Synapse 提交單元 (SCU),以節省 Azure Synapse Analytics 成本。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "6e154e3a-a359-4282-ae6e-206173686af4",
+ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-delegate-subnet",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "雖然 Azure 確實可以説明您在 VNet 中創建多個委派子網,但 Azure NetApp 檔的 VNet 中只能存在一個委派子網。如果對 Azure NetApp 檔使用多個委託子網,則嘗試創建新卷將失敗。",
+ "training": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-network-topologies?source=recommendations",
+ "waf": "操作"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "393a040f-d329-4479-ab11-88b2c5a46ceb",
- "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2",
- "service": "VM",
- "text": "將現成 VM 用於可中斷作業:這些 VM 可以以折扣價競標和購買,為非關鍵工作負載提供經濟高效的解決方案。",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "d8a03e97-7784-424d-9167-85d6fa96c96a",
+ "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",
+ "severity": "中等",
+ "text": "使用 Azure 防火牆管理發往 Internet 的 Azure 出站流量、非 HTTP/S 入站連接和東西向流量篩選(如果組織需要)",
+ "training": "https://learn.microsoft.com/training/paths/secure-networking-infrastructure/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "544451e1-92d3-4442-a3c7-628637a551c5",
- "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview",
- "service": "VM",
- "text": "合理調整所有 VM 的大小",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "91a65e40-be90-45b3-9f73-f3edbf8dc324",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "當應用程式閘道充當 SAP Web 應用的反向代理時,應用程式閘道和 Web 應用程式防火牆存在限制,如應用程式閘道、SAP Web 調度程式和其他第三方服務之間的比較所示。",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/si/3362959506.html",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "b04e4f18-5438-47e5-aed1-26cd032af5b2",
- "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet",
- "service": "VM",
- "text": "將 VM 大小與規範化大小和最新大小交換",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "5e39e530-9ccc-4d97-a366-bcda2750ab1a",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure Front Door 和 WAF 策略跨 Azure 區域為與登陸區域的入站 HTTP/S 連接提供全域保護。",
+ "training": "https://learn.microsoft.com/training/paths/secure-application-delivery/",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "fc6998a5-35e3-4378-a7e3-1c67d68cf6a6",
- "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "調整 VM 大小 - 從低於 5% 的監視使用率開始,然後工作到 40%",
- "training": "https://learn.microsoft.com/learn/paths/secure-application-delivery/",
- "waf": "成本"
+ "checklist": "SAP Checklist",
+ "guid": "b039d95d-54c7-4c89-89cb-107d5325ae52",
+ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Azure Front Door 和應用程式閘道保護 HTTP/S 應用程式時,請利用 Azure Front Door 中的 Web 應用程式防火牆策略。鎖定應用程式閘道以僅接收來自 Azure Front Door 的流量。",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "Microsoft.Compute/virtualMachines",
- "checklist": "Cost Optimization Checklist",
- "guid": "2a119495-6d69-47dc-9a2e-d27b2d186f1a",
+ "checklist": "SAP Checklist",
+ "guid": "5ada4332-4e13-4811-9231-81aa41742694",
"link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview",
- "service": "VM",
- "text": "容器化應用程式可以提高 VM 密度並節省擴展成本",
- "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/",
- "waf": "成本"
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 Web 應用程式防火牆在流量暴露於 Internet 時對其進行掃描。另一種選擇是將其與負載均衡器或具有內置防火牆功能(如應用程式閘道或第三方解決方案)的資源一起使用。",
+ "training": "https://learn.microsoft.com/training/modules/introduction-azure-web-application-firewall/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "65285269-440b-44be-9d3e-0844276d4bdc",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy",
- "service": "Redis",
- "severity": "高",
- "text": "為 Azure Cache for Redis 啟用區域冗餘。Azure Cache for Redis 支持高級層和企業層中的區域冗餘配置。區域冗餘緩存可以將其節點放置在同一區域的不同 Azure 可用性區域中。它消除了作為單點故障的數據中心或可用區中斷,並提高了緩存的整體可用性。",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "e73de7d5-6f36-4217-a526-e1a621ecddde",
+ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "在需要跨 Azure 區域和本地位置的全域傳輸連接的新網路、大型網路或全球網路中使用虛擬 WAN 進行 Azure 部署。使用此方法,無需手動設置 Azure 網路的可傳遞路由,並且可以遵循 Azure 部署上的 SAP 標準。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/10-explore-azure-front-door",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "bc178bdc-5a06-4ca7-8443-51e19dd34429",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#persistence",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "3c536a3e-1b6b-4e87-95ca-15edb47251c0",
+ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services",
+ "service": "SAP",
"severity": "中等",
- "text": "為 Azure Cache for Redis 實例配置數據持久性。由於緩存數據存儲在記憶體中,因此多個節點的罕見和計劃外故障可能會導致所有數據被丟棄。為了避免完全丟失數據,Redis 持久性允許您定期拍攝記憶體中數據的快照,並將其存儲到存儲帳戶中。",
- "waf": "可靠性"
+ "text": "若要防止數據洩露,請使用 Azure 專用連結安全地訪問平臺即服務資源,例如 Azure Blob 存儲、Azure 檔存儲、Azure Data Lake Storage Gen2、Azure 數據工廠等。Azure 專用終結點還有助於保護 VNet 與 Azure 存儲、Azure 備份等服務之間的流量。VNet 與啟用專用終結點的服務之間的流量通過 Microsoft 全球網路傳輸,從而防止其暴露在公共 Internet 上。",
+ "training": "https://learn.microsoft.com/training/modules/design-implement-private-access-to-azure-services/?source=recommendations",
+ "waf": "安全"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "85e2213a-ce7b-4b12-8f7c-95f06e154e3a",
+ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat",
+ "service": "SAP",
+ "severity": "高",
+ "text": "請確保在 SAP 應用程式和 DBMS 層中使用的 VM 上啟用了 Azure 加速網路。",
+ "training": "https://learn.microsoft.com/training/paths/azure-fundamentals-describe-azure-architecture-services/?source=recommendations",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "eb722823-7a15-41c5-ab4e-4f1814387e5c",
- "link": "https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-high-availability#storage-account-for-persistence",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "3ff8ae7d-7d47-4431-96c8-bcbf45bbe609",
+ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-multivip-overview",
+ "service": "SAP",
"severity": "中等",
- "text": "使用異地冗餘存儲帳戶保留 Azure Cache for Redis 數據,或在異地冗餘不可用的情況下使用區域冗餘",
- "waf": "可靠性"
+ "text": "請確保將 Azure 負載均衡器的內部部署設置為使用直接伺服器返回 (DSR)。此設置(啟用浮動IP)將減少內部負載均衡器配置用於 DBMS 層上的高可用性配置時的延遲。",
+ "training": "https://learn.microsoft.com/ja-jp/training/modules/load-balancing-non-https-traffic-azure/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.cache/redis",
- "checklist": "Redis Resiliency checklist",
- "guid": "a8c26c9b-32ab-45bd-bc69-98a135e33789",
- "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication",
- "service": "Redis",
+ "checklist": "SAP Checklist",
+ "guid": "6791f893-5ada-4433-84e1-3811523181aa",
+ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works",
+ "service": "SAP",
"severity": "中等",
- "text": "為高級 Azure Cache for Redis 實例配置被動異地複製。異地複製是一種用於連結兩個或多個 Azure Cache for Redis 實例的機制,通常跨越兩個 Azure 區域。異地複製主要用於跨區域災難恢復。兩個高級層緩存實例通過異地複製進行連接,從而提供對主緩存的讀取和寫入,並將數據複製到輔助緩存。",
- "waf": "可靠性"
+ "text": "可以使用應用程式安全組 (ASG) 和 NSG 規則在 SAP 應用程式層和 DBMS 層之間定義網路安全存取控制清單。ASG 對虛擬機進行分組,以説明管理其安全性。",
+ "training": "https://learn.microsoft.com/training/modules/configure-network-security-groups/?source=recommendations",
+ "waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b32e1aa1-4813-4602-88fe-27ca2891f421",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/app-service-web-app/zone-redundant?source=recommendations",
- "service": "App Services",
- "severity": "低",
- "text": "有關最佳實踐,請參閱基線高可用性區域冗餘 Web 應用程式體系結構",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "45bbe609-d8a0-43e9-9778-424d616785d6",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
+ "severity": "高",
+ "text": "不支援將 SAP 應用程式層和 SAP DBMS 放置在未對等互連的不同 Azure VNet 中。",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e4b31c6a-2e3f-4df1-8e8b-9c3aa5a27820",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "fa96c96a-d885-418f-9827-34c886ba2802",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios",
+ "service": "SAP",
"severity": "中等",
- "text": "使用高級層和標準層。這些層支援暫存槽和自動備份。",
- "waf": "可靠性"
+ "text": "若要優化 SAP 應用程式的網路延遲,請考慮使用 Azure 鄰近放置組。",
+ "training": "https://learn.microsoft.com/azure/virtual-machines/co-location#planned-maintenance-and-proximity-placement-groups",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a7e2e6c2-491f-4fa4-a82b-521d0bc3b202",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/migrate-app-service",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "18c8b61c-855a-4405-b6ed-266455e4f4ce",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
"severity": "高",
- "text": "利用區域適用的可用性區域(需要高級 v2 或 v3 層)",
- "waf": "可靠性"
+ "text": "根本不支援在本地和 Azure 之間運行 SAP Application Server 層和 DBMS 層拆分。這兩個層都需要完全駐留在本地或 Azure 中。",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "1275e4a9-7b6a-43c3-a9cd-5ee18d8995ad",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
- "severity": "中等",
- "text": "實施健康檢查",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "b65c878b-4b14-4f4e-92d8-d873936493f2",
+ "link": "https://me.sap.com/notes/2015553",
+ "service": "SAP",
+ "severity": "高",
+ "text": "不建議將資料庫管理系統 (DBMS) 和 SAP 系統的應用程式層託管在不同的 VNet 中,並將它們與 VNet 對等互連連接,因為層之間的過多網路流量可能會產生大量成本。建議使用 Azure 虛擬網路中的子網來分隔 SAP 應用程式層和 DBMS 層。",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "35a91c5d-4ad6-4d9b-8e0f-c47db9e6d1e7",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "402a9846-d515-4061-aff8-cd30088693fa",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel",
+ "service": "SAP",
"severity": "高",
- "text": "請參閱 Azure 應用服務的備份和還原最佳做法",
- "waf": "可靠性"
+ "text": "如果將負載均衡器與Linux客戶機作業系統配合使用,請檢查Linux網路參數 net.ipv4.tcp_timestamps是否設置為0。",
+ "training": "https://learn.microsoft.com/training/modules/implement-ha-sap-netweaver-anydb/?source=recommendations",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "e68cd0ec-afc6-4bd8-a27f-7860ad9a0db2",
- "link": "https://learn.microsoft.com/en-us/azure/architecture/framework/services/compute/azure-app-service/reliability",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "87585797-5551-4d53-bb7d-a94ee415734d",
+ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "對於 SAP RISE/ECS 部署,虛擬對等互連是與客戶現有 Azure 環境建立連接的首選方式。SAP vnet 和客戶 vnet 都受網路安全組 (NSG) 保護,從而通過 VNet 對等互連在 SAP 和資料庫埠上進行通信",
+ "waf": "安全"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "ff5136bd-dcf1-4d2b-ae52-39333efdf45a",
+ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about",
+ "service": "SAP",
"severity": "高",
- "text": "實現 Azure 應用服務可靠性最佳做法",
- "waf": "可靠性"
+ "text": "查看 Azure VM 的 SAP HANA 資料庫備份。",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "bd2a865c-0835-4418-bb58-4df91a5a9b3f",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-disaster-recovery#recover-app-content-only",
- "service": "App Services",
- "severity": "低",
- "text": "熟悉如何在災難期間將應用服務應用移動到另一個區域",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "cafde29d-a0af-4bcd-87c0-0f299d63f0e8",
+ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "查看用於 SAP 的 Site Recovery 內置監視。",
+ "waf": "成本"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "f3d2f1e4-e6d4-4b7a-a5a5-e2a9b2c6f293",
- "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "82d7b8de-d3f1-44a0-830b-38e200e82acf",
+ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US",
+ "service": "SAP",
"severity": "高",
- "text": "熟悉 Azure 應用服務中的可靠性支援",
- "waf": "可靠性"
+ "text": "查看監視 SAP HANA 系統環境指南。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7b5f3d1-0569-4fd2-9f32-c0b64e9c0c5e",
- "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "c823873a-2bec-4c2a-b684-a1ce8ae80efd",
+ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies",
+ "service": "SAP",
"severity": "中等",
- "text": "確保為在應用服務計劃上運行的函數應用啟用“Always On”",
- "waf": "可靠性"
+ "text": "查看 Azure Linux VM 中的 Oracle 資料庫備份策略。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "a3b4d5f6-758c-4f9d-9e1a-d7c6b7e8f9ab",
- "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "2943b6d8-1d31-4e19-ade7-78e6b26d1962",
+ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16",
+ "service": "SAP",
"severity": "中等",
- "text": "使用運行狀況檢查監視應用服務實例",
- "waf": "可靠性"
+ "text": "查看 Azure Blob 儲存與 SQL Server 2016 的配合。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "c7d3e5f9-a19c-4833-8ca6-1dcb0128e129",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "b82e650f-676d-417d-994d-fc33ca54ec14",
+ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql",
+ "service": "SAP",
"severity": "中等",
- "text": "使用 Application Insights 可用性測試監視 Web 應用或網站的可用性和回應能力",
- "waf": "可靠性"
+ "text": "查看 Azure VM 自動備份 v2 的使用方式。",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "guid": "b4e3f2d5-a5c6-4d7e-8b2f-c5d9e7a8f0ea",
- "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests",
- "service": "App Services",
- "severity": "低",
- "text": "使用 Application Insights 標準測試監視 Web 應用或網站的可用性和回應能力",
- "waf": "可靠性"
+ "checklist": "SAP Checklist",
+ "guid": "347c2dcc-e6eb-4b04-80c5-628b171aa62d",
+ "service": "SAP",
+ "severity": "高",
+ "text": "使用進階磁碟時開啟M系列的寫入加速器(V1)",
+ "waf": "操作"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用 Azure Key Vault 儲存應用程式所需的任何機密。 Key Vault 為儲存機密提供安全且經過審核的環境,並通過 Key Vault SDK 或應用服務 Key Vault 引用與應用服務很好地集成。",
- "guid": "834ac932-223e-4ce8-8b12-3071a5416415",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "高",
- "text": "使用 Key Vault 儲存機密",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "b96512cf-996f-4b17-b9b8-6b16db1a2a94",
+ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/AvZone-Latency-Test",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "測試可用性區域延遲。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用託管標識通過 Key Vault SDK 或透過應用服務 Key Vault 引用連接到 Key Vault。",
- "guid": "833ea3ad-2c2d-4e73-8165-c3acbef4abe1",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references",
- "service": "App Services",
- "severity": "高",
- "text": "使用託管標識連接到 Key VaultUse Managed Identity to connect to Key Vault",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "9fd7ffd4-da11-49f6-a374-8d03e94c511d",
+ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "為所有 SAP 元件啟動 SAP EarlyWatch Alert。",
+ "training": "https://help.sap.com/docs/SUPPORT_CONTENT/techops/3362700736.html",
+ "waf": "性能"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "b9b140cf-413a-483d-aad2-8802c4e3c017",
+ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "使用 SAP ABAPMeter 報表 /SSA/CAT 查看 SAP 應用程式伺服器到資料庫伺服器的延遲。",
+ "training": "https://me.sap.com/notes/0002879613",
+ "waf": "性能"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "查看使用 CCMS 的 SQL Server 性能監視。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "將應用服務 TLS 證書存儲在 Key Vault 中。",
- "guid": "f8d39fda-4776-4831-9c11-5775c2ea55b4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-certificate",
- "service": "App Services",
- "severity": "高",
- "text": "使用 Key Vault 儲存 TLS 證書。",
- "waf": "安全"
+ "checklist": "SAP Checklist",
+ "guid": "35709da7-fc7d-4efe-bb20-2e91547b7390",
+ "link": "https://me.sap.com/notes/500235",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "測試 SAP 應用程式層 VM 和 DBMS VM (NIPING) 之間的網路延遲。",
+ "training": "https://me.sap.com/notes/1100926/E",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "處理敏感信息的系統應隔離。 為此,請使用單獨的應用服務計劃或應用服務環境,並考慮使用不同的訂閱或管理組。",
- "guid": "6ad48408-ee72-4734-a475-ba18fdbf590c",
- "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "9e9bb4c8-e934-4e4b-a13c-6f7c7c38eb43",
+ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot",
+ "service": "SAP",
"severity": "中等",
- "text": "隔離處理敏感信息的系統",
- "waf": "安全"
+ "text": "查看 SAP HANA Studio 警報。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "應用服務上的本地磁碟未加密,敏感數據不應存儲在這些磁碟上。 (例如:D:\\\\Local 和 %TMP%)。",
- "guid": "e65de8e0-3f9b-4cbd-9682-66abca264f9a",
- "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "f1a92ab5-9509-4b57-86ff-b0ade361b694",
+ "link": "https://me.sap.com/notes/1969700",
+ "service": "SAP",
"severity": "中等",
- "text": "不要將敏感數據存儲在本地磁碟上",
- "waf": "安全"
+ "text": "使用 HANA_Configuration_Minichecks 執行 SAP HANA 執行狀況檢查。",
+ "waf": "性能"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "對於經過身份驗證的 Web 應用程式,請使用成熟的標識提供者,例如 Azure AD 或 Azure AD B2C。 利用所選的應用程式框架與此提供程式整合,或使用應用服務身份驗證/授權功能。",
- "guid": "919ca0b2-c121-459e-814b-933df574eccc",
- "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "18dffcf3-248c-4039-a67c-dec8e3a5f804",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
"severity": "中等",
- "text": "使用已建立的身份提供程式進行身份驗證",
+ "text": "如果在 Azure、本地或其他雲環境中運行 Windows 和 Linux VM,則可以使用 Azure 自動化中的更新管理中心來管理作業系統更新,包括安全修補程式。",
+ "training": "https://learn.microsoft.com/azure/automation/update-management/overview",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "將代碼從受控且受信任的環境(例如管理良好且安全的 DevOps 部署管道)部署到應用服務。這樣可以避免未經版本控制和驗證從惡意主機部署的代碼。",
- "guid": "3f9bcbd4-6826-46ab-aa26-4f9a19aed9c5",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-best-practices",
- "service": "App Services",
- "severity": "高",
- "text": "從受信任的環境部署",
+ "checklist": "SAP Checklist",
+ "guid": "08951710-79a2-492a-adbc-06d7a401545b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "定期查看 SAP 安全 OSS 說明,因為 SAP 會發佈高度關鍵的安全補丁或熱修復程式,需要立即採取行動來保護 SAP 系統。",
+ "training": "https://support.sap.com/en/my-support/knowledge-base/security-notes-news.html",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "禁用 FTP/FTPS 和 WebDeploy/SCM 的基本身份驗證。 這將禁止訪問這些服務,並強制使用 Azure AD 安全終結點進行部署。 請注意,還可以使用 Azure AD 憑據打開 SCM 網站。",
- "guid": "5d04c2c3-919c-4a0b-8c12-159e114b933d",
- "link": "https://learn.microsoft.com/azure/app-service/deploy-configure-credentials#disable-basic-authentication",
- "service": "App Services",
- "severity": "高",
- "text": "禁用基本身份驗證",
+ "checklist": "SAP Checklist",
+ "guid": "1b8b394e-ae64-4a74-8933-357b523ea0a0",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
+ "severity": "低",
+ "text": "對於 SQL Server 上的 SAP,可以禁用 SQL Server 系統管理員帳戶,因為 SQL Server 上的 SAP 系統不使用該帳戶。在禁用原始系統管理員帳戶之前,請確保具有系統管理員許可權的其他使用者可以訪問伺服器。",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "如果可能,請使用託管標識連接到 Azure AD 受保護的資源。 如果無法做到這一點,請將機密存儲在 Key Vault 中,並改用託管標識連接到 Key Vault。",
- "guid": "f574eccc-d9bd-43ba-bcda-3b54eb2eb03d",
- "link": "https://learn.microsoft.com/azure/app-service/overview-managed-identity?tabs=portal%2Chttp",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "5a76a033-ced9-4eef-9a43-5e4f96634c8e",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
+ "service": "SAP",
"severity": "高",
- "text": "使用託管標識連接到資源",
+ "text": "禁用xp_cmdshell。SQL Server 功能xp_cmdshell啟用 SQL Server 內部作業系統命令行介面。這是安全審計中的潛在風險。",
+ "training": "https://me.sap.com/notes/3019299/E",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "如果使用 Azure 容器註冊表中儲存的映像,請使用託管標識拉取這些映像。",
- "guid": "d9a25827-18d2-4ddb-8072-5769ee6691a4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "cf65de8e-1309-4ccc-b579-266bcca275fa",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"severity": "高",
- "text": "使用託管標識拉取容器",
+ "text": "加密 Azure 上的 SAP HANA 資料庫伺服器使用 SAP HANA 本機加密技術。此外,如果在 Azure 上使用 SQL Server,請使用透明數據加密 (TDE) 來保護數據和日誌檔,並確保備份也已加密。",
+ "training": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "通過配置應用服務的診斷設置,可以將所有遙測數據發送到Log Analytics,作為日誌記錄和監視的中心目標。這允許你監視應用服務的運行時活動,例如 HTTP 日誌、應用程式日誌、平臺日誌等。",
- "guid": "47768314-c115-4775-a2ea-55b46ad48408",
- "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "a1abfe9d-55d0-44c3-a491-9cb1b3d1325a",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-service-encryption",
+ "service": "SAP",
"severity": "中等",
- "text": "將應用服務運行時日誌發送到Log Analytics",
+ "text": "為所有 Azure 資源管理器和經典記憶體啟用了 Azure 儲存加密,並且無法禁用。由於預設情況下數據是加密的,因此無需修改代碼或應用程式即可使用 Azure 儲存加密。",
+ "training": "https://learn.microsoft.com/training/modules/encrypt-sector-data/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "設置診斷設置,將活動日誌發送到Log Analytics,作為日誌記錄和監視的中心目標。這樣,你就可以監視應用服務資源本身上的控制平面活動。",
- "guid": "ee72734b-475b-4a18-bdbf-590ce65de8e0",
- "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log",
- "service": "App Services",
- "severity": "中等",
- "text": "將應用服務活動日誌發送到Log Analytics",
+ "checklist": "SAP Checklist",
+ "guid": "ce9bd3bb-0cdb-43b5-9eb2-ec14eeaa3592",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/overview",
+ "service": "SAP",
+ "severity": "高",
+ "text": "使用 Azure Key Vault 儲存機密和憑據",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用區域 VNet 集成、網路安全組和 UDR 的組合來控制出站網路訪問。 流量應路由到 NVA,例如 Azure 防火牆。 確保監控防火牆的日誌。",
- "guid": "c12159e1-14b9-433d-b574-ecccd9bd3baf",
- "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "829e2edb-2173-4676-aff6-691b4935ada4",
+ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json",
+ "service": "SAP",
"severity": "中等",
- "text": "應控制出站網路訪問",
+ "text": "建議在成功部署后鎖定 Azure 資源,以防止未經授權的更改。還可以使用自定義的 Azure 策略(自定義角色)在每個訂閱的基礎上強制實施 LOCK 約束和規則。",
+ "training": "https://learn.microsoft.com/training/modules/use-azure-resource-manager/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "可以使用 VNet 集成並使用 VNet NAT 閘道或 NVA(如 Azure 防火牆)來提供穩定的出站 IP。 這允許接收方根據需要根據IP列出允許清單。 請注意,對於與 Azure 服務的通信,通常不需要依賴於 IP 位址,應改用服務終結點等機制。 (此外,在接收端使用專用終結點可避免發生 SNAT,並提供穩定的出站 IP 範圍。",
- "guid": "cda3b54e-b2eb-403d-b9a2-582718d2ddb1",
- "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration",
- "service": "App Services",
- "severity": "低",
- "text": "確保與互聯網位址的出站通信具有穩定的IP",
+ "checklist": "SAP Checklist",
+ "guid": "2223ece8-1b12-4318-8a54-17415833fb4a",
+ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "預配啟用軟刪除和清除策略的 Azure Key Vault,以允許對已刪除物件進行保留保護。",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用應用服務訪問限制、服務終結點或專用終結點的組合來控制入站網路訪問。對於 Web 應用本身和 SCM 網站,可能需要和配置不同的訪問限制。",
- "guid": "0725769e-e669-41a4-a34a-c932223ece80",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "e3c2df74-3165-4c3a-abe0-5bbe209d490d",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy",
+ "service": "SAP",
"severity": "高",
- "text": "應控制入站網路訪問",
+ "text": "根據現有要求、法規和合規性控制(內部/外部) - 確定所需的 Azure 策略和 Azure RBAC 角色",
+ "training": "https://learn.microsoft.com/training/paths/describe-azure-management-governance/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用 Web 應用程式防火牆(如應用程式閘道或 Azure Front Door)防範惡意入站流量。 請務必監控 WAF 的日誌。",
- "guid": "b123071a-5416-4415-a33e-a3ad2c2de732",
- "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "a4777842-4d11-4678-9d2f-a56c56ad4840",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
"severity": "高",
- "text": "在應用服務前面使用 WAF",
+ "text": "在 SAP 環境中啟用 Microsoft Defender for Endpoint 時,建議排除 DBMS 伺服器上的數據和日誌檔,而不是面向所有伺服器。排除目標檔時,請遵循 DBMS 供應商的建議。",
+ "training": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/microsoft-defender-endpoint-mde-for-sap-applications-on-windows/ba-p/3912268",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "確保僅鎖定對 WAF 的訪問,從而無法繞過 WAF。 結合使用訪問限制、服務終結點和專用終結點。",
- "guid": "165c3acb-ef4a-4be1-b8d3-9fda47768314",
- "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "8fe72734-c486-4ba2-a0dc-0591cf65de8e",
+ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks",
+ "service": "SAP",
"severity": "高",
- "text": "避免繞過 WAF",
+ "text": "委派具有 Microsoft Defender for Cloud 實時訪問許可權的 SAP 管理員自定義角色。",
+ "training": "https://learn.microsoft.com/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "在應用服務配置中將最低 TLS 策略設置為 1.2。",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.MinTlsVersion>=1.2) | distinct id,compliant",
- "guid": "c115775c-2ea5-45b4-9ad4-8408ee72734b",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "1309cccd-5792-466b-aca2-75faa1abfe9d",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "低",
+ "text": "通過將第三方安全產品與 DIAG (SAP GUI)、RFC 和 SPNEGO for HTTPS 的安全網路通信 (SNC) 集成,對傳輸中的數據進行加密",
+ "training": "https://learn.microsoft.com/azure/security/fundamentals/encryption-overview#encryption-of-data-in-transit",
+ "waf": "安全"
+ },
+ {
+ "checklist": "SAP Checklist",
+ "guid": "eeaa3592-829e-42ed-a217-3676aff6691b",
+ "link": "https://learn.microsoft.com/azure/storage/common/storage-encryption-key-model-get?tabs=portal",
+ "service": "SAP",
"severity": "中等",
- "text": "將最低 TLS 策略設置為 1.2",
+ "text": "對於主體加密功能,預設使用 Microsoft 管理的金鑰,並在需要時使用客戶管理的密鑰。",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "將應用服務配置為僅使用 HTTPS。 這會導致應用服務從 HTTP 重定向到 HTTPS。 強烈建議在代碼或 WAF 中使用 HTTP 嚴格傳輸安全性 (HSTS),這會通知瀏覽器只能使用 HTTPS 訪問網站。",
- "graph": "where (type=='microsoft.web/sites' and (kind == 'app' or kind == 'app,linux' )) | extend compliant = (properties.httpsOnly==true) | distinct id,compliant",
- "guid": "475ba18f-dbf5-490c-b65d-e8e03f9bcbd4",
- "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-https",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "4935ada4-2223-4ece-a1b1-23181a541741",
+ "link": "https://learn.microsoft.com/ja-jp/azure/key-vault/general/best-practices",
+ "service": "SAP",
"severity": "高",
- "text": "僅使用 HTTPS",
+ "text": "對每個應用程式、每個環境、每個區域使用 Azure Key Vault。",
+ "training": "https://learn.microsoft.com/training/modules/manage-secrets-with-azure-key-vault/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "不要在 CORS 配置中使用通配符,因為這允許所有源訪問服務(從而破壞 CORS 的目的)。具體而言,僅允許您希望能夠訪問服務的源。",
- "guid": "68266abc-a264-4f9a-89ae-d9c55d04c2c3",
- "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "abc9634d-c44d-41e9-a530-e8444e16aa3c",
+ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios",
+ "service": "SAP",
"severity": "高",
- "text": "不得將通配符用於 CORS",
+ "text": "若要控制和管理非 HANA Windows 和非 Windows 作業系統的磁碟加密密鑰和機密,請使用 Azure Key Vault。Azure Key Vault 不支援 SAP HANA,因此必須使用 SAP ABAP 或 SSH 密鑰等替代方法。",
+ "training": "https://learn.microsoft.com/training/modules/configure-and-manage-azure-key-vault/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "不得在生產環境中啟用遠端調試,因為這會在服務上打開其他埠,從而增加攻擊面。請注意,該服務會在 48 小時後自動轉為遠端調試。",
- "graph": "appserviceresources | where type =~ 'microsoft.web/sites/config' | extend compliant = (properties.RemoteDebuggingEnabled == false) | distinct id,compliant",
- "guid": "d9bd3baf-cda3-4b54-bb2e-b03dd9a25827",
- "link": "https://learn.microsoft.com/azure/app-service/configure-common#configure-general-settings",
- "service": "App Services",
+ "checklist": "SAP Checklist",
+ "guid": "209d490d-a477-4784-84d1-16785d2fa56c",
+ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles",
+ "service": "SAP",
"severity": "高",
- "text": "關閉遠端調試",
+ "text": "為 Azure 上的 SAP 分支訂閱自定義基於角色的訪問控制 (RBAC) 角色,以避免與網路相關的意外更改",
+ "training": "https://learn.microsoft.com/training/modules/secure-azure-resources-with-rbac/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "啟用 Defender for App Service。 這(除其他威脅外)檢測與已知惡意IP位址的通信。 在操作過程中查看 Defender for App Service 中的建議。",
- "guid": "18d2ddb1-0725-4769-be66-91a4834ac932",
- "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction",
- "service": "App Services",
- "severity": "中等",
- "text": "啟用 Defender for Cloud - Defender for App Service",
+ "checklist": "SAP Checklist",
+ "guid": "56ad4840-8fe7-4273-9c48-6ba280dc0591",
+ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/",
+ "service": "SAP",
+ "severity": "高",
+ "text": "將 DMZ 和 NVA 與 SAP 資產的其餘部分隔離,配置 Azure 專用連結,並安全地管理和控制 Azure 上的 SAP 資源",
+ "training": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/secure-vnet-dmz?tabs=portal",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "Azure 在其網路上提供 DDoS 基本保護,可以通過智慧 DDoS 標準功能進行改進,該功能可以瞭解正常的流量模式並檢測異常行為。DDoS 標準適用於虛擬網路,因此必須為應用前面的網路資源(例如應用程式閘道或 NVA)配置它。",
- "guid": "223ece80-b123-4071-a541-6415833ea3ad",
- "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview",
- "service": "App Services",
- "severity": "中等",
- "text": "在 WAF VNet 上啟用 DDOS 保護標準",
+ "checklist": "SAP Checklist",
+ "guid": "e124ba34-df68-45ed-bce9-bd3bb0cdb3b5",
+ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations",
+ "service": "SAP",
+ "severity": "低",
+ "text": "請考慮在 Azure 上使用 Microsoft 反惡意軟體來保護虛擬機免受惡意檔、廣告軟體和其他威脅的侵害。",
+ "training": "https://azure.microsoft.com/blog/deploying-antimalware-solutions-on-azure-virtual-machines/",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "如果使用 Azure 容器註冊表中儲存的映像,請使用其專用終結點和應用設置“WEBSITE_PULL_IMAGE_OVER_VNET”通過虛擬網络從 Azure 容器註冊表拉取這些映射。",
- "guid": "2c2de732-165c-43ac-aef4-abe1f8d39fda",
- "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry",
- "service": "App Services",
- "severity": "中等",
- "text": "通過虛擬網路拉取容器",
+ "checklist": "SAP Checklist",
+ "guid": "5eb2ec14-eeaa-4359-8829-e2edb2173676",
+ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide",
+ "service": "SAP",
+ "severity": "低",
+ "text": "若要獲得更強大的保護,請考慮使用 Microsoft Defender for Endpoint。",
+ "training": "https://learn.microsoft.com/training/modules/implement-endpoint-protection-use-microsoft-defender/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "按照參與的滲透測試規則對 Web 應用程式進行滲透測試。",
- "guid": "eb2eb03d-d9a2-4582-918d-2ddb10725769",
- "link": "https://learn.microsoft.com/azure/security/fundamentals/pen-testing",
- "service": "App Services",
- "severity": "中等",
- "text": "進行滲透測試",
+ "checklist": "SAP Checklist",
+ "guid": "87a924c4-25c2-419f-a2f0-96c7c4fe4525",
+ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape",
+ "service": "SAP",
+ "severity": "高",
+ "text": "通過中心虛擬網路傳遞所有流量,將 SAP 應用程式和資料庫伺服器與 Internet 或本地網路隔離開來,該中心虛擬網路通過虛擬網路對等互連連接到分支網路。對等互連虛擬網路保證 Azure 上的 SAP 解決方案與公共 Internet 隔離。",
+ "training": "https://learn.microsoft.com/training/modules/explore-azure-networking/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "部署根據 DevSecOps 實踐驗證和掃描漏洞的受信任代碼。",
- "guid": "19aed9c5-5d04-4c2c-9919-ca0b2c12159e",
- "link": "https://learn.microsoft.com/azure/architecture/solution-ideas/articles/devsecops-in-azure",
- "service": "App Services",
- "severity": "中等",
- "text": "部署經過驗證的代碼",
+ "checklist": "SAP Checklist",
+ "guid": "491ca1c4-3d40-42c0-9d85-b8933999590b",
+ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance",
+ "service": "SAP",
+ "severity": "低",
+ "text": "對於面向 Internet 的應用程式(如 SAP Fiori),請確保根據應用程式要求分配負載,同時保持安全級別。對於第 7 層安全性,可以使用 Azure 市場中提供的第三方 Web 應用程式防火牆 (WAF)。",
+ "training": "https://learn.microsoft.com/training/modules/simplify-cloud-procurement-governance-azure-marketplace/?source=recommendations",
"waf": "安全"
},
{
- "arm-service": "microsoft.web/sites",
- "checklist": "Azure App Service Review",
- "description": "使用最新版本的受支援平臺、程式設計語言、協定和框架。",
- "guid": "114b933d-f574-4ecc-ad9b-d3bafcda3b54",
- "link": "https://learn.microsoft.com/azure/app-service/overview-patch-os-runtime",
- "service": "App Services",
- "severity": "高",
- "text": "使用最新的平臺、語言、協定和框架",
+ "checklist": "SAP Checklist",
+ "guid": "9fc945b9-0527-47af-8200-9d652fe02fcc",
+ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions",
+ "service": "SAP",
+ "severity": "中等",
+ "text": "若要在用於 SAP 解決方案的 Azure Monitor 中啟用安全通信,可以選擇使用根證書或伺服器證書。我們強烈建議您使用根證書。",
+ "training": "https://learn.microsoft.com/training/modules/implement-azure-monitoring-sap-workloads-azure-virtual-machines/?source=recommendations",
"waf": "安全"
},
{
"arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3b7a56de-5020-4642-b3cb-c976e80b6d6d",
- "link": "https://learn.microsoft.com/azure/logic-apps/single-tenant-overview-compare",
- "service": "Logic Apps",
+ "checklist": "Azure Function Review",
+ "guid": "4238f409-2ea0-43be-a06b-2a993c98aa7b",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "高",
- "text": "根據業務和 SLO 要求選擇正確的邏輯應用託管計劃",
+ "text": "根據您的業務和 SLO 要求選擇正確的功能託管計劃",
"waf": "可靠性"
},
{
"arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "3d7008bd-6bc1-4b03-8aa8-ec2a3b55786a",
- "link": "https://learn.microsoft.com/azure/logic-apps/set-up-zone-redundancy-availability-zones?tabs=standard#next-steps",
- "service": "Logic Apps",
+ "checklist": "Azure Function Review",
+ "guid": "a9808100-d640-4f77-ac56-1ec0600f6752",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#overview-of-plans",
+ "service": "Azure Functions",
"severity": "高",
- "text": "使用區域冗餘和可用性區域保護邏輯應用免受區域故障的影響",
+ "text": "利用區域適用的可用區(不適用於消耗層)",
"waf": "可靠性"
},
{
"arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "1cda768f-a206-445d-8234-56f6a6e7286e",
- "link": "https://learn.microsoft.com/azure/logic-apps/business-continuity-disaster-recovery-guidance?toc=%2Fazure%2Freliability%2Ftoc.json&bc=%2Fazure%2Freliability%2Fbreadcrumb%2Ftoc.json",
- "service": "Logic Apps",
- "severity": "高",
+ "checklist": "Azure Function Review",
+ "guid": "5969d03e-eacf-4042-b127-73c55e3575fa",
+ "link": "https://learn.microsoft.com/en-us/azure/reliability/reliability-functions?tabs=azure-portal#cross-region-disaster-recovery-and-business-continuity",
+ "service": "Azure Functions",
+ "severity": "中等",
"text": "考慮為關鍵工作負載制定跨區域災難恢復策略",
"waf": "可靠性"
},
{
"arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "82118ec5-ed6f-4c68-9471-eb0da98a1b34",
- "link": "https://learn.microsoft.com/azure/app-service/environment/intro",
- "service": "Logic Apps",
+ "checklist": "Azure Function Review",
+ "guid": "47a0aae0-d8a0-43b1-9791-e934dee3754c",
+ "link": "https://learn.microsoft.com/en-us/azure/app-service/environment/intro",
+ "service": "Azure Functions",
"severity": "高",
"text": "如果部署到獨立環境,請使用或遷移到應用服務環境 (ASE) v3",
"waf": "可靠性"
},
{
"arm-service": "Microsoft.Web/sites",
- "checklist": "Logic Apps checklist",
- "guid": "74275fa5-9e08-4c7e-b096-13b538fe1501",
- "link": "https://learn.microsoft.com/training/modules/deploy-azure-functions/",
- "service": "Logic Apps",
+ "checklist": "Azure Function Review",
+ "guid": "17232891-f89f-4eaa-90f1-3b34bf798ed5",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on",
+ "service": "Azure Functions",
+ "severity": "高",
+ "text": "確保為應用服務計劃上運行的所有函數應用啟用“始終開啟”",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "40a325c2-7c0e-49e6-86d8-c273b4dc21ba",
+ "link": "https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations?tabs=azure-cli#shared-storage-accounts",
+ "service": "Azure Functions",
"severity": "中等",
- "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護邏輯應用代碼",
+ "text": "將函數應用與其自己的存儲帳戶配對。盡量不要重用函數應用的存儲帳戶,除非它們緊密耦合",
+ "waf": "可靠性"
+ },
+ {
+ "arm-service": "Microsoft.Web/sites",
+ "checklist": "Azure Function Review",
+ "guid": "bb42650c-257d-4cb0-822a-131138b8e6f0",
+ "link": "https://learn.microsoft.com/en-us/training/modules/deploy-azure-functions/",
+ "service": "Azure Functions",
+ "severity": "中等",
+ "text": "利用 Azure DevOps 或 GitHub 簡化 CI/CD 並保護函數應用代碼",
"waf": "操作"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "bb235c70-5e17-496f-bedf-a8a4c8cdec4c",
+ "link": "https://learn.microsoft.com/entra/identity-platform/msal-acquire-cache-tokens",
+ "service": "Entra",
+ "severity": "中等",
+ "text": "使用長期可撤銷令牌,緩存令牌並使用 Microsoft 標識庫以靜默方式獲取令牌",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "503547c1-447e-4c66-828a-71f0f1ce16dd",
+ "link": "https://learn.microsoft.com/azure/active-directory-b2c/deploy-custom-policies-devops",
+ "service": "AAD B2C",
+ "severity": "中等",
+ "text": "請確保登錄使用者流已備份並具有復原能力。請確保用於登錄使用者的代碼已備份且可恢復。與外部進程的彈性介面",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "3e3553a4-c873-4964-ab66-2d6c15f51296",
+ "link": "https://learn.microsoft.com/entra/architecture/resilient-end-user-experience#use-a-content-delivery-network",
+ "service": "AAD B2C",
+ "severity": "中等",
+ "text": "自訂品牌資產應託管在CDN上",
+ "waf": "性能"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "5398e6df-d237-4de1-93b1-6c21d79a9b64",
+ "link": "https://learn.microsoft.com/entra/identity/monitoring-health/reference-sla-performance",
+ "service": "AAD B2C",
+ "severity": "低",
+ "text": "擁有多個標識提供者(即使用您的 Microsoft、Google、Facebook 帳戶登錄)",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "604489a8-f42d-478e-98c0-7a73b22a4a57",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "中等",
+ "text": "遵循 VM 規則,實現 VM 級別的高可用性(高級磁碟,一個區域中的兩個或更多磁碟,位於不同的可用性區域)",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "e7a8dd4a-30e3-47c3-b297-11b2362ceee0",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "中等",
+ "text": "不要複製!複製可能會產生目錄同步問題",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "79b598de-fc59-472c-b4cd-21b078036f5e",
+ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/",
+ "service": "Windows AD",
+ "severity": "中等",
+ "text": "對多區域具有主動-主動",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "6b4bfd3d-5035-447c-8447-ec66128a71f0",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "severity": "中等",
+ "text": "將 Azure AD 域服務標記添加到其他區域和位置",
+ "waf": "可靠性"
+ },
+ {
+ "checklist": "Identity Review Checklist",
+ "guid": "f1ce16dd-3f1d-45e8-92e4-2e3611cc58b4",
+ "link": "https://learn.microsoft.com/entra/identity/domain-services/tutorial-perform-disaster-recovery-drill",
+ "service": "Entra",
+ "severity": "中等",
+ "text": "將副本集用於DR",
+ "waf": "可靠性"
}
],
"metadata": {
"name": "WAF checklist",
- "timestamp": "July 24, 2024"
+ "timestamp": "August 08, 2024"
},
"severities": [
{
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.en.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.en.xlsx
new file mode 100644
index 000000000..ad7831130
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.es.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.es.xlsx
new file mode 100644
index 000000000..dbbb8329e
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.ja.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..d962a90a1
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.ko.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..56bd4ea82
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.pt.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..4267aa3c0
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/appservicewebapps_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/appservicewebapps_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..438ce5327
Binary files /dev/null and b/spreadsheet/macrofree/appservicewebapps_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.en.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.en.xlsx
new file mode 100644
index 000000000..eb58871ca
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.es.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.es.xlsx
new file mode 100644
index 000000000..b6910e4b6
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..d865c3294
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..6680465d9
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..4ca66daae
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..aa78eecfe
Binary files /dev/null and b/spreadsheet/macrofree/azureapplicationgateway_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.en.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.en.xlsx
new file mode 100644
index 000000000..3318bcc2d
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.es.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.es.xlsx
new file mode 100644
index 000000000..ca8ab4afb
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..dcfefa8cd
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..6781af29f
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..70e9be579
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azureblobstorage_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azureblobstorage_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..def1c9401
Binary files /dev/null and b/spreadsheet/macrofree/azureblobstorage_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.en.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.en.xlsx
new file mode 100644
index 000000000..6d5bf8953
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.es.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.es.xlsx
new file mode 100644
index 000000000..b5e255bb8
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..02e1839ab
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..6c7ea24b5
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..948f3c5e8
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azureexpressroute_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azureexpressroute_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..373408282
Binary files /dev/null and b/spreadsheet/macrofree/azureexpressroute_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.en.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.en.xlsx
new file mode 100644
index 000000000..5006f340b
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.es.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.es.xlsx
new file mode 100644
index 000000000..b63cd0a8e
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..3f3f0e008
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..ec6597d53
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..22e2a9e3e
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azurefiles_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azurefiles_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..cf8812ef0
Binary files /dev/null and b/spreadsheet/macrofree/azurefiles_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.en.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.en.xlsx
new file mode 100644
index 000000000..41f0daf96
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.es.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.es.xlsx
new file mode 100644
index 000000000..7a0159cbc
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..830863ab0
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..a124cb56c
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..381b00db6
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azurefirewall_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azurefirewall_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..4ab1a3f30
Binary files /dev/null and b/spreadsheet/macrofree/azurefirewall_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.en.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.en.xlsx
new file mode 100644
index 000000000..744ed9068
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.es.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.es.xlsx
new file mode 100644
index 000000000..d0c72f7bf
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..861408e44
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..e88cc2ca0
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..94c206855
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azurefrontdoor_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..c024a9952
Binary files /dev/null and b/spreadsheet/macrofree/azurefrontdoor_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.en.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.en.xlsx
new file mode 100644
index 000000000..5382ffaa4
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.es.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.es.xlsx
new file mode 100644
index 000000000..2a5fb361a
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..4b8c80d0d
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..769443e18
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..c08e92331
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..9ffe6edf1
Binary files /dev/null and b/spreadsheet/macrofree/azurekubernetesservice_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.en.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.en.xlsx
new file mode 100644
index 000000000..09f23a5cf
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.es.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.es.xlsx
new file mode 100644
index 000000000..8baead7a0
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..1b396ce76
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..7a842040d
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..a0d3c624d
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azuremachinelearning_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..4f8bc6893
Binary files /dev/null and b/spreadsheet/macrofree/azuremachinelearning_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.en.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.en.xlsx
new file mode 100644
index 000000000..afc7911f2
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.es.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.es.xlsx
new file mode 100644
index 000000000..0f4b587f1
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.ja.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..119b1a2ea
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.ko.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..9e3b9e593
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.pt.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..8602b48b2
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/azureopenai_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/azureopenai_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..995612fde
Binary files /dev/null and b/spreadsheet/macrofree/azureopenai_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/checklist.en.master.xlsx b/spreadsheet/macrofree/checklist.en.master.xlsx
index b353938c8..8fd65efe1 100644
Binary files a/spreadsheet/macrofree/checklist.en.master.xlsx and b/spreadsheet/macrofree/checklist.en.master.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.en.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.en.xlsx
index 9dc310528..c5d61fe0d 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.en.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.es.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.es.xlsx
index 8db059259..af69ef092 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.es.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.ja.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.ja.xlsx
index c9f818b42..886156323 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.ja.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.ko.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.ko.xlsx
index 103f60061..5cc563c93 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.ko.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.pt.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.pt.xlsx
index 27f6c0a71..d13403868 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.pt.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/network_appdelivery_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/network_appdelivery_checklist.zh-Hant.xlsx
index 9b67f7eb5..9dce0a493 100644
Binary files a/spreadsheet/macrofree/network_appdelivery_checklist.zh-Hant.xlsx and b/spreadsheet/macrofree/network_appdelivery_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.en.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.en.xlsx
new file mode 100644
index 000000000..768f8cd5a
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.es.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.es.xlsx
new file mode 100644
index 000000000..b3b69646c
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.ja.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.ja.xlsx
new file mode 100644
index 000000000..a18704d00
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.ko.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.ko.xlsx
new file mode 100644
index 000000000..065a92c21
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.pt.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.pt.xlsx
new file mode 100644
index 000000000..3943da311
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/virtualmachines_sg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/virtualmachines_sg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..852d152cb
Binary files /dev/null and b/spreadsheet/macrofree/virtualmachines_sg_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.en.xlsx b/spreadsheet/macrofree/waf_checklist.en.xlsx
index 7a8ad5ed6..4b9d773db 100644
Binary files a/spreadsheet/macrofree/waf_checklist.en.xlsx and b/spreadsheet/macrofree/waf_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.es.xlsx b/spreadsheet/macrofree/waf_checklist.es.xlsx
index 3308b2fcb..7455b1500 100644
Binary files a/spreadsheet/macrofree/waf_checklist.es.xlsx and b/spreadsheet/macrofree/waf_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.ja.xlsx b/spreadsheet/macrofree/waf_checklist.ja.xlsx
index a5cf8a216..f94dbef82 100644
Binary files a/spreadsheet/macrofree/waf_checklist.ja.xlsx and b/spreadsheet/macrofree/waf_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.ko.xlsx b/spreadsheet/macrofree/waf_checklist.ko.xlsx
index 08e06bc2f..040d312d0 100644
Binary files a/spreadsheet/macrofree/waf_checklist.ko.xlsx and b/spreadsheet/macrofree/waf_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.pt.xlsx b/spreadsheet/macrofree/waf_checklist.pt.xlsx
index 2cb543bae..57cce30ad 100644
Binary files a/spreadsheet/macrofree/waf_checklist.pt.xlsx and b/spreadsheet/macrofree/waf_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/waf_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/waf_checklist.zh-Hant.xlsx
index ae975fce7..3a9977aaf 100644
Binary files a/spreadsheet/macrofree/waf_checklist.zh-Hant.xlsx and b/spreadsheet/macrofree/waf_checklist.zh-Hant.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.en.xlsx b/spreadsheet/macrofree/wafsg_checklist.en.xlsx
new file mode 100644
index 000000000..e05b7557a
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.en.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.es.xlsx b/spreadsheet/macrofree/wafsg_checklist.es.xlsx
new file mode 100644
index 000000000..cea6ccfbe
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.es.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.ja.xlsx b/spreadsheet/macrofree/wafsg_checklist.ja.xlsx
new file mode 100644
index 000000000..b1f65d591
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.ja.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.ko.xlsx b/spreadsheet/macrofree/wafsg_checklist.ko.xlsx
new file mode 100644
index 000000000..00aa9898d
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.ko.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.pt.xlsx b/spreadsheet/macrofree/wafsg_checklist.pt.xlsx
new file mode 100644
index 000000000..db85183d0
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.pt.xlsx differ
diff --git a/spreadsheet/macrofree/wafsg_checklist.zh-Hant.xlsx b/spreadsheet/macrofree/wafsg_checklist.zh-Hant.xlsx
new file mode 100644
index 000000000..526e21a1c
Binary files /dev/null and b/spreadsheet/macrofree/wafsg_checklist.zh-Hant.xlsx differ
diff --git a/workbooks/appdelivery_checklist.en_network_counters_workbook.json b/workbooks/appdelivery_checklist.en_network_counters_workbook.json
index 4c4f41d8e..dbbd1c32f 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": "{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}"
+ "resultVal": "{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}"
}
}
]
@@ -432,7 +432,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}"
+ "resultVal": "{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}"
}
}
]
@@ -470,7 +470,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query1Stats:$.Success}+{Query8Stats:$.Success}"
+ "resultVal": "{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}"
}
}
]
@@ -489,7 +489,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query1Stats:$.Total}+{Query8Stats:$.Total}"
+ "resultVal": "{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}"
}
}
]
@@ -527,7 +527,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}"
+ "resultVal": "{Query1Stats:$.Success}+{Query8Stats:$.Success}"
}
}
]
@@ -546,7 +546,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}"
+ "resultVal": "{Query1Stats:$.Total}+{Query8Stats:$.Total}"
}
}
]
@@ -584,7 +584,7 @@
"criteriaContext": {
"operator": "Default",
"resultValType": "expression",
- "resultVal": "{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query1Stats:$.Total}+{Query8Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.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": "{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query1Stats:$.Success}+{Query8Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.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": "52d0e118-8942-4dae-b362-8095e2a73871",
+ "id": "e5ba4fd6-319c-4916-a866-b6e195ab5427",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
- "linkLabel": "App Gateway ({Tab0Success:value}/{Tab0Total:value})",
+ "linkLabel": "Front Door ({Tab0Success:value}/{Tab0Total:value})",
"subTarget": "tab0",
- "preText": "App Gateway",
+ "preText": "Front Door",
"style": "primary"
},
{
- "id": "e06766c0-3c70-4172-a88b-239107283b2d",
+ "id": "a1ac9b7d-6f9a-484d-b89c-31d6c1dc2423",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
- "linkLabel": "Load Balancer ({Tab1Success:value}/{Tab1Total:value})",
+ "linkLabel": "App Gateway ({Tab1Success:value}/{Tab1Total:value})",
"subTarget": "tab1",
- "preText": "Load Balancer",
+ "preText": "App Gateway",
"style": "primary"
},
{
- "id": "f55278f9-9f6e-4c28-b27f-837561cec1f3",
+ "id": "9c735b8a-a099-492b-bea4-d05bd6d6735b",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
- "linkLabel": "Front Door ({Tab2Success:value}/{Tab2Total:value})",
+ "linkLabel": "Load Balancer ({Tab2Success:value}/{Tab2Total:value})",
"subTarget": "tab2",
- "preText": "Front Door",
+ "preText": "Load Balancer",
"style": "primary"
}
]
@@ -716,22 +716,22 @@
{
"type": 1,
"content": {
- "json": "## App Gateway"
+ "json": "## Front Door"
},
"name": "tab0title"
},
{
"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' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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",
@@ -780,20 +780,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",
@@ -842,20 +842,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",
@@ -904,20 +904,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",
@@ -966,20 +966,42 @@
]
}
},
- "name": "query4"
+ "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": "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 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": "querytext10"
+ "name": "querytext0"
},
{
"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/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",
@@ -1028,20 +1050,20 @@
]
}
},
- "name": "query10"
+ "name": "query0"
},
{
"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": "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": "querytext11"
+ "name": "querytext2"
},
{
"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' | 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",
@@ -1090,42 +1112,20 @@
]
}
},
- "name": "query11"
- }
- ]
- },
- "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": "query2"
},
{
"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": "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": "querytext1"
+ "name": "querytext3"
},
{
"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/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",
@@ -1174,20 +1174,20 @@
]
}
},
- "name": "query1"
+ "name": "query3"
},
{
"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 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": "querytext8"
+ "name": "querytext4"
},
{
"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/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",
@@ -1236,42 +1236,20 @@
]
}
},
- "name": "query8"
- }
- ]
- },
- "conditionalVisibility": {
- "parameterName": "VisibleTab",
- "comparison": "isEqualTo",
- "value": "tab1"
- },
- "name": "tab1"
- },
- {
- "type": 12,
- "content": {
- "version": "NotebookGroup/1.0",
- "groupType": "editable",
- "items": [
- {
- "type": 1,
- "content": {
- "json": "## Front Door"
- },
- "name": "tab2title"
+ "name": "query4"
},
{
"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": "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": "querytext5"
+ "name": "querytext10"
},
{
"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/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": "query5"
+ "name": "query10"
},
{
"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": "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": "querytext6"
+ "name": "querytext11"
},
{
"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/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": "query6"
+ "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": "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 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": "querytext7"
+ "name": "querytext1"
},
{
"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/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": "query7"
+ "name": "query1"
},
{
"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": "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": "querytext9"
+ "name": "querytext8"
},
{
"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/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": "query9"
+ "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 f76568441..69e51b27a 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\": \"{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\": \"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\": \"{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\": \"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\": \"{Query1Stats:$.Success}+{Query8Stats:$.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\": \"{Query1Stats:$.Total}+{Query8Stats:$.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\": \"{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\": \"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\": \"{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\": \"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\": \"{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query1Stats:$.Total}+{Query8Stats:$.Total}+{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\": \"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\": \"{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query1Stats:$.Success}+{Query8Stats:$.Success}+{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\": \"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\": \"52d0e118-8942-4dae-b362-8095e2a73871\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"e06766c0-3c70-4172-a88b-239107283b2d\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer ({Tab1Success:value}/{Tab1Total:value})\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"f55278f9-9f6e-4c28-b27f-837561cec1f3\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door ({Tab2Success:value}/{Tab2Total:value})\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Front Door\",\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\": \"## 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\": \"## Front Door\"\n },\n \"name\": \"tab2title\"\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\": \"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\": \"e5ba4fd6-319c-4916-a866-b6e195ab5427\",\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\": \"a1ac9b7d-6f9a-484d-b89c-31d6c1dc2423\",\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\": \"9c735b8a-a099-492b-bea4-d05bd6d6735b\",\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' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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 6b6867df7..3c2bd2e4b 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": "59b13e49-d371-44af-956b-26b88be65221",
+ "id": "eead62f5-2b5b-412f-8ce9-e444104bb64e",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
- "linkLabel": "Load Balancer",
+ "linkLabel": "Front Door",
"subTarget": "tab0",
- "preText": "Load Balancer",
+ "preText": "Front Door",
"style": "primary"
},
{
- "id": "55c716ae-90a7-4dd1-bf7c-561ae288039c",
+ "id": "ce137d79-b47b-45dc-955b-efdcb38cc867",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
- "linkLabel": "Front Door",
+ "linkLabel": "App Gateway",
"subTarget": "tab1",
- "preText": "Front Door",
+ "preText": "App Gateway",
"style": "primary"
},
{
- "id": "f1252cf9-c7fb-4e55-8402-03e083497d11",
+ "id": "4d025713-e2bd-40da-ad43-4e01514547f8",
"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": "## 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' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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",
@@ -173,20 +173,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",
@@ -235,42 +235,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",
@@ -319,20 +297,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",
@@ -381,20 +359,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",
@@ -443,20 +443,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",
@@ -505,42 +505,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",
@@ -589,20 +567,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",
@@ -651,20 +629,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",
@@ -713,20 +691,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",
@@ -775,20 +753,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",
@@ -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 f4c00e8e6..7005f647b 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\": \"59b13e49-d371-44af-956b-26b88be65221\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"55c716ae-90a7-4dd1-bf7c-561ae288039c\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"f1252cf9-c7fb-4e55-8402-03e083497d11\",\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\": \"## 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\": 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\": \"eead62f5-2b5b-412f-8ce9-e444104bb64e\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"ce137d79-b47b-45dc-955b-efdcb38cc867\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway\",\n \"subTarget\": \"tab1\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"4d025713-e2bd-40da-ad43-4e01514547f8\",\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\": \"## 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' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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/network_appdelivery_checklist.en_counters_workbook.json b/workbooks/network_appdelivery_checklist.en_counters_workbook.json
index 63905ca9e..bb311ca2d 100644
--- a/workbooks/network_appdelivery_checklist.en_counters_workbook.json
+++ b/workbooks/network_appdelivery_checklist.en_counters_workbook.json
@@ -563,7 +563,7 @@
"style": "tabs",
"links": [
{
- "id": "bca18139-c8f1-42e1-ba76-c6a3631cdbb7",
+ "id": "d6436109-47d8-41be-b0ea-2dabed482fcd",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
"linkLabel": "Network Topology and Connectivity ({Tab0Success:value}/{Tab0Total:value})",
@@ -901,7 +901,7 @@
{
"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": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information."
},
"name": "querytext5"
},
@@ -1211,7 +1211,7 @@
{
"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": "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": "querytext10"
},
diff --git a/workbooks/network_appdelivery_checklist.en_counters_workbook_template.json b/workbooks/network_appdelivery_checklist.en_counters_workbook_template.json
index 6934006ff..fd1c006b1 100644
--- a/workbooks/network_appdelivery_checklist.en_counters_workbook_template.json
+++ b/workbooks/network_appdelivery_checklist.en_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\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.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\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.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\": \"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\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.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\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.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\\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\": \"bca18139-c8f1-42e1-ba76-c6a3631cdbb7\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Network Topology and Connectivity ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Network Topology and Connectivity\",\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\": \"## Network Topology and Connectivity\"\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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 \"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\": 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\": \"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\": 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 \"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\": 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 \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\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\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.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\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.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\": \"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\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.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\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.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\\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\": \"d6436109-47d8-41be-b0ea-2dabed482fcd\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Network Topology and Connectivity ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Network Topology and Connectivity\",\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\": \"## Network Topology and Connectivity\"\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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 \"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\": 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\": \"Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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\": 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 \"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\": 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 \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\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/network_appdelivery_checklist.en_workbook.json b/workbooks/network_appdelivery_checklist.en_workbook.json
index f0e90bdc2..e53af1fee 100644
--- a/workbooks/network_appdelivery_checklist.en_workbook.json
+++ b/workbooks/network_appdelivery_checklist.en_workbook.json
@@ -70,7 +70,7 @@
"style": "tabs",
"links": [
{
- "id": "7ccaa132-1ef6-49b1-ae31-00fa9a78d667",
+ "id": "b57de63c-233b-4c04-b27f-5da0c8a5ad8b",
"cellValue": "VisibleTab",
"linkTarget": "parameter",
"linkLabel": "Network Topology and Connectivity",
@@ -408,7 +408,7 @@
{
"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": "Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information."
},
"name": "querytext5"
},
@@ -718,7 +718,7 @@
{
"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": "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": "querytext10"
},
diff --git a/workbooks/network_appdelivery_checklist.en_workbook_template.json b/workbooks/network_appdelivery_checklist.en_workbook_template.json
index 030681d7b..3c87d2808 100644
--- a/workbooks/network_appdelivery_checklist.en_workbook_template.json
+++ b/workbooks/network_appdelivery_checklist.en_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\\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\": \"7ccaa132-1ef6-49b1-ae31-00fa9a78d667\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Network Topology and Connectivity\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Network Topology and Connectivity\",\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\": \"## Network Topology and Connectivity\"\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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 \"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\": 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\": \"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\": 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 \"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\": 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 \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\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\\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\": \"b57de63c-233b-4c04-b27f-5da0c8a5ad8b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Network Topology and Connectivity\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Network Topology and Connectivity\",\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\": \"## Network Topology and Connectivity\"\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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 \"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\": 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\": \"Deploy your WAF policy for Front Door in 'Prevention' mode' so that Web Application Firewall takes appropriate action to allow or deny traffic. 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\": 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 \"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\": 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 \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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\": \"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\": 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 },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\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')]"